reb-smoothexp {; Ron Barnett, February 1999 ; General exponential smoothing algorithm ; with fine control over color spread. ; Best if used with a high bailout value ; for divergent fractals init: float iterexp = 0 float scale = @colors*#pi/128 complex zold = (0,0) loop: IF (@converge > 0) iterexp = iterexp + exp(-cabs(#z)) ELSE iterexp = iterexp + exp(-1/(cabs(zold - #z))) ENDIF zold = #z final: float smooth = iterexp*scale ez = cos(smooth)+flip(sin(smooth)) float angle = atan2(ez) IF (angle < 0) angle = angle + #pi * 2 ENDIF #index = angle * @palrange / (#pi * 512) ; #index = 0.01*iterexp if @solidb && cabs(#z) == 0 #solid = true endif default: title = "Exponential Smoothing" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param solidb caption = "Solid Background" default = false endparam param colors caption = "Color Spread" default = 2.0 hint = "2.0 approximates the iteration count. \ Use 10.0 for convergent fractals." endparam param palrange caption = "Palette Range" default = 256.0 hint = "256 means use the whole palette." endparam param converge caption = "Fractal Type" default = 1 enum = "Convergent" "Divergent" hint = "Mandelbrot is Divergent, Newton is Convergent." endparam } Jigsaw { ; Ron Barnett, Feb 27, 2000 ; concept from Triptych by Sylvie Gallet final: float h = #height/3 float r = 0 if @usecenter float cx = real(#center) float cy = imag(#center)*#width/#height else float cx = real(@cen) float cy = imag(@cen)*#width/#height endif float xp = real(#pixel) float yp = imag(#pixel)*#width/#height float hxp = real(#screenpixel) float hyp = imag(#screenpixel) float bh = @border*#width/4.8 xp = xp - cx yp = yp - cy if @function == 0 r = sqrt(abs(xp*xp - yp*yp)) elseif @function == 1 r = (xp^(2/3) + yp^(2/3))^1.5 elseif @function == 2 r = sqrt((xp*xp + yp*yp)*(xp*xp + yp*yp) - @a*xp*xp) elseif @function == 3 r = sqrt((xp*xp + yp*yp)*(xp-1)*(xp-1)-@a*xp*xp) elseif @function == 4 r = sqrt(@a*(xp*xp + yp*yp) - xp*xp*yp*yp) elseif @function == 5 r = sqrt(xp*xp + yp*yp) elseif @function == 6 r = sqrt((xp*xp*xp + yp*yp*yp) - @a*xp*yp) elseif @function == 8 r = sqrt(xp*xp - yp*yp) elseif @function == 9 r = sqrt((xp*xp + yp*yp)*(xp*xp + yp*yp) - @a*(xp*xp - yp*yp)) elseif @function == 10 r = sqrt(abs(xp*xp - yp*yp + 2*xp*yp)) elseif @function == 11 r = sqrt(xp*xp + yp*yp + xp*yp) elseif @function == 12 r = sqrt(xp*xp - yp*yp + 2*xp*yp) elseif @function == 13 r = sqrt(xp*xp*yp + yp - @a*xp) elseif @function == 14 r = sqrt(xp*xp + yp*yp + 2*xp*yp) elseif @function == 15 r = sqrt(xp*xp*(xp+@a) - yp*yp*(@a-xp)) elseif @function == 16 r = sqrt(xp*xp*xp + xp*yp*yp +@a*yp*yp - 3*@a*xp*xp) elseif @function == 17 r = sqrt(xp*xp*yp-@a*@a*(@a-yp)) endif if @function != 7 if @part == 0 if r > @inner/#magn #solid = true else if r < (@inner-@border)/#magn if @usesolid #solid = true else #index = (@color+1)/400 - 0.0025 endif else #index = 1+(@inner-r*#magn)/@border* \ (@randomness*real(#random)-1)-0.01 endif endif elseif @part == 1 if r <= @inner/#magn || r >= @ring/#magn #solid = true else if r > (@inner+@border)/#magn && r < (@ring-@border)/#magn if @usesolid #solid = true else #index = (@color+1)/400 - 0.0025 endif else if r >= (@ring-@border)/#magn #index = 1+(@ring-r*#magn)/@border* \ (@randomness*real(#random)-1)-0.01 endif if r <= (@inner+@border)/#magn #index = (@inner+@border-r*#magn)/@border + \ @randomness*real(#random)*(r*#magn-@inner)/@border-0.01 endif endif endif elseif @part == 2 if r <= @ring/#magn #solid = true else if r > (@ring+@border)/#magn if @usesolid #solid = true else #index = (@color+1)/400 - 0.0025 endif else #index = (@ring+@border-r*#magn)/@border + \ @randomness*real(#random)*(r*#magn-@ring)/@border-0.01 endif endif endif else if (trunc(hyp/h) != @part) #solid = true else float h2 = h/2 float w2 = #width/2 float bh = @border*#width/4.8 hyp = abs (hyp - h * @part - h2) - h2 + bh hxp = abs (hxp - w2) - w2 + bh if (hyp < 0) && (hxp < 0) if @usesolid #solid = true else #index = (@color+1) / 400 - 0.0025 endif elseif hyp > 0 && hxp < hyp #index = hyp/bh+@randomness*real(#random)*(1-hyp/bh) - 0.01 else #index = hxp/bh+@randomness*real(#random)*(1-hxp/bh) - 0.01 endif endif endif default: title = "Jigsaw" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param part caption = "Region" enum = "A" "B" "C" hint = "A, B, C are Top, Middle, Bottom \ for Horizontal Triptych" endparam param function caption = "Region shape" enum = "Abs Hyperbola" "Astroid" "Cartoid" \ "Conchoid" "Cruciform" "Ellipse" \ "Folium" "Horizontal Triptych" \ "Hyperbola" "Lemniscate" "Rot Abs Hyperbola" \ "Rot Ellipse" "Rot Hyperboloa" \ "Serpentine" "Stripes" "Strophoid" \ "Trisectrix" "Witch" default = 5 hint = "Use same setting for Jigsaw transformation" endparam param a caption = "Function parameter" default = 1.0 hint = "Only for Cartiod, Conchoid, Cruciform, \ Lemniscate, Rose, Serpentine, Strophoid, \ Trisectrix and Witch" endparam param inner caption = "Inner Radius" default = 0.8 hint = "Use same setting for Jigsaw transformation" endparam param ring caption = "Ring Radius" default = 1.6 hint = "Use same setting for Jigsaw transformation" endparam param cen caption = "Region Center" default = (0.0,0.0) hint = "Use same setting for Jigsaw transformation" endparam param usecenter caption = "Use screeen center" default = true endparam param border caption = "Border Width" default = 0.2 endparam param @color caption = "Inside color" default = 200 min = 0 max = 399 endparam param usesolid caption = "Use solid color" default = false endparam param randomness caption = "Randomize border" default = 0.0 endparam } reb_smoothexp_fBm_II {; Ron Barnett, April 2001 ; General exponential smoothing algorithm ; with fine control over color spread. ; Best if used with a high bailout value ; for divergent fractals ; corrected to have less variance on zooming init: float res = 0.0 float lowtrap=abs(round(real(@itrap)*#maxiter)) float hightrap=abs(round(imag(@itrap)*#maxiter)) IF lowtrap>hightrap res=lowtrap lowtrap=hightrap hightrap=res ENDIF float iterexp = 0 float scale = @colors*#pi/128 complex zold = (0,0) complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p = xx + flip(yy) loop: complex z1 = #z*(1-@weight) + p*@weight IF (@converge > 0) iterexp = iterexp + exp(-cabs(z1)) ELSE iterexp = iterexp + exp(-1/(cabs(zold - z1))) ENDIF zold = #z final: float smooth = iterexp*scale ez = cos(smooth)+flip(sin(smooth)) float angle = atan2(ez) IF (angle < 0) angle = angle + #pi * 2 ENDIF IF (@trap == true) IF (#numiter>=lowtrap)&&(#numiter<=hightrap) ; Is pixel in trap? #index = angle*@palrange/(#pi*512)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf) ELSE #solid = true ENDIF ELSE #index = angle*@palrange/(#pi*512)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf) ENDIF if @solidb && cabs(#z) == 0 #solid = true endif default: title = "Exp Smoothing with fBm II " param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param solidb caption = "Solid background" default = false endparam param colors caption = "Color Spread" default = 2.0 hint = "2.0 approximates the iteration count. \ Use 10.0 for convergent fractals." endparam param trap caption = "Use Iteration Trap" default = false endparam param itrap caption="Trap Limits" default=(0.0,1.0) hint="Between 0.0 and 1.0" endparam param palrange caption = "Palette Range" default = 256.0 hint = "256 means use the whole palette." endparam param converge caption = "Fractal Type" default = 1 enum = "Convergent" "Divergent" hint = "Mandelbrot is Divergent, Newton is Convergent." endparam param weight caption = "fBm Weight" default = 0.1 min = 0.0 max = 1.0 endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Transfer Weight" default = 1.0 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam param fbmf caption = "fBm Final Weight" default = 10.0 endparam } ChipsAreUs_fBm_II { ; Ron Barnett, January 2002 ; init: float d = 0 float d1 = 0 float d2 = 0 float d3 = 0 float astd = 1e30 float mind = 1e30 float mind1 = 1e30 float mind2 = 1e30 float mind3 = 1e30 float prd = 1e30 float prd1 = 1e30 float prd2 = 1e30 float prd3 = 1e30 float divd1 = 1e30 float divd11 = 1e30 float divd12 = 1e30 float divd13 = 1e30 float divd2 = 1e30 float divd21 = 1e30 float divd22 = 1e30 float divd23 = 1e30 float ang = 0 float f1 = 0 float f2 = 0 p_2 = @fn1(#pixel + @start) float zz = 0 int i = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float x = real(p_2) / @scale float y = imag(p_2) / @scale int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF x = x*(1-@weight) + xx*@weight y = y*(1-@weight) + yy*@weight while i < @iters xx = x if @formula == 0 ; Chip if x != 0 x = y - x/abs(x)*cos(sqr(log(abs(@b*x-@c)))) \ *atan(sqr(log(abs(@c*x-@b)))) else x = y - cos(sqr(log(abs(@b*x-@c)))) \ *atan(sqr(log(abs(@c*x-@b)))) endif y = @a - xx elseif @formula == 1 ; CosMartin x = y - cos(x) y = @a - xx elseif @formula == 2 ; Hopalong if x != 0 x = y - x/abs(x)*sqrt(abs(@b*x-@c)) else x = y - sqrt(abs(@b*x-@c)) endif y = @a - xx elseif @formula == 3 ; Liar if @version < 110 if x + flip(p_2) < @a x = @b - abs(y-x) y = abs(@c - xx - y) endif else if cabs(x+flip(p_2)) < cabs(@a) x = @b - abs(y-x) y = abs(@c - xx - y) endif endif elseif @formula == 4 ; PickMod x = sin(@a*y) - zz*cos(@b*x) y = zz*sin(@c*xx) - cos(-@a*y) zz = sin(xx) elseif @formula == 5 ; Threeply if x != 0 x = y - x/abs(x)*(abs(sin(x)*cos(@b) + @c \ - x*sin(@a + @b + @c))) else x = y - (abs(sin(x)*cos(@b) + @c \ - x*sin(@a + @b + @c))) endif y = @a - xx elseif @formula == 6 ; Quadruptwo if x != 0 x = y - x/abs(x)*sin(log(abs(@b*x-@c))) \ *atan(sqr(log(abs(@c*x-@b)))) else x = y - sin(log(abs(@b*x-@c))) \ *atan(sqr(log(abs(@c*x-@b)))) endif y = @a - xx endif i = i + 1 endwhile x = x * @scale y = y * @scale p_2 = fn2(x + flip(y)) loop: if @colorby == 0 ang = atan(imag(#z)/real(#z)) f1 = cos(ang)^3 f2 = sin(ang)^3 astroid = @spread*(f1 + flip(f2)) d = cabs(#z - p_2 + astroid) if d < astd astd = d endif elseif @colorby == 1 d = cabs(#z + @spread*(1,0) - p_2) d1 = cabs(#z + @spread*(0,1) - p_2) d2 = cabs(#z + @spread*(-1,0) - p_2) d3 = cabs(#z + @spread*(0,-1) - p_2) if d < mind mind = d endif if d1 < mind1 mind1 = d1 endif if d2 < mind2 mind2 = d2 endif if d3 < mind3 mind3 = d3 endif elseif @colorby == 2 d = cabs(#z*p_2 + @spread*(1,0) - p_2) d1 = cabs(#z*p_2 + @spread*(0,1) - p_2) d2 = cabs(#z*p_2 + @spread*(-1,0) - p_2) d3 = cabs(#z*p_2 + @spread*(0,-1) - p_2) if d < prd prd = d endif if d1 < prd1 prd1 = d1 endif if d2 < prd2 prd2 = d2 endif if d3 < prd3 prd3 = d3 endif elseif @colorby == 3 d = cabs(#z/p_2 + @spread*(1,0) - p_2) d1 = cabs(#z/p_2 + @spread*(0,1) - p_2) d2 = cabs(#z/p_2 + @spread*(-1,0) - p_2) d3 = cabs(#z/p_2 + @spread*(0,-1) - p_2) if d < divd1 divd1 = d endif if d1 < divd11 divd11 = d1 endif if d2 < divd12 divd12 = d2 endif if d3 < divd13 divd13 = d3 endif elseif @colorby == 4 d = cabs(p_2/#z + @spread*(1,0) - p_2) d1 = cabs(p_2/#z + @spread*(0,1) - p_2) d2 = cabs(p_2/#z + @spread*(-1,0) - p_2) d3 = cabs(p_2/#z + @spread*(0,-1) - p_2) if d < divd2 divd2 = d endif if d1 < divd21 divd21 = d1 endif if d2 < divd22 divd22 = d2 endif if d3 < divd23 divd23 = d3 endif endif final: if @colorby == 0 #index = astd*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf) elseif @colorby == 1 #index = (mind+mind1+mind2+mind3)/4*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf) elseif @colorby == 2 #index = (prd+prd1+prd2+prd3)/4*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf) elseif @colorby == 3 #index = (divd1+divd11+divd12+divd13)/4*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf) elseif @colorby == 4 #index = (divd2+divd21+divd22+divd23)/4*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf) endif default: title = "Chips Are Us with fBm II" param version caption = "Formula Version" default = 110 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param scale caption = "Scale" default = 0.01 endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param colorby caption = "Color by" enum = "Astroid" "Minimum Distance" \ "Product" "Ratio1" "Ratio2" default = 0 endparam param formula caption = "Formula" enum = "Chip" "CosMartin" "Hopalong" "Liar" \ "Modified Pickover" "Threeply" "Quadruptwo" default = 0 endparam param iters caption = "Iterations" default = 2 endparam param spread caption = "Spread" default = 1.0 endparam param a caption = "Parameter 1" default = 1.0 endparam param b caption = "Parameter 2" default = 1.0 endparam param c caption = "Parameter 3" default = 1.0 endparam param weight caption = "fBm Weight" default = 0.1 min = 0.0 max = 1.0 endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Transfer Weight" default = 1.0 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam param fbmf caption = "fBm Final Weight" default = 10.0 endparam func fn1 caption = "Pre Function" default = ident() endfunc func fn2 caption = "Post Function" default = ident() endfunc } 4D-trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex trap_z = 0 complex trap_p = 0 int iter = 0 float dist = 0 float distance = 0 float t = 0 int rt_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float distave = 0 float distsum = 0 float exptrap_p = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 float angle = @r/180*#pi bool msk = false bool trap = false bool rmask = false complex z1 = 0 complex c = 0 if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) if !@oldver if @variant == "SJ" z1 = real(#pixel+@offset) + flip(imag(#pixel+@offset)*@r) c = @t + @r*real(#pixel+@offset) + flip(imag(#pixel+@offset)) else z1 = @r*real(#pixel+@offset) + flip(imag(#pixel+@offset)) c = @t + real(#pixel+@offset) + flip(imag(#pixel+@offset)*@r) endif elseif @oldver z1 = real(#pixel+@offset) + flip(imag(#pixel+@offset)*@r) c = @t + @r*real(#pixel+@offset) + flip(imag(#pixel+@offset)) endif loop: if !@oldver rt_iter = 0 offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*@scale z1 = z1*rot z1 = real(z1)*skew + flip(imag(z1)) z1 = z1 + offset complex pix = #pixel if @function == "Julia Frame-Robert" || @function == "Julia Ikenaga" || \ @function == "Julia Lambda" || @function == "Julia" pix = @seed endif if @variant == "SJ" z1 = real(z1) + flip(imag(z1)*@r) c = @t + @r*real(pix) + flip(imag(pix)) else z1 = @r*real(z1) + flip(imag(z1)) c = @t + real(pix) + flip(imag(pix)*@r) endif endif z1 = @fn1(z1) ; Iterate the Rotate/Translate formula while rt_iter < @max_iterations if !@oldver if @function == "Mandelbrot" || @function == "Julia" z1 = z1*z1 + c elseif @function == "Lambda" || @function == "Julia Lambda" z1 = c*z1*(1-z1) elseif @function == "Ikenaga" || @function == "Julia Ikenaga" z1 = z1*z1*z1 + (c-1)*z1-c elseif @function == "Frame-Robert" || @function == "Julia Frame-Robert" z1 = z1*z1*z1/5 + z1*z1 + c endif else z1 = z1*z1 + c endif rt_iter = rt_iter + 1 endwhile if !@oldver f_p = @fn2(z1+start) else f_p = @fn2(z1+@start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor + t endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor + t endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor + t endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "4D Orbit Trap Enhanced" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "Expert mode" default = false visible = !@oldver endparam heading caption = "4D parameters" endheading param t caption = "Translation" default = -0.75 endparam param r caption = "Tilt" default = 0.5 min = 0 max = 1 hint = "This parameter takes values between 0 and 1 inclusive." endparam param variant caption = "4D variant" default = 0 enum = "SJ" "3RDIM" hint = "These variants are based upon Gordon Lamb's 4D formulas." endparam param max_iterations caption = "4D iterations" hint = "This is the number of iterations for the 4D formula." default = 1 endparam float param scale caption = "Scale" default = 1.0 visible = !@oldver endparam param function caption = "4D Fractal" default = 3 enum = "Frame-Robert" "Ikenaga" "Lambda" "Mandelbrot" "Julia Frame-Robert" \ "Julia Ikenaga" "Julia Lambda" "Julia" visible = !@oldver endparam complex param seed caption = "Julia seed" default = (0,0) visible = @function == "Julia Frame-Robert" || @function == "Julia Ikenaga" \ || @function == "Julia Lambda" || @function == "Julia" endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" default = 0 enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" default = 0 enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 0.1 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = @expert && !@oldver endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (@expert && !@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = (@expert && !@alliter)|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = (@expert && !@alliter)&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = (@expert && !@alliter)&& !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param start caption = "Starting offset" default = (0.0,0.0) endparam param offset caption = "Trap offset" default = (0.0,0.0) endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture parameters" visible = @expert || @oldver endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @expert || @oldver endparam param tweight caption = "Texture weight" default = 0.0 visible = @expert|| @oldver endparam param ts caption = "Texture scale" default = 20.0 visible = @expert || @oldver endparam param tc caption = "Texture modifier" default = 5.0 visible = @expert || @oldver endparam param pwr caption = "Texture power" default = 1.0 visible = @expert || @oldver endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @expert || @oldver endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @expert || @oldver endfunc } Chip_trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex z1 = 0 complex f_p = 0 float randomness = @randomness if !@oldver randomness = 0 endif trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int chip_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) ; if @no_of_iters == 0 ; max_iter = #maxiter - @skip ; else ; max_iter = @skip + @no_of_iters ; endif if @oldscale == 0 scale = 1/scale endif scale = scale*@scaleadj loop: if !@oldver offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*rot z1 = real(z1)*skew + flip(imag(z1)) p = @fn1(z1 + offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale elseif @oldver p = @fn1(#z + @offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale endif ; Iterate the Chip formula chip_iter = 0 while chip_iter < @max_iterations xx = x if x != 0 x = y - x/abs(x)*cos(sqr(log(abs(@b*x-@c)))) \ *atan(sqr(log(abs(@c*x-@b)))) else x = y - cos(sqr(log(abs(@b*x-@c)))) \ *atan(sqr(log(abs(@c*x-@b)))) endif y = @a - xx chip_iter = chip_iter + 1 endwhile p = x + flip(y) if @oldver f_p = @fn2(p + @start) elseif !@oldver f_p = @fn2(p + start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = 3*abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = 2*abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = 5*abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = 8*abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = (distance + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = (0.01 * trap_iter + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = (cabs(trap_z) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = (abs(real(trap_z)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = (abs(imag(trap_z)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = (angle + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = (cabs(trap_p) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = (abs(real(trap_p)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = (abs(imag(trap_p)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = (angle + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = (0.1*exptrap_p*cabs(trap_p) + randomness*real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = (0.01 * exptrap_p + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = (distance + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = (0.01 * trap_iter + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = (cabs(trap_z) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = (abs(real(trap_z)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = (abs(imag(trap_z)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = (angle + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = (cabs(trap_p) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = (abs(real(trap_p)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = (abs(imag(trap_p)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = (angle + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = (0.1*exptrap_p*cabs(trap_p) + randomness*real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = (0.01 * exptrap_p + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = (distance + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = (0.01 * trap_iter + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = (cabs(trap_z) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = (abs(real(trap_z)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = (abs(imag(trap_z)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = (angle + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = (cabs(trap_p) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = (abs(real(trap_p)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = (abs(imag(trap_p)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = (angle + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = (0.1*exptrap_p*cabs(trap_p) + randomness*real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = (0.01 * exptrap_p + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = (distance + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = (0.01 * trap_iter + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = (cabs(trap_z) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = (abs(real(trap_z)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = (abs(imag(trap_z)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = (angle + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = (cabs(trap_p) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = (abs(real(trap_p)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = (abs(imag(trap_p)) + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = (angle + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = (0.1*exptrap_p*cabs(trap_p) + randomness*real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = (0.01 * exptrap_p + randomness * real(#random))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "Chip Orbit Trap Enhanced" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "expert mode" default = false visible = !@oldver endparam param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 1 endparam heading caption = "Chip Parameters" endheading param a caption = "Alpha" default = -15.0 endparam param b caption = "Beta" default = -3.0 endparam param c caption = "Gamma" default = 1.0 endparam float param scaleadj caption = "Scale" default = 1.0 endparam param max_iterations caption = "Chip iterations" hint = "This is the number of iterations for the Chip formula." default = 1 endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 1.0 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = !@oldver && @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param randomness caption = "Randomness" hint = "This adds a random texture the the coloring." default = 0.0 visible = @oldver endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @oldver || (!@oldver && @expert) endparam param tweight caption = "Texture weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param ts caption = "Texture scale" default = 20.0 visible = @oldver || (!@oldver && @expert) endparam param tc caption = "Texture modifier" default = 5.0 visible = @oldver || (!@oldver && @expert) endparam param pwr caption = "Texture power" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @oldver || (!@oldver && @expert) endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @oldver || (!@oldver && @expert) endfunc } CosMartin-trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex z1 = 0 complex f_p = 0 trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int cos_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = @a float distave = 0 float distsum = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 float exptrap_p = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) if @oldscale == 0 scale = 1/scale endif scale = scale*@scaleadj loop: if !@oldver offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*rot z1 = real(z1)*skew + flip(imag(z1)) p = @fn1(z1 + offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale elseif @oldver p = @fn1(#z + @offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale endif ; Iterate the CosMartin formula cos_iter = 0 while cos_iter < @max_iterations xx = x x = y - cos(x) y = @a - xx cos_iter = cos_iter + 1 endwhile p = x + flip(y) if @oldver f_p = @fn2(p + @start) elseif !@oldver f_p = @fn2(p + start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "CosMartin Orbit Trap Enhanced" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "expert mode" default = false visible = !@oldver endparam param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 1 endparam heading caption = "CosMartin Parameters" endheading param a caption = "CosMartin parameter" default = 6.28318 endparam float param scaleadj caption = "Scale" default = 1.0 endparam param max_iterations caption = "CosMartin iterations" hint = "This is the number of iterations for the CosMartin formula." default = 1 endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 0.1 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = !@oldver && @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @oldver || (!@oldver && @expert) endparam param tweight caption = "Texture weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param ts caption = "Texture scale" default = 20.0 visible = @oldver || (!@oldver && @expert) endparam param tc caption = "Texture modifier" default = 5.0 visible = @oldver || (!@oldver && @expert) endparam param pwr caption = "Texture power" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @oldver || (!@oldver && @expert) endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @oldver || (!@oldver && @expert) endfunc } Henon-trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex z1 = 0 complex f_p = 0 trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int hen_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b) float distave = 0 float distsum = 0 float t = 0 float exptrap_p = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) if @oldscale == 0 scale = 1/scale endif scale = scale*@scaleadj loop: if !@oldver offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*rot z1 = real(z1)*skew + flip(imag(z1)) p = @fn1(z1 + offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale elseif @oldver p = @fn1(#z + @offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale endif ; Iterate the Henon formula hen_iter = 0 while hen_iter < @max_iterations xx = x x = 1 + y - @a*x*x y = @b*xx hen_iter = hen_iter + 1 endwhile p = x + flip(y) if @oldver f_p = @fn2(p + @start) elseif !@oldver f_p = @fn2(p + start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "Henon Orbit Trap Enhanced" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "expert mode" default = false visible = !@oldver endparam param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 1 endparam heading caption = "Henon Parameters" endheading param a caption = "Henon parameter 1" default = 1.4 endparam param b caption = "Henon parameter 2" default = 0.3 endparam float param scaleadj caption = "Scale" default = 1.0 endparam param max_iterations caption = "Henon iterations" hint = "This is the number of iterations for the Henon formula." default = 1 endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 0.1 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = !@oldver && @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @oldver || (!@oldver && @expert) endparam param tweight caption = "Texture weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param ts caption = "Texture scale" default = 20.0 visible = @oldver || (!@oldver && @expert) endparam param tc caption = "Texture modifier" default = 5.0 visible = @oldver || (!@oldver && @expert) endparam param pwr caption = "Texture power" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @oldver || (!@oldver && @expert) endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @oldver || (!@oldver && @expert) endfunc } Hopalong-trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex z1 = 0 complex f_p = 0 trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int hop_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) if @oldscale == 0 scale = 1/scale endif scale = scale*@scaleadj loop: if !@oldver offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*rot z1 = real(z1)*skew + flip(imag(z1)) p = @fn1(z1 + offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale elseif @oldver p = @fn1(#z + @offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale endif ; Iterate the Hopalong formula hop_iter = 0 while hop_iter < @max_iterations xx = x x = y - x/abs(x)*sqrt(abs(@b*x-@c)) y = @a - xx hop_iter = hop_iter + 1 endwhile p = x + flip(y) if @oldver f_p = @fn2(p + @start) elseif !@oldver f_p = @fn2(p + start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "Hopalong Orbit Trap Enhanced" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "expert mode" default = false visible = !@oldver endparam param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 1 endparam heading caption = "Hopalong Parameters" endheading param a caption = "Hopalong parameter 1" default = .4 endparam param b caption = "Hopalong parameter 2" default = 1.0 endparam param c caption = "Hopalong parameter 3" default = 0.0 endparam float param scaleadj caption = "Scale" default = 1.0 endparam param max_iterations caption = "Hopalong iterations" hint = "This is the number of iterations for the Hopalong formula." default = 1 endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 0.1 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = !@oldver && @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @oldver || (!@oldver && @expert) endparam param tweight caption = "Texture weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param ts caption = "Texture scale" default = 20.0 visible = @oldver || (!@oldver && @expert) endparam param tc caption = "Texture modifier" default = 5.0 visible = @oldver || (!@oldver && @expert) endparam param pwr caption = "Texture power" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @oldver || (!@oldver && @expert) endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @oldver || (!@oldver && @expert) endfunc } Ikenaga-trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex z1 = 0 complex f_p = 0 complex p = 0 trap_z = 0 trap_p = 0 int iter = 0 float dist = 0 float distance = 0 int ike_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float distave = 0 float distsum = 0 float exptrap_p = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) loop: if !@oldver offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*rot z1 = real(z1)*skew + flip(imag(z1)) p = (@fn1(z1 + offset)*(1-@weight) + p_2*@weight)*@scale elseif @oldver p = (@fn1(#z + @offset)*(1-@weight) + p_2*@weight)*@scale endif c = #pixel ; Iterate the Ikenaga formula ike_iter = 0 while ike_iter < @max_iterations p = p*p*p +(c-1)*p - c ike_iter = ike_iter + 1 endwhile if @oldver f_p = @fn2(p + @start) elseif !@oldver f_p = @fn2(p + start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "Ikenaga Orbit Trap Enhanced" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "expert mode" default = false visible = !@oldver endparam heading caption = "Ikenaga Parameters" endheading float param scale caption = "Scale" default = 1.0 endparam param max_iterations caption = "Ikenaga iterations" hint = "This is the number of iterations for the Ikenaga formula." default = 1 endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 1.0 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = !@oldver && @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @oldver || (!@oldver && @expert) endparam param tweight caption = "Texture weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param ts caption = "Texture scale" default = 20.0 visible = @oldver || (!@oldver && @expert) endparam param tc caption = "Texture modifier" default = 5.0 visible = @oldver || (!@oldver && @expert) endparam param pwr caption = "Texture power" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @oldver || (!@oldver && @expert) endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @oldver || (!@oldver && @expert) endfunc } Liar-trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex z1 = 0 complex f_p = 0 complex p = 0 trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int liar_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) if @oldscale == 0 scale = 1/scale endif scale = scale*@scaleadj loop: if !@oldver offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*rot z1 = real(z1)*skew + flip(imag(z1)) p = @fn1(z1 + offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale elseif @oldver p = @fn1(#z + @offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale endif ; Iterate the Liar formula liar_iter = 0 while liar_iter < @max_iterations xx = x if real(x + flip(p)) < (@a) x = @b - abs(y-x) y = abs(@c - xx - y) endif liar_iter = liar_iter + 1 endwhile p = x + flip(y) if @oldver f_p = @fn2(p + @start) elseif !@oldver f_p = @fn2(p + start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "Liar Orbit Trap Enhanced" param version caption = "Formula Version" default = 120 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "expert mode" default = false visible = !@oldver endparam param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 1 endparam heading caption = "Liar Parameters" endheading param a caption = "Liar parameter 1" default = 1.0 endparam param b caption = "Liar parameter 2" default = 1.0 endparam param c caption = "Liar parameter 3" default = 1.0 endparam float param scaleadj caption = "Scale" default = 1.0 endparam param max_iterations caption = "Liar iterations" hint = "This is the number of iterations for the Liar formula." default = 1 endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 1.0 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = !@oldver && @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @oldver || (!@oldver && @expert) endparam param tweight caption = "Texture weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param ts caption = "Texture scale" default = 20.0 visible = @oldver || (!@oldver && @expert) endparam param tc caption = "Texture modifier" default = 5.0 visible = @oldver || (!@oldver && @expert) endparam param pwr caption = "Texture power" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @oldver || (!@oldver && @expert) endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @oldver || (!@oldver && @expert) endfunc } PickMod-trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex z1 = 0 complex f_p = 0 complex p = 0 trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int pick_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float zz = 0 float exptrap_p = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) if @oldscale == 0 scale = 1/scale endif scale = scale*@scaleadj loop: if !@oldver offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*rot z1 = real(z1)*skew + flip(imag(z1)) p = @fn1(z1 + offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale elseif @oldver p = @fn1(#z + @offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale endif ; Iterate the PickMod formula pick_iter = 0 while pick_iter < @max_iterations xx = x x = sin(@a*y) - zz*cos(@b*x) y = zz*sin(@c*xx) - cos(-@a*y) zz = sin(xx) pick_iter = pick_iter + 1 endwhile p = x + flip(y) if @oldver f_p = @fn2(p + @start) elseif !@oldver f_p = @fn2(p + start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "Modified Pickover Orbit Trap Enhanced" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "expert mode" default = false visible = !@oldver endparam param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 1 endparam heading caption = "Modified Pickover Parameters" endheading param a caption = "PickMod parameter 1" default = 2.34 endparam param b caption = "PickMod parameter 2" default = 0.43 endparam param c caption = "PickMod parameter 3" default = -0.65 endparam float param scaleadj caption = "Scale" default = 1.0 endparam param max_iterations caption = "PickMod iterations" hint = "This is the number of iterations for the PickMod formula." default = 1 endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 0.1 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = !@oldver && @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @oldver || (!@oldver && @expert) endparam param tweight caption = "Texture weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param ts caption = "Texture scale" default = 100.0 visible = @oldver || (!@oldver && @expert) endparam param tc caption = "Texture modifier" default = 5.0 visible = @oldver || (!@oldver && @expert) endparam param pwr caption = "Texture power" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @oldver || (!@oldver && @expert) endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @oldver || (!@oldver && @expert) endfunc } Quadruptwo-trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex z1 = 0 complex f_p = 0 complex p = 0 trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int quad_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) if @oldscale == 0 scale = 1/scale endif scale = scale*@scaleadj loop: if !@oldver offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*rot z1 = real(z1)*skew + flip(imag(z1)) p = @fn1(z1 + offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale elseif @oldver p = @fn1(#z + @offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale endif ; Iterate the Quadruptwo formula quad_iter = 0 while quad_iter < @max_iterations xx = x x = y - x/abs(x)*sin(log(abs(@b*x-@c))) \ *atan(sqr(log(abs(@c*x-@b)))) y = @a - xx quad_iter = quad_iter + 1 endwhile p = x + flip(y) if @oldver f_p = @fn2(p + @start) elseif !@oldver f_p = @fn2(p + start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "Quadruptwo Orbit Trap Enhanced" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "expert mode" default = false visible = !@oldver endparam param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 1 endparam heading caption = "Quadruptwo Parameters" endheading param a caption = "Quadruptwo parameter 1" default = 34.0 endparam param b caption = "Quadruptwo parameter 2" default = 1.0 endparam param c caption = "Quadruptwo parameter 3" default = 5.0 endparam float param scaleadj caption = "Scale" default = 1 endparam param max_iterations caption = "Quadruptwo iterations" hint = "This is the number of iterations for the Quadruptwo formula." default = 1 endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 0.1 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = !@oldver && @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @oldver || (!@oldver && @expert) endparam param tweight caption = "Texture weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param ts caption = "Texture scale" default = 20.0 visible = @oldver || (!@oldver && @expert) endparam param tc caption = "Texture modifier" default = 5.0 visible = @oldver || (!@oldver && @expert) endparam param pwr caption = "Texture power" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @oldver || (!@oldver && @expert) endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @oldver || (!@oldver && @expert) endfunc } Threeply-trap_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; added additional trap options init: complex i = (0,1) complex rot = i^(@ang/90) complex skew = i^(@skew/90) complex incrot = i^(@incrot/90) complex incskew = i^(@incskew/90) complex offset = 0 complex start = 0 complex z1 = 0 complex f_p = 0 complex p = 0 trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int thre_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float t = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @oldver trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif int skip = 0 int patnum = 0 if @oldver skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p_2 = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p_2)) % 256 float by0 = floor(imag(p_2)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p_2) - floor(real(p_2)) float ry0 = imag(p_2) - floor(imag(p_2)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p_2 = p_2 * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p_2 = xx + flip(yy) if @oldscale == 0 scale = 1/scale endif scale = scale*@scaleadj loop: if !@oldver offset = @offset start = @start if @move offset = offset + #pixel*@moveamt endif rot = rot*incrot skew = skew*incskew offset = offset + @incoffset start = start + @incstart z1 = #z*rot z1 = real(z1)*skew + flip(imag(z1)) p = @fn1(z1 + offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale elseif @oldver p = @fn1(#z + @offset)*(1-@weight) + p_2*@weight x = real(p) * scale y = imag(p) * scale endif ; Iterate the Threeply formula thre_iter = 0 while thre_iter < @max_iterations xx = x x = y - x/abs(x)*(abs(sin(x)*cos(@b) + @c \ - x*sin(@a + @b + @c))) y = @a - xx thre_iter = thre_iter + 1 endwhile p = x + flip(y) if @oldver f_p = @fn2(p + @start) elseif !@oldver f_p = @fn2(p + start) endif dist = abs(|#z| - |f_p|) IF @trapvar == 1 dist = abs(dist*dist - dist) ELSEIF @trapvar == 2 dist = abs(dist*dist*dist - dist) ELSEIF @trapvar == 3 dist = abs(dist*dist*dist -dist*dist +dist) ELSEIF @trapvar == 4 dist = abs(dist - |f_p|) ELSEIF @trapvar == 5 dist = abs(dist - cabs(f_p)) ENDIF distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 if !@oldver if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: w = fn4(fn3(trap_z*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t ENDIF ENDIF default: title = "Threeply Orbit Trap Enhanced" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "use original version" default = false endparam bool param expert caption = "expert mode" default = false visible = !@oldver endparam param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 1 endparam heading caption = "Threeply Parameters" endheading param a caption = "Threeply parameter 1" default = -55.0 endparam param b caption = "Threeply parameter 2" default = -1.0 endparam param c caption = "Threeply parameter 3" default = 0.8 endparam float param scaleadj caption = "Scale" default = 1.0 endparam param max_iterations caption = "Threeply iterations" hint = "This is the number of iterations for the Threeply formula." default = 1 endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" endparam param width caption = "Trap width" default = 1.0 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3|| @trap_mode == 4) && !@oldver endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @oldver endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @oldver endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @oldver endparam bool param alliter caption = "Use all iterations" default = true visible = !@oldver && @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter)|| @oldver endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter|| @oldver endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter&& !@oldver endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && !@oldver endparam heading caption = "Trap Parameters" endheading func fn1 caption = "Pre Function" default = atan() endfunc func fn2 caption = "Post Function" default = sinh() endfunc param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam bool param @move caption = "Move trap offset" default = false visible = !@oldver endparam complex param moveamt caption = "Move amount" default = (1,0) visible = @move && !@oldver endparam float param ang caption = "Trap rotation" default = 0.0 visible = !@oldver endparam float param skew caption = "Trap skew" default = 0.0 visible = !@oldver endparam heading caption = "Progressive parameters" visible = !@oldver && @expert endheading complex param incstart caption = "Inc start offset" default = (0,0) visible = !@oldver && @expert endparam complex param incoffset caption = "Inc trap offset" default = (0,0) visible = !@oldver && @expert endparam float param incrot caption = "Inc trap rotation" default = 0.0 visible = !@oldver && @expert endparam float param incskew caption = "Inc skew" default = 0.0 visible = !@oldver && @expert endparam heading caption = "fBm Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @oldver || (!@oldver && @expert) endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @oldver || (!@oldver && @expert) endparam param fbm caption = "fBm Transfer Weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @oldver || (!@oldver && @expert) endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @oldver || (!@oldver && @expert) endparam param fbmf caption = "fBm Final Weight" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam heading caption = "General Texture Parameters" visible = @oldver || (!@oldver && @expert) endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @oldver || (!@oldver && @expert) endparam param tweight caption = "Texture weight" default = 0.0 visible = @oldver || (!@oldver && @expert) endparam param ts caption = "Texture scale" default = 20.0 visible = @oldver || (!@oldver && @expert) endparam param tc caption = "Texture modifier" default = 5.0 visible = @oldver || (!@oldver && @expert) endparam param pwr caption = "Texture power" default = 1.0 visible = @oldver || (!@oldver && @expert) endparam func fn3 caption = "Texture Function 1" default = sqr() visible = @oldver || (!@oldver && @expert) endfunc func fn4 caption = "Texture Function 2" default = acos() visible = @oldver || (!@oldver && @expert) endfunc } TextureRaytrace { ; June 7, 2004 ; based upon the Raytrace method of Stig Pettersson ; fBM and texture options added ; Multiple gradient methods removed. ; Changed some defaults February 19, 2005 init: complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p = xx + flip(yy) loop: float angle=0 complex ww = 0 complex w = 0 float tII = 0 final: complex z2 = #z*(1-@weight) + p*@weight w = fn4(fn3((fn2(@pweight*p+#pixel+@rweight*real(#z)))*10^@pwr))*@ts ww = fn4(fn3((w - round(w)))) + @toffset tII = cabs(ww)*@tc tII = (tII - trunc(tII))*@tweight angle=(real(z2)+1)/2 if imag(#z)==1.23456789e20||imag(#z)==-1.23456789e20||imag(#z)==-2.23456789e20 #index=angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+tII else #index=0.05*#numiter endif default: title = "Texture Raytrace" heading caption = "Texture Raytrace" endheading $ifdef VER40 heading text = "This coloring formula is a simplification of the Raytrace \ formula by Stig Petersson. It also contains additional texture options. \ The formula is intended for use with the 'Only Brots' ufm in reb.ufm and \ related formulas of Stig Petersson." endheading $else heading caption = "This coloring formula is a" endheading heading caption = "simplification of the Raytrace" endheading heading caption = "formula by Stig Petersson." endheading heading caption = "It also contains additional" endheading heading caption = "Texture options. The formula is" endheading heading caption = "intended for use with Only Brots" endheading heading caption = "and related formulas of Stig Petersson. " endheading $endif param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Transfer Weight" default = 1.0 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam param fbmf caption = "fBm Final Weight" default =0.0 endparam param rweight caption = "Texture Ray Weight" default = 0.0 endparam param pweight caption = "Texture fBm Weight" default = 0.0 endparam param toffset caption = "Texture offset" default = (1,1) hint = "Changes the texture pattern." endparam param tweight caption = "Texture weight" default = 0.0 endparam param ts caption = "Texture scale" default = 5.0 endparam param tc caption = "Texture modifier" default = 5.0 endparam param pwr caption = "Texture power" default = 1.0 endparam func fn2 caption = "Texture Adjustment" default = exp() endfunc func fn3 caption = "Texture Function 1" default = ident() endfunc func fn4 caption = "Texture Function 2" default = acos() endfunc } exp_rock2_texture { ; Ron Barnett, October 2003 global: float X[101,101] X[1,1]=0.451,X[2,1]=0.475,X[3,1]=0.576,X[4,1]=0.608,X[5,1]=0.710,X[6,1]=0.647,X[7,1]=0.612,X[8,1]=0.576,X[9,1]=0.627,X[10,1]=0.608,X[11,1]=0.690,X[12,1]=0.675,X[13,1]=0.388,X[14,1]=0.376,X[15,1]=0.337,X[16,1]=0.365,X[17,1]=0.341,X[18,1]=0.443,X[19,1]=0.475,X[20,1]=0.267,X[21,1]=0.255,X[22,1]=0.525,X[23,1]=0.408,X[24,1]=0.400,X[25,1]=0.227,X[26,1]=0.467,X[27,1]=0.424,X[28,1]=0.451,X[29,1]=0.486,X[30,1]=0.710,X[31,1]=0.427,X[32,1]=0.392,X[33,1]=0.404,X[34,1]=0.455,X[35,1]=0.612,X[36,1]=0.510,X[37,1]=0.333,X[38,1]=0.345,X[39,1]=0.537,X[40,1]=0.624,X[41,1]=0.478,X[42,1]=0.627,X[43,1]=0.565,X[44,1]=0.486,X[45,1]=0.396,X[46,1]=0.541,X[47,1]=0.357,X[48,1]=0.357,X[49,1]=0.443,X[50,1]=0.498 X[51,1]=0.541,X[52,1]=0.510,X[53,1]=0.549,X[54,1]=0.569,X[55,1]=0.729,X[56,1]=0.596,X[57,1]=0.659,X[58,1]=0.647,X[59,1]=0.682,X[60,1]=0.659,X[61,1]=0.702,X[62,1]=0.733,X[63,1]=0.427,X[64,1]=0.361,X[65,1]=0.337,X[66,1]=0.345,X[67,1]=0.427,X[68,1]=0.424,X[69,1]=0.494,X[70,1]=0.282,X[71,1]=0.341,X[72,1]=0.494,X[73,1]=0.412,X[74,1]=0.451,X[75,1]=0.463,X[76,1]=0.275,X[77,1]=0.439,X[78,1]=0.447,X[79,1]=0.486,X[80,1]=0.553,X[81,1]=0.384,X[82,1]=0.404,X[83,1]=0.384,X[84,1]=0.427,X[85,1]=0.494,X[86,1]=0.486,X[87,1]=0.365,X[88,1]=0.341,X[89,1]=0.396,X[90,1]=0.443,X[91,1]=0.451,X[92,1]=0.627,X[93,1]=0.541,X[94,1]=0.455,X[95,1]=0.420,X[96,1]=0.478,X[97,1]=0.463,X[98,1]=0.424,X[99,1]=0.416,X[100,1]=0.463 X[1,2]=0.459,X[2,2]=0.278,X[3,2]=0.400,X[4,2]=0.478,X[5,2]=0.561,X[6,2]=0.459,X[7,2]=0.600,X[8,2]=0.498,X[9,2]=0.529,X[10,2]=0.624,X[11,2]=0.349,X[12,2]=0.431,X[13,2]=0.486,X[14,2]=0.537,X[15,2]=0.427,X[16,2]=0.357,X[17,2]=0.506,X[18,2]=0.463,X[19,2]=0.337,X[20,2]=0.259,X[21,2]=0.349,X[22,2]=0.592,X[23,2]=0.329,X[24,2]=0.404,X[25,2]=0.392,X[26,2]=0.443,X[27,2]=0.392,X[28,2]=0.227,X[29,2]=0.482,X[30,2]=0.482,X[31,2]=0.475,X[32,2]=0.314,X[33,2]=0.380,X[34,2]=0.400,X[35,2]=0.420,X[36,2]=0.345,X[37,2]=0.471,X[38,2]=0.431,X[39,2]=0.463,X[40,2]=0.529,X[41,2]=0.424,X[42,2]=0.557,X[43,2]=0.518,X[44,2]=0.686,X[45,2]=0.690,X[46,2]=0.631,X[47,2]=0.314,X[48,2]=0.533,X[49,2]=0.557,X[50,2]=0.690 X[51,2]=0.384,X[52,2]=0.294,X[53,2]=0.400,X[54,2]=0.482,X[55,2]=0.545,X[56,2]=0.576,X[57,2]=0.553,X[58,2]=0.580,X[59,2]=0.541,X[60,2]=0.647,X[61,2]=0.329,X[62,2]=0.408,X[63,2]=0.435,X[64,2]=0.498,X[65,2]=0.443,X[66,2]=0.357,X[67,2]=0.388,X[68,2]=0.443,X[69,2]=0.337,X[70,2]=0.251,X[71,2]=0.337,X[72,2]=0.392,X[73,2]=0.345,X[74,2]=0.431,X[75,2]=0.467,X[76,2]=0.475,X[77,2]=0.404,X[78,2]=0.286,X[79,2]=0.392,X[80,2]=0.482,X[81,2]=0.416,X[82,2]=0.306,X[83,2]=0.388,X[84,2]=0.318,X[85,2]=0.475,X[86,2]=0.333,X[87,2]=0.435,X[88,2]=0.341,X[89,2]=0.400,X[90,2]=0.435,X[91,2]=0.404,X[92,2]=0.557,X[93,2]=0.373,X[94,2]=0.682,X[95,2]=0.647,X[96,2]=0.569,X[97,2]=0.302,X[98,2]=0.486,X[99,2]=0.529,X[100,2]=0.651 X[1,3]=0.475,X[2,3]=0.592,X[3,3]=0.698,X[4,3]=0.396,X[5,3]=0.278,X[6,3]=0.294,X[7,3]=0.286,X[8,3]=0.341,X[9,3]=0.396,X[10,3]=0.431,X[11,3]=0.498,X[12,3]=0.482,X[13,3]=0.420,X[14,3]=0.318,X[15,3]=0.518,X[16,3]=0.455,X[17,3]=0.451,X[18,3]=0.435,X[19,3]=0.384,X[20,3]=0.314,X[21,3]=0.302,X[22,3]=0.365,X[23,3]=0.310,X[24,3]=0.349,X[25,3]=0.302,X[26,3]=0.459,X[27,3]=0.282,X[28,3]=0.208,X[29,3]=0.243,X[30,3]=0.263,X[31,3]=0.310,X[32,3]=0.369,X[33,3]=0.294,X[34,3]=0.251,X[35,3]=0.220,X[36,3]=0.212,X[37,3]=0.263,X[38,3]=0.290,X[39,3]=0.490,X[40,3]=0.478,X[41,3]=0.443,X[42,3]=0.388,X[43,3]=0.412,X[44,3]=0.345,X[45,3]=0.439,X[46,3]=0.510,X[47,3]=0.314,X[48,3]=0.655,X[49,3]=0.635,X[50,3]=0.620 X[51,3]=0.416,X[52,3]=0.682,X[53,3]=0.698,X[54,3]=0.424,X[55,3]=0.278,X[56,3]=0.298,X[57,3]=0.424,X[58,3]=0.314,X[59,3]=0.353,X[60,3]=0.443,X[61,3]=0.506,X[62,3]=0.498,X[63,3]=0.463,X[64,3]=0.310,X[65,3]=0.533,X[66,3]=0.439,X[67,3]=0.459,X[68,3]=0.463,X[69,3]=0.431,X[70,3]=0.290,X[71,3]=0.322,X[72,3]=0.431,X[73,3]=0.365,X[74,3]=0.361,X[75,3]=0.302,X[76,3]=0.561,X[77,3]=0.278,X[78,3]=0.192,X[79,3]=0.255,X[80,3]=0.259,X[81,3]=0.306,X[82,3]=0.376,X[83,3]=0.298,X[84,3]=0.271,X[85,3]=0.251,X[86,3]=0.204,X[87,3]=0.278,X[88,3]=0.286,X[89,3]=0.443,X[90,3]=0.435,X[91,3]=0.463,X[92,3]=0.400,X[93,3]=0.467,X[94,3]=0.318,X[95,3]=0.459,X[96,3]=0.608,X[97,3]=0.357,X[98,3]=0.514,X[99,3]=0.620,X[100,3]=0.592 X[1,4]=0.459,X[2,4]=0.553,X[3,4]=0.463,X[4,4]=0.396,X[5,4]=0.533,X[6,4]=0.639,X[7,4]=0.541,X[8,4]=0.694,X[9,4]=0.729,X[10,4]=0.694,X[11,4]=0.600,X[12,4]=0.561,X[13,4]=0.408,X[14,4]=0.361,X[15,4]=0.259,X[16,4]=0.208,X[17,4]=0.247,X[18,4]=0.294,X[19,4]=0.494,X[20,4]=0.310,X[21,4]=0.369,X[22,4]=0.310,X[23,4]=0.349,X[24,4]=0.310,X[25,4]=0.227,X[26,4]=0.404,X[27,4]=0.357,X[28,4]=0.282,X[29,4]=0.447,X[30,4]=0.502,X[31,4]=0.580,X[32,4]=0.533,X[33,4]=0.580,X[34,4]=0.729,X[35,4]=0.576,X[36,4]=0.616,X[37,4]=0.678,X[38,4]=0.537,X[39,4]=0.337,X[40,4]=0.243,X[41,4]=0.267,X[42,4]=0.333,X[43,4]=0.282,X[44,4]=0.325,X[45,4]=0.576,X[46,4]=0.361,X[47,4]=0.310,X[48,4]=0.467,X[49,4]=0.569,X[50,4]=0.482 X[51,4]=0.467,X[52,4]=0.486,X[53,4]=0.471,X[54,4]=0.435,X[55,4]=0.537,X[56,4]=0.710,X[57,4]=0.686,X[58,4]=0.612,X[59,4]=0.761,X[60,4]=0.690,X[61,4]=0.631,X[62,4]=0.710,X[63,4]=0.424,X[64,4]=0.341,X[65,4]=0.247,X[66,4]=0.298,X[67,4]=0.263,X[68,4]=0.275,X[69,4]=0.416,X[70,4]=0.369,X[71,4]=0.416,X[72,4]=0.365,X[73,4]=0.357,X[74,4]=0.278,X[75,4]=0.259,X[76,4]=0.302,X[77,4]=0.349,X[78,4]=0.290,X[79,4]=0.369,X[80,4]=0.490,X[81,4]=0.588,X[82,4]=0.549,X[83,4]=0.608,X[84,4]=0.667,X[85,4]=0.667,X[86,4]=0.643,X[87,4]=0.678,X[88,4]=0.616,X[89,4]=0.443,X[90,4]=0.247,X[91,4]=0.271,X[92,4]=0.325,X[93,4]=0.263,X[94,4]=0.325,X[95,4]=0.584,X[96,4]=0.510,X[97,4]=0.349,X[98,4]=0.337,X[99,4]=0.506,X[100,4]=0.494 X[1,5]=0.678,X[2,5]=0.663,X[3,5]=0.698,X[4,5]=0.533,X[5,5]=0.561,X[6,5]=0.486,X[7,5]=0.624,X[8,5]=0.518,X[9,5]=0.706,X[10,5]=0.651,X[11,5]=0.678,X[12,5]=0.561,X[13,5]=0.380,X[14,5]=0.333,X[15,5]=0.424,X[16,5]=0.490,X[17,5]=0.557,X[18,5]=0.431,X[19,5]=0.373,X[20,5]=0.373,X[21,5]=0.463,X[22,5]=0.498,X[23,5]=0.357,X[24,5]=0.349,X[25,5]=0.318,X[26,5]=0.427,X[27,5]=0.596,X[28,5]=0.569,X[29,5]=0.533,X[30,5]=0.643,X[31,5]=0.545,X[32,5]=0.439,X[33,5]=0.482,X[34,5]=0.576,X[35,5]=0.522,X[36,5]=0.584,X[37,5]=0.443,X[38,5]=0.576,X[39,5]=0.651,X[40,5]=0.502,X[41,5]=0.655,X[42,5]=0.671,X[43,5]=0.427,X[44,5]=0.404,X[45,5]=0.337,X[46,5]=0.455,X[47,5]=0.322,X[48,5]=0.612,X[49,5]=0.624,X[50,5]=0.722 X[51,5]=0.651,X[52,5]=0.659,X[53,5]=0.678,X[54,5]=0.459,X[55,5]=0.576,X[56,5]=0.518,X[57,5]=0.608,X[58,5]=0.522,X[59,5]=0.588,X[60,5]=0.647,X[61,5]=0.690,X[62,5]=0.741,X[63,5]=0.435,X[64,5]=0.325,X[65,5]=0.459,X[66,5]=0.604,X[67,5]=0.443,X[68,5]=0.427,X[69,5]=0.373,X[70,5]=0.392,X[71,5]=0.541,X[72,5]=0.400,X[73,5]=0.392,X[74,5]=0.310,X[75,5]=0.294,X[76,5]=0.314,X[77,5]=0.596,X[78,5]=0.557,X[79,5]=0.463,X[80,5]=0.592,X[81,5]=0.525,X[82,5]=0.439,X[83,5]=0.471,X[84,5]=0.545,X[85,5]=0.482,X[86,5]=0.620,X[87,5]=0.478,X[88,5]=0.478,X[89,5]=0.490,X[90,5]=0.424,X[91,5]=0.671,X[92,5]=0.643,X[93,5]=0.486,X[94,5]=0.388,X[95,5]=0.345,X[96,5]=0.400,X[97,5]=0.361,X[98,5]=0.455,X[99,5]=0.529,X[100,5]=0.733 X[1,6]=0.459,X[2,6]=0.682,X[3,6]=0.569,X[4,6]=0.569,X[5,6]=0.525,X[6,6]=0.553,X[7,6]=0.439,X[8,6]=0.600,X[9,6]=0.478,X[10,6]=0.420,X[11,6]=0.576,X[12,6]=0.549,X[13,6]=0.404,X[14,6]=0.388,X[15,6]=0.400,X[16,6]=0.369,X[17,6]=0.463,X[18,6]=0.537,X[19,6]=0.463,X[20,6]=0.318,X[21,6]=0.537,X[22,6]=0.455,X[23,6]=0.357,X[24,6]=0.435,X[25,6]=0.498,X[26,6]=0.753,X[27,6]=0.706,X[28,6]=0.408,X[29,6]=0.443,X[30,6]=0.392,X[31,6]=0.522,X[32,6]=0.357,X[33,6]=0.514,X[34,6]=0.549,X[35,6]=0.553,X[36,6]=0.435,X[37,6]=0.522,X[38,6]=0.525,X[39,6]=0.459,X[40,6]=0.298,X[41,6]=0.416,X[42,6]=0.671,X[43,6]=0.710,X[44,6]=0.733,X[45,6]=0.659,X[46,6]=0.482,X[47,6]=0.369,X[48,6]=0.565,X[49,6]=0.698,X[50,6]=0.569 X[51,6]=0.549,X[52,6]=0.490,X[53,6]=0.553,X[54,6]=0.533,X[55,6]=0.541,X[56,6]=0.502,X[57,6]=0.510,X[58,6]=0.443,X[59,6]=0.616,X[60,6]=0.427,X[61,6]=0.584,X[62,6]=0.722,X[63,6]=0.439,X[64,6]=0.345,X[65,6]=0.416,X[66,6]=0.471,X[67,6]=0.337,X[68,6]=0.502,X[69,6]=0.490,X[70,6]=0.325,X[71,6]=0.604,X[72,6]=0.478,X[73,6]=0.384,X[74,6]=0.408,X[75,6]=0.325,X[76,6]=0.706,X[77,6]=0.702,X[78,6]=0.392,X[79,6]=0.369,X[80,6]=0.416,X[81,6]=0.514,X[82,6]=0.349,X[83,6]=0.569,X[84,6]=0.608,X[85,6]=0.608,X[86,6]=0.439,X[87,6]=0.459,X[88,6]=0.588,X[89,6]=0.376,X[90,6]=0.486,X[91,6]=0.451,X[92,6]=0.655,X[93,6]=0.671,X[94,6]=0.733,X[95,6]=0.616,X[96,6]=0.529,X[97,6]=0.369,X[98,6]=0.459,X[99,6]=0.659,X[100,6]=0.561 X[1,7]=0.573,X[2,7]=0.353,X[3,7]=0.353,X[4,7]=0.388,X[5,7]=0.714,X[6,7]=0.671,X[7,7]=0.627,X[8,7]=0.427,X[9,7]=0.416,X[10,7]=0.478,X[11,7]=0.494,X[12,7]=0.663,X[13,7]=0.420,X[14,7]=0.396,X[15,7]=0.400,X[16,7]=0.259,X[17,7]=0.302,X[18,7]=0.290,X[19,7]=0.349,X[20,7]=0.282,X[21,7]=0.251,X[22,7]=0.314,X[23,7]=0.310,X[24,7]=0.533,X[25,7]=0.404,X[26,7]=0.478,X[27,7]=0.561,X[28,7]=0.392,X[29,7]=0.416,X[30,7]=0.353,X[31,7]=0.451,X[32,7]=0.561,X[33,7]=0.643,X[34,7]=0.569,X[35,7]=0.502,X[36,7]=0.494,X[37,7]=0.416,X[38,7]=0.655,X[39,7]=0.569,X[40,7]=0.392,X[41,7]=0.349,X[42,7]=0.439,X[43,7]=0.471,X[44,7]=0.565,X[45,7]=0.718,X[46,7]=0.388,X[47,7]=0.612,X[48,7]=0.706,X[49,7]=0.537,X[50,7]=0.678 X[51,7]=0.514,X[52,7]=0.400,X[53,7]=0.357,X[54,7]=0.392,X[55,7]=0.576,X[56,7]=0.431,X[57,7]=0.494,X[58,7]=0.482,X[59,7]=0.498,X[60,7]=0.471,X[61,7]=0.502,X[62,7]=0.663,X[63,7]=0.408,X[64,7]=0.384,X[65,7]=0.416,X[66,7]=0.314,X[67,7]=0.275,X[68,7]=0.302,X[69,7]=0.384,X[70,7]=0.286,X[71,7]=0.243,X[72,7]=0.271,X[73,7]=0.306,X[74,7]=0.545,X[75,7]=0.408,X[76,7]=0.416,X[77,7]=0.537,X[78,7]=0.522,X[79,7]=0.439,X[80,7]=0.424,X[81,7]=0.431,X[82,7]=0.596,X[83,7]=0.620,X[84,7]=0.627,X[85,7]=0.518,X[86,7]=0.545,X[87,7]=0.443,X[88,7]=0.624,X[89,7]=0.569,X[90,7]=0.612,X[91,7]=0.384,X[92,7]=0.424,X[93,7]=0.416,X[94,7]=0.616,X[95,7]=0.725,X[96,7]=0.541,X[97,7]=0.424,X[98,7]=0.604,X[99,7]=0.533,X[100,7]=0.686 X[1,8]=0.698,X[2,8]=0.573,X[3,8]=0.588,X[4,8]=0.737,X[5,8]=0.647,X[6,8]=0.639,X[7,8]=0.686,X[8,8]=0.545,X[9,8]=0.612,X[10,8]=0.600,X[11,8]=0.612,X[12,8]=0.702,X[13,8]=0.573,X[14,8]=0.690,X[15,8]=0.565,X[16,8]=0.698,X[17,8]=0.341,X[18,8]=0.357,X[19,8]=0.412,X[20,8]=0.427,X[21,8]=0.537,X[22,8]=0.400,X[23,8]=0.357,X[24,8]=0.329,X[25,8]=0.643,X[26,8]=0.435,X[27,8]=0.369,X[28,8]=0.494,X[29,8]=0.475,X[30,8]=0.467,X[31,8]=0.392,X[32,8]=0.522,X[33,8]=0.592,X[34,8]=0.490,X[35,8]=0.592,X[36,8]=0.427,X[37,8]=0.404,X[38,8]=0.573,X[39,8]=0.424,X[40,8]=0.663,X[41,8]=0.345,X[42,8]=0.502,X[43,8]=0.514,X[44,8]=0.498,X[45,8]=0.647,X[46,8]=0.333,X[47,8]=0.518,X[48,8]=0.478,X[49,8]=0.616,X[50,8]=0.557 X[51,8]=0.596,X[52,8]=0.624,X[53,8]=0.604,X[54,8]=0.714,X[55,8]=0.659,X[56,8]=0.620,X[57,8]=0.631,X[58,8]=0.573,X[59,8]=0.627,X[60,8]=0.604,X[61,8]=0.604,X[62,8]=0.698,X[63,8]=0.435,X[64,8]=0.671,X[65,8]=0.573,X[66,8]=0.702,X[67,8]=0.376,X[68,8]=0.337,X[69,8]=0.424,X[70,8]=0.435,X[71,8]=0.490,X[72,8]=0.420,X[73,8]=0.345,X[74,8]=0.365,X[75,8]=0.553,X[76,8]=0.486,X[77,8]=0.400,X[78,8]=0.471,X[79,8]=0.435,X[80,8]=0.463,X[81,8]=0.396,X[82,8]=0.529,X[83,8]=0.569,X[84,8]=0.478,X[85,8]=0.525,X[86,8]=0.443,X[87,8]=0.435,X[88,8]=0.502,X[89,8]=0.584,X[90,8]=0.569,X[91,8]=0.306,X[92,8]=0.518,X[93,8]=0.565,X[94,8]=0.533,X[95,8]=0.561,X[96,8]=0.349,X[97,8]=0.322,X[98,8]=0.459,X[99,8]=0.506,X[100,8]=0.588 X[1,9]=0.580,X[2,9]=0.490,X[3,9]=0.659,X[4,9]=0.655,X[5,9]=0.596,X[6,9]=0.400,X[7,9]=0.341,X[8,9]=0.349,X[9,9]=0.373,X[10,9]=0.357,X[11,9]=0.373,X[12,9]=0.537,X[13,9]=0.459,X[14,9]=0.576,X[15,9]=0.369,X[16,9]=0.655,X[17,9]=0.373,X[18,9]=0.494,X[19,9]=0.647,X[20,9]=0.737,X[21,9]=0.773,X[22,9]=0.698,X[23,9]=0.533,X[24,9]=0.361,X[25,9]=0.494,X[26,9]=0.506,X[27,9]=0.467,X[28,9]=0.588,X[29,9]=0.475,X[30,9]=0.471,X[31,9]=0.384,X[32,9]=0.690,X[33,9]=0.592,X[34,9]=0.471,X[35,9]=0.541,X[36,9]=0.537,X[37,9]=0.380,X[38,9]=0.518,X[39,9]=0.471,X[40,9]=0.612,X[41,9]=0.537,X[42,9]=0.353,X[43,9]=0.427,X[44,9]=0.584,X[45,9]=0.416,X[46,9]=0.325,X[47,9]=0.478,X[48,9]=0.404,X[49,9]=0.620,X[50,9]=0.518 X[51,9]=0.631,X[52,9]=0.537,X[53,9]=0.667,X[54,9]=0.631,X[55,9]=0.596,X[56,9]=0.447,X[57,9]=0.490,X[58,9]=0.380,X[59,9]=0.380,X[60,9]=0.369,X[61,9]=0.400,X[62,9]=0.678,X[63,9]=0.420,X[64,9]=0.576,X[65,9]=0.373,X[66,9]=0.486,X[67,9]=0.490,X[68,9]=0.482,X[69,9]=0.659,X[70,9]=0.749,X[71,9]=0.784,X[72,9]=0.714,X[73,9]=0.514,X[74,9]=0.353,X[75,9]=0.408,X[76,9]=0.443,X[77,9]=0.459,X[78,9]=0.561,X[79,9]=0.455,X[80,9]=0.541,X[81,9]=0.412,X[82,9]=0.694,X[83,9]=0.592,X[84,9]=0.502,X[85,9]=0.471,X[86,9]=0.537,X[87,9]=0.376,X[88,9]=0.447,X[89,9]=0.522,X[90,9]=0.541,X[91,9]=0.482,X[92,9]=0.376,X[93,9]=0.471,X[94,9]=0.596,X[95,9]=0.388,X[96,9]=0.341,X[97,9]=0.427,X[98,9]=0.435,X[99,9]=0.592,X[100,9]=0.514 X[1,10]=0.337,X[2,10]=0.325,X[3,10]=0.361,X[4,10]=0.345,X[5,10]=0.318,X[6,10]=0.329,X[7,10]=0.337,X[8,10]=0.325,X[9,10]=0.361,X[10,10]=0.341,X[11,10]=0.357,X[12,10]=0.576,X[13,10]=0.725,X[14,10]=0.624,X[15,10]=0.651,X[16,10]=0.647,X[17,10]=0.686,X[18,10]=0.643,X[19,10]=0.502,X[20,10]=0.404,X[21,10]=0.486,X[22,10]=0.467,X[23,10]=0.392,X[24,10]=0.431,X[25,10]=0.620,X[26,10]=0.525,X[27,10]=0.592,X[28,10]=0.561,X[29,10]=0.427,X[30,10]=0.525,X[31,10]=0.443,X[32,10]=0.565,X[33,10]=0.463,X[34,10]=0.529,X[35,10]=0.443,X[36,10]=0.545,X[37,10]=0.576,X[38,10]=0.510,X[39,10]=0.537,X[40,10]=0.596,X[41,10]=0.698,X[42,10]=0.322,X[43,10]=0.600,X[44,10]=0.376,X[45,10]=0.537,X[46,10]=0.592,X[47,10]=0.376,X[48,10]=0.306,X[49,10]=0.314,X[50,10]=0.298 X[51,10]=0.310,X[52,10]=0.412,X[53,10]=0.373,X[54,10]=0.337,X[55,10]=0.318,X[56,10]=0.322,X[57,10]=0.475,X[58,10]=0.341,X[59,10]=0.325,X[60,10]=0.341,X[61,10]=0.380,X[62,10]=0.431,X[63,10]=0.702,X[64,10]=0.576,X[65,10]=0.698,X[66,10]=0.667,X[67,10]=0.624,X[68,10]=0.608,X[69,10]=0.486,X[70,10]=0.392,X[71,10]=0.427,X[72,10]=0.447,X[73,10]=0.400,X[74,10]=0.439,X[75,10]=0.518,X[76,10]=0.596,X[77,10]=0.576,X[78,10]=0.596,X[79,10]=0.502,X[80,10]=0.608,X[81,10]=0.455,X[82,10]=0.506,X[83,10]=0.475,X[84,10]=0.553,X[85,10]=0.435,X[86,10]=0.580,X[87,10]=0.561,X[88,10]=0.522,X[89,10]=0.506,X[90,10]=0.486,X[91,10]=0.718,X[92,10]=0.310,X[93,10]=0.333,X[94,10]=0.357,X[95,10]=0.553,X[96,10]=0.635,X[97,10]=0.514,X[98,10]=0.341,X[99,10]=0.310,X[100,10]=0.282 X[1,11]=0.667,X[2,11]=0.420,X[3,11]=0.353,X[4,11]=0.471,X[5,11]=0.549,X[6,11]=0.600,X[7,11]=0.592,X[8,11]=0.451,X[9,11]=0.435,X[10,11]=0.400,X[11,11]=0.447,X[12,11]=0.502,X[13,11]=0.678,X[14,11]=0.596,X[15,11]=0.635,X[16,11]=0.565,X[17,11]=0.600,X[18,11]=0.443,X[19,11]=0.525,X[20,11]=0.333,X[21,11]=0.525,X[22,11]=0.392,X[23,11]=0.400,X[24,11]=0.361,X[25,11]=0.388,X[26,11]=0.478,X[27,11]=0.659,X[28,11]=0.596,X[29,11]=0.435,X[30,11]=0.651,X[31,11]=0.408,X[32,11]=0.349,X[33,11]=0.408,X[34,11]=0.557,X[35,11]=0.569,X[36,11]=0.447,X[37,11]=0.471,X[38,11]=0.647,X[39,11]=0.612,X[40,11]=0.576,X[41,11]=0.529,X[42,11]=0.710,X[43,11]=0.286,X[44,11]=0.275,X[45,11]=0.431,X[46,11]=0.592,X[47,11]=0.690,X[48,11]=0.655,X[49,11]=0.537,X[50,11]=0.698 X[51,11]=0.627,X[52,11]=0.380,X[53,11]=0.369,X[54,11]=0.455,X[55,11]=0.494,X[56,11]=0.710,X[57,11]=0.518,X[58,11]=0.443,X[59,11]=0.467,X[60,11]=0.388,X[61,11]=0.478,X[62,11]=0.510,X[63,11]=0.667,X[64,11]=0.604,X[65,11]=0.624,X[66,11]=0.639,X[67,11]=0.686,X[68,11]=0.439,X[69,11]=0.486,X[70,11]=0.333,X[71,11]=0.455,X[72,11]=0.635,X[73,11]=0.408,X[74,11]=0.353,X[75,11]=0.416,X[76,11]=0.408,X[77,11]=0.608,X[78,11]=0.600,X[79,11]=0.486,X[80,11]=0.533,X[81,11]=0.400,X[82,11]=0.349,X[83,11]=0.439,X[84,11]=0.514,X[85,11]=0.498,X[86,11]=0.529,X[87,11]=0.522,X[88,11]=0.537,X[89,11]=0.659,X[90,11]=0.475,X[91,11]=0.439,X[92,11]=0.698,X[93,11]=0.388,X[94,11]=0.282,X[95,11]=0.467,X[96,11]=0.643,X[97,11]=0.675,X[98,11]=0.667,X[99,11]=0.549,X[100,11]=0.690 X[1,12]=0.600,X[2,12]=0.416,X[3,12]=0.365,X[4,12]=0.424,X[5,12]=0.573,X[6,12]=0.702,X[7,12]=0.729,X[8,12]=0.710,X[9,12]=0.459,X[10,12]=0.525,X[11,12]=0.400,X[12,12]=0.361,X[13,12]=0.369,X[14,12]=0.478,X[15,12]=0.584,X[16,12]=0.639,X[17,12]=0.522,X[18,12]=0.573,X[19,12]=0.510,X[20,12]=0.502,X[21,12]=0.576,X[22,12]=0.275,X[23,12]=0.298,X[24,12]=0.439,X[25,12]=0.416,X[26,12]=0.408,X[27,12]=0.361,X[28,12]=0.584,X[29,12]=0.373,X[30,12]=0.600,X[31,12]=0.667,X[32,12]=0.592,X[33,12]=0.490,X[34,12]=0.518,X[35,12]=0.643,X[36,12]=0.659,X[37,12]=0.553,X[38,12]=0.380,X[39,12]=0.380,X[40,12]=0.498,X[41,12]=0.353,X[42,12]=0.553,X[43,12]=0.318,X[44,12]=0.294,X[45,12]=0.369,X[46,12]=0.600,X[47,12]=0.725,X[48,12]=0.655,X[49,12]=0.627,X[50,12]=0.612 X[51,12]=0.655,X[52,12]=0.396,X[53,12]=0.365,X[54,12]=0.431,X[55,12]=0.580,X[56,12]=0.729,X[57,12]=0.792,X[58,12]=0.706,X[59,12]=0.569,X[60,12]=0.529,X[61,12]=0.408,X[62,12]=0.365,X[63,12]=0.349,X[64,12]=0.498,X[65,12]=0.584,X[66,12]=0.675,X[67,12]=0.533,X[68,12]=0.588,X[69,12]=0.502,X[70,12]=0.514,X[71,12]=0.541,X[72,12]=0.380,X[73,12]=0.306,X[74,12]=0.475,X[75,12]=0.498,X[76,12]=0.333,X[77,12]=0.373,X[78,12]=0.600,X[79,12]=0.522,X[80,12]=0.561,X[81,12]=0.631,X[82,12]=0.588,X[83,12]=0.471,X[84,12]=0.494,X[85,12]=0.584,X[86,12]=0.690,X[87,12]=0.569,X[88,12]=0.455,X[89,12]=0.427,X[90,12]=0.573,X[91,12]=0.341,X[92,12]=0.627,X[93,12]=0.541,X[94,12]=0.294,X[95,12]=0.392,X[96,12]=0.490,X[97,12]=0.655,X[98,12]=0.675,X[99,12]=0.588,X[100,12]=0.655 X[1,13]=0.635,X[2,13]=0.388,X[3,13]=0.373,X[4,13]=0.404,X[5,13]=0.486,X[6,13]=0.604,X[7,13]=0.576,X[8,13]=0.733,X[9,13]=0.404,X[10,13]=0.314,X[11,13]=0.306,X[12,13]=0.286,X[13,13]=0.329,X[14,13]=0.318,X[15,13]=0.412,X[16,13]=0.400,X[17,13]=0.455,X[18,13]=0.439,X[19,13]=0.439,X[20,13]=0.655,X[21,13]=0.408,X[22,13]=0.373,X[23,13]=0.384,X[24,13]=0.529,X[25,13]=0.373,X[26,13]=0.427,X[27,13]=0.376,X[28,13]=0.490,X[29,13]=0.537,X[30,13]=0.545,X[31,13]=0.447,X[32,13]=0.376,X[33,13]=0.502,X[34,13]=0.478,X[35,13]=0.588,X[36,13]=0.576,X[37,13]=0.467,X[38,13]=0.616,X[39,13]=0.533,X[40,13]=0.451,X[41,13]=0.427,X[42,13]=0.569,X[43,13]=0.373,X[44,13]=0.302,X[45,13]=0.522,X[46,13]=0.525,X[47,13]=0.455,X[48,13]=0.612,X[49,13]=0.588,X[50,13]=0.729 X[51,13]=0.478,X[52,13]=0.373,X[53,13]=0.365,X[54,13]=0.404,X[55,13]=0.510,X[56,13]=0.600,X[57,13]=0.576,X[58,13]=0.671,X[59,13]=0.600,X[60,13]=0.314,X[61,13]=0.298,X[62,13]=0.267,X[63,13]=0.275,X[64,13]=0.318,X[65,13]=0.373,X[66,13]=0.369,X[67,13]=0.376,X[68,13]=0.443,X[69,13]=0.412,X[70,13]=0.667,X[71,13]=0.639,X[72,13]=0.322,X[73,13]=0.396,X[74,13]=0.537,X[75,13]=0.471,X[76,13]=0.373,X[77,13]=0.400,X[78,13]=0.533,X[79,13]=0.553,X[80,13]=0.533,X[81,13]=0.420,X[82,13]=0.361,X[83,13]=0.482,X[84,13]=0.431,X[85,13]=0.592,X[86,13]=0.545,X[87,13]=0.467,X[88,13]=0.541,X[89,13]=0.471,X[90,13]=0.580,X[91,13]=0.408,X[92,13]=0.596,X[93,13]=0.624,X[94,13]=0.314,X[95,13]=0.482,X[96,13]=0.518,X[97,13]=0.443,X[98,13]=0.506,X[99,13]=0.573,X[100,13]=0.706 X[1,14]=0.482,X[2,14]=0.361,X[3,14]=0.384,X[4,14]=0.329,X[5,14]=0.376,X[6,14]=0.431,X[7,14]=0.627,X[8,14]=0.624,X[9,14]=0.337,X[10,14]=0.345,X[11,14]=0.239,X[12,14]=0.282,X[13,14]=0.298,X[14,14]=0.294,X[15,14]=0.282,X[16,14]=0.235,X[17,14]=0.243,X[18,14]=0.286,X[19,14]=0.361,X[20,14]=0.424,X[21,14]=0.337,X[22,14]=0.392,X[23,14]=0.424,X[24,14]=0.459,X[25,14]=0.333,X[26,14]=0.380,X[27,14]=0.475,X[28,14]=0.365,X[29,14]=0.373,X[30,14]=0.427,X[31,14]=0.443,X[32,14]=0.439,X[33,14]=0.420,X[34,14]=0.388,X[35,14]=0.404,X[36,14]=0.565,X[37,14]=0.510,X[38,14]=0.341,X[39,14]=0.361,X[40,14]=0.314,X[41,14]=0.349,X[42,14]=0.710,X[43,14]=0.333,X[44,14]=0.290,X[45,14]=0.424,X[46,14]=0.463,X[47,14]=0.420,X[48,14]=0.392,X[49,14]=0.494,X[50,14]=0.565 X[51,14]=0.416,X[52,14]=0.376,X[53,14]=0.396,X[54,14]=0.322,X[55,14]=0.408,X[56,14]=0.455,X[57,14]=0.424,X[58,14]=0.549,X[59,14]=0.549,X[60,14]=0.310,X[61,14]=0.235,X[62,14]=0.259,X[63,14]=0.298,X[64,14]=0.290,X[65,14]=0.282,X[66,14]=0.263,X[67,14]=0.224,X[68,14]=0.286,X[69,14]=0.384,X[70,14]=0.384,X[71,14]=0.373,X[72,14]=0.369,X[73,14]=0.420,X[74,14]=0.471,X[75,14]=0.498,X[76,14]=0.380,X[77,14]=0.478,X[78,14]=0.384,X[79,14]=0.471,X[80,14]=0.447,X[81,14]=0.427,X[82,14]=0.455,X[83,14]=0.431,X[84,14]=0.475,X[85,14]=0.388,X[86,14]=0.600,X[87,14]=0.502,X[88,14]=0.404,X[89,14]=0.314,X[90,14]=0.376,X[91,14]=0.341,X[92,14]=0.686,X[93,14]=0.565,X[94,14]=0.318,X[95,14]=0.463,X[96,14]=0.525,X[97,14]=0.486,X[98,14]=0.345,X[99,14]=0.502,X[100,14]=0.588 X[1,15]=0.392,X[2,15]=0.373,X[3,15]=0.416,X[4,15]=0.435,X[5,15]=0.459,X[6,15]=0.388,X[7,15]=0.431,X[8,15]=0.529,X[9,15]=0.545,X[10,15]=0.596,X[11,15]=0.353,X[12,15]=0.376,X[13,15]=0.635,X[14,15]=0.635,X[15,15]=0.529,X[16,15]=0.608,X[17,15]=0.580,X[18,15]=0.580,X[19,15]=0.565,X[20,15]=0.690,X[21,15]=0.490,X[22,15]=0.451,X[23,15]=0.416,X[24,15]=0.478,X[25,15]=0.400,X[26,15]=0.435,X[27,15]=0.471,X[28,15]=0.353,X[29,15]=0.427,X[30,15]=0.365,X[31,15]=0.380,X[32,15]=0.373,X[33,15]=0.361,X[34,15]=0.357,X[35,15]=0.337,X[36,15]=0.459,X[37,15]=0.443,X[38,15]=0.435,X[39,15]=0.412,X[40,15]=0.310,X[41,15]=0.310,X[42,15]=0.384,X[43,15]=0.380,X[44,15]=0.357,X[45,15]=0.369,X[46,15]=0.259,X[47,15]=0.216,X[48,15]=0.220,X[49,15]=0.251,X[50,15]=0.337 X[51,15]=0.369,X[52,15]=0.337,X[53,15]=0.412,X[54,15]=0.471,X[55,15]=0.490,X[56,15]=0.412,X[57,15]=0.494,X[58,15]=0.471,X[59,15]=0.463,X[60,15]=0.522,X[61,15]=0.357,X[62,15]=0.353,X[63,15]=0.537,X[64,15]=0.639,X[65,15]=0.533,X[66,15]=0.569,X[67,15]=0.635,X[68,15]=0.584,X[69,15]=0.553,X[70,15]=0.694,X[71,15]=0.588,X[72,15]=0.451,X[73,15]=0.420,X[74,15]=0.459,X[75,15]=0.569,X[76,15]=0.459,X[77,15]=0.459,X[78,15]=0.376,X[79,15]=0.486,X[80,15]=0.369,X[81,15]=0.373,X[82,15]=0.373,X[83,15]=0.365,X[84,15]=0.420,X[85,15]=0.376,X[86,15]=0.498,X[87,15]=0.435,X[88,15]=0.443,X[89,15]=0.431,X[90,15]=0.357,X[91,15]=0.318,X[92,15]=0.376,X[93,15]=0.357,X[94,15]=0.353,X[95,15]=0.353,X[96,15]=0.325,X[97,15]=0.216,X[98,15]=0.235,X[99,15]=0.243,X[100,15]=0.349 X[1,16]=0.478,X[2,16]=0.400,X[3,16]=0.510,X[4,16]=0.376,X[5,16]=0.510,X[6,16]=0.565,X[7,16]=0.365,X[8,16]=0.435,X[9,16]=0.549,X[10,16]=0.506,X[11,16]=0.325,X[12,16]=0.494,X[13,16]=0.420,X[14,16]=0.490,X[15,16]=0.553,X[16,16]=0.431,X[17,16]=0.498,X[18,16]=0.506,X[19,16]=0.541,X[20,16]=0.478,X[21,16]=0.447,X[22,16]=0.659,X[23,16]=0.702,X[24,16]=0.490,X[25,16]=0.306,X[26,16]=0.369,X[27,16]=0.373,X[28,16]=0.333,X[29,16]=0.318,X[30,16]=0.275,X[31,16]=0.275,X[32,16]=0.310,X[33,16]=0.290,X[34,16]=0.294,X[35,16]=0.314,X[36,16]=0.329,X[37,16]=0.267,X[38,16]=0.271,X[39,16]=0.298,X[40,16]=0.337,X[41,16]=0.353,X[42,16]=0.396,X[43,16]=0.427,X[44,16]=0.471,X[45,16]=0.459,X[46,16]=0.443,X[47,16]=0.675,X[48,16]=0.600,X[49,16]=0.714,X[50,16]=0.675 X[51,16]=0.443,X[52,16]=0.365,X[53,16]=0.459,X[54,16]=0.396,X[55,16]=0.506,X[56,16]=0.443,X[57,16]=0.506,X[58,16]=0.522,X[59,16]=0.498,X[60,16]=0.467,X[61,16]=0.341,X[62,16]=0.357,X[63,16]=0.569,X[64,16]=0.506,X[65,16]=0.522,X[66,16]=0.514,X[67,16]=0.549,X[68,16]=0.533,X[69,16]=0.510,X[70,16]=0.431,X[71,16]=0.478,X[72,16]=0.573,X[73,16]=0.682,X[74,16]=0.467,X[75,16]=0.314,X[76,16]=0.337,X[77,16]=0.349,X[78,16]=0.322,X[79,16]=0.318,X[80,16]=0.302,X[81,16]=0.278,X[82,16]=0.314,X[83,16]=0.290,X[84,16]=0.314,X[85,16]=0.286,X[86,16]=0.329,X[87,16]=0.263,X[88,16]=0.278,X[89,16]=0.302,X[90,16]=0.322,X[91,16]=0.365,X[92,16]=0.404,X[93,16]=0.455,X[94,16]=0.471,X[95,16]=0.459,X[96,16]=0.416,X[97,16]=0.631,X[98,16]=0.706,X[99,16]=0.733,X[100,16]=0.627 X[1,17]=0.714,X[2,17]=0.408,X[3,17]=0.455,X[4,17]=0.506,X[5,17]=0.529,X[6,17]=0.616,X[7,17]=0.420,X[8,17]=0.396,X[9,17]=0.416,X[10,17]=0.471,X[11,17]=0.376,X[12,17]=0.392,X[13,17]=0.482,X[14,17]=0.467,X[15,17]=0.498,X[16,17]=0.424,X[17,17]=0.376,X[18,17]=0.427,X[19,17]=0.463,X[20,17]=0.420,X[21,17]=0.435,X[22,17]=0.471,X[23,17]=0.565,X[24,17]=0.451,X[25,17]=0.573,X[26,17]=0.455,X[27,17]=0.518,X[28,17]=0.667,X[29,17]=0.522,X[30,17]=0.427,X[31,17]=0.475,X[32,17]=0.498,X[33,17]=0.616,X[34,17]=0.596,X[35,17]=0.553,X[36,17]=0.675,X[37,17]=0.596,X[38,17]=0.561,X[39,17]=0.631,X[40,17]=0.682,X[41,17]=0.525,X[42,17]=0.498,X[43,17]=0.412,X[44,17]=0.373,X[45,17]=0.502,X[46,17]=0.443,X[47,17]=0.431,X[48,17]=0.635,X[49,17]=0.620,X[50,17]=0.667 X[51,17]=0.561,X[52,17]=0.443,X[53,17]=0.455,X[54,17]=0.451,X[55,17]=0.600,X[56,17]=0.549,X[57,17]=0.600,X[58,17]=0.525,X[59,17]=0.478,X[60,17]=0.435,X[61,17]=0.353,X[62,17]=0.349,X[63,17]=0.451,X[64,17]=0.435,X[65,17]=0.420,X[66,17]=0.376,X[67,17]=0.337,X[68,17]=0.443,X[69,17]=0.475,X[70,17]=0.443,X[71,17]=0.435,X[72,17]=0.380,X[73,17]=0.549,X[74,17]=0.443,X[75,17]=0.439,X[76,17]=0.718,X[77,17]=0.565,X[78,17]=0.659,X[79,17]=0.643,X[80,17]=0.482,X[81,17]=0.420,X[82,17]=0.435,X[83,17]=0.608,X[84,17]=0.663,X[85,17]=0.471,X[86,17]=0.682,X[87,17]=0.580,X[88,17]=0.643,X[89,17]=0.663,X[90,17]=0.702,X[91,17]=0.514,X[92,17]=0.498,X[93,17]=0.475,X[94,17]=0.388,X[95,17]=0.525,X[96,17]=0.667,X[97,17]=0.486,X[98,17]=0.533,X[99,17]=0.561,X[100,17]=0.651 X[1,18]=0.541,X[2,18]=0.388,X[3,18]=0.337,X[4,18]=0.443,X[5,18]=0.471,X[6,18]=0.608,X[7,18]=0.494,X[8,18]=0.584,X[9,18]=0.522,X[10,18]=0.357,X[11,18]=0.361,X[12,18]=0.486,X[13,18]=0.471,X[14,18]=0.431,X[15,18]=0.522,X[16,18]=0.537,X[17,18]=0.416,X[18,18]=0.439,X[19,18]=0.396,X[20,18]=0.333,X[21,18]=0.388,X[22,18]=0.400,X[23,18]=0.494,X[24,18]=0.557,X[25,18]=0.608,X[26,18]=0.439,X[27,18]=0.494,X[28,18]=0.361,X[29,18]=0.451,X[30,18]=0.416,X[31,18]=0.416,X[32,18]=0.557,X[33,18]=0.627,X[34,18]=0.682,X[35,18]=0.537,X[36,18]=0.561,X[37,18]=0.471,X[38,18]=0.541,X[39,18]=0.545,X[40,18]=0.639,X[41,18]=0.714,X[42,18]=0.478,X[43,18]=0.392,X[44,18]=0.467,X[45,18]=0.514,X[46,18]=0.467,X[47,18]=0.424,X[48,18]=0.502,X[49,18]=0.525,X[50,18]=0.443 X[51,18]=0.463,X[52,18]=0.373,X[53,18]=0.341,X[54,18]=0.463,X[55,18]=0.498,X[56,18]=0.510,X[57,18]=0.506,X[58,18]=0.537,X[59,18]=0.671,X[60,18]=0.357,X[61,18]=0.361,X[62,18]=0.392,X[63,18]=0.455,X[64,18]=0.467,X[65,18]=0.529,X[66,18]=0.514,X[67,18]=0.439,X[68,18]=0.424,X[69,18]=0.404,X[70,18]=0.314,X[71,18]=0.373,X[72,18]=0.361,X[73,18]=0.447,X[74,18]=0.541,X[75,18]=0.573,X[76,18]=0.682,X[77,18]=0.502,X[78,18]=0.384,X[79,18]=0.443,X[80,18]=0.510,X[81,18]=0.396,X[82,18]=0.616,X[83,18]=0.604,X[84,18]=0.647,X[85,18]=0.631,X[86,18]=0.584,X[87,18]=0.463,X[88,18]=0.518,X[89,18]=0.561,X[90,18]=0.616,X[91,18]=0.718,X[92,18]=0.510,X[93,18]=0.451,X[94,18]=0.459,X[95,18]=0.557,X[96,18]=0.651,X[97,18]=0.475,X[98,18]=0.424,X[99,18]=0.478,X[100,18]=0.467 X[1,19]=0.376,X[2,19]=0.361,X[3,19]=0.424,X[4,19]=0.557,X[5,19]=0.408,X[6,19]=0.369,X[7,19]=0.565,X[8,19]=0.612,X[9,19]=0.498,X[10,19]=0.373,X[11,19]=0.337,X[12,19]=0.408,X[13,19]=0.357,X[14,19]=0.443,X[15,19]=0.486,X[16,19]=0.431,X[17,19]=0.553,X[18,19]=0.608,X[19,19]=0.525,X[20,19]=0.537,X[21,19]=0.514,X[22,19]=0.388,X[23,19]=0.463,X[24,19]=0.365,X[25,19]=0.612,X[26,19]=0.400,X[27,19]=0.384,X[28,19]=0.380,X[29,19]=0.349,X[30,19]=0.384,X[31,19]=0.478,X[32,19]=0.627,X[33,19]=0.565,X[34,19]=0.624,X[35,19]=0.420,X[36,19]=0.392,X[37,19]=0.451,X[38,19]=0.431,X[39,19]=0.357,X[40,19]=0.435,X[41,19]=0.565,X[42,19]=0.514,X[43,19]=0.416,X[44,19]=0.506,X[45,19]=0.494,X[46,19]=0.298,X[47,19]=0.278,X[48,19]=0.302,X[49,19]=0.294,X[50,19]=0.337 X[51,19]=0.384,X[52,19]=0.396,X[53,19]=0.388,X[54,19]=0.506,X[55,19]=0.420,X[56,19]=0.424,X[57,19]=0.498,X[58,19]=0.365,X[59,19]=0.455,X[60,19]=0.333,X[61,19]=0.325,X[62,19]=0.349,X[63,19]=0.396,X[64,19]=0.412,X[65,19]=0.447,X[66,19]=0.490,X[67,19]=0.627,X[68,19]=0.616,X[69,19]=0.506,X[70,19]=0.557,X[71,19]=0.631,X[72,19]=0.376,X[73,19]=0.502,X[74,19]=0.376,X[75,19]=0.627,X[76,19]=0.306,X[77,19]=0.431,X[78,19]=0.357,X[79,19]=0.329,X[80,19]=0.373,X[81,19]=0.498,X[82,19]=0.659,X[83,19]=0.533,X[84,19]=0.549,X[85,19]=0.580,X[86,19]=0.392,X[87,19]=0.384,X[88,19]=0.431,X[89,19]=0.478,X[90,19]=0.345,X[91,19]=0.600,X[92,19]=0.518,X[93,19]=0.439,X[94,19]=0.498,X[95,19]=0.490,X[96,19]=0.424,X[97,19]=0.282,X[98,19]=0.286,X[99,19]=0.294,X[100,19]=0.337 X[1,20]=0.286,X[2,20]=0.353,X[3,20]=0.329,X[4,20]=0.318,X[5,20]=0.341,X[6,20]=0.329,X[7,20]=0.306,X[8,20]=0.353,X[9,20]=0.349,X[10,20]=0.298,X[11,20]=0.384,X[12,20]=0.349,X[13,20]=0.427,X[14,20]=0.494,X[15,20]=0.580,X[16,20]=0.529,X[17,20]=0.639,X[18,20]=0.502,X[19,20]=0.463,X[20,20]=0.486,X[21,20]=0.400,X[22,20]=0.514,X[23,20]=0.357,X[24,20]=0.525,X[25,20]=0.345,X[26,20]=0.424,X[27,20]=0.596,X[28,20]=0.541,X[29,20]=0.584,X[30,20]=0.561,X[31,20]=0.369,X[32,20]=0.761,X[33,20]=0.694,X[34,20]=0.431,X[35,20]=0.439,X[36,20]=0.475,X[37,20]=0.416,X[38,20]=0.388,X[39,20]=0.533,X[40,20]=0.639,X[41,20]=0.765,X[42,20]=0.412,X[43,20]=0.373,X[44,20]=0.435,X[45,20]=0.498,X[46,20]=0.573,X[47,20]=0.576,X[48,20]=0.710,X[49,20]=0.620,X[50,20]=0.282 X[51,20]=0.298,X[52,20]=0.349,X[53,20]=0.345,X[54,20]=0.341,X[55,20]=0.333,X[56,20]=0.349,X[57,20]=0.447,X[58,20]=0.310,X[59,20]=0.463,X[60,20]=0.298,X[61,20]=0.392,X[62,20]=0.384,X[63,20]=0.408,X[64,20]=0.518,X[65,20]=0.608,X[66,20]=0.608,X[67,20]=0.624,X[68,20]=0.431,X[69,20]=0.482,X[70,20]=0.455,X[71,20]=0.384,X[72,20]=0.533,X[73,20]=0.369,X[74,20]=0.529,X[75,20]=0.553,X[76,20]=0.341,X[77,20]=0.600,X[78,20]=0.525,X[79,20]=0.522,X[80,20]=0.541,X[81,20]=0.353,X[82,20]=0.757,X[83,20]=0.710,X[84,20]=0.639,X[85,20]=0.482,X[86,20]=0.478,X[87,20]=0.424,X[88,20]=0.459,X[89,20]=0.518,X[90,20]=0.525,X[91,20]=0.729,X[92,20]=0.404,X[93,20]=0.376,X[94,20]=0.447,X[95,20]=0.545,X[96,20]=0.537,X[97,20]=0.592,X[98,20]=0.639,X[99,20]=0.580,X[100,20]=0.286 X[1,21]=0.671,X[2,21]=0.420,X[3,21]=0.365,X[4,21]=0.384,X[5,21]=0.361,X[6,21]=0.341,X[7,21]=0.322,X[8,21]=0.569,X[9,21]=0.694,X[10,21]=0.518,X[11,21]=0.600,X[12,21]=0.357,X[13,21]=0.412,X[14,21]=0.443,X[15,21]=0.584,X[16,21]=0.588,X[17,21]=0.624,X[18,21]=0.686,X[19,21]=0.639,X[20,21]=0.498,X[21,21]=0.643,X[22,21]=0.459,X[23,21]=0.478,X[24,21]=0.424,X[25,21]=0.325,X[26,21]=0.337,X[27,21]=0.361,X[28,21]=0.510,X[29,21]=0.553,X[30,21]=0.675,X[31,21]=0.686,X[32,21]=0.639,X[33,21]=0.475,X[34,21]=0.443,X[35,21]=0.510,X[36,21]=0.569,X[37,21]=0.612,X[38,21]=0.400,X[39,21]=0.392,X[40,21]=0.624,X[41,21]=0.753,X[42,21]=0.529,X[43,21]=0.569,X[44,21]=0.627,X[45,21]=0.471,X[46,21]=0.565,X[47,21]=0.565,X[48,21]=0.573,X[49,21]=0.686,X[50,21]=0.690 X[51,21]=0.541,X[52,21]=0.361,X[53,21]=0.373,X[54,21]=0.392,X[55,21]=0.361,X[56,21]=0.310,X[57,21]=0.459,X[58,21]=0.431,X[59,21]=0.651,X[60,21]=0.529,X[61,21]=0.557,X[62,21]=0.400,X[63,21]=0.400,X[64,21]=0.463,X[65,21]=0.592,X[66,21]=0.655,X[67,21]=0.553,X[68,21]=0.682,X[69,21]=0.624,X[70,21]=0.529,X[71,21]=0.682,X[72,21]=0.443,X[73,21]=0.478,X[74,21]=0.416,X[75,21]=0.349,X[76,21]=0.310,X[77,21]=0.361,X[78,21]=0.518,X[79,21]=0.506,X[80,21]=0.608,X[81,21]=0.643,X[82,21]=0.580,X[83,21]=0.435,X[84,21]=0.424,X[85,21]=0.439,X[86,21]=0.608,X[87,21]=0.620,X[88,21]=0.498,X[89,21]=0.396,X[90,21]=0.565,X[91,21]=0.722,X[92,21]=0.510,X[93,21]=0.404,X[94,21]=0.624,X[95,21]=0.498,X[96,21]=0.580,X[97,21]=0.502,X[98,21]=0.522,X[99,21]=0.678,X[100,21]=0.710 X[1,22]=0.659,X[2,22]=0.698,X[3,22]=0.565,X[4,22]=0.322,X[5,22]=0.282,X[6,22]=0.431,X[7,22]=0.439,X[8,22]=0.659,X[9,22]=0.659,X[10,22]=0.584,X[11,22]=0.565,X[12,22]=0.376,X[13,22]=0.416,X[14,22]=0.533,X[15,22]=0.498,X[16,22]=0.549,X[17,22]=0.608,X[18,22]=0.537,X[19,22]=0.616,X[20,22]=0.655,X[21,22]=0.639,X[22,22]=0.655,X[23,22]=0.545,X[24,22]=0.396,X[25,22]=0.424,X[26,22]=0.345,X[27,22]=0.345,X[28,22]=0.365,X[29,22]=0.298,X[30,22]=0.400,X[31,22]=0.498,X[32,22]=0.541,X[33,22]=0.478,X[34,22]=0.533,X[35,22]=0.514,X[36,22]=0.557,X[37,22]=0.533,X[38,22]=0.412,X[39,22]=0.408,X[40,22]=0.675,X[41,22]=0.427,X[42,22]=0.486,X[43,22]=0.482,X[44,22]=0.435,X[45,22]=0.635,X[46,22]=0.486,X[47,22]=0.435,X[48,22]=0.369,X[49,22]=0.427,X[50,22]=0.604 X[51,22]=0.663,X[52,22]=0.706,X[53,22]=0.616,X[54,22]=0.333,X[55,22]=0.275,X[56,22]=0.588,X[57,22]=0.494,X[58,22]=0.494,X[59,22]=0.682,X[60,22]=0.604,X[61,22]=0.533,X[62,22]=0.443,X[63,22]=0.357,X[64,22]=0.553,X[65,22]=0.518,X[66,22]=0.490,X[67,22]=0.627,X[68,22]=0.569,X[69,22]=0.631,X[70,22]=0.616,X[71,22]=0.624,X[72,22]=0.671,X[73,22]=0.584,X[74,22]=0.384,X[75,22]=0.345,X[76,22]=0.400,X[77,22]=0.365,X[78,22]=0.384,X[79,22]=0.349,X[80,22]=0.388,X[81,22]=0.522,X[82,22]=0.506,X[83,22]=0.510,X[84,22]=0.424,X[85,22]=0.427,X[86,22]=0.580,X[87,22]=0.529,X[88,22]=0.463,X[89,22]=0.376,X[90,22]=0.604,X[91,22]=0.412,X[92,22]=0.482,X[93,22]=0.482,X[94,22]=0.373,X[95,22]=0.580,X[96,22]=0.475,X[97,22]=0.482,X[98,22]=0.380,X[99,22]=0.439,X[100,22]=0.624 X[1,23]=0.576,X[2,23]=0.592,X[3,23]=0.427,X[4,23]=0.231,X[5,23]=0.443,X[6,23]=0.431,X[7,23]=0.624,X[8,23]=0.557,X[9,23]=0.718,X[10,23]=0.518,X[11,23]=0.471,X[12,23]=0.345,X[13,23]=0.427,X[14,23]=0.416,X[15,23]=0.514,X[16,23]=0.451,X[17,23]=0.478,X[18,23]=0.380,X[19,23]=0.424,X[20,23]=0.510,X[21,23]=0.545,X[22,23]=0.580,X[23,23]=0.714,X[24,23]=0.408,X[25,23]=0.416,X[26,23]=0.396,X[27,23]=0.333,X[28,23]=0.271,X[29,23]=0.349,X[30,23]=0.482,X[31,23]=0.416,X[32,23]=0.306,X[33,23]=0.345,X[34,23]=0.467,X[35,23]=0.447,X[36,23]=0.459,X[37,23]=0.486,X[38,23]=0.522,X[39,23]=0.533,X[40,23]=0.498,X[41,23]=0.443,X[42,23]=0.451,X[43,23]=0.486,X[44,23]=0.431,X[45,23]=0.463,X[46,23]=0.376,X[47,23]=0.369,X[48,23]=0.447,X[49,23]=0.365,X[50,23]=0.455 X[51,23]=0.569,X[52,23]=0.518,X[53,23]=0.420,X[54,23]=0.255,X[55,23]=0.427,X[56,23]=0.616,X[57,23]=0.596,X[58,23]=0.537,X[59,23]=0.671,X[60,23]=0.557,X[61,23]=0.420,X[62,23]=0.357,X[63,23]=0.408,X[64,23]=0.408,X[65,23]=0.514,X[66,23]=0.565,X[67,23]=0.490,X[68,23]=0.365,X[69,23]=0.400,X[70,23]=0.541,X[71,23]=0.639,X[72,23]=0.604,X[73,23]=0.714,X[74,23]=0.408,X[75,23]=0.459,X[76,23]=0.392,X[77,23]=0.337,X[78,23]=0.259,X[79,23]=0.275,X[80,23]=0.451,X[81,23]=0.408,X[82,23]=0.290,X[83,23]=0.341,X[84,23]=0.447,X[85,23]=0.408,X[86,23]=0.459,X[87,23]=0.451,X[88,23]=0.518,X[89,23]=0.561,X[90,23]=0.631,X[91,23]=0.435,X[92,23]=0.455,X[93,23]=0.459,X[94,23]=0.439,X[95,23]=0.506,X[96,23]=0.357,X[97,23]=0.506,X[98,23]=0.373,X[99,23]=0.404,X[100,23]=0.471 X[1,24]=0.518,X[2,24]=0.569,X[3,24]=0.514,X[4,24]=0.243,X[5,24]=0.298,X[6,24]=0.373,X[7,24]=0.506,X[8,24]=0.580,X[9,24]=0.647,X[10,24]=0.373,X[11,24]=0.365,X[12,24]=0.267,X[13,24]=0.369,X[14,24]=0.475,X[15,24]=0.451,X[16,24]=0.416,X[17,24]=0.400,X[18,24]=0.463,X[19,24]=0.584,X[20,24]=0.537,X[21,24]=0.502,X[22,24]=0.671,X[23,24]=0.686,X[24,24]=0.412,X[25,24]=0.612,X[26,24]=0.627,X[27,24]=0.718,X[28,24]=0.463,X[29,24]=0.251,X[30,24]=0.294,X[31,24]=0.282,X[32,24]=0.420,X[33,24]=0.412,X[34,24]=0.302,X[35,24]=0.584,X[36,24]=0.541,X[37,24]=0.380,X[38,24]=0.341,X[39,24]=0.424,X[40,24]=0.373,X[41,24]=0.459,X[42,24]=0.498,X[43,24]=0.478,X[44,24]=0.439,X[45,24]=0.533,X[46,24]=0.314,X[47,24]=0.357,X[48,24]=0.486,X[49,24]=0.388,X[50,24]=0.361 X[51,24]=0.631,X[52,24]=0.388,X[53,24]=0.478,X[54,24]=0.255,X[55,24]=0.302,X[56,24]=0.443,X[57,24]=0.561,X[58,24]=0.608,X[59,24]=0.761,X[60,24]=0.361,X[61,24]=0.365,X[62,24]=0.341,X[63,24]=0.310,X[64,24]=0.467,X[65,24]=0.427,X[66,24]=0.408,X[67,24]=0.502,X[68,24]=0.451,X[69,24]=0.569,X[70,24]=0.553,X[71,24]=0.522,X[72,24]=0.624,X[73,24]=0.694,X[74,24]=0.408,X[75,24]=0.533,X[76,24]=0.714,X[77,24]=0.714,X[78,24]=0.443,X[79,24]=0.259,X[80,24]=0.259,X[81,24]=0.294,X[82,24]=0.424,X[83,24]=0.404,X[84,24]=0.361,X[85,24]=0.443,X[86,24]=0.537,X[87,24]=0.388,X[88,24]=0.314,X[89,24]=0.506,X[90,24]=0.424,X[91,24]=0.482,X[92,24]=0.467,X[93,24]=0.404,X[94,24]=0.420,X[95,24]=0.529,X[96,24]=0.455,X[97,24]=0.322,X[98,24]=0.447,X[99,24]=0.431,X[100,24]=0.400 X[1,25]=0.392,X[2,25]=0.592,X[3,25]=0.439,X[4,25]=0.478,X[5,25]=0.353,X[6,25]=0.329,X[7,25]=0.310,X[8,25]=0.322,X[9,25]=0.451,X[10,25]=0.576,X[11,25]=0.706,X[12,25]=0.380,X[13,25]=0.302,X[14,25]=0.349,X[15,25]=0.451,X[16,25]=0.545,X[17,25]=0.357,X[18,25]=0.420,X[19,25]=0.427,X[20,25]=0.584,X[21,25]=0.525,X[22,25]=0.616,X[23,25]=0.631,X[24,25]=0.451,X[25,25]=0.510,X[26,25]=0.576,X[27,25]=0.502,X[28,25]=0.576,X[29,25]=0.729,X[30,25]=0.286,X[31,25]=0.290,X[32,25]=0.349,X[33,25]=0.392,X[34,25]=0.443,X[35,25]=0.459,X[36,25]=0.412,X[37,25]=0.475,X[38,25]=0.431,X[39,25]=0.498,X[40,25]=0.408,X[41,25]=0.290,X[42,25]=0.263,X[43,25]=0.282,X[44,25]=0.349,X[45,25]=0.459,X[46,25]=0.396,X[47,25]=0.541,X[48,25]=0.478,X[49,25]=0.455,X[50,25]=0.373 X[51,25]=0.549,X[52,25]=0.576,X[53,25]=0.522,X[54,25]=0.529,X[55,25]=0.361,X[56,25]=0.282,X[57,25]=0.490,X[58,25]=0.345,X[59,25]=0.341,X[60,25]=0.584,X[61,25]=0.729,X[62,25]=0.624,X[63,25]=0.278,X[64,25]=0.353,X[65,25]=0.427,X[66,25]=0.584,X[67,25]=0.412,X[68,25]=0.408,X[69,25]=0.463,X[70,25]=0.518,X[71,25]=0.541,X[72,25]=0.400,X[73,25]=0.596,X[74,25]=0.451,X[75,25]=0.506,X[76,25]=0.600,X[77,25]=0.553,X[78,25]=0.561,X[79,25]=0.627,X[80,25]=0.494,X[81,25]=0.278,X[82,25]=0.373,X[83,25]=0.384,X[84,25]=0.463,X[85,25]=0.341,X[86,25]=0.400,X[87,25]=0.486,X[88,25]=0.498,X[89,25]=0.459,X[90,25]=0.404,X[91,25]=0.278,X[92,25]=0.247,X[93,25]=0.298,X[94,25]=0.357,X[95,25]=0.447,X[96,25]=0.369,X[97,25]=0.388,X[98,25]=0.424,X[99,25]=0.408,X[100,25]=0.416 X[1,26]=0.329,X[2,26]=0.290,X[3,26]=0.345,X[4,26]=0.314,X[5,26]=0.369,X[6,26]=0.349,X[7,26]=0.427,X[8,26]=0.478,X[9,26]=0.486,X[10,26]=0.490,X[11,26]=0.631,X[12,26]=0.647,X[13,26]=0.325,X[14,26]=0.290,X[15,26]=0.412,X[16,26]=0.569,X[17,26]=0.553,X[18,26]=0.498,X[19,26]=0.443,X[20,26]=0.420,X[21,26]=0.596,X[22,26]=0.576,X[23,26]=0.525,X[24,26]=0.506,X[25,26]=0.584,X[26,26]=0.541,X[27,26]=0.482,X[28,26]=0.533,X[29,26]=0.616,X[30,26]=0.624,X[31,26]=0.624,X[32,26]=0.341,X[33,26]=0.588,X[34,26]=0.549,X[35,26]=0.388,X[36,26]=0.478,X[37,26]=0.506,X[38,26]=0.427,X[39,26]=0.369,X[40,26]=0.482,X[41,26]=0.400,X[42,26]=0.400,X[43,26]=0.412,X[44,26]=0.341,X[45,26]=0.553,X[46,26]=0.357,X[47,26]=0.471,X[48,26]=0.365,X[49,26]=0.325,X[50,26]=0.353 X[51,26]=0.333,X[52,26]=0.404,X[53,26]=0.396,X[54,26]=0.325,X[55,26]=0.396,X[56,26]=0.314,X[57,26]=0.596,X[58,26]=0.510,X[59,26]=0.510,X[60,26]=0.490,X[61,26]=0.639,X[62,26]=0.722,X[63,26]=0.345,X[64,26]=0.314,X[65,26]=0.416,X[66,26]=0.475,X[67,26]=0.459,X[68,26]=0.471,X[69,26]=0.443,X[70,26]=0.431,X[71,26]=0.529,X[72,26]=0.639,X[73,26]=0.525,X[74,26]=0.498,X[75,26]=0.482,X[76,26]=0.522,X[77,26]=0.502,X[78,26]=0.596,X[79,26]=0.494,X[80,26]=0.616,X[81,26]=0.533,X[82,26]=0.353,X[83,26]=0.600,X[84,26]=0.588,X[85,26]=0.447,X[86,26]=0.455,X[87,26]=0.463,X[88,26]=0.463,X[89,26]=0.333,X[90,26]=0.408,X[91,26]=0.424,X[92,26]=0.412,X[93,26]=0.416,X[94,26]=0.369,X[95,26]=0.533,X[96,26]=0.396,X[97,26]=0.357,X[98,26]=0.439,X[99,26]=0.318,X[100,26]=0.302 X[1,27]=0.278,X[2,27]=0.133,X[3,27]=0.490,X[4,27]=0.667,X[5,27]=0.494,X[6,27]=0.388,X[7,27]=0.580,X[8,27]=0.545,X[9,27]=0.463,X[10,27]=0.514,X[11,27]=0.561,X[12,27]=0.651,X[13,27]=0.341,X[14,27]=0.314,X[15,27]=0.290,X[16,27]=0.337,X[17,27]=0.325,X[18,27]=0.318,X[19,27]=0.290,X[20,27]=0.224,X[21,27]=0.545,X[22,27]=0.725,X[23,27]=0.565,X[24,27]=0.518,X[25,27]=0.561,X[26,27]=0.427,X[27,27]=0.447,X[28,27]=0.588,X[29,27]=0.565,X[30,27]=0.475,X[31,27]=0.592,X[32,27]=0.282,X[33,27]=0.388,X[34,27]=0.549,X[35,27]=0.337,X[36,27]=0.408,X[37,27]=0.451,X[38,27]=0.431,X[39,27]=0.337,X[40,27]=0.439,X[41,27]=0.416,X[42,27]=0.467,X[43,27]=0.325,X[44,27]=0.267,X[45,27]=0.384,X[46,27]=0.251,X[47,27]=0.314,X[48,27]=0.216,X[49,27]=0.322,X[50,27]=0.251 X[51,27]=0.227,X[52,27]=0.216,X[53,27]=0.498,X[54,27]=0.671,X[55,27]=0.494,X[56,27]=0.471,X[57,27]=0.522,X[58,27]=0.486,X[59,27]=0.604,X[60,27]=0.498,X[61,27]=0.549,X[62,27]=0.545,X[63,27]=0.427,X[64,27]=0.306,X[65,27]=0.325,X[66,27]=0.345,X[67,27]=0.310,X[68,27]=0.318,X[69,27]=0.302,X[70,27]=0.243,X[71,27]=0.318,X[72,27]=0.608,X[73,27]=0.557,X[74,27]=0.510,X[75,27]=0.439,X[76,27]=0.471,X[77,27]=0.467,X[78,27]=0.592,X[79,27]=0.486,X[80,27]=0.643,X[81,27]=0.576,X[82,27]=0.302,X[83,27]=0.373,X[84,27]=0.463,X[85,27]=0.431,X[86,27]=0.404,X[87,27]=0.420,X[88,27]=0.573,X[89,27]=0.341,X[90,27]=0.392,X[91,27]=0.408,X[92,27]=0.447,X[93,27]=0.302,X[94,27]=0.247,X[95,27]=0.392,X[96,27]=0.341,X[97,27]=0.290,X[98,27]=0.231,X[99,27]=0.337,X[100,27]=0.263 X[1,28]=0.345,X[2,28]=0.176,X[3,28]=0.435,X[4,28]=0.604,X[5,28]=0.537,X[6,28]=0.455,X[7,28]=0.349,X[8,28]=0.518,X[9,28]=0.471,X[10,28]=0.537,X[11,28]=0.604,X[12,28]=0.616,X[13,28]=0.467,X[14,28]=0.322,X[15,28]=0.396,X[16,28]=0.451,X[17,28]=0.533,X[18,28]=0.541,X[19,28]=0.557,X[20,28]=0.557,X[21,28]=0.604,X[22,28]=0.655,X[23,28]=0.478,X[24,28]=0.396,X[25,28]=0.322,X[26,28]=0.475,X[27,28]=0.459,X[28,28]=0.647,X[29,28]=0.447,X[30,28]=0.553,X[31,28]=0.620,X[32,28]=0.384,X[33,28]=0.267,X[34,28]=0.475,X[35,28]=0.455,X[36,28]=0.369,X[37,28]=0.549,X[38,28]=0.388,X[39,28]=0.337,X[40,28]=0.337,X[41,28]=0.286,X[42,28]=0.278,X[43,28]=0.357,X[44,28]=0.322,X[45,28]=0.408,X[46,28]=0.267,X[47,28]=0.196,X[48,28]=0.263,X[49,28]=0.286,X[50,28]=0.310 X[51,28]=0.290,X[52,28]=0.318,X[53,28]=0.408,X[54,28]=0.557,X[55,28]=0.545,X[56,28]=0.431,X[57,28]=0.494,X[58,28]=0.392,X[59,28]=0.424,X[60,28]=0.533,X[61,28]=0.627,X[62,28]=0.675,X[63,28]=0.647,X[64,28]=0.333,X[65,28]=0.369,X[66,28]=0.471,X[67,28]=0.439,X[68,28]=0.529,X[69,28]=0.549,X[70,28]=0.498,X[71,28]=0.443,X[72,28]=0.682,X[73,28]=0.467,X[74,28]=0.400,X[75,28]=0.373,X[76,28]=0.498,X[77,28]=0.494,X[78,28]=0.565,X[79,28]=0.514,X[80,28]=0.573,X[81,28]=0.624,X[82,28]=0.318,X[83,28]=0.290,X[84,28]=0.345,X[85,28]=0.553,X[86,28]=0.353,X[87,28]=0.525,X[88,28]=0.447,X[89,28]=0.365,X[90,28]=0.290,X[91,28]=0.286,X[92,28]=0.333,X[93,28]=0.345,X[94,28]=0.380,X[95,28]=0.392,X[96,28]=0.267,X[97,28]=0.216,X[98,28]=0.243,X[99,28]=0.290,X[100,28]=0.314 X[1,29]=0.404,X[2,29]=0.337,X[3,29]=0.451,X[4,29]=0.525,X[5,29]=0.447,X[6,29]=0.471,X[7,29]=0.388,X[8,29]=0.357,X[9,29]=0.529,X[10,29]=0.420,X[11,29]=0.502,X[12,29]=0.435,X[13,29]=0.596,X[14,29]=0.482,X[15,29]=0.306,X[16,29]=0.267,X[17,29]=0.239,X[18,29]=0.294,X[19,29]=0.400,X[20,29]=0.490,X[21,29]=0.655,X[22,29]=0.608,X[23,29]=0.565,X[24,29]=0.663,X[25,29]=0.498,X[26,29]=0.467,X[27,29]=0.490,X[28,29]=0.475,X[29,29]=0.651,X[30,29]=0.584,X[31,29]=0.525,X[32,29]=0.439,X[33,29]=0.345,X[34,29]=0.345,X[35,29]=0.294,X[36,29]=0.314,X[37,29]=0.420,X[38,29]=0.459,X[39,29]=0.443,X[40,29]=0.392,X[41,29]=0.388,X[42,29]=0.353,X[43,29]=0.369,X[44,29]=0.365,X[45,29]=0.494,X[46,29]=0.639,X[47,29]=0.537,X[48,29]=0.424,X[49,29]=0.396,X[50,29]=0.373 X[51,29]=0.345,X[52,29]=0.384,X[53,29]=0.471,X[54,29]=0.533,X[55,29]=0.502,X[56,29]=0.400,X[57,29]=0.494,X[58,29]=0.408,X[59,29]=0.565,X[60,29]=0.447,X[61,29]=0.506,X[62,29]=0.420,X[63,29]=0.573,X[64,29]=0.431,X[65,29]=0.322,X[66,29]=0.259,X[67,29]=0.212,X[68,29]=0.310,X[69,29]=0.400,X[70,29]=0.478,X[71,29]=0.631,X[72,29]=0.678,X[73,29]=0.584,X[74,29]=0.667,X[75,29]=0.580,X[76,29]=0.376,X[77,29]=0.467,X[78,29]=0.514,X[79,29]=0.620,X[80,29]=0.667,X[81,29]=0.514,X[82,29]=0.420,X[83,29]=0.357,X[84,29]=0.357,X[85,29]=0.290,X[86,29]=0.322,X[87,29]=0.427,X[88,29]=0.463,X[89,29]=0.455,X[90,29]=0.384,X[91,29]=0.369,X[92,29]=0.353,X[93,29]=0.361,X[94,29]=0.361,X[95,29]=0.518,X[96,29]=0.596,X[97,29]=0.592,X[98,29]=0.431,X[99,29]=0.380,X[100,29]=0.384 X[1,30]=0.349,X[2,30]=0.259,X[3,30]=0.239,X[4,30]=0.431,X[5,30]=0.541,X[6,30]=0.408,X[7,30]=0.478,X[8,30]=0.467,X[9,30]=0.533,X[10,30]=0.518,X[11,30]=0.475,X[12,30]=0.482,X[13,30]=0.549,X[14,30]=0.576,X[15,30]=0.400,X[16,30]=0.416,X[17,30]=0.439,X[18,30]=0.439,X[19,30]=0.510,X[20,30]=0.541,X[21,30]=0.533,X[22,30]=0.631,X[23,30]=0.698,X[24,30]=0.694,X[25,30]=0.722,X[26,30]=0.596,X[27,30]=0.502,X[28,30]=0.384,X[29,30]=0.471,X[30,30]=0.498,X[31,30]=0.651,X[32,30]=0.518,X[33,30]=0.435,X[34,30]=0.443,X[35,30]=0.655,X[36,30]=0.557,X[37,30]=0.478,X[38,30]=0.545,X[39,30]=0.545,X[40,30]=0.678,X[41,30]=0.627,X[42,30]=0.561,X[43,30]=0.620,X[44,30]=0.533,X[45,30]=0.592,X[46,30]=0.639,X[47,30]=0.694,X[48,30]=0.710,X[49,30]=0.553,X[50,30]=0.396 X[51,30]=0.318,X[52,30]=0.204,X[53,30]=0.192,X[54,30]=0.412,X[55,30]=0.537,X[56,30]=0.482,X[57,30]=0.529,X[58,30]=0.451,X[59,30]=0.529,X[60,30]=0.522,X[61,30]=0.471,X[62,30]=0.463,X[63,30]=0.404,X[64,30]=0.573,X[65,30]=0.361,X[66,30]=0.400,X[67,30]=0.400,X[68,30]=0.451,X[69,30]=0.529,X[70,30]=0.557,X[71,30]=0.584,X[72,30]=0.604,X[73,30]=0.698,X[74,30]=0.682,X[75,30]=0.714,X[76,30]=0.690,X[77,30]=0.549,X[78,30]=0.396,X[79,30]=0.400,X[80,30]=0.431,X[81,30]=0.639,X[82,30]=0.569,X[83,30]=0.420,X[84,30]=0.424,X[85,30]=0.573,X[86,30]=0.580,X[87,30]=0.486,X[88,30]=0.525,X[89,30]=0.616,X[90,30]=0.639,X[91,30]=0.722,X[92,30]=0.557,X[93,30]=0.682,X[94,30]=0.522,X[95,30]=0.569,X[96,30]=0.522,X[97,30]=0.624,X[98,30]=0.741,X[99,30]=0.498,X[100,30]=0.424 X[1,31]=0.337,X[2,31]=0.302,X[3,31]=0.286,X[4,31]=0.310,X[5,31]=0.392,X[6,31]=0.380,X[7,31]=0.510,X[8,31]=0.384,X[9,31]=0.408,X[10,31]=0.490,X[11,31]=0.671,X[12,31]=0.627,X[13,31]=0.592,X[14,31]=0.596,X[15,31]=0.549,X[16,31]=0.561,X[17,31]=0.471,X[18,31]=0.451,X[19,31]=0.486,X[20,31]=0.514,X[21,31]=0.549,X[22,31]=0.549,X[23,31]=0.592,X[24,31]=0.514,X[25,31]=0.667,X[26,31]=0.694,X[27,31]=0.694,X[28,31]=0.518,X[29,31]=0.471,X[30,31]=0.686,X[31,31]=0.627,X[32,31]=0.627,X[33,31]=0.706,X[34,31]=0.576,X[35,31]=0.686,X[36,31]=0.565,X[37,31]=0.682,X[38,31]=0.404,X[39,31]=0.506,X[40,31]=0.565,X[41,31]=0.522,X[42,31]=0.400,X[43,31]=0.537,X[44,31]=0.549,X[45,31]=0.506,X[46,31]=0.522,X[47,31]=0.537,X[48,31]=0.749,X[49,31]=0.725,X[50,31]=0.424 X[51,31]=0.271,X[52,31]=0.220,X[53,31]=0.255,X[54,31]=0.341,X[55,31]=0.384,X[56,31]=0.400,X[57,31]=0.420,X[58,31]=0.412,X[59,31]=0.420,X[60,31]=0.486,X[61,31]=0.651,X[62,31]=0.675,X[63,31]=0.620,X[64,31]=0.592,X[65,31]=0.549,X[66,31]=0.522,X[67,31]=0.510,X[68,31]=0.443,X[69,31]=0.506,X[70,31]=0.486,X[71,31]=0.580,X[72,31]=0.620,X[73,31]=0.565,X[74,31]=0.510,X[75,31]=0.604,X[76,31]=0.714,X[77,31]=0.706,X[78,31]=0.518,X[79,31]=0.518,X[80,31]=0.616,X[81,31]=0.624,X[82,31]=0.612,X[83,31]=0.702,X[84,31]=0.596,X[85,31]=0.624,X[86,31]=0.620,X[87,31]=0.675,X[88,31]=0.510,X[89,31]=0.498,X[90,31]=0.498,X[91,31]=0.573,X[92,31]=0.412,X[93,31]=0.537,X[94,31]=0.557,X[95,31]=0.549,X[96,31]=0.592,X[97,31]=0.529,X[98,31]=0.643,X[99,31]=0.718,X[100,31]=0.427 X[1,32]=0.361,X[2,32]=0.329,X[3,32]=0.290,X[4,32]=0.243,X[5,32]=0.486,X[6,32]=0.325,X[7,32]=0.337,X[8,32]=0.404,X[9,32]=0.384,X[10,32]=0.322,X[11,32]=0.325,X[12,32]=0.506,X[13,32]=0.369,X[14,32]=0.322,X[15,32]=0.627,X[16,32]=0.494,X[17,32]=0.392,X[18,32]=0.388,X[19,32]=0.494,X[20,32]=0.537,X[21,32]=0.396,X[22,32]=0.604,X[23,32]=0.557,X[24,32]=0.478,X[25,32]=0.714,X[26,32]=0.565,X[27,32]=0.620,X[28,32]=0.702,X[29,32]=0.631,X[30,32]=0.502,X[31,32]=0.522,X[32,32]=0.573,X[33,32]=0.639,X[34,32]=0.376,X[35,32]=0.514,X[36,32]=0.604,X[37,32]=0.478,X[38,32]=0.502,X[39,32]=0.561,X[40,32]=0.447,X[41,32]=0.475,X[42,32]=0.396,X[43,32]=0.420,X[44,32]=0.624,X[45,32]=0.376,X[46,32]=0.502,X[47,32]=0.498,X[48,32]=0.667,X[49,32]=0.725,X[50,32]=0.647 X[51,32]=0.306,X[52,32]=0.325,X[53,32]=0.302,X[54,32]=0.235,X[55,32]=0.529,X[56,32]=0.349,X[57,32]=0.525,X[58,32]=0.392,X[59,32]=0.424,X[60,32]=0.286,X[61,32]=0.322,X[62,32]=0.420,X[63,32]=0.447,X[64,32]=0.314,X[65,32]=0.659,X[66,32]=0.592,X[67,32]=0.467,X[68,32]=0.404,X[69,32]=0.506,X[70,32]=0.525,X[71,32]=0.412,X[72,32]=0.475,X[73,32]=0.541,X[74,32]=0.498,X[75,32]=0.694,X[76,32]=0.600,X[77,32]=0.580,X[78,32]=0.686,X[79,32]=0.624,X[80,32]=0.569,X[81,32]=0.545,X[82,32]=0.604,X[83,32]=0.678,X[84,32]=0.580,X[85,32]=0.545,X[86,32]=0.612,X[87,32]=0.459,X[88,32]=0.424,X[89,32]=0.424,X[90,32]=0.502,X[91,32]=0.467,X[92,32]=0.388,X[93,32]=0.490,X[94,32]=0.616,X[95,32]=0.439,X[96,32]=0.608,X[97,32]=0.600,X[98,32]=0.533,X[99,32]=0.694,X[100,32]=0.604 X[1,33]=0.447,X[2,33]=0.365,X[3,33]=0.467,X[4,33]=0.345,X[5,33]=0.353,X[6,33]=0.322,X[7,33]=0.392,X[8,33]=0.294,X[9,33]=0.396,X[10,33]=0.361,X[11,33]=0.322,X[12,33]=0.412,X[13,33]=0.655,X[14,33]=0.745,X[15,33]=0.643,X[16,33]=0.667,X[17,33]=0.373,X[18,33]=0.333,X[19,33]=0.376,X[20,33]=0.498,X[21,33]=0.427,X[22,33]=0.388,X[23,33]=0.506,X[24,33]=0.647,X[25,33]=0.439,X[26,33]=0.675,X[27,33]=0.561,X[28,33]=0.639,X[29,33]=0.690,X[30,33]=0.620,X[31,33]=0.671,X[32,33]=0.510,X[33,33]=0.522,X[34,33]=0.259,X[35,33]=0.365,X[36,33]=0.361,X[37,33]=0.510,X[38,33]=0.490,X[39,33]=0.533,X[40,33]=0.463,X[41,33]=0.380,X[42,33]=0.478,X[43,33]=0.384,X[44,33]=0.576,X[45,33]=0.451,X[46,33]=0.420,X[47,33]=0.322,X[48,33]=0.412,X[49,33]=0.541,X[50,33]=0.655 X[51,33]=0.341,X[52,33]=0.365,X[53,33]=0.459,X[54,33]=0.337,X[55,33]=0.353,X[56,33]=0.396,X[57,33]=0.376,X[58,33]=0.337,X[59,33]=0.369,X[60,33]=0.353,X[61,33]=0.341,X[62,33]=0.388,X[63,33]=0.553,X[64,33]=0.733,X[65,33]=0.663,X[66,33]=0.690,X[67,33]=0.424,X[68,33]=0.337,X[69,33]=0.412,X[70,33]=0.553,X[71,33]=0.498,X[72,33]=0.384,X[73,33]=0.522,X[74,33]=0.616,X[75,33]=0.596,X[76,33]=0.522,X[77,33]=0.604,X[78,33]=0.647,X[79,33]=0.682,X[80,33]=0.624,X[81,33]=0.647,X[82,33]=0.537,X[83,33]=0.553,X[84,33]=0.376,X[85,33]=0.373,X[86,33]=0.357,X[87,33]=0.494,X[88,33]=0.420,X[89,33]=0.475,X[90,33]=0.561,X[91,33]=0.408,X[92,33]=0.459,X[93,33]=0.380,X[94,33]=0.549,X[95,33]=0.451,X[96,33]=0.510,X[97,33]=0.439,X[98,33]=0.388,X[99,33]=0.600,X[100,33]=0.620 X[1,34]=0.549,X[2,34]=0.239,X[3,34]=0.302,X[4,34]=0.310,X[5,34]=0.514,X[6,34]=0.616,X[7,34]=0.431,X[8,34]=0.373,X[9,34]=0.471,X[10,34]=0.580,X[11,34]=0.639,X[12,34]=0.627,X[13,34]=0.588,X[14,34]=0.608,X[15,34]=0.647,X[16,34]=0.737,X[17,34]=0.349,X[18,34]=0.408,X[19,34]=0.329,X[20,34]=0.361,X[21,34]=0.424,X[22,34]=0.427,X[23,34]=0.400,X[24,34]=0.490,X[25,34]=0.506,X[26,34]=0.376,X[27,34]=0.353,X[28,34]=0.502,X[29,34]=0.451,X[30,34]=0.357,X[31,34]=0.455,X[32,34]=0.506,X[33,34]=0.671,X[34,34]=0.263,X[35,34]=0.412,X[36,34]=0.514,X[37,34]=0.467,X[38,34]=0.522,X[39,34]=0.314,X[40,34]=0.341,X[41,34]=0.302,X[42,34]=0.427,X[43,34]=0.439,X[44,34]=0.482,X[45,34]=0.451,X[46,34]=0.612,X[47,34]=0.639,X[48,34]=0.353,X[49,34]=0.384,X[50,34]=0.427 X[51,34]=0.345,X[52,34]=0.290,X[53,34]=0.290,X[54,34]=0.282,X[55,34]=0.490,X[56,34]=0.510,X[57,34]=0.475,X[58,34]=0.314,X[59,34]=0.435,X[60,34]=0.584,X[61,34]=0.635,X[62,34]=0.686,X[63,34]=0.624,X[64,34]=0.600,X[65,34]=0.718,X[66,34]=0.690,X[67,34]=0.427,X[68,34]=0.376,X[69,34]=0.325,X[70,34]=0.349,X[71,34]=0.373,X[72,34]=0.376,X[73,34]=0.435,X[74,34]=0.447,X[75,34]=0.514,X[76,34]=0.376,X[77,34]=0.357,X[78,34]=0.541,X[79,34]=0.514,X[80,34]=0.341,X[81,34]=0.467,X[82,34]=0.514,X[83,34]=0.690,X[84,34]=0.373,X[85,34]=0.388,X[86,34]=0.553,X[87,34]=0.424,X[88,34]=0.553,X[89,34]=0.337,X[90,34]=0.322,X[91,34]=0.294,X[92,34]=0.475,X[93,34]=0.616,X[94,34]=0.443,X[95,34]=0.412,X[96,34]=0.357,X[97,34]=0.482,X[98,34]=0.525,X[99,34]=0.388,X[100,34]=0.447 X[1,35]=0.471,X[2,35]=0.294,X[3,35]=0.341,X[4,35]=0.373,X[5,35]=0.345,X[6,35]=0.404,X[7,35]=0.620,X[8,35]=0.616,X[9,35]=0.671,X[10,35]=0.541,X[11,35]=0.627,X[12,35]=0.663,X[13,35]=0.643,X[14,35]=0.592,X[15,35]=0.714,X[16,35]=0.698,X[17,35]=0.714,X[18,35]=0.490,X[19,35]=0.376,X[20,35]=0.388,X[21,35]=0.361,X[22,35]=0.357,X[23,35]=0.369,X[24,35]=0.349,X[25,35]=0.318,X[26,35]=0.482,X[27,35]=0.498,X[28,35]=0.451,X[29,35]=0.427,X[30,35]=0.467,X[31,35]=0.412,X[32,35]=0.416,X[33,35]=0.408,X[34,35]=0.365,X[35,35]=0.490,X[36,35]=0.345,X[37,35]=0.400,X[38,35]=0.671,X[39,35]=0.384,X[40,35]=0.573,X[41,35]=0.404,X[42,35]=0.357,X[43,35]=0.510,X[44,35]=0.498,X[45,35]=0.588,X[46,35]=0.220,X[47,35]=0.255,X[48,35]=0.580,X[49,35]=0.514,X[50,35]=0.624 X[51,35]=0.349,X[52,35]=0.365,X[53,35]=0.345,X[54,35]=0.341,X[55,35]=0.341,X[56,35]=0.463,X[57,35]=0.718,X[58,35]=0.710,X[59,35]=0.639,X[60,35]=0.490,X[61,35]=0.667,X[62,35]=0.624,X[63,35]=0.600,X[64,35]=0.561,X[65,35]=0.702,X[66,35]=0.745,X[67,35]=0.741,X[68,35]=0.435,X[69,35]=0.369,X[70,35]=0.392,X[71,35]=0.314,X[72,35]=0.357,X[73,35]=0.361,X[74,35]=0.349,X[75,35]=0.267,X[76,35]=0.400,X[77,35]=0.565,X[78,35]=0.427,X[79,35]=0.478,X[80,35]=0.459,X[81,35]=0.427,X[82,35]=0.420,X[83,35]=0.408,X[84,35]=0.322,X[85,35]=0.463,X[86,35]=0.376,X[87,35]=0.424,X[88,35]=0.604,X[89,35]=0.545,X[90,35]=0.463,X[91,35]=0.435,X[92,35]=0.349,X[93,35]=0.459,X[94,35]=0.498,X[95,35]=0.549,X[96,35]=0.345,X[97,35]=0.302,X[98,35]=0.427,X[99,35]=0.549,X[100,35]=0.663 X[1,36]=0.455,X[2,36]=0.353,X[3,36]=0.369,X[4,36]=0.416,X[5,36]=0.475,X[6,36]=0.620,X[7,36]=0.592,X[8,36]=0.427,X[9,36]=0.573,X[10,36]=0.502,X[11,36]=0.596,X[12,36]=0.643,X[13,36]=0.635,X[14,36]=0.635,X[15,36]=0.631,X[16,36]=0.745,X[17,36]=0.722,X[18,36]=0.624,X[19,36]=0.396,X[20,36]=0.322,X[21,36]=0.290,X[22,36]=0.275,X[23,36]=0.263,X[24,36]=0.282,X[25,36]=0.286,X[26,36]=0.302,X[27,36]=0.388,X[28,36]=0.439,X[29,36]=0.467,X[30,36]=0.404,X[31,36]=0.369,X[32,36]=0.333,X[33,36]=0.263,X[34,36]=0.427,X[35,36]=0.341,X[36,36]=0.404,X[37,36]=0.435,X[38,36]=0.576,X[39,36]=0.553,X[40,36]=0.510,X[41,36]=0.420,X[42,36]=0.490,X[43,36]=0.353,X[44,36]=0.518,X[45,36]=0.282,X[46,36]=0.239,X[47,36]=0.333,X[48,36]=0.518,X[49,36]=0.439,X[50,36]=0.541 X[51,36]=0.427,X[52,36]=0.345,X[53,36]=0.365,X[54,36]=0.388,X[55,36]=0.459,X[56,36]=0.569,X[57,36]=0.627,X[58,36]=0.486,X[59,36]=0.455,X[60,36]=0.494,X[61,36]=0.553,X[62,36]=0.518,X[63,36]=0.502,X[64,36]=0.553,X[65,36]=0.655,X[66,36]=0.655,X[67,36]=0.753,X[68,36]=0.604,X[69,36]=0.376,X[70,36]=0.325,X[71,36]=0.298,X[72,36]=0.282,X[73,36]=0.267,X[74,36]=0.282,X[75,36]=0.267,X[76,36]=0.345,X[77,36]=0.408,X[78,36]=0.412,X[79,36]=0.463,X[80,36]=0.416,X[81,36]=0.376,X[82,36]=0.353,X[83,36]=0.267,X[84,36]=0.337,X[85,36]=0.353,X[86,36]=0.431,X[87,36]=0.467,X[88,36]=0.471,X[89,36]=0.651,X[90,36]=0.545,X[91,36]=0.408,X[92,36]=0.443,X[93,36]=0.322,X[94,36]=0.525,X[95,36]=0.298,X[96,36]=0.353,X[97,36]=0.361,X[98,36]=0.404,X[99,36]=0.435,X[100,36]=0.576 X[1,37]=0.698,X[2,37]=0.369,X[3,37]=0.314,X[4,37]=0.482,X[5,37]=0.459,X[6,37]=0.357,X[7,37]=0.400,X[8,37]=0.361,X[9,37]=0.408,X[10,37]=0.447,X[11,37]=0.541,X[12,37]=0.549,X[13,37]=0.639,X[14,37]=0.557,X[15,37]=0.388,X[16,37]=0.624,X[17,37]=0.667,X[18,37]=0.659,X[19,37]=0.714,X[20,37]=0.392,X[21,37]=0.396,X[22,37]=0.451,X[23,37]=0.435,X[24,37]=0.443,X[25,37]=0.420,X[26,37]=0.361,X[27,37]=0.396,X[28,37]=0.353,X[29,37]=0.380,X[30,37]=0.424,X[31,37]=0.435,X[32,37]=0.400,X[33,37]=0.376,X[34,37]=0.533,X[35,37]=0.537,X[36,37]=0.459,X[37,37]=0.490,X[38,37]=0.494,X[39,37]=0.373,X[40,37]=0.443,X[41,37]=0.498,X[42,37]=0.498,X[43,37]=0.518,X[44,37]=0.392,X[45,37]=0.392,X[46,37]=0.400,X[47,37]=0.604,X[48,37]=0.349,X[49,37]=0.545,X[50,37]=0.467 X[51,37]=0.647,X[52,37]=0.329,X[53,37]=0.337,X[54,37]=0.451,X[55,37]=0.475,X[56,37]=0.376,X[57,37]=0.455,X[58,37]=0.424,X[59,37]=0.443,X[60,37]=0.459,X[61,37]=0.502,X[62,37]=0.482,X[63,37]=0.557,X[64,37]=0.537,X[65,37]=0.400,X[66,37]=0.537,X[67,37]=0.627,X[68,37]=0.659,X[69,37]=0.714,X[70,37]=0.373,X[71,37]=0.361,X[72,37]=0.443,X[73,37]=0.439,X[74,37]=0.443,X[75,37]=0.427,X[76,37]=0.412,X[77,37]=0.392,X[78,37]=0.349,X[79,37]=0.392,X[80,37]=0.376,X[81,37]=0.443,X[82,37]=0.380,X[83,37]=0.404,X[84,37]=0.482,X[85,37]=0.529,X[86,37]=0.498,X[87,37]=0.490,X[88,37]=0.424,X[89,37]=0.447,X[90,37]=0.412,X[91,37]=0.486,X[92,37]=0.537,X[93,37]=0.545,X[94,37]=0.392,X[95,37]=0.435,X[96,37]=0.443,X[97,37]=0.471,X[98,37]=0.490,X[99,37]=0.573,X[100,37]=0.545 X[1,38]=0.576,X[2,38]=0.478,X[3,38]=0.420,X[4,38]=0.490,X[5,38]=0.518,X[6,38]=0.408,X[7,38]=0.435,X[8,38]=0.431,X[9,38]=0.459,X[10,38]=0.529,X[11,38]=0.522,X[12,38]=0.588,X[13,38]=0.592,X[14,38]=0.635,X[15,38]=0.616,X[16,38]=0.525,X[17,38]=0.678,X[18,38]=0.753,X[19,38]=0.725,X[20,38]=0.608,X[21,38]=0.314,X[22,38]=0.420,X[23,38]=0.416,X[24,38]=0.663,X[25,38]=0.345,X[26,38]=0.486,X[27,38]=0.506,X[28,38]=0.604,X[29,38]=0.490,X[30,38]=0.561,X[31,38]=0.596,X[32,38]=0.380,X[33,38]=0.365,X[34,38]=0.580,X[35,38]=0.490,X[36,38]=0.467,X[37,38]=0.439,X[38,38]=0.404,X[39,38]=0.294,X[40,38]=0.467,X[41,38]=0.486,X[42,38]=0.498,X[43,38]=0.565,X[44,38]=0.502,X[45,38]=0.494,X[46,38]=0.365,X[47,38]=0.545,X[48,38]=0.624,X[49,38]=0.396,X[50,38]=0.404 X[51,38]=0.690,X[52,38]=0.365,X[53,38]=0.424,X[54,38]=0.459,X[55,38]=0.514,X[56,38]=0.475,X[57,38]=0.482,X[58,38]=0.494,X[59,38]=0.529,X[60,38]=0.545,X[61,38]=0.561,X[62,38]=0.522,X[63,38]=0.671,X[64,38]=0.620,X[65,38]=0.631,X[66,38]=0.514,X[67,38]=0.694,X[68,38]=0.741,X[69,38]=0.710,X[70,38]=0.612,X[71,38]=0.463,X[72,38]=0.333,X[73,38]=0.416,X[74,38]=0.671,X[75,38]=0.510,X[76,38]=0.443,X[77,38]=0.529,X[78,38]=0.620,X[79,38]=0.557,X[80,38]=0.612,X[81,38]=0.604,X[82,38]=0.384,X[83,38]=0.373,X[84,38]=0.545,X[85,38]=0.612,X[86,38]=0.447,X[87,38]=0.565,X[88,38]=0.400,X[89,38]=0.271,X[90,38]=0.478,X[91,38]=0.514,X[92,38]=0.478,X[93,38]=0.388,X[94,38]=0.518,X[95,38]=0.486,X[96,38]=0.463,X[97,38]=0.502,X[98,38]=0.573,X[99,38]=0.373,X[100,38]=0.490 X[1,39]=0.490,X[2,39]=0.384,X[3,39]=0.384,X[4,39]=0.345,X[5,39]=0.506,X[6,39]=0.463,X[7,39]=0.541,X[8,39]=0.506,X[9,39]=0.388,X[10,39]=0.376,X[11,39]=0.494,X[12,39]=0.514,X[13,39]=0.580,X[14,39]=0.627,X[15,39]=0.604,X[16,39]=0.643,X[17,39]=0.584,X[18,39]=0.533,X[19,39]=0.604,X[20,39]=0.561,X[21,39]=0.620,X[22,39]=0.290,X[23,39]=0.498,X[24,39]=0.584,X[25,39]=0.549,X[26,39]=0.576,X[27,39]=0.549,X[28,39]=0.706,X[29,39]=0.467,X[30,39]=0.600,X[31,39]=0.635,X[32,39]=0.302,X[33,39]=0.322,X[34,39]=0.314,X[35,39]=0.353,X[36,39]=0.388,X[37,39]=0.329,X[38,39]=0.514,X[39,39]=0.490,X[40,39]=0.384,X[41,39]=0.443,X[42,39]=0.541,X[43,39]=0.357,X[44,39]=0.302,X[45,39]=0.392,X[46,39]=0.533,X[47,39]=0.592,X[48,39]=0.345,X[49,39]=0.439,X[50,39]=0.420 X[51,39]=0.443,X[52,39]=0.400,X[53,39]=0.384,X[54,39]=0.353,X[55,39]=0.486,X[56,39]=0.455,X[57,39]=0.498,X[58,39]=0.471,X[59,39]=0.427,X[60,39]=0.380,X[61,39]=0.518,X[62,39]=0.569,X[63,39]=0.482,X[64,39]=0.612,X[65,39]=0.620,X[66,39]=0.573,X[67,39]=0.596,X[68,39]=0.553,X[69,39]=0.596,X[70,39]=0.553,X[71,39]=0.624,X[72,39]=0.322,X[73,39]=0.510,X[74,39]=0.608,X[75,39]=0.675,X[76,39]=0.529,X[77,39]=0.561,X[78,39]=0.678,X[79,39]=0.580,X[80,39]=0.565,X[81,39]=0.667,X[82,39]=0.286,X[83,39]=0.314,X[84,39]=0.329,X[85,39]=0.322,X[86,39]=0.400,X[87,39]=0.361,X[88,39]=0.482,X[89,39]=0.533,X[90,39]=0.388,X[91,39]=0.463,X[92,39]=0.533,X[93,39]=0.455,X[94,39]=0.341,X[95,39]=0.459,X[96,39]=0.557,X[97,39]=0.459,X[98,39]=0.467,X[99,39]=0.427,X[100,39]=0.392 X[1,40]=0.376,X[2,40]=0.435,X[3,40]=0.365,X[4,40]=0.353,X[5,40]=0.424,X[6,40]=0.400,X[7,40]=0.482,X[8,40]=0.494,X[9,40]=0.545,X[10,40]=0.435,X[11,40]=0.373,X[12,40]=0.396,X[13,40]=0.588,X[14,40]=0.522,X[15,40]=0.510,X[16,40]=0.698,X[17,40]=0.675,X[18,40]=0.565,X[19,40]=0.667,X[20,40]=0.557,X[21,40]=0.718,X[22,40]=0.294,X[23,40]=0.353,X[24,40]=0.498,X[25,40]=0.627,X[26,40]=0.518,X[27,40]=0.435,X[28,40]=0.678,X[29,40]=0.486,X[30,40]=0.486,X[31,40]=0.612,X[32,40]=0.251,X[33,40]=0.278,X[34,40]=0.259,X[35,40]=0.282,X[36,40]=0.278,X[37,40]=0.302,X[38,40]=0.412,X[39,40]=0.553,X[40,40]=0.392,X[41,40]=0.482,X[42,40]=0.592,X[43,40]=0.392,X[44,40]=0.314,X[45,40]=0.282,X[46,40]=0.329,X[47,40]=0.443,X[48,40]=0.306,X[49,40]=0.267,X[50,40]=0.314 X[51,40]=0.431,X[52,40]=0.400,X[53,40]=0.369,X[54,40]=0.349,X[55,40]=0.420,X[56,40]=0.396,X[57,40]=0.471,X[58,40]=0.467,X[59,40]=0.478,X[60,40]=0.431,X[61,40]=0.384,X[62,40]=0.506,X[63,40]=0.431,X[64,40]=0.502,X[65,40]=0.533,X[66,40]=0.635,X[67,40]=0.659,X[68,40]=0.565,X[69,40]=0.655,X[70,40]=0.561,X[71,40]=0.631,X[72,40]=0.400,X[73,40]=0.408,X[74,40]=0.541,X[75,40]=0.561,X[76,40]=0.475,X[77,40]=0.420,X[78,40]=0.725,X[79,40]=0.671,X[80,40]=0.486,X[81,40]=0.651,X[82,40]=0.255,X[83,40]=0.267,X[84,40]=0.235,X[85,40]=0.247,X[86,40]=0.271,X[87,40]=0.302,X[88,40]=0.420,X[89,40]=0.565,X[90,40]=0.431,X[91,40]=0.494,X[92,40]=0.600,X[93,40]=0.522,X[94,40]=0.310,X[95,40]=0.337,X[96,40]=0.427,X[97,40]=0.373,X[98,40]=0.404,X[99,40]=0.278,X[100,40]=0.322 X[1,41]=0.604,X[2,41]=0.537,X[3,41]=0.392,X[4,41]=0.341,X[5,41]=0.408,X[6,41]=0.459,X[7,41]=0.392,X[8,41]=0.365,X[9,41]=0.455,X[10,41]=0.518,X[11,41]=0.580,X[12,41]=0.373,X[13,41]=0.412,X[14,41]=0.494,X[15,41]=0.467,X[16,41]=0.643,X[17,41]=0.592,X[18,41]=0.494,X[19,41]=0.624,X[20,41]=0.667,X[21,41]=0.686,X[22,41]=0.667,X[23,41]=0.255,X[24,41]=0.380,X[25,41]=0.353,X[26,41]=0.424,X[27,41]=0.439,X[28,41]=0.506,X[29,41]=0.510,X[30,41]=0.580,X[31,41]=0.565,X[32,41]=0.263,X[33,41]=0.376,X[34,41]=0.396,X[35,41]=0.455,X[36,41]=0.592,X[37,41]=0.698,X[38,41]=0.682,X[39,41]=0.522,X[40,41]=0.376,X[41,41]=0.345,X[42,41]=0.278,X[43,41]=0.322,X[44,41]=0.325,X[45,41]=0.345,X[46,41]=0.376,X[47,41]=0.392,X[48,41]=0.525,X[49,41]=0.718,X[50,41]=0.380 X[51,41]=0.643,X[52,41]=0.435,X[53,41]=0.384,X[54,41]=0.373,X[55,41]=0.404,X[56,41]=0.392,X[57,41]=0.467,X[58,41]=0.459,X[59,41]=0.443,X[60,41]=0.494,X[61,41]=0.541,X[62,41]=0.447,X[63,41]=0.384,X[64,41]=0.486,X[65,41]=0.455,X[66,41]=0.529,X[67,41]=0.576,X[68,41]=0.486,X[69,41]=0.604,X[70,41]=0.624,X[71,41]=0.675,X[72,41]=0.612,X[73,41]=0.259,X[74,41]=0.396,X[75,41]=0.337,X[76,41]=0.553,X[77,41]=0.420,X[78,41]=0.545,X[79,41]=0.529,X[80,41]=0.647,X[81,41]=0.478,X[82,41]=0.263,X[83,41]=0.380,X[84,41]=0.380,X[85,41]=0.384,X[86,41]=0.584,X[87,41]=0.694,X[88,41]=0.671,X[89,41]=0.624,X[90,41]=0.427,X[91,41]=0.333,X[92,41]=0.275,X[93,41]=0.282,X[94,41]=0.329,X[95,41]=0.353,X[96,41]=0.376,X[97,41]=0.396,X[98,41]=0.412,X[99,41]=0.698,X[100,41]=0.380 X[1,42]=0.690,X[2,42]=0.561,X[3,42]=0.447,X[4,42]=0.431,X[5,42]=0.361,X[6,42]=0.435,X[7,42]=0.518,X[8,42]=0.675,X[9,42]=0.541,X[10,42]=0.631,X[11,42]=0.537,X[12,42]=0.569,X[13,42]=0.424,X[14,42]=0.478,X[15,42]=0.518,X[16,42]=0.361,X[17,42]=0.408,X[18,42]=0.455,X[19,42]=0.549,X[20,42]=0.580,X[21,42]=0.475,X[22,42]=0.275,X[23,42]=0.286,X[24,42]=0.231,X[25,42]=0.349,X[26,42]=0.424,X[27,42]=0.427,X[28,42]=0.525,X[29,42]=0.486,X[30,42]=0.459,X[31,42]=0.333,X[32,42]=0.282,X[33,42]=0.490,X[34,42]=0.506,X[35,42]=0.522,X[36,42]=0.588,X[37,42]=0.502,X[38,42]=0.600,X[39,42]=0.675,X[40,42]=0.592,X[41,42]=0.647,X[42,42]=0.733,X[43,42]=0.749,X[44,42]=0.694,X[45,42]=0.569,X[46,42]=0.749,X[47,42]=0.667,X[48,42]=0.396,X[49,42]=0.604,X[50,42]=0.733 X[51,42]=0.698,X[52,42]=0.620,X[53,42]=0.494,X[54,42]=0.388,X[55,42]=0.384,X[56,42]=0.584,X[57,42]=0.549,X[58,42]=0.518,X[59,42]=0.553,X[60,42]=0.616,X[61,42]=0.490,X[62,42]=0.502,X[63,42]=0.475,X[64,42]=0.439,X[65,42]=0.396,X[66,42]=0.333,X[67,42]=0.322,X[68,42]=0.467,X[69,42]=0.580,X[70,42]=0.608,X[71,42]=0.522,X[72,42]=0.439,X[73,42]=0.286,X[74,42]=0.235,X[75,42]=0.353,X[76,42]=0.416,X[77,42]=0.435,X[78,42]=0.537,X[79,42]=0.443,X[80,42]=0.392,X[81,42]=0.322,X[82,42]=0.290,X[83,42]=0.510,X[84,42]=0.608,X[85,42]=0.510,X[86,42]=0.655,X[87,42]=0.506,X[88,42]=0.600,X[89,42]=0.624,X[90,42]=0.663,X[91,42]=0.655,X[92,42]=0.737,X[93,42]=0.718,X[94,42]=0.706,X[95,42]=0.580,X[96,42]=0.694,X[97,42]=0.718,X[98,42]=0.349,X[99,42]=0.651,X[100,42]=0.741 X[1,43]=0.396,X[2,43]=0.663,X[3,43]=0.565,X[4,43]=0.482,X[5,43]=0.325,X[6,43]=0.365,X[7,43]=0.412,X[8,43]=0.439,X[9,43]=0.310,X[10,43]=0.298,X[11,43]=0.400,X[12,43]=0.373,X[13,43]=0.459,X[14,43]=0.416,X[15,43]=0.624,X[16,43]=0.561,X[17,43]=0.600,X[18,43]=0.525,X[19,43]=0.584,X[20,43]=0.447,X[21,43]=0.486,X[22,43]=0.365,X[23,43]=0.369,X[24,43]=0.345,X[25,43]=0.384,X[26,43]=0.376,X[27,43]=0.400,X[28,43]=0.416,X[29,43]=0.416,X[30,43]=0.380,X[31,43]=0.396,X[32,43]=0.329,X[33,43]=0.518,X[34,43]=0.573,X[35,43]=0.553,X[36,43]=0.627,X[37,43]=0.663,X[38,43]=0.576,X[39,43]=0.514,X[40,43]=0.616,X[41,43]=0.541,X[42,43]=0.518,X[43,43]=0.678,X[44,43]=0.675,X[45,43]=0.686,X[46,43]=0.608,X[47,43]=0.502,X[48,43]=0.294,X[49,43]=0.455,X[50,43]=0.518 X[51,43]=0.690,X[52,43]=0.725,X[53,43]=0.651,X[54,43]=0.475,X[55,43]=0.369,X[56,43]=0.416,X[57,43]=0.404,X[58,43]=0.290,X[59,43]=0.431,X[60,43]=0.271,X[61,43]=0.420,X[62,43]=0.463,X[63,43]=0.510,X[64,43]=0.365,X[65,43]=0.412,X[66,43]=0.557,X[67,43]=0.455,X[68,43]=0.475,X[69,43]=0.459,X[70,43]=0.404,X[71,43]=0.514,X[72,43]=0.361,X[73,43]=0.337,X[74,43]=0.337,X[75,43]=0.357,X[76,43]=0.420,X[77,43]=0.427,X[78,43]=0.388,X[79,43]=0.365,X[80,43]=0.384,X[81,43]=0.400,X[82,43]=0.376,X[83,43]=0.569,X[84,43]=0.580,X[85,43]=0.498,X[86,43]=0.514,X[87,43]=0.620,X[88,43]=0.643,X[89,43]=0.545,X[90,43]=0.541,X[91,43]=0.541,X[92,43]=0.553,X[93,43]=0.549,X[94,43]=0.643,X[95,43]=0.675,X[96,43]=0.627,X[97,43]=0.471,X[98,43]=0.314,X[99,43]=0.510,X[100,43]=0.408 X[1,44]=0.710,X[2,44]=0.722,X[3,44]=0.620,X[4,44]=0.416,X[5,44]=0.412,X[6,44]=0.439,X[7,44]=0.365,X[8,44]=0.467,X[9,44]=0.471,X[10,44]=0.443,X[11,44]=0.506,X[12,44]=0.494,X[13,44]=0.498,X[14,44]=0.514,X[15,44]=0.655,X[16,44]=0.545,X[17,44]=0.612,X[18,44]=0.522,X[19,44]=0.659,X[20,44]=0.463,X[21,44]=0.396,X[22,44]=0.478,X[23,44]=0.506,X[24,44]=0.506,X[25,44]=0.545,X[26,44]=0.525,X[27,44]=0.592,X[28,44]=0.478,X[29,44]=0.824,X[30,44]=0.584,X[31,44]=0.710,X[32,44]=0.294,X[33,44]=0.400,X[34,44]=0.455,X[35,44]=0.408,X[36,44]=0.502,X[37,44]=0.569,X[38,44]=0.553,X[39,44]=0.714,X[40,44]=0.576,X[41,44]=0.651,X[42,44]=0.506,X[43,44]=0.627,X[44,44]=0.722,X[45,44]=0.612,X[46,44]=0.635,X[47,44]=0.675,X[48,44]=0.392,X[49,44]=0.553,X[50,44]=0.757 X[51,44]=0.757,X[52,44]=0.686,X[53,44]=0.647,X[54,44]=0.439,X[55,44]=0.467,X[56,44]=0.475,X[57,44]=0.482,X[58,44]=0.424,X[59,44]=0.463,X[60,44]=0.384,X[61,44]=0.365,X[62,44]=0.459,X[63,44]=0.553,X[64,44]=0.388,X[65,44]=0.506,X[66,44]=0.584,X[67,44]=0.463,X[68,44]=0.384,X[69,44]=0.443,X[70,44]=0.290,X[71,44]=0.384,X[72,44]=0.498,X[73,44]=0.490,X[74,44]=0.545,X[75,44]=0.498,X[76,44]=0.427,X[77,44]=0.576,X[78,44]=0.341,X[79,44]=0.475,X[80,44]=0.494,X[81,44]=0.651,X[82,44]=0.482,X[83,44]=0.478,X[84,44]=0.369,X[85,44]=0.459,X[86,44]=0.322,X[87,44]=0.522,X[88,44]=0.600,X[89,44]=0.541,X[90,44]=0.471,X[91,44]=0.659,X[92,44]=0.502,X[93,44]=0.522,X[94,44]=0.506,X[95,44]=0.498,X[96,44]=0.545,X[97,44]=0.588,X[98,44]=0.494,X[99,44]=0.635,X[100,44]=0.639 X[1,45]=0.533,X[2,45]=0.478,X[3,45]=0.380,X[4,45]=0.396,X[5,45]=0.302,X[6,45]=0.337,X[7,45]=0.541,X[8,45]=0.392,X[9,45]=0.463,X[10,45]=0.329,X[11,45]=0.435,X[12,45]=0.388,X[13,45]=0.506,X[14,45]=0.380,X[15,45]=0.333,X[16,45]=0.239,X[17,45]=0.255,X[18,45]=0.247,X[19,45]=0.588,X[20,45]=0.463,X[21,45]=0.455,X[22,45]=0.525,X[23,45]=0.459,X[24,45]=0.537,X[25,45]=0.635,X[26,45]=0.467,X[27,45]=0.431,X[28,45]=0.565,X[29,45]=0.643,X[30,45]=0.694,X[31,45]=0.608,X[32,45]=0.345,X[33,45]=0.475,X[34,45]=0.420,X[35,45]=0.561,X[36,45]=0.580,X[37,45]=0.482,X[38,45]=0.455,X[39,45]=0.541,X[40,45]=0.569,X[41,45]=0.490,X[42,45]=0.455,X[43,45]=0.529,X[44,45]=0.596,X[45,45]=0.663,X[46,45]=0.643,X[47,45]=0.631,X[48,45]=0.247,X[49,45]=0.392,X[50,45]=0.529 X[51,45]=0.486,X[52,45]=0.471,X[53,45]=0.443,X[54,45]=0.431,X[55,45]=0.329,X[56,45]=0.424,X[57,45]=0.361,X[58,45]=0.306,X[59,45]=0.471,X[60,45]=0.310,X[61,45]=0.486,X[62,45]=0.459,X[63,45]=0.537,X[64,45]=0.353,X[65,45]=0.333,X[66,45]=0.247,X[67,45]=0.235,X[68,45]=0.247,X[69,45]=0.639,X[70,45]=0.647,X[71,45]=0.667,X[72,45]=0.667,X[73,45]=0.431,X[74,45]=0.580,X[75,45]=0.596,X[76,45]=0.553,X[77,45]=0.451,X[78,45]=0.565,X[79,45]=0.635,X[80,45]=0.663,X[81,45]=0.561,X[82,45]=0.380,X[83,45]=0.439,X[84,45]=0.463,X[85,45]=0.588,X[86,45]=0.573,X[87,45]=0.490,X[88,45]=0.435,X[89,45]=0.482,X[90,45]=0.518,X[91,45]=0.510,X[92,45]=0.490,X[93,45]=0.459,X[94,45]=0.604,X[95,45]=0.655,X[96,45]=0.690,X[97,45]=0.675,X[98,45]=0.357,X[99,45]=0.561,X[100,45]=0.569 X[1,46]=0.322,X[2,46]=0.349,X[3,46]=0.380,X[4,46]=0.302,X[5,46]=0.353,X[6,46]=0.314,X[7,46]=0.282,X[8,46]=0.259,X[9,46]=0.227,X[10,46]=0.259,X[11,46]=0.271,X[12,46]=0.263,X[13,46]=0.302,X[14,46]=0.322,X[15,46]=0.290,X[16,46]=0.314,X[17,46]=0.373,X[18,46]=0.651,X[19,46]=0.392,X[20,46]=0.549,X[21,46]=0.431,X[22,46]=0.533,X[23,46]=0.510,X[24,46]=0.314,X[25,46]=0.545,X[26,46]=0.580,X[27,46]=0.341,X[28,46]=0.451,X[29,46]=0.431,X[30,46]=0.431,X[31,46]=0.557,X[32,46]=0.349,X[33,46]=0.455,X[34,46]=0.325,X[35,46]=0.365,X[36,46]=0.502,X[37,46]=0.569,X[38,46]=0.498,X[39,46]=0.475,X[40,46]=0.639,X[41,46]=0.478,X[42,46]=0.510,X[43,46]=0.573,X[44,46]=0.639,X[45,46]=0.608,X[46,46]=0.525,X[47,46]=0.690,X[48,46]=0.298,X[49,46]=0.278,X[50,46]=0.263 X[51,46]=0.353,X[52,46]=0.361,X[53,46]=0.380,X[54,46]=0.306,X[55,46]=0.337,X[56,46]=0.310,X[57,46]=0.427,X[58,46]=0.290,X[59,46]=0.227,X[60,46]=0.271,X[61,46]=0.271,X[62,46]=0.255,X[63,46]=0.286,X[64,46]=0.325,X[65,46]=0.298,X[66,46]=0.337,X[67,46]=0.275,X[68,46]=0.678,X[69,46]=0.388,X[70,46]=0.553,X[71,46]=0.471,X[72,46]=0.455,X[73,46]=0.486,X[74,46]=0.369,X[75,46]=0.345,X[76,46]=0.467,X[77,46]=0.306,X[78,46]=0.424,X[79,46]=0.490,X[80,46]=0.314,X[81,46]=0.510,X[82,46]=0.376,X[83,46]=0.443,X[84,46]=0.345,X[85,46]=0.345,X[86,46]=0.525,X[87,46]=0.533,X[88,46]=0.490,X[89,46]=0.549,X[90,46]=0.659,X[91,46]=0.506,X[92,46]=0.518,X[93,46]=0.573,X[94,46]=0.663,X[95,46]=0.580,X[96,46]=0.435,X[97,46]=0.667,X[98,46]=0.271,X[99,46]=0.267,X[100,46]=0.267 X[1,47]=0.565,X[2,47]=0.639,X[3,47]=0.486,X[4,47]=0.659,X[5,47]=0.600,X[6,47]=0.498,X[7,47]=0.439,X[8,47]=0.435,X[9,47]=0.396,X[10,47]=0.388,X[11,47]=0.404,X[12,47]=0.365,X[13,47]=0.341,X[14,47]=0.416,X[15,47]=0.573,X[16,47]=0.682,X[17,47]=0.569,X[18,47]=0.525,X[19,47]=0.486,X[20,47]=0.333,X[21,47]=0.361,X[22,47]=0.353,X[23,47]=0.369,X[24,47]=0.353,X[25,47]=0.216,X[26,47]=0.388,X[27,47]=0.349,X[28,47]=0.263,X[29,47]=0.318,X[30,47]=0.710,X[31,47]=0.467,X[32,47]=0.314,X[33,47]=0.365,X[34,47]=0.322,X[35,47]=0.357,X[36,47]=0.380,X[37,47]=0.678,X[38,47]=0.396,X[39,47]=0.573,X[40,47]=0.443,X[41,47]=0.475,X[42,47]=0.600,X[43,47]=0.431,X[44,47]=0.490,X[45,47]=0.627,X[46,47]=0.431,X[47,47]=0.663,X[48,47]=0.686,X[49,47]=0.522,X[50,47]=0.698 X[51,47]=0.675,X[52,47]=0.643,X[53,47]=0.541,X[54,47]=0.616,X[55,47]=0.635,X[56,47]=0.412,X[57,47]=0.533,X[58,47]=0.443,X[59,47]=0.392,X[60,47]=0.392,X[61,47]=0.404,X[62,47]=0.353,X[63,47]=0.337,X[64,47]=0.396,X[65,47]=0.584,X[66,47]=0.671,X[67,47]=0.604,X[68,47]=0.490,X[69,47]=0.463,X[70,47]=0.290,X[71,47]=0.365,X[72,47]=0.439,X[73,47]=0.373,X[74,47]=0.365,X[75,47]=0.490,X[76,47]=0.220,X[77,47]=0.325,X[78,47]=0.247,X[79,47]=0.318,X[80,47]=0.545,X[81,47]=0.416,X[82,47]=0.345,X[83,47]=0.369,X[84,47]=0.349,X[85,47]=0.376,X[86,47]=0.369,X[87,47]=0.686,X[88,47]=0.376,X[89,47]=0.643,X[90,47]=0.545,X[91,47]=0.522,X[92,47]=0.612,X[93,47]=0.510,X[94,47]=0.475,X[95,47]=0.592,X[96,47]=0.510,X[97,47]=0.745,X[98,47]=0.573,X[99,47]=0.514,X[100,47]=0.706 X[1,48]=0.522,X[2,48]=0.655,X[3,48]=0.698,X[4,48]=0.706,X[5,48]=0.729,X[6,48]=0.694,X[7,48]=0.678,X[8,48]=0.667,X[9,48]=0.639,X[10,48]=0.533,X[11,48]=0.498,X[12,48]=0.357,X[13,48]=0.341,X[14,48]=0.365,X[15,48]=0.361,X[16,48]=0.490,X[17,48]=0.518,X[18,48]=0.400,X[19,48]=0.416,X[20,48]=0.427,X[21,48]=0.455,X[22,48]=0.396,X[23,48]=0.396,X[24,48]=0.271,X[25,48]=0.486,X[26,48]=0.431,X[27,48]=0.357,X[28,48]=0.459,X[29,48]=0.482,X[30,48]=0.624,X[31,48]=0.329,X[32,48]=0.337,X[33,48]=0.522,X[34,48]=0.365,X[35,48]=0.431,X[36,48]=0.416,X[37,48]=0.329,X[38,48]=0.569,X[39,48]=0.365,X[40,48]=0.596,X[41,48]=0.357,X[42,48]=0.416,X[43,48]=0.345,X[44,48]=0.384,X[45,48]=0.514,X[46,48]=0.565,X[47,48]=0.451,X[48,48]=0.714,X[49,48]=0.706,X[50,48]=0.561 X[51,48]=0.596,X[52,48]=0.667,X[53,48]=0.655,X[54,48]=0.718,X[55,48]=0.737,X[56,48]=0.663,X[57,48]=0.675,X[58,48]=0.624,X[59,48]=0.698,X[60,48]=0.502,X[61,48]=0.510,X[62,48]=0.471,X[63,48]=0.361,X[64,48]=0.365,X[65,48]=0.392,X[66,48]=0.400,X[67,48]=0.455,X[68,48]=0.388,X[69,48]=0.404,X[70,48]=0.486,X[71,48]=0.482,X[72,48]=0.443,X[73,48]=0.373,X[74,48]=0.282,X[75,48]=0.455,X[76,48]=0.373,X[77,48]=0.337,X[78,48]=0.478,X[79,48]=0.463,X[80,48]=0.545,X[81,48]=0.318,X[82,48]=0.392,X[83,48]=0.549,X[84,48]=0.451,X[85,48]=0.290,X[86,48]=0.435,X[87,48]=0.278,X[88,48]=0.424,X[89,48]=0.592,X[90,48]=0.561,X[91,48]=0.302,X[92,48]=0.459,X[93,48]=0.416,X[94,48]=0.404,X[95,48]=0.506,X[96,48]=0.506,X[97,48]=0.580,X[98,48]=0.467,X[99,48]=0.667,X[100,48]=0.525 X[1,49]=0.573,X[2,49]=0.643,X[3,49]=0.761,X[4,49]=0.565,X[5,49]=0.631,X[6,49]=0.620,X[7,49]=0.631,X[8,49]=0.678,X[9,49]=0.780,X[10,49]=0.698,X[11,49]=0.698,X[12,49]=0.376,X[13,49]=0.333,X[14,49]=0.341,X[15,49]=0.376,X[16,49]=0.557,X[17,49]=0.561,X[18,49]=0.510,X[19,49]=0.392,X[20,49]=0.416,X[21,49]=0.412,X[22,49]=0.200,X[23,49]=0.349,X[24,49]=0.302,X[25,49]=0.345,X[26,49]=0.306,X[27,49]=0.318,X[28,49]=0.522,X[29,49]=0.569,X[30,49]=0.694,X[31,49]=0.318,X[32,49]=0.341,X[33,49]=0.451,X[34,49]=0.584,X[35,49]=0.341,X[36,49]=0.396,X[37,49]=0.282,X[38,49]=0.490,X[39,49]=0.427,X[40,49]=0.686,X[41,49]=0.663,X[42,49]=0.451,X[43,49]=0.588,X[44,49]=0.584,X[45,49]=0.522,X[46,49]=0.569,X[47,49]=0.357,X[48,49]=0.596,X[49,49]=0.745,X[50,49]=0.631 X[51,49]=0.686,X[52,49]=0.749,X[53,49]=0.757,X[54,49]=0.588,X[55,49]=0.647,X[56,49]=0.667,X[57,49]=0.710,X[58,49]=0.631,X[59,49]=0.702,X[60,49]=0.690,X[61,49]=0.706,X[62,49]=0.667,X[63,49]=0.373,X[64,49]=0.314,X[65,49]=0.416,X[66,49]=0.384,X[67,49]=0.541,X[68,49]=0.494,X[69,49]=0.388,X[70,49]=0.427,X[71,49]=0.333,X[72,49]=0.341,X[73,49]=0.325,X[74,49]=0.286,X[75,49]=0.286,X[76,49]=0.427,X[77,49]=0.286,X[78,49]=0.510,X[79,49]=0.569,X[80,49]=0.659,X[81,49]=0.318,X[82,49]=0.365,X[83,49]=0.459,X[84,49]=0.553,X[85,49]=0.420,X[86,49]=0.416,X[87,49]=0.282,X[88,49]=0.498,X[89,49]=0.616,X[90,49]=0.573,X[91,49]=0.643,X[92,49]=0.494,X[93,49]=0.514,X[94,49]=0.549,X[95,49]=0.518,X[96,49]=0.522,X[97,49]=0.584,X[98,49]=0.384,X[99,49]=0.722,X[100,49]=0.624 X[1,50]=0.498,X[2,50]=0.506,X[3,50]=0.624,X[4,50]=0.737,X[5,50]=0.631,X[6,50]=0.682,X[7,50]=0.667,X[8,50]=0.663,X[9,50]=0.725,X[10,50]=0.710,X[11,50]=0.733,X[12,50]=0.620,X[13,50]=0.341,X[14,50]=0.325,X[15,50]=0.341,X[16,50]=0.357,X[17,50]=0.357,X[18,50]=0.239,X[19,50]=0.424,X[20,50]=0.459,X[21,50]=0.416,X[22,50]=0.576,X[23,50]=0.369,X[24,50]=0.498,X[25,50]=0.416,X[26,50]=0.455,X[27,50]=0.388,X[28,50]=0.478,X[29,50]=0.537,X[30,50]=0.635,X[31,50]=0.373,X[32,50]=0.337,X[33,50]=0.420,X[34,50]=0.475,X[35,50]=0.467,X[36,50]=0.584,X[37,50]=0.333,X[38,50]=0.549,X[39,50]=0.435,X[40,50]=0.588,X[41,50]=0.416,X[42,50]=0.463,X[43,50]=0.561,X[44,50]=0.541,X[45,50]=0.604,X[46,50]=0.624,X[47,50]=0.235,X[48,50]=0.357,X[49,50]=0.494,X[50,50]=0.616 X[51,50]=0.541,X[52,50]=0.600,X[53,50]=0.694,X[54,50]=0.745,X[55,50]=0.663,X[56,50]=0.733,X[57,50]=0.710,X[58,50]=0.631,X[59,50]=0.698,X[60,50]=0.663,X[61,50]=0.702,X[62,50]=0.737,X[63,50]=0.361,X[64,50]=0.333,X[65,50]=0.353,X[66,50]=0.306,X[67,50]=0.486,X[68,50]=0.220,X[69,50]=0.435,X[70,50]=0.510,X[71,50]=0.529,X[72,50]=0.467,X[73,50]=0.365,X[74,50]=0.490,X[75,50]=0.475,X[76,50]=0.388,X[77,50]=0.408,X[78,50]=0.498,X[79,50]=0.455,X[80,50]=0.643,X[81,50]=0.329,X[82,50]=0.357,X[83,50]=0.388,X[84,50]=0.431,X[85,50]=0.537,X[86,50]=0.592,X[87,50]=0.314,X[88,50]=0.427,X[89,50]=0.498,X[90,50]=0.651,X[91,50]=0.376,X[92,50]=0.467,X[93,50]=0.557,X[94,50]=0.553,X[95,50]=0.549,X[96,50]=0.588,X[97,50]=0.549,X[98,50]=0.275,X[99,50]=0.514,X[100,50]=0.592 X[1,51]=0.420,X[2,51]=0.420,X[3,51]=0.580,X[4,51]=0.631,X[5,51]=0.722,X[6,51]=0.659,X[7,51]=0.525,X[8,51]=0.573,X[9,51]=0.608,X[10,51]=0.659,X[11,51]=0.667,X[12,51]=0.671,X[13,51]=0.404,X[14,51]=0.373,X[15,51]=0.337,X[16,51]=0.384,X[17,51]=0.357,X[18,51]=0.455,X[19,51]=0.510,X[20,51]=0.239,X[21,51]=0.306,X[22,51]=0.455,X[23,51]=0.427,X[24,51]=0.463,X[25,51]=0.357,X[26,51]=0.369,X[27,51]=0.369,X[28,51]=0.420,X[29,51]=0.471,X[30,51]=0.710,X[31,51]=0.435,X[32,51]=0.400,X[33,51]=0.404,X[34,51]=0.463,X[35,51]=0.600,X[36,51]=0.518,X[37,51]=0.349,X[38,51]=0.341,X[39,51]=0.498,X[40,51]=0.624,X[41,51]=0.498,X[42,51]=0.612,X[43,51]=0.537,X[44,51]=0.451,X[45,51]=0.369,X[46,51]=0.518,X[47,51]=0.369,X[48,51]=0.404,X[49,51]=0.439,X[50,51]=0.451 X[51,51]=0.478,X[52,51]=0.525,X[53,51]=0.541,X[54,51]=0.604,X[55,51]=0.729,X[56,51]=0.600,X[57,51]=0.639,X[58,51]=0.612,X[59,51]=0.647,X[60,51]=0.651,X[61,51]=0.702,X[62,51]=0.757,X[63,51]=0.427,X[64,51]=0.376,X[65,51]=0.333,X[66,51]=0.322,X[67,51]=0.388,X[68,51]=0.482,X[69,51]=0.514,X[70,51]=0.235,X[71,51]=0.290,X[72,51]=0.435,X[73,51]=0.435,X[74,51]=0.475,X[75,51]=0.510,X[76,51]=0.294,X[77,51]=0.392,X[78,51]=0.431,X[79,51]=0.435,X[80,51]=0.541,X[81,51]=0.388,X[82,51]=0.431,X[83,51]=0.369,X[84,51]=0.404,X[85,51]=0.537,X[86,51]=0.514,X[87,51]=0.369,X[88,51]=0.345,X[89,51]=0.416,X[90,51]=0.490,X[91,51]=0.494,X[92,51]=0.616,X[93,51]=0.490,X[94,51]=0.408,X[95,51]=0.420,X[96,51]=0.502,X[97,51]=0.478,X[98,51]=0.435,X[99,51]=0.420,X[100,51]=0.435 X[1,52]=0.545,X[2,52]=0.318,X[3,52]=0.361,X[4,52]=0.459,X[5,52]=0.604,X[6,52]=0.475,X[7,52]=0.608,X[8,52]=0.471,X[9,52]=0.510,X[10,52]=0.584,X[11,52]=0.341,X[12,52]=0.392,X[13,52]=0.498,X[14,52]=0.557,X[15,52]=0.439,X[16,52]=0.318,X[17,52]=0.498,X[18,52]=0.478,X[19,52]=0.329,X[20,52]=0.204,X[21,52]=0.275,X[22,52]=0.608,X[23,52]=0.294,X[24,52]=0.416,X[25,52]=0.376,X[26,52]=0.439,X[27,52]=0.353,X[28,52]=0.251,X[29,52]=0.486,X[30,52]=0.565,X[31,52]=0.424,X[32,52]=0.263,X[33,52]=0.357,X[34,52]=0.345,X[35,52]=0.439,X[36,52]=0.357,X[37,52]=0.451,X[38,52]=0.412,X[39,52]=0.471,X[40,52]=0.580,X[41,52]=0.416,X[42,52]=0.580,X[43,52]=0.533,X[44,52]=0.671,X[45,52]=0.671,X[46,52]=0.627,X[47,52]=0.329,X[48,52]=0.518,X[49,52]=0.486,X[50,52]=0.718 X[51,52]=0.435,X[52,52]=0.286,X[53,52]=0.353,X[54,52]=0.490,X[55,52]=0.588,X[56,52]=0.573,X[57,52]=0.604,X[58,52]=0.486,X[59,52]=0.537,X[60,52]=0.600,X[61,52]=0.322,X[62,52]=0.345,X[63,52]=0.435,X[64,52]=0.533,X[65,52]=0.447,X[66,52]=0.310,X[67,52]=0.412,X[68,52]=0.463,X[69,52]=0.318,X[70,52]=0.212,X[71,52]=0.267,X[72,52]=0.396,X[73,52]=0.349,X[74,52]=0.455,X[75,52]=0.490,X[76,52]=0.490,X[77,52]=0.333,X[78,52]=0.294,X[79,52]=0.384,X[80,52]=0.475,X[81,52]=0.380,X[82,52]=0.286,X[83,52]=0.361,X[84,52]=0.314,X[85,52]=0.431,X[86,52]=0.349,X[87,52]=0.420,X[88,52]=0.322,X[89,52]=0.388,X[90,52]=0.459,X[91,52]=0.392,X[92,52]=0.545,X[93,52]=0.357,X[94,52]=0.675,X[95,52]=0.667,X[96,52]=0.561,X[97,52]=0.302,X[98,52]=0.478,X[99,52]=0.455,X[100,52]=0.690 X[1,53]=0.612,X[2,53]=0.667,X[3,53]=0.400,X[4,53]=0.561,X[5,53]=0.427,X[6,53]=0.314,X[7,53]=0.306,X[8,53]=0.306,X[9,53]=0.314,X[10,53]=0.322,X[11,53]=0.400,X[12,53]=0.510,X[13,53]=0.443,X[14,53]=0.518,X[15,53]=0.435,X[16,53]=0.333,X[17,53]=0.322,X[18,53]=0.318,X[19,53]=0.412,X[20,53]=0.302,X[21,53]=0.369,X[22,53]=0.553,X[23,53]=0.388,X[24,53]=0.184,X[25,53]=0.235,X[26,53]=0.392,X[27,53]=0.243,X[28,53]=0.267,X[29,53]=0.196,X[30,53]=0.302,X[31,53]=0.259,X[32,53]=0.357,X[33,53]=0.247,X[34,53]=0.212,X[35,53]=0.322,X[36,53]=0.318,X[37,53]=0.380,X[38,53]=0.424,X[39,53]=0.353,X[40,53]=0.620,X[41,53]=0.451,X[42,53]=0.486,X[43,53]=0.396,X[44,53]=0.486,X[45,53]=0.600,X[46,53]=0.561,X[47,53]=0.322,X[48,53]=0.627,X[49,53]=0.525,X[50,53]=0.533 X[51,53]=0.686,X[52,53]=0.549,X[53,53]=0.439,X[54,53]=0.514,X[55,53]=0.431,X[56,53]=0.298,X[57,53]=0.439,X[58,53]=0.271,X[59,53]=0.278,X[60,53]=0.322,X[61,53]=0.396,X[62,53]=0.447,X[63,53]=0.451,X[64,53]=0.541,X[65,53]=0.455,X[66,53]=0.294,X[67,53]=0.349,X[68,53]=0.322,X[69,53]=0.384,X[70,53]=0.298,X[71,53]=0.490,X[72,53]=0.420,X[73,53]=0.416,X[74,53]=0.184,X[75,53]=0.235,X[76,53]=0.420,X[77,53]=0.227,X[78,53]=0.243,X[79,53]=0.208,X[80,53]=0.216,X[81,53]=0.243,X[82,53]=0.341,X[83,53]=0.235,X[84,53]=0.259,X[85,53]=0.251,X[86,53]=0.298,X[87,53]=0.286,X[88,53]=0.267,X[89,53]=0.302,X[90,53]=0.514,X[91,53]=0.443,X[92,53]=0.478,X[93,53]=0.337,X[94,53]=0.494,X[95,53]=0.643,X[96,53]=0.541,X[97,53]=0.341,X[98,53]=0.455,X[99,53]=0.510,X[100,53]=0.478 X[1,54]=0.400,X[2,54]=0.498,X[3,54]=0.537,X[4,54]=0.702,X[5,54]=0.718,X[6,54]=0.706,X[7,54]=0.675,X[8,54]=0.722,X[9,54]=0.741,X[10,54]=0.698,X[11,54]=0.757,X[12,54]=0.506,X[13,54]=0.376,X[14,54]=0.282,X[15,54]=0.322,X[16,54]=0.357,X[17,54]=0.404,X[18,54]=0.510,X[19,54]=0.471,X[20,54]=0.557,X[21,54]=0.263,X[22,54]=0.439,X[23,54]=0.384,X[24,54]=0.400,X[25,54]=0.384,X[26,54]=0.412,X[27,54]=0.443,X[28,54]=0.220,X[29,54]=0.353,X[30,54]=0.388,X[31,54]=0.408,X[32,54]=0.682,X[33,54]=0.647,X[34,54]=0.604,X[35,54]=0.353,X[36,54]=0.318,X[37,54]=0.298,X[38,54]=0.263,X[39,54]=0.251,X[40,54]=0.310,X[41,54]=0.333,X[42,54]=0.271,X[43,54]=0.329,X[44,54]=0.310,X[45,54]=0.337,X[46,54]=0.337,X[47,54]=0.263,X[48,54]=0.337,X[49,54]=0.424,X[50,54]=0.420 X[51,54]=0.431,X[52,54]=0.616,X[53,54]=0.522,X[54,54]=0.682,X[55,54]=0.710,X[56,54]=0.733,X[57,54]=0.694,X[58,54]=0.671,X[59,54]=0.725,X[60,54]=0.706,X[61,54]=0.753,X[62,54]=0.694,X[63,54]=0.431,X[64,54]=0.278,X[65,54]=0.306,X[66,54]=0.349,X[67,54]=0.506,X[68,54]=0.502,X[69,54]=0.498,X[70,54]=0.596,X[71,54]=0.333,X[72,54]=0.494,X[73,54]=0.408,X[74,54]=0.353,X[75,54]=0.286,X[76,54]=0.467,X[77,54]=0.463,X[78,54]=0.231,X[79,54]=0.271,X[80,54]=0.388,X[81,54]=0.455,X[82,54]=0.682,X[83,54]=0.631,X[84,54]=0.541,X[85,54]=0.525,X[86,54]=0.306,X[87,54]=0.290,X[88,54]=0.271,X[89,54]=0.231,X[90,54]=0.325,X[91,54]=0.341,X[92,54]=0.275,X[93,54]=0.267,X[94,54]=0.306,X[95,54]=0.365,X[96,54]=0.545,X[97,54]=0.329,X[98,54]=0.369,X[99,54]=0.424,X[100,54]=0.396 X[1,55]=0.588,X[2,55]=0.749,X[3,55]=0.729,X[4,55]=0.651,X[5,55]=0.518,X[6,55]=0.514,X[7,55]=0.643,X[8,55]=0.620,X[9,55]=0.616,X[10,55]=0.506,X[11,55]=0.694,X[12,55]=0.510,X[13,55]=0.392,X[14,55]=0.278,X[15,55]=0.333,X[16,55]=0.431,X[17,55]=0.514,X[18,55]=0.447,X[19,55]=0.475,X[20,55]=0.435,X[21,55]=0.506,X[22,55]=0.604,X[23,55]=0.294,X[24,55]=0.200,X[25,55]=0.243,X[26,55]=0.271,X[27,55]=0.294,X[28,55]=0.490,X[29,55]=0.671,X[30,55]=0.537,X[31,55]=0.580,X[32,55]=0.455,X[33,55]=0.490,X[34,55]=0.522,X[35,55]=0.463,X[36,55]=0.510,X[37,55]=0.541,X[38,55]=0.678,X[39,55]=0.706,X[40,55]=0.373,X[41,55]=0.373,X[42,55]=0.290,X[43,55]=0.286,X[44,55]=0.357,X[45,55]=0.475,X[46,55]=0.427,X[47,55]=0.322,X[48,55]=0.506,X[49,55]=0.533,X[50,55]=0.620 X[51,55]=0.729,X[52,55]=0.733,X[53,55]=0.690,X[54,55]=0.635,X[55,55]=0.580,X[56,55]=0.604,X[57,55]=0.651,X[58,55]=0.557,X[59,55]=0.702,X[60,55]=0.494,X[61,55]=0.729,X[62,55]=0.725,X[63,55]=0.424,X[64,55]=0.255,X[65,55]=0.357,X[66,55]=0.541,X[67,55]=0.443,X[68,55]=0.435,X[69,55]=0.427,X[70,55]=0.447,X[71,55]=0.475,X[72,55]=0.561,X[73,55]=0.322,X[74,55]=0.200,X[75,55]=0.216,X[76,55]=0.337,X[77,55]=0.310,X[78,55]=0.494,X[79,55]=0.663,X[80,55]=0.514,X[81,55]=0.541,X[82,55]=0.404,X[83,55]=0.514,X[84,55]=0.624,X[85,55]=0.416,X[86,55]=0.537,X[87,55]=0.596,X[88,55]=0.557,X[89,55]=0.765,X[90,55]=0.314,X[91,55]=0.353,X[92,55]=0.290,X[93,55]=0.286,X[94,55]=0.361,X[95,55]=0.482,X[96,55]=0.384,X[97,55]=0.369,X[98,55]=0.424,X[99,55]=0.557,X[100,55]=0.596 X[1,56]=0.459,X[2,56]=0.655,X[3,56]=0.525,X[4,56]=0.525,X[5,56]=0.506,X[6,56]=0.486,X[7,56]=0.416,X[8,56]=0.557,X[9,56]=0.459,X[10,56]=0.420,X[11,56]=0.663,X[12,56]=0.549,X[13,56]=0.416,X[14,56]=0.388,X[15,56]=0.400,X[16,56]=0.325,X[17,56]=0.396,X[18,56]=0.463,X[19,56]=0.431,X[20,56]=0.349,X[21,56]=0.478,X[22,56]=0.475,X[23,56]=0.380,X[24,56]=0.392,X[25,56]=0.569,X[26,56]=0.729,X[27,56]=0.616,X[28,56]=0.416,X[29,56]=0.412,X[30,56]=0.416,X[31,56]=0.541,X[32,56]=0.396,X[33,56]=0.529,X[34,56]=0.537,X[35,56]=0.537,X[36,56]=0.451,X[37,56]=0.545,X[38,56]=0.596,X[39,56]=0.482,X[40,56]=0.286,X[41,56]=0.373,X[42,56]=0.620,X[43,56]=0.698,X[44,56]=0.757,X[45,56]=0.682,X[46,56]=0.478,X[47,56]=0.384,X[48,56]=0.549,X[49,56]=0.643,X[50,56]=0.553 X[51,56]=0.561,X[52,56]=0.553,X[53,56]=0.514,X[54,56]=0.522,X[55,56]=0.525,X[56,56]=0.541,X[57,56]=0.518,X[58,56]=0.435,X[59,56]=0.608,X[60,56]=0.451,X[61,56]=0.631,X[62,56]=0.729,X[63,56]=0.439,X[64,56]=0.345,X[65,56]=0.427,X[66,56]=0.427,X[67,56]=0.306,X[68,56]=0.420,X[69,56]=0.376,X[70,56]=0.333,X[71,56]=0.510,X[72,56]=0.514,X[73,56]=0.396,X[74,56]=0.408,X[75,56]=0.431,X[76,56]=0.718,X[77,56]=0.616,X[78,56]=0.388,X[79,56]=0.365,X[80,56]=0.412,X[81,56]=0.545,X[82,56]=0.388,X[83,56]=0.561,X[84,56]=0.576,X[85,56]=0.592,X[86,56]=0.427,X[87,56]=0.553,X[88,56]=0.667,X[89,56]=0.400,X[90,56]=0.549,X[91,56]=0.404,X[92,56]=0.624,X[93,56]=0.600,X[94,56]=0.757,X[95,56]=0.667,X[96,56]=0.569,X[97,56]=0.380,X[98,56]=0.463,X[99,56]=0.643,X[100,56]=0.561 X[1,57]=0.553,X[2,57]=0.384,X[3,57]=0.373,X[4,57]=0.439,X[5,57]=0.671,X[6,57]=0.702,X[7,57]=0.706,X[8,57]=0.443,X[9,57]=0.506,X[10,57]=0.522,X[11,57]=0.502,X[12,57]=0.667,X[13,57]=0.427,X[14,57]=0.408,X[15,57]=0.373,X[16,57]=0.259,X[17,57]=0.282,X[18,57]=0.267,X[19,57]=0.322,X[20,57]=0.271,X[21,57]=0.259,X[22,57]=0.329,X[23,57]=0.333,X[24,57]=0.537,X[25,57]=0.353,X[26,57]=0.569,X[27,57]=0.584,X[28,57]=0.416,X[29,57]=0.490,X[30,57]=0.388,X[31,57]=0.412,X[32,57]=0.596,X[33,57]=0.667,X[34,57]=0.576,X[35,57]=0.482,X[36,57]=0.463,X[37,57]=0.408,X[38,57]=0.596,X[39,57]=0.533,X[40,57]=0.412,X[41,57]=0.341,X[42,57]=0.459,X[43,57]=0.529,X[44,57]=0.553,X[45,57]=0.694,X[46,57]=0.388,X[47,57]=0.643,X[48,57]=0.737,X[49,57]=0.467,X[50,57]=0.659 X[51,57]=0.514,X[52,57]=0.388,X[53,57]=0.384,X[54,57]=0.439,X[55,57]=0.627,X[56,57]=0.486,X[57,57]=0.608,X[58,57]=0.537,X[59,57]=0.494,X[60,57]=0.537,X[61,57]=0.498,X[62,57]=0.631,X[63,57]=0.408,X[64,57]=0.396,X[65,57]=0.365,X[66,57]=0.298,X[67,57]=0.275,X[68,57]=0.271,X[69,57]=0.259,X[70,57]=0.275,X[71,57]=0.255,X[72,57]=0.294,X[73,57]=0.325,X[74,57]=0.525,X[75,57]=0.388,X[76,57]=0.427,X[77,57]=0.580,X[78,57]=0.502,X[79,57]=0.416,X[80,57]=0.424,X[81,57]=0.447,X[82,57]=0.576,X[83,57]=0.659,X[84,57]=0.600,X[85,57]=0.490,X[86,57]=0.506,X[87,57]=0.424,X[88,57]=0.631,X[89,57]=0.549,X[90,57]=0.596,X[91,57]=0.373,X[92,57]=0.459,X[93,57]=0.424,X[94,57]=0.553,X[95,57]=0.706,X[96,57]=0.525,X[97,57]=0.376,X[98,57]=0.651,X[99,57]=0.451,X[100,57]=0.639 X[1,58]=0.635,X[2,58]=0.471,X[3,58]=0.576,X[4,58]=0.620,X[5,58]=0.514,X[6,58]=0.631,X[7,58]=0.600,X[8,58]=0.675,X[9,58]=0.569,X[10,58]=0.725,X[11,58]=0.722,X[12,58]=0.667,X[13,58]=0.549,X[14,58]=0.506,X[15,58]=0.412,X[16,58]=0.412,X[17,58]=0.341,X[18,58]=0.341,X[19,58]=0.325,X[20,58]=0.322,X[21,58]=0.380,X[22,58]=0.396,X[23,58]=0.345,X[24,58]=0.443,X[25,58]=0.522,X[26,58]=0.545,X[27,58]=0.529,X[28,58]=0.408,X[29,58]=0.459,X[30,58]=0.400,X[31,58]=0.447,X[32,58]=0.584,X[33,58]=0.702,X[34,58]=0.447,X[35,58]=0.529,X[36,58]=0.565,X[37,58]=0.537,X[38,58]=0.667,X[39,58]=0.424,X[40,58]=0.490,X[41,58]=0.306,X[42,58]=0.612,X[43,58]=0.643,X[44,58]=0.494,X[45,58]=0.655,X[46,58]=0.310,X[47,58]=0.553,X[48,58]=0.494,X[49,58]=0.580,X[50,58]=0.627 X[51,58]=0.525,X[52,58]=0.459,X[53,58]=0.561,X[54,58]=0.620,X[55,58]=0.537,X[56,58]=0.533,X[57,58]=0.608,X[58,58]=0.588,X[59,58]=0.592,X[60,58]=0.729,X[61,58]=0.698,X[62,58]=0.690,X[63,58]=0.431,X[64,58]=0.482,X[65,58]=0.400,X[66,58]=0.392,X[67,58]=0.353,X[68,58]=0.329,X[69,58]=0.322,X[70,58]=0.318,X[71,58]=0.337,X[72,58]=0.345,X[73,58]=0.337,X[74,58]=0.467,X[75,58]=0.635,X[76,58]=0.396,X[77,58]=0.537,X[78,58]=0.388,X[79,58]=0.365,X[80,58]=0.518,X[81,58]=0.392,X[82,58]=0.600,X[83,58]=0.678,X[84,58]=0.443,X[85,58]=0.502,X[86,58]=0.588,X[87,58]=0.529,X[88,58]=0.694,X[89,58]=0.592,X[90,58]=0.451,X[91,58]=0.310,X[92,58]=0.604,X[93,58]=0.635,X[94,58]=0.502,X[95,58]=0.667,X[96,58]=0.467,X[97,58]=0.329,X[98,58]=0.506,X[99,58]=0.514,X[100,58]=0.620 X[1,59]=0.620,X[2,59]=0.506,X[3,59]=0.647,X[4,59]=0.592,X[5,59]=0.529,X[6,59]=0.420,X[7,59]=0.282,X[8,59]=0.337,X[9,59]=0.369,X[10,59]=0.357,X[11,59]=0.365,X[12,59]=0.529,X[13,59]=0.486,X[14,59]=0.510,X[15,59]=0.388,X[16,59]=0.694,X[17,59]=0.369,X[18,59]=0.565,X[19,59]=0.663,X[20,59]=0.718,X[21,59]=0.765,X[22,59]=0.718,X[23,59]=0.627,X[24,59]=0.325,X[25,59]=0.486,X[26,59]=0.518,X[27,59]=0.510,X[28,59]=0.620,X[29,59]=0.467,X[30,59]=0.478,X[31,59]=0.376,X[32,59]=0.667,X[33,59]=0.529,X[34,59]=0.467,X[35,59]=0.522,X[36,59]=0.565,X[37,59]=0.400,X[38,59]=0.478,X[39,59]=0.416,X[40,59]=0.557,X[41,59]=0.608,X[42,59]=0.322,X[43,59]=0.498,X[44,59]=0.592,X[45,59]=0.369,X[46,59]=0.333,X[47,59]=0.525,X[48,59]=0.341,X[49,59]=0.541,X[50,59]=0.416 X[51,59]=0.604,X[52,59]=0.518,X[53,59]=0.663,X[54,59]=0.608,X[55,59]=0.525,X[56,59]=0.439,X[57,59]=0.490,X[58,59]=0.341,X[59,59]=0.373,X[60,59]=0.373,X[61,59]=0.373,X[62,59]=0.624,X[63,59]=0.424,X[64,59]=0.545,X[65,59]=0.388,X[66,59]=0.533,X[67,59]=0.463,X[68,59]=0.608,X[69,59]=0.686,X[70,59]=0.729,X[71,59]=0.784,X[72,59]=0.749,X[73,59]=0.580,X[74,59]=0.325,X[75,59]=0.416,X[76,59]=0.451,X[77,59]=0.463,X[78,59]=0.592,X[79,59]=0.420,X[80,59]=0.557,X[81,59]=0.443,X[82,59]=0.671,X[83,59]=0.541,X[84,59]=0.525,X[85,59]=0.518,X[86,59]=0.580,X[87,59]=0.412,X[88,59]=0.420,X[89,59]=0.545,X[90,59]=0.482,X[91,59]=0.545,X[92,59]=0.353,X[93,59]=0.545,X[94,59]=0.580,X[95,59]=0.357,X[96,59]=0.345,X[97,59]=0.439,X[98,59]=0.349,X[99,59]=0.561,X[100,59]=0.427 X[1,60]=0.318,X[2,60]=0.302,X[3,60]=0.337,X[4,60]=0.329,X[5,60]=0.337,X[6,60]=0.357,X[7,60]=0.349,X[8,60]=0.337,X[9,60]=0.349,X[10,60]=0.341,X[11,60]=0.361,X[12,60]=0.471,X[13,60]=0.749,X[14,60]=0.612,X[15,60]=0.675,X[16,60]=0.675,X[17,60]=0.702,X[18,60]=0.639,X[19,60]=0.537,X[20,60]=0.431,X[21,60]=0.455,X[22,60]=0.494,X[23,60]=0.408,X[24,60]=0.439,X[25,60]=0.608,X[26,60]=0.525,X[27,60]=0.620,X[28,60]=0.549,X[29,60]=0.447,X[30,60]=0.549,X[31,60]=0.392,X[32,60]=0.435,X[33,60]=0.475,X[34,60]=0.533,X[35,60]=0.447,X[36,60]=0.604,X[37,60]=0.537,X[38,60]=0.545,X[39,60]=0.537,X[40,60]=0.643,X[41,60]=0.686,X[42,60]=0.357,X[43,60]=0.569,X[44,60]=0.333,X[45,60]=0.580,X[46,60]=0.635,X[47,60]=0.416,X[48,60]=0.333,X[49,60]=0.337,X[50,60]=0.314 X[51,60]=0.302,X[52,60]=0.396,X[53,60]=0.318,X[54,60]=0.322,X[55,60]=0.333,X[56,60]=0.357,X[57,60]=0.478,X[58,60]=0.361,X[59,60]=0.341,X[60,60]=0.341,X[61,60]=0.380,X[62,60]=0.439,X[63,60]=0.651,X[64,60]=0.588,X[65,60]=0.682,X[66,60]=0.631,X[67,60]=0.667,X[68,60]=0.635,X[69,60]=0.525,X[70,60]=0.427,X[71,60]=0.529,X[72,60]=0.471,X[73,60]=0.408,X[74,60]=0.420,X[75,60]=0.506,X[76,60]=0.561,X[77,60]=0.608,X[78,60]=0.600,X[79,60]=0.580,X[80,60]=0.600,X[81,60]=0.404,X[82,60]=0.502,X[83,60]=0.475,X[84,60]=0.592,X[85,60]=0.404,X[86,60]=0.631,X[87,60]=0.506,X[88,60]=0.569,X[89,60]=0.506,X[90,60]=0.498,X[91,60]=0.706,X[92,60]=0.322,X[93,60]=0.325,X[94,60]=0.325,X[95,60]=0.592,X[96,60]=0.631,X[97,60]=0.522,X[98,60]=0.392,X[99,60]=0.333,X[100,60]=0.302 X[1,61]=0.561,X[2,61]=0.380,X[3,61]=0.318,X[4,61]=0.400,X[5,61]=0.655,X[6,61]=0.659,X[7,61]=0.576,X[8,61]=0.447,X[9,61]=0.396,X[10,61]=0.416,X[11,61]=0.384,X[12,61]=0.537,X[13,61]=0.663,X[14,61]=0.533,X[15,61]=0.498,X[16,61]=0.522,X[17,61]=0.565,X[18,61]=0.502,X[19,61]=0.455,X[20,61]=0.404,X[21,61]=0.596,X[22,61]=0.463,X[23,61]=0.349,X[24,61]=0.388,X[25,61]=0.400,X[26,61]=0.584,X[27,61]=0.616,X[28,61]=0.518,X[29,61]=0.494,X[30,61]=0.682,X[31,61]=0.404,X[32,61]=0.384,X[33,61]=0.510,X[34,61]=0.671,X[35,61]=0.651,X[36,61]=0.580,X[37,61]=0.553,X[38,61]=0.627,X[39,61]=0.471,X[40,61]=0.545,X[41,61]=0.569,X[42,61]=0.537,X[43,61]=0.310,X[44,61]=0.333,X[45,61]=0.529,X[46,61]=0.651,X[47,61]=0.682,X[48,61]=0.573,X[49,61]=0.569,X[50,61]=0.549 X[51,61]=0.525,X[52,61]=0.380,X[53,61]=0.314,X[54,61]=0.376,X[55,61]=0.635,X[56,61]=0.710,X[57,61]=0.580,X[58,61]=0.463,X[59,61]=0.424,X[60,61]=0.392,X[61,61]=0.404,X[62,61]=0.482,X[63,61]=0.600,X[64,61]=0.510,X[65,61]=0.506,X[66,61]=0.494,X[67,61]=0.600,X[68,61]=0.498,X[69,61]=0.412,X[70,61]=0.412,X[71,61]=0.475,X[72,61]=0.592,X[73,61]=0.373,X[74,61]=0.384,X[75,61]=0.412,X[76,61]=0.408,X[77,61]=0.569,X[78,61]=0.561,X[79,61]=0.529,X[80,61]=0.596,X[81,61]=0.361,X[82,61]=0.392,X[83,61]=0.549,X[84,61]=0.639,X[85,61]=0.604,X[86,61]=0.616,X[87,61]=0.584,X[88,61]=0.647,X[89,61]=0.463,X[90,61]=0.533,X[91,61]=0.569,X[92,61]=0.502,X[93,61]=0.286,X[94,61]=0.325,X[95,61]=0.549,X[96,61]=0.573,X[97,61]=0.612,X[98,61]=0.671,X[99,61]=0.588,X[100,61]=0.525 X[1,62]=0.733,X[2,62]=0.471,X[3,62]=0.349,X[4,62]=0.380,X[5,62]=0.561,X[6,62]=0.553,X[7,62]=0.702,X[8,62]=0.478,X[9,62]=0.400,X[10,62]=0.463,X[11,62]=0.518,X[12,62]=0.447,X[13,62]=0.541,X[14,62]=0.627,X[15,62]=0.624,X[16,62]=0.525,X[17,62]=0.596,X[18,62]=0.647,X[19,62]=0.588,X[20,62]=0.494,X[21,62]=0.443,X[22,62]=0.380,X[23,62]=0.341,X[24,62]=0.388,X[25,62]=0.435,X[26,62]=0.412,X[27,62]=0.459,X[28,62]=0.467,X[29,62]=0.337,X[30,62]=0.514,X[31,62]=0.588,X[32,62]=0.486,X[33,62]=0.553,X[34,62]=0.533,X[35,62]=0.506,X[36,62]=0.537,X[37,62]=0.561,X[38,62]=0.463,X[39,62]=0.541,X[40,62]=0.580,X[41,62]=0.506,X[42,62]=0.545,X[43,62]=0.259,X[44,62]=0.251,X[45,62]=0.443,X[46,62]=0.643,X[47,62]=0.710,X[48,62]=0.612,X[49,62]=0.686,X[50,62]=0.686 X[51,62]=0.733,X[52,62]=0.365,X[53,62]=0.345,X[54,62]=0.373,X[55,62]=0.588,X[56,62]=0.631,X[57,62]=0.651,X[58,62]=0.510,X[59,62]=0.388,X[60,62]=0.455,X[61,62]=0.533,X[62,62]=0.514,X[63,62]=0.478,X[64,62]=0.620,X[65,62]=0.604,X[66,62]=0.600,X[67,62]=0.545,X[68,62]=0.620,X[69,62]=0.604,X[70,62]=0.486,X[71,62]=0.424,X[72,62]=0.486,X[73,62]=0.337,X[74,62]=0.400,X[75,62]=0.482,X[76,62]=0.361,X[77,62]=0.416,X[78,62]=0.482,X[79,62]=0.439,X[80,62]=0.400,X[81,62]=0.580,X[82,62]=0.502,X[83,62]=0.553,X[84,62]=0.471,X[85,62]=0.584,X[86,62]=0.486,X[87,62]=0.545,X[88,62]=0.482,X[89,62]=0.588,X[90,62]=0.624,X[91,62]=0.518,X[92,62]=0.616,X[93,62]=0.467,X[94,62]=0.263,X[95,62]=0.486,X[96,62]=0.522,X[97,62]=0.631,X[98,62]=0.690,X[99,62]=0.671,X[100,62]=0.694 X[1,63]=0.584,X[2,63]=0.329,X[3,63]=0.369,X[4,63]=0.353,X[5,63]=0.584,X[6,63]=0.604,X[7,63]=0.635,X[8,63]=0.643,X[9,63]=0.482,X[10,63]=0.439,X[11,63]=0.396,X[12,63]=0.400,X[13,63]=0.361,X[14,63]=0.404,X[15,63]=0.451,X[16,63]=0.486,X[17,63]=0.596,X[18,63]=0.616,X[19,63]=0.486,X[20,63]=0.573,X[21,63]=0.447,X[22,63]=0.329,X[23,63]=0.314,X[24,63]=0.541,X[25,63]=0.424,X[26,63]=0.498,X[27,63]=0.451,X[28,63]=0.557,X[29,63]=0.647,X[30,63]=0.533,X[31,63]=0.502,X[32,63]=0.431,X[33,63]=0.529,X[34,63]=0.431,X[35,63]=0.518,X[36,63]=0.518,X[37,63]=0.435,X[38,63]=0.604,X[39,63]=0.643,X[40,63]=0.463,X[41,63]=0.384,X[42,63]=0.612,X[43,63]=0.294,X[44,63]=0.263,X[45,63]=0.471,X[46,63]=0.612,X[47,63]=0.596,X[48,63]=0.545,X[49,63]=0.549,X[50,63]=0.647 X[51,63]=0.569,X[52,63]=0.341,X[53,63]=0.361,X[54,63]=0.392,X[55,63]=0.612,X[56,63]=0.675,X[57,63]=0.773,X[58,63]=0.729,X[59,63]=0.596,X[60,63]=0.435,X[61,63]=0.380,X[62,63]=0.318,X[63,63]=0.361,X[64,63]=0.404,X[65,63]=0.392,X[66,63]=0.431,X[67,63]=0.529,X[68,63]=0.647,X[69,63]=0.494,X[70,63]=0.529,X[71,63]=0.569,X[72,63]=0.278,X[73,63]=0.329,X[74,63]=0.537,X[75,63]=0.498,X[76,63]=0.451,X[77,63]=0.451,X[78,63]=0.553,X[79,63]=0.647,X[80,63]=0.506,X[81,63]=0.506,X[82,63]=0.451,X[83,63]=0.518,X[84,63]=0.482,X[85,63]=0.600,X[86,63]=0.522,X[87,63]=0.482,X[88,63]=0.624,X[89,63]=0.580,X[90,63]=0.537,X[91,63]=0.384,X[92,63]=0.639,X[93,63]=0.573,X[94,63]=0.302,X[95,63]=0.498,X[96,63]=0.553,X[97,63]=0.612,X[98,63]=0.592,X[99,63]=0.565,X[100,63]=0.647 X[1,64]=0.439,X[2,64]=0.365,X[3,64]=0.380,X[4,64]=0.349,X[5,64]=0.400,X[6,64]=0.455,X[7,64]=0.612,X[8,64]=0.667,X[9,64]=0.380,X[10,64]=0.345,X[11,64]=0.239,X[12,64]=0.306,X[13,64]=0.322,X[14,64]=0.310,X[15,64]=0.298,X[16,64]=0.243,X[17,64]=0.235,X[18,64]=0.275,X[19,64]=0.306,X[20,64]=0.400,X[21,64]=0.337,X[22,64]=0.396,X[23,64]=0.427,X[24,64]=0.455,X[25,64]=0.329,X[26,64]=0.376,X[27,64]=0.467,X[28,64]=0.400,X[29,64]=0.416,X[30,64]=0.443,X[31,64]=0.451,X[32,64]=0.404,X[33,64]=0.494,X[34,64]=0.384,X[35,64]=0.384,X[36,64]=0.553,X[37,64]=0.506,X[38,64]=0.325,X[39,64]=0.361,X[40,64]=0.298,X[41,64]=0.325,X[42,64]=0.667,X[43,64]=0.325,X[44,64]=0.298,X[45,64]=0.396,X[46,64]=0.435,X[47,64]=0.392,X[48,64]=0.373,X[49,64]=0.471,X[50,64]=0.553 X[51,64]=0.427,X[52,64]=0.373,X[53,64]=0.392,X[54,64]=0.349,X[55,64]=0.400,X[56,64]=0.475,X[57,64]=0.588,X[58,64]=0.631,X[59,64]=0.573,X[60,64]=0.318,X[61,64]=0.239,X[62,64]=0.271,X[63,64]=0.322,X[64,64]=0.314,X[65,64]=0.298,X[66,64]=0.290,X[67,64]=0.216,X[68,64]=0.263,X[69,64]=0.329,X[70,64]=0.392,X[71,64]=0.329,X[72,64]=0.373,X[73,64]=0.427,X[74,64]=0.478,X[75,64]=0.510,X[76,64]=0.404,X[77,64]=0.478,X[78,64]=0.384,X[79,64]=0.490,X[80,64]=0.451,X[81,64]=0.431,X[82,64]=0.412,X[83,64]=0.486,X[84,64]=0.475,X[85,64]=0.341,X[86,64]=0.608,X[87,64]=0.494,X[88,64]=0.412,X[89,64]=0.333,X[90,64]=0.357,X[91,64]=0.337,X[92,64]=0.659,X[93,64]=0.525,X[94,64]=0.322,X[95,64]=0.435,X[96,64]=0.514,X[97,64]=0.416,X[98,64]=0.365,X[99,64]=0.471,X[100,64]=0.573 X[1,65]=0.392,X[2,65]=0.365,X[3,65]=0.431,X[4,65]=0.471,X[5,65]=0.482,X[6,65]=0.427,X[7,65]=0.424,X[8,65]=0.557,X[9,65]=0.529,X[10,65]=0.596,X[11,65]=0.373,X[12,65]=0.396,X[13,65]=0.592,X[14,65]=0.557,X[15,65]=0.502,X[16,65]=0.682,X[17,65]=0.561,X[18,65]=0.620,X[19,65]=0.631,X[20,65]=0.631,X[21,65]=0.529,X[22,65]=0.447,X[23,65]=0.424,X[24,65]=0.447,X[25,65]=0.388,X[26,65]=0.384,X[27,65]=0.463,X[28,65]=0.353,X[29,65]=0.408,X[30,65]=0.388,X[31,65]=0.373,X[32,65]=0.353,X[33,65]=0.361,X[34,65]=0.357,X[35,65]=0.400,X[36,65]=0.459,X[37,65]=0.404,X[38,65]=0.416,X[39,65]=0.404,X[40,65]=0.329,X[41,65]=0.318,X[42,65]=0.365,X[43,65]=0.361,X[44,65]=0.369,X[45,65]=0.329,X[46,65]=0.235,X[47,65]=0.235,X[48,65]=0.231,X[49,65]=0.243,X[50,65]=0.357 X[51,65]=0.392,X[52,65]=0.329,X[53,65]=0.420,X[54,65]=0.498,X[55,65]=0.482,X[56,65]=0.392,X[57,65]=0.537,X[58,65]=0.553,X[59,65]=0.478,X[60,65]=0.537,X[61,65]=0.380,X[62,65]=0.369,X[63,65]=0.518,X[64,65]=0.580,X[65,65]=0.498,X[66,65]=0.537,X[67,65]=0.604,X[68,65]=0.627,X[69,65]=0.624,X[70,65]=0.659,X[71,65]=0.651,X[72,65]=0.478,X[73,65]=0.416,X[74,65]=0.455,X[75,65]=0.549,X[76,65]=0.412,X[77,65]=0.443,X[78,65]=0.361,X[79,65]=0.451,X[80,65]=0.353,X[81,65]=0.353,X[82,65]=0.341,X[83,65]=0.353,X[84,65]=0.396,X[85,65]=0.349,X[86,65]=0.494,X[87,65]=0.392,X[88,65]=0.400,X[89,65]=0.408,X[90,65]=0.357,X[91,65]=0.310,X[92,65]=0.353,X[93,65]=0.318,X[94,65]=0.369,X[95,65]=0.318,X[96,65]=0.290,X[97,65]=0.216,X[98,65]=0.231,X[99,65]=0.247,X[100,65]=0.361 X[1,66]=0.388,X[2,66]=0.396,X[3,66]=0.435,X[4,66]=0.404,X[5,66]=0.471,X[6,66]=0.482,X[7,66]=0.451,X[8,66]=0.365,X[9,66]=0.525,X[10,66]=0.549,X[11,66]=0.345,X[12,66]=0.451,X[13,66]=0.404,X[14,66]=0.545,X[15,66]=0.388,X[16,66]=0.529,X[17,66]=0.502,X[18,66]=0.588,X[19,66]=0.514,X[20,66]=0.533,X[21,66]=0.647,X[22,66]=0.612,X[23,66]=0.376,X[24,66]=0.259,X[25,66]=0.227,X[26,66]=0.255,X[27,66]=0.278,X[28,66]=0.235,X[29,66]=0.247,X[30,66]=0.204,X[31,66]=0.200,X[32,66]=0.227,X[33,66]=0.212,X[34,66]=0.204,X[35,66]=0.224,X[36,66]=0.204,X[37,66]=0.247,X[38,66]=0.235,X[39,66]=0.231,X[40,66]=0.251,X[41,66]=0.263,X[42,66]=0.329,X[43,66]=0.447,X[44,66]=0.357,X[45,66]=0.286,X[46,66]=0.349,X[47,66]=0.384,X[48,66]=0.439,X[49,66]=0.525,X[50,66]=0.443 X[51,66]=0.404,X[52,66]=0.341,X[53,66]=0.420,X[54,66]=0.376,X[55,66]=0.494,X[56,66]=0.494,X[57,66]=0.518,X[58,66]=0.490,X[59,66]=0.533,X[60,66]=0.475,X[61,66]=0.349,X[62,66]=0.392,X[63,66]=0.443,X[64,66]=0.596,X[65,66]=0.380,X[66,66]=0.400,X[67,66]=0.502,X[68,66]=0.580,X[69,66]=0.522,X[70,66]=0.541,X[71,66]=0.651,X[72,66]=0.678,X[73,66]=0.384,X[74,66]=0.251,X[75,66]=0.220,X[76,66]=0.243,X[77,66]=0.263,X[78,66]=0.231,X[79,66]=0.231,X[80,66]=0.235,X[81,66]=0.196,X[82,66]=0.227,X[83,66]=0.204,X[84,66]=0.200,X[85,66]=0.216,X[86,66]=0.208,X[87,66]=0.255,X[88,66]=0.231,X[89,66]=0.220,X[90,66]=0.282,X[91,66]=0.259,X[92,66]=0.337,X[93,66]=0.396,X[94,66]=0.349,X[95,66]=0.294,X[96,66]=0.314,X[97,66]=0.388,X[98,66]=0.412,X[99,66]=0.549,X[100,66]=0.427 X[1,67]=0.569,X[2,67]=0.357,X[3,67]=0.400,X[4,67]=0.616,X[5,67]=0.463,X[6,67]=0.588,X[7,67]=0.420,X[8,67]=0.380,X[9,67]=0.416,X[10,67]=0.475,X[11,67]=0.353,X[12,67]=0.325,X[13,67]=0.482,X[14,67]=0.494,X[15,67]=0.514,X[16,67]=0.502,X[17,67]=0.545,X[18,67]=0.420,X[19,67]=0.549,X[20,67]=0.592,X[21,67]=0.522,X[22,67]=0.514,X[23,67]=0.576,X[24,67]=0.600,X[25,67]=0.596,X[26,67]=0.373,X[27,67]=0.420,X[28,67]=0.451,X[29,67]=0.518,X[30,67]=0.584,X[31,67]=0.616,X[32,67]=0.545,X[33,67]=0.557,X[34,67]=0.557,X[35,67]=0.643,X[36,67]=0.671,X[37,67]=0.631,X[38,67]=0.443,X[39,67]=0.522,X[40,67]=0.431,X[41,67]=0.447,X[42,67]=0.404,X[43,67]=0.404,X[44,67]=0.537,X[45,67]=0.675,X[46,67]=0.455,X[47,67]=0.541,X[48,67]=0.616,X[49,67]=0.576,X[50,67]=0.659 X[51,67]=0.431,X[52,67]=0.388,X[53,67]=0.420,X[54,67]=0.573,X[55,67]=0.478,X[56,67]=0.506,X[57,67]=0.471,X[58,67]=0.357,X[59,67]=0.471,X[60,67]=0.459,X[61,67]=0.349,X[62,67]=0.314,X[63,67]=0.467,X[64,67]=0.529,X[65,67]=0.553,X[66,67]=0.506,X[67,67]=0.424,X[68,67]=0.451,X[69,67]=0.518,X[70,67]=0.612,X[71,67]=0.600,X[72,67]=0.533,X[73,67]=0.565,X[74,67]=0.604,X[75,67]=0.620,X[76,67]=0.537,X[77,67]=0.416,X[78,67]=0.459,X[79,67]=0.478,X[80,67]=0.608,X[81,67]=0.612,X[82,67]=0.510,X[83,67]=0.557,X[84,67]=0.522,X[85,67]=0.565,X[86,67]=0.616,X[87,67]=0.604,X[88,67]=0.447,X[89,67]=0.533,X[90,67]=0.471,X[91,67]=0.459,X[92,67]=0.416,X[93,67]=0.439,X[94,67]=0.537,X[95,67]=0.698,X[96,67]=0.639,X[97,67]=0.514,X[98,67]=0.651,X[99,67]=0.616,X[100,67]=0.639 X[1,68]=0.427,X[2,68]=0.384,X[3,68]=0.349,X[4,68]=0.384,X[5,68]=0.451,X[6,68]=0.549,X[7,68]=0.459,X[8,68]=0.584,X[9,68]=0.502,X[10,68]=0.353,X[11,68]=0.361,X[12,68]=0.427,X[13,68]=0.494,X[14,68]=0.557,X[15,68]=0.529,X[16,68]=0.506,X[17,68]=0.404,X[18,68]=0.455,X[19,68]=0.396,X[20,68]=0.349,X[21,68]=0.416,X[22,68]=0.384,X[23,68]=0.475,X[24,68]=0.525,X[25,68]=0.529,X[26,68]=0.424,X[27,68]=0.486,X[28,68]=0.333,X[29,68]=0.404,X[30,68]=0.376,X[31,68]=0.451,X[32,68]=0.533,X[33,68]=0.627,X[34,68]=0.663,X[35,68]=0.518,X[36,68]=0.561,X[37,68]=0.443,X[38,68]=0.522,X[39,68]=0.533,X[40,68]=0.624,X[41,68]=0.706,X[42,68]=0.463,X[43,68]=0.373,X[44,68]=0.502,X[45,68]=0.525,X[46,68]=0.494,X[47,68]=0.420,X[48,68]=0.459,X[49,68]=0.459,X[50,68]=0.412 X[51,68]=0.404,X[52,68]=0.416,X[53,68]=0.369,X[54,68]=0.373,X[55,68]=0.471,X[56,68]=0.455,X[57,68]=0.541,X[58,68]=0.463,X[59,68]=0.635,X[60,68]=0.337,X[61,68]=0.373,X[62,68]=0.333,X[63,68]=0.447,X[64,68]=0.529,X[65,68]=0.510,X[66,68]=0.549,X[67,68]=0.518,X[68,68]=0.420,X[69,68]=0.404,X[70,68]=0.322,X[71,68]=0.365,X[72,68]=0.365,X[73,68]=0.486,X[74,68]=0.529,X[75,68]=0.616,X[76,68]=0.624,X[77,68]=0.467,X[78,68]=0.353,X[79,68]=0.427,X[80,68]=0.467,X[81,68]=0.427,X[82,68]=0.549,X[83,68]=0.655,X[84,68]=0.569,X[85,68]=0.616,X[86,68]=0.576,X[87,68]=0.451,X[88,68]=0.475,X[89,68]=0.561,X[90,68]=0.616,X[91,68]=0.714,X[92,68]=0.482,X[93,68]=0.435,X[94,68]=0.498,X[95,68]=0.576,X[96,68]=0.682,X[97,68]=0.459,X[98,68]=0.412,X[99,68]=0.396,X[100,68]=0.424 X[1,69]=0.373,X[2,69]=0.357,X[3,69]=0.416,X[4,69]=0.518,X[5,69]=0.404,X[6,69]=0.329,X[7,69]=0.553,X[8,69]=0.561,X[9,69]=0.482,X[10,69]=0.333,X[11,69]=0.333,X[12,69]=0.384,X[13,69]=0.380,X[14,69]=0.435,X[15,69]=0.467,X[16,69]=0.463,X[17,69]=0.490,X[18,69]=0.604,X[19,69]=0.529,X[20,69]=0.565,X[21,69]=0.502,X[22,69]=0.365,X[23,69]=0.451,X[24,69]=0.314,X[25,69]=0.537,X[26,69]=0.396,X[27,69]=0.361,X[28,69]=0.361,X[29,69]=0.337,X[30,69]=0.427,X[31,69]=0.529,X[32,69]=0.682,X[33,69]=0.545,X[34,69]=0.635,X[35,69]=0.471,X[36,69]=0.420,X[37,69]=0.384,X[38,69]=0.435,X[39,69]=0.369,X[40,69]=0.443,X[41,69]=0.545,X[42,69]=0.506,X[43,69]=0.388,X[44,69]=0.459,X[45,69]=0.431,X[46,69]=0.275,X[47,69]=0.263,X[48,69]=0.310,X[49,69]=0.310,X[50,69]=0.337 X[51,69]=0.384,X[52,69]=0.373,X[53,69]=0.392,X[54,69]=0.482,X[55,69]=0.435,X[56,69]=0.373,X[57,69]=0.514,X[58,69]=0.416,X[59,69]=0.412,X[60,69]=0.333,X[61,69]=0.322,X[62,69]=0.349,X[63,69]=0.376,X[64,69]=0.416,X[65,69]=0.459,X[66,69]=0.529,X[67,69]=0.557,X[68,69]=0.569,X[69,69]=0.502,X[70,69]=0.573,X[71,69]=0.659,X[72,69]=0.380,X[73,69]=0.467,X[74,69]=0.329,X[75,69]=0.639,X[76,69]=0.314,X[77,69]=0.400,X[78,69]=0.337,X[79,69]=0.329,X[80,69]=0.384,X[81,69]=0.557,X[82,69]=0.694,X[83,69]=0.510,X[84,69]=0.518,X[85,69]=0.624,X[86,69]=0.420,X[87,69]=0.361,X[88,69]=0.380,X[89,69]=0.498,X[90,69]=0.376,X[91,69]=0.565,X[92,69]=0.510,X[93,69]=0.439,X[94,69]=0.459,X[95,69]=0.424,X[96,69]=0.373,X[97,69]=0.255,X[98,69]=0.298,X[99,69]=0.306,X[100,69]=0.341 X[1,70]=0.278,X[2,70]=0.353,X[3,70]=0.325,X[4,70]=0.318,X[5,70]=0.318,X[6,70]=0.302,X[7,70]=0.294,X[8,70]=0.310,X[9,70]=0.404,X[10,70]=0.306,X[11,70]=0.361,X[12,70]=0.365,X[13,70]=0.435,X[14,70]=0.459,X[15,70]=0.541,X[16,70]=0.537,X[17,70]=0.643,X[18,70]=0.467,X[19,70]=0.400,X[20,70]=0.475,X[21,70]=0.376,X[22,70]=0.525,X[23,70]=0.353,X[24,70]=0.533,X[25,70]=0.337,X[26,70]=0.361,X[27,70]=0.608,X[28,70]=0.576,X[29,70]=0.510,X[30,70]=0.573,X[31,70]=0.380,X[32,70]=0.725,X[33,70]=0.702,X[34,70]=0.427,X[35,70]=0.404,X[36,70]=0.514,X[37,70]=0.341,X[38,70]=0.424,X[39,70]=0.580,X[40,70]=0.678,X[41,70]=0.757,X[42,70]=0.416,X[43,70]=0.400,X[44,70]=0.471,X[45,70]=0.667,X[46,70]=0.663,X[47,70]=0.639,X[48,70]=0.718,X[49,70]=0.651,X[50,70]=0.282 X[51,70]=0.294,X[52,70]=0.353,X[53,70]=0.341,X[54,70]=0.329,X[55,70]=0.318,X[56,70]=0.298,X[57,70]=0.416,X[58,70]=0.310,X[59,70]=0.427,X[60,70]=0.302,X[61,70]=0.380,X[62,70]=0.388,X[63,70]=0.427,X[64,70]=0.463,X[65,70]=0.541,X[66,70]=0.620,X[67,70]=0.639,X[68,70]=0.471,X[69,70]=0.412,X[70,70]=0.427,X[71,70]=0.424,X[72,70]=0.494,X[73,70]=0.380,X[74,70]=0.545,X[75,70]=0.522,X[76,70]=0.337,X[77,70]=0.612,X[78,70]=0.592,X[79,70]=0.518,X[80,70]=0.522,X[81,70]=0.380,X[82,70]=0.725,X[83,70]=0.714,X[84,70]=0.600,X[85,70]=0.451,X[86,70]=0.443,X[87,70]=0.329,X[88,70]=0.416,X[89,70]=0.565,X[90,70]=0.569,X[91,70]=0.725,X[92,70]=0.420,X[93,70]=0.408,X[94,70]=0.490,X[95,70]=0.675,X[96,70]=0.678,X[97,70]=0.686,X[98,70]=0.729,X[99,70]=0.608,X[100,70]=0.282 X[1,71]=0.467,X[2,71]=0.302,X[3,71]=0.314,X[4,71]=0.341,X[5,71]=0.353,X[6,71]=0.361,X[7,71]=0.353,X[8,71]=0.396,X[9,71]=0.745,X[10,71]=0.627,X[11,71]=0.376,X[12,71]=0.420,X[13,71]=0.392,X[14,71]=0.369,X[15,71]=0.600,X[16,71]=0.549,X[17,71]=0.608,X[18,71]=0.541,X[19,71]=0.475,X[20,71]=0.545,X[21,71]=0.467,X[22,71]=0.420,X[23,71]=0.541,X[24,71]=0.439,X[25,71]=0.318,X[26,71]=0.271,X[27,71]=0.400,X[28,71]=0.459,X[29,71]=0.376,X[30,71]=0.439,X[31,71]=0.514,X[32,71]=0.580,X[33,71]=0.463,X[34,71]=0.357,X[35,71]=0.576,X[36,71]=0.608,X[37,71]=0.365,X[38,71]=0.455,X[39,71]=0.624,X[40,71]=0.639,X[41,71]=0.741,X[42,71]=0.604,X[43,71]=0.659,X[44,71]=0.604,X[45,71]=0.604,X[46,71]=0.600,X[47,71]=0.592,X[48,71]=0.737,X[49,71]=0.725,X[50,71]=0.573 X[51,71]=0.341,X[52,71]=0.325,X[53,71]=0.310,X[54,71]=0.341,X[55,71]=0.357,X[56,71]=0.376,X[57,71]=0.463,X[58,71]=0.353,X[59,71]=0.667,X[60,71]=0.600,X[61,71]=0.365,X[62,71]=0.408,X[63,71]=0.424,X[64,71]=0.365,X[65,71]=0.612,X[66,71]=0.553,X[67,71]=0.675,X[68,71]=0.600,X[69,71]=0.525,X[70,71]=0.541,X[71,71]=0.576,X[72,71]=0.537,X[73,71]=0.545,X[74,71]=0.439,X[75,71]=0.408,X[76,71]=0.294,X[77,71]=0.420,X[78,71]=0.478,X[79,71]=0.365,X[80,71]=0.490,X[81,71]=0.490,X[82,71]=0.502,X[83,71]=0.478,X[84,71]=0.533,X[85,71]=0.557,X[86,71]=0.651,X[87,71]=0.373,X[88,71]=0.361,X[89,71]=0.596,X[90,71]=0.588,X[91,71]=0.698,X[92,71]=0.604,X[93,71]=0.561,X[94,71]=0.600,X[95,71]=0.682,X[96,71]=0.608,X[97,71]=0.553,X[98,71]=0.694,X[99,71]=0.741,X[100,71]=0.569 X[1,72]=0.667,X[2,72]=0.675,X[3,72]=0.490,X[4,72]=0.392,X[5,72]=0.275,X[6,72]=0.267,X[7,72]=0.416,X[8,72]=0.682,X[9,72]=0.529,X[10,72]=0.604,X[11,72]=0.576,X[12,72]=0.408,X[13,72]=0.412,X[14,72]=0.424,X[15,72]=0.506,X[16,72]=0.494,X[17,72]=0.580,X[18,72]=0.576,X[19,72]=0.612,X[20,72]=0.557,X[21,72]=0.682,X[22,72]=0.494,X[23,72]=0.537,X[24,72]=0.400,X[25,72]=0.353,X[26,72]=0.380,X[27,72]=0.463,X[28,72]=0.353,X[29,72]=0.424,X[30,72]=0.592,X[31,72]=0.635,X[32,72]=0.655,X[33,72]=0.561,X[34,72]=0.608,X[35,72]=0.608,X[36,72]=0.663,X[37,72]=0.608,X[38,72]=0.259,X[39,72]=0.302,X[40,72]=0.671,X[41,72]=0.569,X[42,72]=0.463,X[43,72]=0.522,X[44,72]=0.463,X[45,72]=0.682,X[46,72]=0.580,X[47,72]=0.580,X[48,72]=0.467,X[49,72]=0.576,X[50,72]=0.616 X[51,72]=0.729,X[52,72]=0.694,X[53,72]=0.518,X[54,72]=0.392,X[55,72]=0.302,X[56,72]=0.404,X[57,72]=0.580,X[58,72]=0.553,X[59,72]=0.725,X[60,72]=0.643,X[61,72]=0.655,X[62,72]=0.510,X[63,72]=0.412,X[64,72]=0.439,X[65,72]=0.541,X[66,72]=0.592,X[67,72]=0.600,X[68,72]=0.584,X[69,72]=0.627,X[70,72]=0.596,X[71,72]=0.671,X[72,72]=0.588,X[73,72]=0.561,X[74,72]=0.388,X[75,72]=0.373,X[76,72]=0.353,X[77,72]=0.459,X[78,72]=0.369,X[79,72]=0.490,X[80,72]=0.514,X[81,72]=0.624,X[82,72]=0.612,X[83,72]=0.612,X[84,72]=0.549,X[85,72]=0.584,X[86,72]=0.694,X[87,72]=0.624,X[88,72]=0.424,X[89,72]=0.267,X[90,72]=0.475,X[91,72]=0.549,X[92,72]=0.451,X[93,72]=0.384,X[94,72]=0.514,X[95,72]=0.671,X[96,72]=0.643,X[97,72]=0.549,X[98,72]=0.408,X[99,72]=0.612,X[100,72]=0.608 X[1,73]=0.514,X[2,73]=0.478,X[3,73]=0.424,X[4,73]=0.227,X[5,73]=0.459,X[6,73]=0.420,X[7,73]=0.647,X[8,73]=0.541,X[9,73]=0.729,X[10,73]=0.553,X[11,73]=0.443,X[12,73]=0.341,X[13,73]=0.412,X[14,73]=0.455,X[15,73]=0.573,X[16,73]=0.439,X[17,73]=0.514,X[18,73]=0.439,X[19,73]=0.388,X[20,73]=0.533,X[21,73]=0.604,X[22,73]=0.604,X[23,73]=0.639,X[24,73]=0.404,X[25,73]=0.431,X[26,73]=0.380,X[27,73]=0.322,X[28,73]=0.290,X[29,73]=0.341,X[30,73]=0.447,X[31,73]=0.412,X[32,73]=0.286,X[33,73]=0.310,X[34,73]=0.502,X[35,73]=0.455,X[36,73]=0.494,X[37,73]=0.490,X[38,73]=0.439,X[39,73]=0.467,X[40,73]=0.494,X[41,73]=0.443,X[42,73]=0.380,X[43,73]=0.592,X[44,73]=0.545,X[45,73]=0.314,X[46,73]=0.447,X[47,73]=0.380,X[48,73]=0.455,X[49,73]=0.420,X[50,73]=0.388 X[51,73]=0.557,X[52,73]=0.506,X[53,73]=0.424,X[54,73]=0.235,X[55,73]=0.435,X[56,73]=0.592,X[57,73]=0.573,X[58,73]=0.584,X[59,73]=0.686,X[60,73]=0.573,X[61,73]=0.396,X[62,73]=0.357,X[63,73]=0.380,X[64,73]=0.427,X[65,73]=0.545,X[66,73]=0.600,X[67,73]=0.447,X[68,73]=0.427,X[69,73]=0.392,X[70,73]=0.549,X[71,73]=0.631,X[72,73]=0.584,X[73,73]=0.675,X[74,73]=0.412,X[75,73]=0.482,X[76,73]=0.376,X[77,73]=0.325,X[78,73]=0.282,X[79,73]=0.247,X[80,73]=0.439,X[81,73]=0.384,X[82,73]=0.294,X[83,73]=0.325,X[84,73]=0.408,X[85,73]=0.471,X[86,73]=0.467,X[87,73]=0.463,X[88,73]=0.506,X[89,73]=0.506,X[90,73]=0.682,X[91,73]=0.435,X[92,73]=0.408,X[93,73]=0.529,X[94,73]=0.467,X[95,73]=0.369,X[96,73]=0.365,X[97,73]=0.475,X[98,73]=0.388,X[99,73]=0.471,X[100,73]=0.396 X[1,74]=0.490,X[2,74]=0.588,X[3,74]=0.514,X[4,74]=0.251,X[5,74]=0.282,X[6,74]=0.365,X[7,74]=0.553,X[8,74]=0.553,X[9,74]=0.565,X[10,74]=0.329,X[11,74]=0.376,X[12,74]=0.278,X[13,74]=0.361,X[14,74]=0.431,X[15,74]=0.447,X[16,74]=0.361,X[17,74]=0.345,X[18,74]=0.424,X[19,74]=0.580,X[20,74]=0.518,X[21,74]=0.475,X[22,74]=0.686,X[23,74]=0.710,X[24,74]=0.435,X[25,74]=0.584,X[26,74]=0.573,X[27,74]=0.675,X[28,74]=0.522,X[29,74]=0.243,X[30,74]=0.278,X[31,74]=0.302,X[32,74]=0.400,X[33,74]=0.427,X[34,74]=0.298,X[35,74]=0.557,X[36,74]=0.482,X[37,74]=0.416,X[38,74]=0.357,X[39,74]=0.404,X[40,74]=0.384,X[41,74]=0.439,X[42,74]=0.475,X[43,74]=0.482,X[44,74]=0.486,X[45,74]=0.510,X[46,74]=0.322,X[47,74]=0.337,X[48,74]=0.455,X[49,74]=0.404,X[50,74]=0.373 X[51,74]=0.616,X[52,74]=0.447,X[53,74]=0.447,X[54,74]=0.267,X[55,74]=0.282,X[56,74]=0.435,X[57,74]=0.702,X[58,74]=0.635,X[59,74]=0.753,X[60,74]=0.333,X[61,74]=0.373,X[62,74]=0.341,X[63,74]=0.298,X[64,74]=0.435,X[65,74]=0.412,X[66,74]=0.353,X[67,74]=0.447,X[68,74]=0.427,X[69,74]=0.553,X[70,74]=0.541,X[71,74]=0.514,X[72,74]=0.596,X[73,74]=0.718,X[74,74]=0.435,X[75,74]=0.514,X[76,74]=0.698,X[77,74]=0.671,X[78,74]=0.494,X[79,74]=0.298,X[80,74]=0.259,X[81,74]=0.322,X[82,74]=0.404,X[83,74]=0.400,X[84,74]=0.329,X[85,74]=0.463,X[86,74]=0.478,X[87,74]=0.427,X[88,74]=0.314,X[89,74]=0.424,X[90,74]=0.388,X[91,74]=0.459,X[92,74]=0.451,X[93,74]=0.408,X[94,74]=0.467,X[95,74]=0.482,X[96,74]=0.459,X[97,74]=0.333,X[98,74]=0.439,X[99,74]=0.467,X[100,74]=0.420 X[1,75]=0.482,X[2,75]=0.659,X[3,75]=0.420,X[4,75]=0.325,X[5,75]=0.275,X[6,75]=0.255,X[7,75]=0.404,X[8,75]=0.510,X[9,75]=0.353,X[10,75]=0.427,X[11,75]=0.714,X[12,75]=0.329,X[13,75]=0.349,X[14,75]=0.420,X[15,75]=0.502,X[16,75]=0.420,X[17,75]=0.471,X[18,75]=0.478,X[19,75]=0.537,X[20,75]=0.439,X[21,75]=0.357,X[22,75]=0.439,X[23,75]=0.745,X[24,75]=0.467,X[25,75]=0.600,X[26,75]=0.451,X[27,75]=0.435,X[28,75]=0.671,X[29,75]=0.486,X[30,75]=0.286,X[31,75]=0.349,X[32,75]=0.400,X[33,75]=0.471,X[34,75]=0.353,X[35,75]=0.557,X[36,75]=0.518,X[37,75]=0.455,X[38,75]=0.529,X[39,75]=0.569,X[40,75]=0.416,X[41,75]=0.306,X[42,75]=0.349,X[43,75]=0.314,X[44,75]=0.325,X[45,75]=0.353,X[46,75]=0.439,X[47,75]=0.455,X[48,75]=0.384,X[49,75]=0.439,X[50,75]=0.455 X[51,75]=0.553,X[52,75]=0.541,X[53,75]=0.486,X[54,75]=0.396,X[55,75]=0.294,X[56,75]=0.247,X[57,75]=0.588,X[58,75]=0.584,X[59,75]=0.451,X[60,75]=0.443,X[61,75]=0.706,X[62,75]=0.510,X[63,75]=0.286,X[64,75]=0.388,X[65,75]=0.494,X[66,75]=0.369,X[67,75]=0.463,X[68,75]=0.455,X[69,75]=0.588,X[70,75]=0.431,X[71,75]=0.435,X[72,75]=0.424,X[73,75]=0.718,X[74,75]=0.471,X[75,75]=0.596,X[76,75]=0.545,X[77,75]=0.439,X[78,75]=0.694,X[79,75]=0.655,X[80,75]=0.302,X[81,75]=0.357,X[82,75]=0.404,X[83,75]=0.447,X[84,75]=0.404,X[85,75]=0.475,X[86,75]=0.482,X[87,75]=0.447,X[88,75]=0.400,X[89,75]=0.549,X[90,75]=0.388,X[91,75]=0.286,X[92,75]=0.353,X[93,75]=0.376,X[94,75]=0.341,X[95,75]=0.314,X[96,75]=0.353,X[97,75]=0.322,X[98,75]=0.329,X[99,75]=0.459,X[100,75]=0.518 X[1,76]=0.353,X[2,76]=0.427,X[3,76]=0.471,X[4,76]=0.502,X[5,76]=0.361,X[6,76]=0.361,X[7,76]=0.322,X[8,76]=0.533,X[9,76]=0.561,X[10,76]=0.682,X[11,76]=0.600,X[12,76]=0.502,X[13,76]=0.298,X[14,76]=0.322,X[15,76]=0.467,X[16,76]=0.537,X[17,76]=0.510,X[18,76]=0.325,X[19,76]=0.373,X[20,76]=0.482,X[21,76]=0.557,X[22,76]=0.651,X[23,76]=0.463,X[24,76]=0.494,X[25,76]=0.494,X[26,76]=0.373,X[27,76]=0.361,X[28,76]=0.471,X[29,76]=0.635,X[30,76]=0.635,X[31,76]=0.325,X[32,76]=0.455,X[33,76]=0.557,X[34,76]=0.533,X[35,76]=0.553,X[36,76]=0.608,X[37,76]=0.514,X[38,76]=0.424,X[39,76]=0.353,X[40,76]=0.490,X[41,76]=0.220,X[42,76]=0.294,X[43,76]=0.314,X[44,76]=0.271,X[45,76]=0.435,X[46,76]=0.522,X[47,76]=0.408,X[48,76]=0.349,X[49,76]=0.502,X[50,76]=0.404 X[51,76]=0.306,X[52,76]=0.545,X[53,76]=0.514,X[54,76]=0.537,X[55,76]=0.361,X[56,76]=0.353,X[57,76]=0.514,X[58,76]=0.459,X[59,76]=0.494,X[60,76]=0.667,X[61,76]=0.612,X[62,76]=0.655,X[63,76]=0.341,X[64,76]=0.333,X[65,76]=0.427,X[66,76]=0.467,X[67,76]=0.573,X[68,76]=0.325,X[69,76]=0.427,X[70,76]=0.463,X[71,76]=0.463,X[72,76]=0.690,X[73,76]=0.459,X[74,76]=0.502,X[75,76]=0.557,X[76,76]=0.420,X[77,76]=0.420,X[78,76]=0.502,X[79,76]=0.486,X[80,76]=0.729,X[81,76]=0.298,X[82,76]=0.475,X[83,76]=0.569,X[84,76]=0.529,X[85,76]=0.486,X[86,76]=0.553,X[87,76]=0.506,X[88,76]=0.478,X[89,76]=0.416,X[90,76]=0.416,X[91,76]=0.184,X[92,76]=0.298,X[93,76]=0.322,X[94,76]=0.318,X[95,76]=0.396,X[96,76]=0.380,X[97,76]=0.482,X[98,76]=0.439,X[99,76]=0.522,X[100,76]=0.353 X[1,77]=0.263,X[2,77]=0.129,X[3,77]=0.596,X[4,77]=0.722,X[5,77]=0.557,X[6,77]=0.541,X[7,77]=0.588,X[8,77]=0.514,X[9,77]=0.608,X[10,77]=0.624,X[11,77]=0.608,X[12,77]=0.620,X[13,77]=0.333,X[14,77]=0.325,X[15,77]=0.302,X[16,77]=0.333,X[17,77]=0.341,X[18,77]=0.322,X[19,77]=0.333,X[20,77]=0.227,X[21,77]=0.522,X[22,77]=0.718,X[23,77]=0.584,X[24,77]=0.580,X[25,77]=0.588,X[26,77]=0.424,X[27,77]=0.439,X[28,77]=0.584,X[29,77]=0.541,X[30,77]=0.467,X[31,77]=0.557,X[32,77]=0.271,X[33,77]=0.392,X[34,77]=0.525,X[35,77]=0.349,X[36,77]=0.345,X[37,77]=0.600,X[38,77]=0.412,X[39,77]=0.349,X[40,77]=0.502,X[41,77]=0.463,X[42,77]=0.424,X[43,77]=0.341,X[44,77]=0.278,X[45,77]=0.388,X[46,77]=0.251,X[47,77]=0.322,X[48,77]=0.224,X[49,77]=0.329,X[50,77]=0.263 X[51,77]=0.200,X[52,77]=0.282,X[53,77]=0.553,X[54,77]=0.718,X[55,77]=0.506,X[56,77]=0.494,X[57,77]=0.627,X[58,77]=0.514,X[59,77]=0.647,X[60,77]=0.561,X[61,77]=0.588,X[62,77]=0.565,X[63,77]=0.451,X[64,77]=0.314,X[65,77]=0.341,X[66,77]=0.400,X[67,77]=0.306,X[68,77]=0.322,X[69,77]=0.322,X[70,77]=0.259,X[71,77]=0.302,X[72,77]=0.702,X[73,77]=0.584,X[74,77]=0.569,X[75,77]=0.451,X[76,77]=0.463,X[77,77]=0.467,X[78,77]=0.612,X[79,77]=0.537,X[80,77]=0.651,X[81,77]=0.541,X[82,77]=0.275,X[83,77]=0.396,X[84,77]=0.471,X[85,77]=0.431,X[86,77]=0.337,X[87,77]=0.624,X[88,77]=0.616,X[89,77]=0.341,X[90,77]=0.424,X[91,77]=0.408,X[92,77]=0.439,X[93,77]=0.294,X[94,77]=0.294,X[95,77]=0.412,X[96,77]=0.384,X[97,77]=0.267,X[98,77]=0.247,X[99,77]=0.341,X[100,77]=0.271 X[1,78]=0.353,X[2,78]=0.173,X[3,78]=0.455,X[4,78]=0.596,X[5,78]=0.537,X[6,78]=0.471,X[7,78]=0.376,X[8,78]=0.486,X[9,78]=0.549,X[10,78]=0.494,X[11,78]=0.608,X[12,78]=0.525,X[13,78]=0.459,X[14,78]=0.306,X[15,78]=0.416,X[16,78]=0.400,X[17,78]=0.537,X[18,78]=0.537,X[19,78]=0.584,X[20,78]=0.486,X[21,78]=0.596,X[22,78]=0.663,X[23,78]=0.471,X[24,78]=0.424,X[25,78]=0.302,X[26,78]=0.522,X[27,78]=0.412,X[28,78]=0.561,X[29,78]=0.565,X[30,78]=0.518,X[31,78]=0.537,X[32,78]=0.400,X[33,78]=0.282,X[34,78]=0.427,X[35,78]=0.475,X[36,78]=0.380,X[37,78]=0.494,X[38,78]=0.396,X[39,78]=0.322,X[40,78]=0.384,X[41,78]=0.345,X[42,78]=0.349,X[43,78]=0.310,X[44,78]=0.306,X[45,78]=0.365,X[46,78]=0.231,X[47,78]=0.216,X[48,78]=0.282,X[49,78]=0.298,X[50,78]=0.337 X[51,78]=0.310,X[52,78]=0.286,X[53,78]=0.427,X[54,78]=0.541,X[55,78]=0.549,X[56,78]=0.408,X[57,78]=0.357,X[58,78]=0.388,X[59,78]=0.424,X[60,78]=0.510,X[61,78]=0.592,X[62,78]=0.639,X[63,78]=0.675,X[64,78]=0.325,X[65,78]=0.420,X[66,78]=0.439,X[67,78]=0.447,X[68,78]=0.541,X[69,78]=0.588,X[70,78]=0.486,X[71,78]=0.463,X[72,78]=0.714,X[73,78]=0.471,X[74,78]=0.424,X[75,78]=0.337,X[76,78]=0.608,X[77,78]=0.416,X[78,78]=0.486,X[79,78]=0.518,X[80,78]=0.573,X[81,78]=0.565,X[82,78]=0.341,X[83,78]=0.282,X[84,78]=0.329,X[85,78]=0.541,X[86,78]=0.349,X[87,78]=0.482,X[88,78]=0.451,X[89,78]=0.392,X[90,78]=0.267,X[91,78]=0.349,X[92,78]=0.361,X[93,78]=0.341,X[94,78]=0.349,X[95,78]=0.349,X[96,78]=0.278,X[97,78]=0.192,X[98,78]=0.275,X[99,78]=0.298,X[100,78]=0.333 X[1,79]=0.365,X[2,79]=0.216,X[3,79]=0.325,X[4,79]=0.557,X[5,79]=0.404,X[6,79]=0.541,X[7,79]=0.451,X[8,79]=0.459,X[9,79]=0.537,X[10,79]=0.431,X[11,79]=0.576,X[12,79]=0.600,X[13,79]=0.525,X[14,79]=0.322,X[15,79]=0.325,X[16,79]=0.345,X[17,79]=0.329,X[18,79]=0.259,X[19,79]=0.329,X[20,79]=0.467,X[21,79]=0.490,X[22,79]=0.667,X[23,79]=0.725,X[24,79]=0.443,X[25,79]=0.341,X[26,79]=0.451,X[27,79]=0.424,X[28,79]=0.475,X[29,79]=0.482,X[30,79]=0.718,X[31,79]=0.600,X[32,79]=0.424,X[33,79]=0.322,X[34,79]=0.314,X[35,79]=0.349,X[36,79]=0.255,X[37,79]=0.467,X[38,79]=0.408,X[39,79]=0.396,X[40,79]=0.322,X[41,79]=0.322,X[42,79]=0.267,X[43,79]=0.267,X[44,79]=0.275,X[45,79]=0.267,X[46,79]=0.278,X[47,79]=0.302,X[48,79]=0.396,X[49,79]=0.396,X[50,79]=0.380 X[51,79]=0.325,X[52,79]=0.208,X[53,79]=0.310,X[54,79]=0.537,X[55,79]=0.404,X[56,79]=0.502,X[57,79]=0.592,X[58,79]=0.420,X[59,79]=0.608,X[60,79]=0.514,X[61,79]=0.478,X[62,79]=0.576,X[63,79]=0.639,X[64,79]=0.286,X[65,79]=0.314,X[66,79]=0.349,X[67,79]=0.286,X[68,79]=0.239,X[69,79]=0.329,X[70,79]=0.475,X[71,79]=0.522,X[72,79]=0.651,X[73,79]=0.698,X[74,79]=0.478,X[75,79]=0.431,X[76,79]=0.412,X[77,79]=0.443,X[78,79]=0.482,X[79,79]=0.514,X[80,79]=0.651,X[81,79]=0.584,X[82,79]=0.380,X[83,79]=0.314,X[84,79]=0.310,X[85,79]=0.239,X[86,79]=0.239,X[87,79]=0.463,X[88,79]=0.373,X[89,79]=0.412,X[90,79]=0.337,X[91,79]=0.329,X[92,79]=0.263,X[93,79]=0.247,X[94,79]=0.271,X[95,79]=0.267,X[96,79]=0.275,X[97,79]=0.306,X[98,79]=0.333,X[99,79]=0.400,X[100,79]=0.376 X[1,80]=0.408,X[2,80]=0.353,X[3,80]=0.388,X[4,80]=0.549,X[5,80]=0.490,X[6,80]=0.349,X[7,80]=0.592,X[8,80]=0.451,X[9,80]=0.443,X[10,80]=0.471,X[11,80]=0.475,X[12,80]=0.549,X[13,80]=0.651,X[14,80]=0.533,X[15,80]=0.271,X[16,80]=0.349,X[17,80]=0.376,X[18,80]=0.431,X[19,80]=0.447,X[20,80]=0.600,X[21,80]=0.620,X[22,80]=0.710,X[23,80]=0.565,X[24,80]=0.643,X[25,80]=0.573,X[26,80]=0.384,X[27,80]=0.443,X[28,80]=0.322,X[29,80]=0.392,X[30,80]=0.384,X[31,80]=0.565,X[32,80]=0.467,X[33,80]=0.357,X[34,80]=0.435,X[35,80]=0.427,X[36,80]=0.463,X[37,80]=0.600,X[38,80]=0.690,X[39,80]=0.718,X[40,80]=0.714,X[41,80]=0.718,X[42,80]=0.702,X[43,80]=0.718,X[44,80]=0.494,X[45,80]=0.671,X[46,80]=0.671,X[47,80]=0.678,X[48,80]=0.647,X[49,80]=0.408,X[50,80]=0.427 X[51,80]=0.345,X[52,80]=0.294,X[53,80]=0.341,X[54,80]=0.525,X[55,80]=0.447,X[56,80]=0.424,X[57,80]=0.447,X[58,80]=0.475,X[59,80]=0.451,X[60,80]=0.576,X[61,80]=0.494,X[62,80]=0.604,X[63,80]=0.612,X[64,80]=0.533,X[65,80]=0.286,X[66,80]=0.329,X[67,80]=0.369,X[68,80]=0.431,X[69,80]=0.439,X[70,80]=0.624,X[71,80]=0.549,X[72,80]=0.612,X[73,80]=0.600,X[74,80]=0.635,X[75,80]=0.573,X[76,80]=0.506,X[77,80]=0.467,X[78,80]=0.314,X[79,80]=0.314,X[80,80]=0.439,X[81,80]=0.573,X[82,80]=0.490,X[83,80]=0.361,X[84,80]=0.420,X[85,80]=0.420,X[86,80]=0.467,X[87,80]=0.616,X[88,80]=0.678,X[89,80]=0.714,X[90,80]=0.765,X[91,80]=0.682,X[92,80]=0.686,X[93,80]=0.776,X[94,80]=0.490,X[95,80]=0.561,X[96,80]=0.584,X[97,80]=0.725,X[98,80]=0.659,X[99,80]=0.384,X[100,80]=0.427 X[1,81]=0.325,X[2,81]=0.314,X[3,81]=0.239,X[4,81]=0.373,X[5,81]=0.404,X[6,81]=0.376,X[7,81]=0.486,X[8,81]=0.420,X[9,81]=0.353,X[10,81]=0.463,X[11,81]=0.604,X[12,81]=0.576,X[13,81]=0.620,X[14,81]=0.580,X[15,81]=0.537,X[16,81]=0.620,X[17,81]=0.451,X[18,81]=0.443,X[19,81]=0.498,X[20,81]=0.518,X[21,81]=0.561,X[22,81]=0.510,X[23,81]=0.537,X[24,81]=0.494,X[25,81]=0.643,X[26,81]=0.694,X[27,81]=0.706,X[28,81]=0.506,X[29,81]=0.475,X[30,81]=0.635,X[31,81]=0.620,X[32,81]=0.557,X[33,81]=0.737,X[34,81]=0.573,X[35,81]=0.702,X[36,81]=0.667,X[37,81]=0.690,X[38,81]=0.392,X[39,81]=0.443,X[40,81]=0.561,X[41,81]=0.565,X[42,81]=0.349,X[43,81]=0.514,X[44,81]=0.553,X[45,81]=0.482,X[46,81]=0.537,X[47,81]=0.514,X[48,81]=0.765,X[49,81]=0.722,X[50,81]=0.459 X[51,81]=0.251,X[52,81]=0.235,X[53,81]=0.220,X[54,81]=0.408,X[55,81]=0.408,X[56,81]=0.365,X[57,81]=0.467,X[58,81]=0.482,X[59,81]=0.439,X[60,81]=0.506,X[61,81]=0.620,X[62,81]=0.639,X[63,81]=0.635,X[64,81]=0.541,X[65,81]=0.557,X[66,81]=0.576,X[67,81]=0.498,X[68,81]=0.439,X[69,81]=0.518,X[70,81]=0.482,X[71,81]=0.549,X[72,81]=0.627,X[73,81]=0.553,X[74,81]=0.502,X[75,81]=0.592,X[76,81]=0.675,X[77,81]=0.718,X[78,81]=0.522,X[79,81]=0.561,X[80,81]=0.616,X[81,81]=0.635,X[82,81]=0.576,X[83,81]=0.741,X[84,81]=0.651,X[85,81]=0.596,X[86,81]=0.624,X[87,81]=0.698,X[88,81]=0.557,X[89,81]=0.439,X[90,81]=0.478,X[91,81]=0.549,X[92,81]=0.369,X[93,81]=0.525,X[94,81]=0.545,X[95,81]=0.518,X[96,81]=0.549,X[97,81]=0.518,X[98,81]=0.651,X[99,81]=0.725,X[100,81]=0.427 X[1,82]=0.365,X[2,82]=0.325,X[3,82]=0.290,X[4,82]=0.251,X[5,82]=0.486,X[6,82]=0.376,X[7,82]=0.373,X[8,82]=0.412,X[9,82]=0.353,X[10,82]=0.282,X[11,82]=0.302,X[12,82]=0.467,X[13,82]=0.310,X[14,82]=0.322,X[15,82]=0.690,X[16,82]=0.502,X[17,82]=0.396,X[18,82]=0.408,X[19,82]=0.498,X[20,82]=0.576,X[21,82]=0.408,X[22,82]=0.663,X[23,82]=0.529,X[24,82]=0.506,X[25,82]=0.737,X[26,82]=0.616,X[27,82]=0.600,X[28,82]=0.702,X[29,82]=0.600,X[30,82]=0.525,X[31,82]=0.576,X[32,82]=0.667,X[33,82]=0.722,X[34,82]=0.357,X[35,82]=0.565,X[36,82]=0.561,X[37,82]=0.424,X[38,82]=0.380,X[39,82]=0.592,X[40,82]=0.510,X[41,82]=0.498,X[42,82]=0.447,X[43,82]=0.353,X[44,82]=0.600,X[45,82]=0.373,X[46,82]=0.486,X[47,82]=0.561,X[48,82]=0.667,X[49,82]=0.749,X[50,82]=0.678 X[51,82]=0.325,X[52,82]=0.341,X[53,82]=0.306,X[54,82]=0.243,X[55,82]=0.514,X[56,82]=0.365,X[57,82]=0.545,X[58,82]=0.510,X[59,82]=0.412,X[60,82]=0.306,X[61,82]=0.310,X[62,82]=0.392,X[63,82]=0.408,X[64,82]=0.329,X[65,82]=0.706,X[66,82]=0.608,X[67,82]=0.475,X[68,82]=0.435,X[69,82]=0.514,X[70,82]=0.541,X[71,82]=0.400,X[72,82]=0.514,X[73,82]=0.584,X[74,82]=0.494,X[75,82]=0.682,X[76,82]=0.659,X[77,82]=0.584,X[78,82]=0.686,X[79,82]=0.612,X[80,82]=0.612,X[81,82]=0.592,X[82,82]=0.620,X[83,82]=0.753,X[84,82]=0.580,X[85,82]=0.533,X[86,82]=0.576,X[87,82]=0.404,X[88,82]=0.361,X[89,82]=0.357,X[90,82]=0.510,X[91,82]=0.537,X[92,82]=0.427,X[93,82]=0.486,X[94,82]=0.612,X[95,82]=0.420,X[96,82]=0.616,X[97,82]=0.612,X[98,82]=0.592,X[99,82]=0.718,X[100,82]=0.643 X[1,83]=0.463,X[2,83]=0.345,X[3,83]=0.400,X[4,83]=0.337,X[5,83]=0.365,X[6,83]=0.365,X[7,83]=0.376,X[8,83]=0.333,X[9,83]=0.373,X[10,83]=0.306,X[11,83]=0.357,X[12,83]=0.443,X[13,83]=0.722,X[14,83]=0.761,X[15,83]=0.671,X[16,83]=0.659,X[17,83]=0.357,X[18,83]=0.325,X[19,83]=0.361,X[20,83]=0.467,X[21,83]=0.400,X[22,83]=0.337,X[23,83]=0.471,X[24,83]=0.671,X[25,83]=0.471,X[26,83]=0.675,X[27,83]=0.569,X[28,83]=0.600,X[29,83]=0.714,X[30,83]=0.635,X[31,83]=0.698,X[32,83]=0.502,X[33,83]=0.561,X[34,83]=0.263,X[35,83]=0.357,X[36,83]=0.384,X[37,83]=0.486,X[38,83]=0.475,X[39,83]=0.525,X[40,83]=0.451,X[41,83]=0.412,X[42,83]=0.541,X[43,83]=0.412,X[44,83]=0.596,X[45,83]=0.427,X[46,83]=0.400,X[47,83]=0.337,X[48,83]=0.447,X[49,83]=0.569,X[50,83]=0.706 X[51,83]=0.337,X[52,83]=0.380,X[53,83]=0.427,X[54,83]=0.333,X[55,83]=0.376,X[56,83]=0.388,X[57,83]=0.459,X[58,83]=0.357,X[59,83]=0.388,X[60,83]=0.286,X[61,83]=0.369,X[62,83]=0.412,X[63,83]=0.612,X[64,83]=0.769,X[65,83]=0.635,X[66,83]=0.627,X[67,83]=0.384,X[68,83]=0.345,X[69,83]=0.365,X[70,83]=0.518,X[71,83]=0.478,X[72,83]=0.388,X[73,83]=0.486,X[74,83]=0.651,X[75,83]=0.690,X[76,83]=0.494,X[77,83]=0.561,X[78,83]=0.643,X[79,83]=0.702,X[80,83]=0.655,X[81,83]=0.678,X[82,83]=0.533,X[83,83]=0.584,X[84,83]=0.369,X[85,83]=0.392,X[86,83]=0.369,X[87,83]=0.420,X[88,83]=0.353,X[89,83]=0.447,X[90,83]=0.584,X[91,83]=0.439,X[92,83]=0.506,X[93,83]=0.408,X[94,83]=0.573,X[95,83]=0.463,X[96,83]=0.482,X[97,83]=0.486,X[98,83]=0.451,X[99,83]=0.596,X[100,83]=0.690 X[1,84]=0.518,X[2,84]=0.298,X[3,84]=0.329,X[4,84]=0.443,X[5,84]=0.486,X[6,84]=0.353,X[7,84]=0.427,X[8,84]=0.392,X[9,84]=0.349,X[10,84]=0.396,X[11,84]=0.494,X[12,84]=0.718,X[13,84]=0.729,X[14,84]=0.753,X[15,84]=0.624,X[16,84]=0.592,X[17,84]=0.357,X[18,84]=0.333,X[19,84]=0.384,X[20,84]=0.396,X[21,84]=0.361,X[22,84]=0.333,X[23,84]=0.369,X[24,84]=0.475,X[25,84]=0.569,X[26,84]=0.541,X[27,84]=0.608,X[28,84]=0.569,X[29,84]=0.675,X[30,84]=0.600,X[31,84]=0.659,X[32,84]=0.608,X[33,84]=0.647,X[34,84]=0.263,X[35,84]=0.545,X[36,84]=0.514,X[37,84]=0.443,X[38,84]=0.443,X[39,84]=0.345,X[40,84]=0.467,X[41,84]=0.408,X[42,84]=0.525,X[43,84]=0.290,X[44,84]=0.357,X[45,84]=0.392,X[46,84]=0.576,X[47,84]=0.576,X[48,84]=0.651,X[49,84]=0.596,X[50,84]=0.698 X[51,84]=0.278,X[52,84]=0.294,X[53,84]=0.322,X[54,84]=0.404,X[55,84]=0.486,X[56,84]=0.376,X[57,84]=0.478,X[58,84]=0.396,X[59,84]=0.329,X[60,84]=0.404,X[61,84]=0.525,X[62,84]=0.627,X[63,84]=0.769,X[64,84]=0.745,X[65,84]=0.604,X[66,84]=0.518,X[67,84]=0.424,X[68,84]=0.329,X[69,84]=0.404,X[70,84]=0.400,X[71,84]=0.384,X[72,84]=0.357,X[73,84]=0.376,X[74,84]=0.514,X[75,84]=0.643,X[76,84]=0.486,X[77,84]=0.604,X[78,84]=0.596,X[79,84]=0.592,X[80,84]=0.549,X[81,84]=0.635,X[82,84]=0.643,X[83,84]=0.675,X[84,84]=0.361,X[85,84]=0.420,X[86,84]=0.475,X[87,84]=0.361,X[88,84]=0.361,X[89,84]=0.400,X[90,84]=0.510,X[91,84]=0.396,X[92,84]=0.525,X[93,84]=0.424,X[94,84]=0.365,X[95,84]=0.337,X[96,84]=0.478,X[97,84]=0.537,X[98,84]=0.643,X[99,84]=0.616,X[100,84]=0.690 X[1,85]=0.451,X[2,85]=0.231,X[3,85]=0.376,X[4,85]=0.408,X[5,85]=0.400,X[6,85]=0.349,X[7,85]=0.392,X[8,85]=0.557,X[9,85]=0.576,X[10,85]=0.588,X[11,85]=0.565,X[12,85]=0.592,X[13,85]=0.553,X[14,85]=0.675,X[15,85]=0.710,X[16,85]=0.725,X[17,85]=0.475,X[18,85]=0.416,X[19,85]=0.349,X[20,85]=0.373,X[21,85]=0.400,X[22,85]=0.369,X[23,85]=0.392,X[24,85]=0.365,X[25,85]=0.471,X[26,85]=0.612,X[27,85]=0.573,X[28,85]=0.529,X[29,85]=0.471,X[30,85]=0.486,X[31,85]=0.549,X[32,85]=0.490,X[33,85]=0.569,X[34,85]=0.314,X[35,85]=0.384,X[36,85]=0.380,X[37,85]=0.486,X[38,85]=0.561,X[39,85]=0.365,X[40,85]=0.384,X[41,85]=0.443,X[42,85]=0.341,X[43,85]=0.376,X[44,85]=0.471,X[45,85]=0.392,X[46,85]=0.451,X[47,85]=0.400,X[48,85]=0.439,X[49,85]=0.494,X[50,85]=0.553 X[51,85]=0.314,X[52,85]=0.314,X[53,85]=0.376,X[54,85]=0.369,X[55,85]=0.420,X[56,85]=0.380,X[57,85]=0.525,X[58,85]=0.502,X[59,85]=0.671,X[60,85]=0.592,X[61,85]=0.627,X[62,85]=0.655,X[63,85]=0.514,X[64,85]=0.663,X[65,85]=0.690,X[66,85]=0.714,X[67,85]=0.541,X[68,85]=0.400,X[69,85]=0.353,X[70,85]=0.376,X[71,85]=0.404,X[72,85]=0.384,X[73,85]=0.388,X[74,85]=0.365,X[75,85]=0.373,X[76,85]=0.475,X[77,85]=0.580,X[78,85]=0.549,X[79,85]=0.604,X[80,85]=0.396,X[81,85]=0.573,X[82,85]=0.396,X[83,85]=0.573,X[84,85]=0.341,X[85,85]=0.475,X[86,85]=0.404,X[87,85]=0.475,X[88,85]=0.620,X[89,85]=0.376,X[90,85]=0.431,X[91,85]=0.502,X[92,85]=0.400,X[93,85]=0.494,X[94,85]=0.490,X[95,85]=0.369,X[96,85]=0.322,X[97,85]=0.522,X[98,85]=0.533,X[99,85]=0.455,X[100,85]=0.533 X[1,86]=0.475,X[2,86]=0.357,X[3,86]=0.361,X[4,86]=0.420,X[5,86]=0.522,X[6,86]=0.600,X[7,86]=0.584,X[8,86]=0.439,X[9,86]=0.624,X[10,86]=0.573,X[11,86]=0.616,X[12,86]=0.620,X[13,86]=0.580,X[14,86]=0.600,X[15,86]=0.663,X[16,86]=0.725,X[17,86]=0.722,X[18,86]=0.651,X[19,86]=0.408,X[20,86]=0.341,X[21,86]=0.282,X[22,86]=0.286,X[23,86]=0.290,X[24,86]=0.302,X[25,86]=0.298,X[26,86]=0.322,X[27,86]=0.345,X[28,86]=0.439,X[29,86]=0.435,X[30,86]=0.357,X[31,86]=0.376,X[32,86]=0.302,X[33,86]=0.278,X[34,86]=0.459,X[35,86]=0.337,X[36,86]=0.424,X[37,86]=0.463,X[38,86]=0.565,X[39,86]=0.518,X[40,86]=0.502,X[41,86]=0.404,X[42,86]=0.518,X[43,86]=0.384,X[44,86]=0.467,X[45,86]=0.278,X[46,86]=0.290,X[47,86]=0.349,X[48,86]=0.486,X[49,86]=0.427,X[50,86]=0.557 X[51,86]=0.424,X[52,86]=0.345,X[53,86]=0.361,X[54,86]=0.412,X[55,86]=0.506,X[56,86]=0.588,X[57,86]=0.639,X[58,86]=0.498,X[59,86]=0.498,X[60,86]=0.518,X[61,86]=0.561,X[62,86]=0.514,X[63,86]=0.490,X[64,86]=0.553,X[65,86]=0.671,X[66,86]=0.659,X[67,86]=0.702,X[68,86]=0.655,X[69,86]=0.404,X[70,86]=0.341,X[71,86]=0.329,X[72,86]=0.290,X[73,86]=0.294,X[74,86]=0.298,X[75,86]=0.290,X[76,86]=0.337,X[77,86]=0.361,X[78,86]=0.412,X[79,86]=0.408,X[80,86]=0.345,X[81,86]=0.369,X[82,86]=0.341,X[83,86]=0.275,X[84,86]=0.349,X[85,86]=0.400,X[86,86]=0.467,X[87,86]=0.490,X[88,86]=0.494,X[89,86]=0.549,X[90,86]=0.471,X[91,86]=0.427,X[92,86]=0.447,X[93,86]=0.275,X[94,86]=0.486,X[95,86]=0.298,X[96,86]=0.380,X[97,86]=0.325,X[98,86]=0.361,X[99,86]=0.439,X[100,86]=0.588 X[1,87]=0.690,X[2,87]=0.353,X[3,87]=0.286,X[4,87]=0.451,X[5,87]=0.478,X[6,87]=0.373,X[7,87]=0.416,X[8,87]=0.373,X[9,87]=0.439,X[10,87]=0.475,X[11,87]=0.510,X[12,87]=0.502,X[13,87]=0.616,X[14,87]=0.573,X[15,87]=0.388,X[16,87]=0.639,X[17,87]=0.651,X[18,87]=0.663,X[19,87]=0.737,X[20,87]=0.412,X[21,87]=0.380,X[22,87]=0.439,X[23,87]=0.443,X[24,87]=0.498,X[25,87]=0.451,X[26,87]=0.404,X[27,87]=0.424,X[28,87]=0.408,X[29,87]=0.420,X[30,87]=0.459,X[31,87]=0.455,X[32,87]=0.392,X[33,87]=0.388,X[34,87]=0.565,X[35,87]=0.533,X[36,87]=0.478,X[37,87]=0.424,X[38,87]=0.545,X[39,87]=0.325,X[40,87]=0.463,X[41,87]=0.478,X[42,87]=0.525,X[43,87]=0.565,X[44,87]=0.349,X[45,87]=0.408,X[46,87]=0.459,X[47,87]=0.569,X[48,87]=0.302,X[49,87]=0.553,X[50,87]=0.467 X[51,87]=0.624,X[52,87]=0.322,X[53,87]=0.314,X[54,87]=0.424,X[55,87]=0.518,X[56,87]=0.357,X[57,87]=0.502,X[58,87]=0.431,X[59,87]=0.443,X[60,87]=0.490,X[61,87]=0.478,X[62,87]=0.463,X[63,87]=0.518,X[64,87]=0.561,X[65,87]=0.392,X[66,87]=0.514,X[67,87]=0.702,X[68,87]=0.655,X[69,87]=0.749,X[70,87]=0.392,X[71,87]=0.357,X[72,87]=0.443,X[73,87]=0.451,X[74,87]=0.494,X[75,87]=0.443,X[76,87]=0.463,X[77,87]=0.427,X[78,87]=0.400,X[79,87]=0.427,X[80,87]=0.384,X[81,87]=0.455,X[82,87]=0.376,X[83,87]=0.416,X[84,87]=0.482,X[85,87]=0.525,X[86,87]=0.494,X[87,87]=0.482,X[88,87]=0.431,X[89,87]=0.435,X[90,87]=0.376,X[91,87]=0.502,X[92,87]=0.533,X[93,87]=0.541,X[94,87]=0.357,X[95,87]=0.404,X[96,87]=0.459,X[97,87]=0.482,X[98,87]=0.475,X[99,87]=0.545,X[100,87]=0.514 X[1,88]=0.694,X[2,88]=0.420,X[3,88]=0.337,X[4,88]=0.447,X[5,88]=0.463,X[6,88]=0.416,X[7,88]=0.435,X[8,88]=0.565,X[9,88]=0.471,X[10,88]=0.443,X[11,88]=0.565,X[12,88]=0.518,X[13,88]=0.627,X[14,88]=0.663,X[15,88]=0.549,X[16,88]=0.639,X[17,88]=0.600,X[18,88]=0.694,X[19,88]=0.667,X[20,88]=0.490,X[21,88]=0.329,X[22,88]=0.443,X[23,88]=0.396,X[24,88]=0.675,X[25,88]=0.333,X[26,88]=0.573,X[27,88]=0.616,X[28,88]=0.651,X[29,88]=0.635,X[30,88]=0.710,X[31,88]=0.580,X[32,88]=0.455,X[33,88]=0.471,X[34,88]=0.494,X[35,88]=0.400,X[36,88]=0.322,X[37,88]=0.427,X[38,88]=0.557,X[39,88]=0.498,X[40,88]=0.525,X[41,88]=0.459,X[42,88]=0.588,X[43,88]=0.498,X[44,88]=0.416,X[45,88]=0.388,X[46,88]=0.553,X[47,88]=0.463,X[48,88]=0.396,X[49,88]=0.345,X[50,88]=0.518 X[51,88]=0.682,X[52,88]=0.365,X[53,88]=0.365,X[54,88]=0.451,X[55,88]=0.478,X[56,88]=0.416,X[57,88]=0.510,X[58,88]=0.482,X[59,88]=0.549,X[60,88]=0.486,X[61,88]=0.518,X[62,88]=0.525,X[63,88]=0.553,X[64,88]=0.639,X[65,88]=0.525,X[66,88]=0.541,X[67,88]=0.635,X[68,88]=0.690,X[69,88]=0.675,X[70,88]=0.447,X[71,88]=0.329,X[72,88]=0.412,X[73,88]=0.404,X[74,88]=0.647,X[75,88]=0.396,X[76,88]=0.416,X[77,88]=0.620,X[78,88]=0.659,X[79,88]=0.494,X[80,88]=0.686,X[81,88]=0.541,X[82,88]=0.443,X[83,88]=0.490,X[84,88]=0.588,X[85,88]=0.478,X[86,88]=0.333,X[87,88]=0.455,X[88,88]=0.549,X[89,88]=0.424,X[90,88]=0.502,X[91,88]=0.506,X[92,88]=0.561,X[93,88]=0.463,X[94,88]=0.431,X[95,88]=0.400,X[96,88]=0.451,X[97,88]=0.463,X[98,88]=0.471,X[99,88]=0.341,X[100,88]=0.537 X[1,89]=0.478,X[2,89]=0.376,X[3,89]=0.388,X[4,89]=0.443,X[5,89]=0.416,X[6,89]=0.545,X[7,89]=0.498,X[8,89]=0.600,X[9,89]=0.549,X[10,89]=0.561,X[11,89]=0.549,X[12,89]=0.443,X[13,89]=0.608,X[14,89]=0.655,X[15,89]=0.694,X[16,89]=0.624,X[17,89]=0.573,X[18,89]=0.659,X[19,89]=0.690,X[20,89]=0.620,X[21,89]=0.514,X[22,89]=0.361,X[23,89]=0.431,X[24,89]=0.667,X[25,89]=0.506,X[26,89]=0.404,X[27,89]=0.573,X[28,89]=0.722,X[29,89]=0.510,X[30,89]=0.494,X[31,89]=0.604,X[32,89]=0.365,X[33,89]=0.290,X[34,89]=0.424,X[35,89]=0.400,X[36,89]=0.502,X[37,89]=0.490,X[38,89]=0.412,X[39,89]=0.373,X[40,89]=0.471,X[41,89]=0.565,X[42,89]=0.439,X[43,89]=0.318,X[44,89]=0.400,X[45,89]=0.494,X[46,89]=0.353,X[47,89]=0.400,X[48,89]=0.478,X[49,89]=0.498,X[50,89]=0.424 X[51,89]=0.498,X[52,89]=0.361,X[53,89]=0.392,X[54,89]=0.514,X[55,89]=0.420,X[56,89]=0.549,X[57,89]=0.459,X[58,89]=0.510,X[59,89]=0.596,X[60,89]=0.514,X[61,89]=0.545,X[62,89]=0.459,X[63,89]=0.545,X[64,89]=0.631,X[65,89]=0.694,X[66,89]=0.678,X[67,89]=0.671,X[68,89]=0.678,X[69,89]=0.714,X[70,89]=0.643,X[71,89]=0.718,X[72,89]=0.306,X[73,89]=0.451,X[74,89]=0.671,X[75,89]=0.620,X[76,89]=0.400,X[77,89]=0.647,X[78,89]=0.694,X[79,89]=0.471,X[80,89]=0.502,X[81,89]=0.635,X[82,89]=0.333,X[83,89]=0.290,X[84,89]=0.314,X[85,89]=0.431,X[86,89]=0.455,X[87,89]=0.525,X[88,89]=0.424,X[89,89]=0.533,X[90,89]=0.388,X[91,89]=0.573,X[92,89]=0.431,X[93,89]=0.318,X[94,89]=0.447,X[95,89]=0.506,X[96,89]=0.502,X[97,89]=0.408,X[98,89]=0.361,X[99,89]=0.502,X[100,89]=0.373 X[1,90]=0.404,X[2,90]=0.435,X[3,90]=0.353,X[4,90]=0.357,X[5,90]=0.373,X[6,90]=0.392,X[7,90]=0.392,X[8,90]=0.565,X[9,90]=0.522,X[10,90]=0.455,X[11,90]=0.365,X[12,90]=0.380,X[13,90]=0.549,X[14,90]=0.502,X[15,90]=0.490,X[16,90]=0.714,X[17,90]=0.612,X[18,90]=0.584,X[19,90]=0.627,X[20,90]=0.569,X[21,90]=0.702,X[22,90]=0.306,X[23,90]=0.333,X[24,90]=0.478,X[25,90]=0.624,X[26,90]=0.525,X[27,90]=0.420,X[28,90]=0.710,X[29,90]=0.561,X[30,90]=0.443,X[31,90]=0.592,X[32,90]=0.247,X[33,90]=0.259,X[34,90]=0.267,X[35,90]=0.267,X[36,90]=0.251,X[37,90]=0.290,X[38,90]=0.376,X[39,90]=0.510,X[40,90]=0.357,X[41,90]=0.396,X[42,90]=0.490,X[43,90]=0.349,X[44,90]=0.408,X[45,90]=0.361,X[46,90]=0.271,X[47,90]=0.388,X[48,90]=0.275,X[49,90]=0.271,X[50,90]=0.353 X[51,90]=0.455,X[52,90]=0.400,X[53,90]=0.357,X[54,90]=0.345,X[55,90]=0.380,X[56,90]=0.420,X[57,90]=0.451,X[58,90]=0.431,X[59,90]=0.404,X[60,90]=0.451,X[61,90]=0.384,X[62,90]=0.486,X[63,90]=0.420,X[64,90]=0.486,X[65,90]=0.494,X[66,90]=0.608,X[67,90]=0.631,X[68,90]=0.616,X[69,90]=0.620,X[70,90]=0.569,X[71,90]=0.631,X[72,90]=0.451,X[73,90]=0.376,X[74,90]=0.510,X[75,90]=0.596,X[76,90]=0.482,X[77,90]=0.392,X[78,90]=0.729,X[79,90]=0.647,X[80,90]=0.459,X[81,90]=0.608,X[82,90]=0.251,X[83,90]=0.259,X[84,90]=0.235,X[85,90]=0.251,X[86,90]=0.251,X[87,90]=0.298,X[88,90]=0.404,X[89,90]=0.502,X[90,90]=0.404,X[91,90]=0.396,X[92,90]=0.525,X[93,90]=0.518,X[94,90]=0.396,X[95,90]=0.404,X[96,90]=0.376,X[97,90]=0.369,X[98,90]=0.310,X[99,90]=0.278,X[100,90]=0.361 X[1,91]=0.635,X[2,91]=0.596,X[3,91]=0.392,X[4,91]=0.365,X[5,91]=0.392,X[6,91]=0.427,X[7,91]=0.380,X[8,91]=0.435,X[9,91]=0.490,X[10,91]=0.471,X[11,91]=0.518,X[12,91]=0.369,X[13,91]=0.435,X[14,91]=0.494,X[15,91]=0.443,X[16,91]=0.529,X[17,91]=0.600,X[18,91]=0.486,X[19,91]=0.608,X[20,91]=0.569,X[21,91]=0.651,X[22,91]=0.651,X[23,91]=0.255,X[24,91]=0.365,X[25,91]=0.384,X[26,91]=0.435,X[27,91]=0.384,X[28,91]=0.475,X[29,91]=0.478,X[30,91]=0.545,X[31,91]=0.549,X[32,91]=0.267,X[33,91]=0.376,X[34,91]=0.475,X[35,91]=0.533,X[36,91]=0.651,X[37,91]=0.710,X[38,91]=0.600,X[39,91]=0.596,X[40,91]=0.498,X[41,91]=0.451,X[42,91]=0.302,X[43,91]=0.333,X[44,91]=0.329,X[45,91]=0.380,X[46,91]=0.408,X[47,91]=0.408,X[48,91]=0.498,X[49,91]=0.741,X[50,91]=0.467 X[51,91]=0.682,X[52,91]=0.455,X[53,91]=0.376,X[54,91]=0.376,X[55,91]=0.384,X[56,91]=0.420,X[57,91]=0.396,X[58,91]=0.435,X[59,91]=0.471,X[60,91]=0.475,X[61,91]=0.506,X[62,91]=0.412,X[63,91]=0.396,X[64,91]=0.506,X[65,91]=0.435,X[66,91]=0.471,X[67,91]=0.565,X[68,91]=0.478,X[69,91]=0.569,X[70,91]=0.557,X[71,91]=0.588,X[72,91]=0.576,X[73,91]=0.259,X[74,91]=0.392,X[75,91]=0.380,X[76,91]=0.604,X[77,91]=0.412,X[78,91]=0.486,X[79,91]=0.451,X[80,91]=0.678,X[81,91]=0.486,X[82,91]=0.267,X[83,91]=0.388,X[84,91]=0.416,X[85,91]=0.404,X[86,91]=0.647,X[87,91]=0.686,X[88,91]=0.663,X[89,91]=0.659,X[90,91]=0.518,X[91,91]=0.424,X[92,91]=0.302,X[93,91]=0.294,X[94,91]=0.333,X[95,91]=0.380,X[96,91]=0.400,X[97,91]=0.412,X[98,91]=0.400,X[99,91]=0.737,X[100,91]=0.475 X[1,92]=0.553,X[2,92]=0.639,X[3,92]=0.392,X[4,92]=0.388,X[5,92]=0.439,X[6,92]=0.561,X[7,92]=0.549,X[8,92]=0.541,X[9,92]=0.431,X[10,92]=0.561,X[11,92]=0.557,X[12,92]=0.471,X[13,92]=0.522,X[14,92]=0.420,X[15,92]=0.341,X[16,92]=0.259,X[17,92]=0.471,X[18,92]=0.514,X[19,92]=0.659,X[20,92]=0.612,X[21,92]=0.576,X[22,92]=0.427,X[23,92]=0.275,X[24,92]=0.278,X[25,92]=0.439,X[26,92]=0.416,X[27,92]=0.420,X[28,92]=0.463,X[29,92]=0.514,X[30,92]=0.467,X[31,92]=0.431,X[32,92]=0.278,X[33,92]=0.545,X[34,92]=0.600,X[35,92]=0.537,X[36,92]=0.647,X[37,92]=0.655,X[38,92]=0.655,X[39,92]=0.737,X[40,92]=0.667,X[41,92]=0.722,X[42,92]=0.702,X[43,92]=0.631,X[44,92]=0.588,X[45,92]=0.588,X[46,92]=0.533,X[47,92]=0.443,X[48,92]=0.400,X[49,92]=0.565,X[50,92]=0.549 X[51,92]=0.592,X[52,92]=0.655,X[53,92]=0.404,X[54,92]=0.400,X[55,92]=0.463,X[56,92]=0.502,X[57,92]=0.482,X[58,92]=0.565,X[59,92]=0.365,X[60,92]=0.525,X[61,92]=0.557,X[62,92]=0.478,X[63,92]=0.502,X[64,92]=0.400,X[65,92]=0.329,X[66,92]=0.259,X[67,92]=0.455,X[68,92]=0.514,X[69,92]=0.612,X[70,92]=0.584,X[71,92]=0.647,X[72,92]=0.580,X[73,92]=0.282,X[74,92]=0.322,X[75,92]=0.451,X[76,92]=0.525,X[77,92]=0.369,X[78,92]=0.498,X[79,92]=0.494,X[80,92]=0.451,X[81,92]=0.400,X[82,92]=0.286,X[83,92]=0.557,X[84,92]=0.486,X[85,92]=0.522,X[86,92]=0.698,X[87,92]=0.620,X[88,92]=0.604,X[89,92]=0.710,X[90,92]=0.612,X[91,92]=0.710,X[92,92]=0.698,X[93,92]=0.686,X[94,92]=0.596,X[95,92]=0.580,X[96,92]=0.553,X[97,92]=0.502,X[98,92]=0.376,X[99,92]=0.580,X[100,92]=0.522 X[1,93]=0.667,X[2,93]=0.733,X[3,93]=0.486,X[4,93]=0.600,X[5,93]=0.365,X[6,93]=0.416,X[7,93]=0.427,X[8,93]=0.588,X[9,93]=0.494,X[10,93]=0.600,X[11,93]=0.486,X[12,93]=0.392,X[13,93]=0.384,X[14,93]=0.475,X[15,93]=0.455,X[16,93]=0.431,X[17,93]=0.408,X[18,93]=0.455,X[19,93]=0.494,X[20,93]=0.616,X[21,93]=0.416,X[22,93]=0.298,X[23,93]=0.298,X[24,93]=0.318,X[25,93]=0.306,X[26,93]=0.302,X[27,93]=0.310,X[28,93]=0.263,X[29,93]=0.302,X[30,93]=0.345,X[31,93]=0.337,X[32,93]=0.325,X[33,93]=0.506,X[34,93]=0.573,X[35,93]=0.624,X[36,93]=0.686,X[37,93]=0.537,X[38,93]=0.518,X[39,93]=0.541,X[40,93]=0.561,X[41,93]=0.576,X[42,93]=0.643,X[43,93]=0.655,X[44,93]=0.714,X[45,93]=0.741,X[46,93]=0.600,X[47,93]=0.627,X[48,93]=0.298,X[49,93]=0.490,X[50,93]=0.624 X[51,93]=0.616,X[52,93]=0.745,X[53,93]=0.565,X[54,93]=0.522,X[55,93]=0.384,X[56,93]=0.435,X[57,93]=0.533,X[58,93]=0.533,X[59,93]=0.498,X[60,93]=0.647,X[61,93]=0.459,X[62,93]=0.357,X[63,93]=0.451,X[64,93]=0.478,X[65,93]=0.475,X[66,93]=0.482,X[67,93]=0.498,X[68,93]=0.478,X[69,93]=0.420,X[70,93]=0.651,X[71,93]=0.545,X[72,93]=0.302,X[73,93]=0.302,X[74,93]=0.325,X[75,93]=0.314,X[76,93]=0.322,X[77,93]=0.302,X[78,93]=0.271,X[79,93]=0.286,X[80,93]=0.282,X[81,93]=0.333,X[82,93]=0.337,X[83,93]=0.569,X[84,93]=0.690,X[85,93]=0.647,X[86,93]=0.749,X[87,93]=0.525,X[88,93]=0.514,X[89,93]=0.573,X[90,93]=0.675,X[91,93]=0.604,X[92,93]=0.635,X[93,93]=0.580,X[94,93]=0.725,X[95,93]=0.733,X[96,93]=0.686,X[97,93]=0.506,X[98,93]=0.365,X[99,93]=0.494,X[100,93]=0.627 X[1,94]=0.533,X[2,94]=0.600,X[3,94]=0.490,X[4,94]=0.353,X[5,94]=0.361,X[6,94]=0.361,X[7,94]=0.373,X[8,94]=0.435,X[9,94]=0.459,X[10,94]=0.376,X[11,94]=0.525,X[12,94]=0.478,X[13,94]=0.431,X[14,94]=0.427,X[15,94]=0.349,X[16,94]=0.518,X[17,94]=0.431,X[18,94]=0.514,X[19,94]=0.392,X[20,94]=0.702,X[21,94]=0.725,X[22,94]=0.671,X[23,94]=0.706,X[24,94]=0.682,X[25,94]=0.718,X[26,94]=0.710,X[27,94]=0.729,X[28,94]=0.737,X[29,94]=0.784,X[30,94]=0.588,X[31,94]=0.404,X[32,94]=0.388,X[33,94]=0.565,X[34,94]=0.639,X[35,94]=0.451,X[36,94]=0.416,X[37,94]=0.569,X[38,94]=0.635,X[39,94]=0.631,X[40,94]=0.663,X[41,94]=0.541,X[42,94]=0.576,X[43,94]=0.596,X[44,94]=0.588,X[45,94]=0.635,X[46,94]=0.773,X[47,94]=0.612,X[48,94]=0.275,X[49,94]=0.424,X[50,94]=0.506 X[51,94]=0.600,X[52,94]=0.655,X[53,94]=0.573,X[54,94]=0.329,X[55,94]=0.376,X[56,94]=0.416,X[57,94]=0.408,X[58,94]=0.353,X[59,94]=0.376,X[60,94]=0.357,X[61,94]=0.576,X[62,94]=0.545,X[63,94]=0.420,X[64,94]=0.455,X[65,94]=0.365,X[66,94]=0.431,X[67,94]=0.494,X[68,94]=0.514,X[69,94]=0.408,X[70,94]=0.733,X[71,94]=0.765,X[72,94]=0.698,X[73,94]=0.706,X[74,94]=0.686,X[75,94]=0.647,X[76,94]=0.682,X[77,94]=0.729,X[78,94]=0.753,X[79,94]=0.737,X[80,94]=0.733,X[81,94]=0.416,X[82,94]=0.416,X[83,94]=0.557,X[84,94]=0.557,X[85,94]=0.482,X[86,94]=0.361,X[87,94]=0.584,X[88,94]=0.647,X[89,94]=0.506,X[90,94]=0.580,X[91,94]=0.506,X[92,94]=0.549,X[93,94]=0.604,X[94,94]=0.620,X[95,94]=0.647,X[96,94]=0.745,X[97,94]=0.600,X[98,94]=0.333,X[99,94]=0.416,X[100,94]=0.502 X[1,95]=0.345,X[2,95]=0.251,X[3,95]=0.306,X[4,95]=0.341,X[5,95]=0.349,X[6,95]=0.263,X[7,95]=0.420,X[8,95]=0.404,X[9,95]=0.498,X[10,95]=0.365,X[11,95]=0.349,X[12,95]=0.310,X[13,95]=0.290,X[14,95]=0.220,X[15,95]=0.243,X[16,95]=0.263,X[17,95]=0.282,X[18,95]=0.431,X[19,95]=0.573,X[20,95]=0.675,X[21,95]=0.631,X[22,95]=0.620,X[23,95]=0.639,X[24,95]=0.608,X[25,95]=0.659,X[26,95]=0.333,X[27,95]=0.247,X[28,95]=0.620,X[29,95]=0.596,X[30,95]=0.655,X[31,95]=0.702,X[32,95]=0.302,X[33,95]=0.482,X[34,95]=0.463,X[35,95]=0.514,X[36,95]=0.635,X[37,95]=0.522,X[38,95]=0.486,X[39,95]=0.373,X[40,95]=0.408,X[41,95]=0.573,X[42,95]=0.612,X[43,95]=0.455,X[44,95]=0.584,X[45,95]=0.498,X[46,95]=0.608,X[47,95]=0.639,X[48,95]=0.235,X[49,95]=0.333,X[50,95]=0.400 X[51,95]=0.290,X[52,95]=0.278,X[53,95]=0.310,X[54,95]=0.325,X[55,95]=0.357,X[56,95]=0.286,X[57,95]=0.459,X[58,95]=0.420,X[59,95]=0.439,X[60,95]=0.341,X[61,95]=0.357,X[62,95]=0.416,X[63,95]=0.314,X[64,95]=0.204,X[65,95]=0.239,X[66,95]=0.255,X[67,95]=0.278,X[68,95]=0.439,X[69,95]=0.608,X[70,95]=0.698,X[71,95]=0.667,X[72,95]=0.643,X[73,95]=0.604,X[74,95]=0.620,X[75,95]=0.545,X[76,95]=0.435,X[77,95]=0.243,X[78,95]=0.631,X[79,95]=0.671,X[80,95]=0.569,X[81,95]=0.624,X[82,95]=0.337,X[83,95]=0.486,X[84,95]=0.525,X[85,95]=0.439,X[86,95]=0.655,X[87,95]=0.475,X[88,95]=0.565,X[89,95]=0.400,X[90,95]=0.384,X[91,95]=0.600,X[92,95]=0.600,X[93,95]=0.557,X[94,95]=0.600,X[95,95]=0.525,X[96,95]=0.667,X[97,95]=0.651,X[98,95]=0.294,X[99,95]=0.345,X[100,95]=0.380 X[1,96]=0.271,X[2,96]=0.333,X[3,96]=0.376,X[4,96]=0.310,X[5,96]=0.353,X[6,96]=0.329,X[7,96]=0.282,X[8,96]=0.255,X[9,96]=0.251,X[10,96]=0.267,X[11,96]=0.255,X[12,96]=0.239,X[13,96]=0.294,X[14,96]=0.306,X[15,96]=0.271,X[16,96]=0.322,X[17,96]=0.388,X[18,96]=0.659,X[19,96]=0.435,X[20,96]=0.561,X[21,96]=0.447,X[22,96]=0.482,X[23,96]=0.518,X[24,96]=0.318,X[25,96]=0.525,X[26,96]=0.529,X[27,96]=0.329,X[28,96]=0.475,X[29,96]=0.459,X[30,96]=0.455,X[31,96]=0.592,X[32,96]=0.349,X[33,96]=0.475,X[34,96]=0.325,X[35,96]=0.384,X[36,96]=0.522,X[37,96]=0.608,X[38,96]=0.498,X[39,96]=0.463,X[40,96]=0.596,X[41,96]=0.490,X[42,96]=0.549,X[43,96]=0.600,X[44,96]=0.706,X[45,96]=0.584,X[46,96]=0.537,X[47,96]=0.718,X[48,96]=0.278,X[49,96]=0.267,X[50,96]=0.259 X[51,96]=0.310,X[52,96]=0.353,X[53,96]=0.380,X[54,96]=0.310,X[55,96]=0.333,X[56,96]=0.306,X[57,96]=0.388,X[58,96]=0.294,X[59,96]=0.231,X[60,96]=0.259,X[61,96]=0.267,X[62,96]=0.275,X[63,96]=0.259,X[64,96]=0.310,X[65,96]=0.278,X[66,96]=0.341,X[67,96]=0.259,X[68,96]=0.690,X[69,96]=0.400,X[70,96]=0.537,X[71,96]=0.510,X[72,96]=0.478,X[73,96]=0.471,X[74,96]=0.365,X[75,96]=0.333,X[76,96]=0.435,X[77,96]=0.318,X[78,96]=0.451,X[79,96]=0.514,X[80,96]=0.322,X[81,96]=0.545,X[82,96]=0.380,X[83,96]=0.486,X[84,96]=0.357,X[85,96]=0.345,X[86,96]=0.541,X[87,96]=0.541,X[88,96]=0.490,X[89,96]=0.518,X[90,96]=0.627,X[91,96]=0.533,X[92,96]=0.557,X[93,96]=0.635,X[94,96]=0.702,X[95,96]=0.561,X[96,96]=0.471,X[97,96]=0.643,X[98,96]=0.275,X[99,96]=0.275,X[100,96]=0.259 X[1,97]=0.624,X[2,97]=0.612,X[3,97]=0.525,X[4,97]=0.651,X[5,97]=0.533,X[6,97]=0.459,X[7,97]=0.443,X[8,97]=0.408,X[9,97]=0.361,X[10,97]=0.365,X[11,97]=0.384,X[12,97]=0.380,X[13,97]=0.333,X[14,97]=0.416,X[15,97]=0.490,X[16,97]=0.631,X[17,97]=0.529,X[18,97]=0.482,X[19,97]=0.482,X[20,97]=0.306,X[21,97]=0.373,X[22,97]=0.431,X[23,97]=0.263,X[24,97]=0.416,X[25,97]=0.204,X[26,97]=0.424,X[27,97]=0.427,X[28,97]=0.337,X[29,97]=0.349,X[30,97]=0.698,X[31,97]=0.475,X[32,97]=0.314,X[33,97]=0.333,X[34,97]=0.325,X[35,97]=0.310,X[36,97]=0.392,X[37,97]=0.663,X[38,97]=0.412,X[39,97]=0.545,X[40,97]=0.510,X[41,97]=0.537,X[42,97]=0.600,X[43,97]=0.455,X[44,97]=0.490,X[45,97]=0.533,X[46,97]=0.498,X[47,97]=0.655,X[48,97]=0.675,X[49,97]=0.576,X[50,97]=0.647 X[51,97]=0.690,X[52,97]=0.675,X[53,97]=0.561,X[54,97]=0.620,X[55,97]=0.549,X[56,97]=0.471,X[57,97]=0.545,X[58,97]=0.431,X[59,97]=0.353,X[60,97]=0.373,X[61,97]=0.380,X[62,97]=0.361,X[63,97]=0.357,X[64,97]=0.416,X[65,97]=0.541,X[66,97]=0.635,X[67,97]=0.518,X[68,97]=0.431,X[69,97]=0.451,X[70,97]=0.302,X[71,97]=0.365,X[72,97]=0.416,X[73,97]=0.353,X[74,97]=0.388,X[75,97]=0.463,X[76,97]=0.267,X[77,97]=0.392,X[78,97]=0.329,X[79,97]=0.420,X[80,97]=0.553,X[81,97]=0.439,X[82,97]=0.337,X[83,97]=0.329,X[84,97]=0.365,X[85,97]=0.357,X[86,97]=0.376,X[87,97]=0.678,X[88,97]=0.408,X[89,97]=0.655,X[90,97]=0.580,X[91,97]=0.549,X[92,97]=0.612,X[93,97]=0.490,X[94,97]=0.439,X[95,97]=0.522,X[96,97]=0.557,X[97,97]=0.698,X[98,97]=0.525,X[99,97]=0.565,X[100,97]=0.671 X[1,98]=0.600,X[2,98]=0.675,X[3,98]=0.667,X[4,98]=0.745,X[5,98]=0.733,X[6,98]=0.675,X[7,98]=0.624,X[8,98]=0.710,X[9,98]=0.580,X[10,98]=0.490,X[11,98]=0.482,X[12,98]=0.357,X[13,98]=0.329,X[14,98]=0.380,X[15,98]=0.455,X[16,98]=0.443,X[17,98]=0.545,X[18,98]=0.443,X[19,98]=0.447,X[20,98]=0.451,X[21,98]=0.380,X[22,98]=0.455,X[23,98]=0.263,X[24,98]=0.302,X[25,98]=0.478,X[26,98]=0.424,X[27,98]=0.388,X[28,98]=0.361,X[29,98]=0.404,X[30,98]=0.553,X[31,98]=0.329,X[32,98]=0.333,X[33,98]=0.471,X[34,98]=0.424,X[35,98]=0.439,X[36,98]=0.396,X[37,98]=0.278,X[38,98]=0.561,X[39,98]=0.384,X[40,98]=0.514,X[41,98]=0.349,X[42,98]=0.443,X[43,98]=0.392,X[44,98]=0.404,X[45,98]=0.533,X[46,98]=0.541,X[47,98]=0.490,X[48,98]=0.710,X[49,98]=0.710,X[50,98]=0.514 X[51,98]=0.627,X[52,98]=0.667,X[53,98]=0.600,X[54,98]=0.718,X[55,98]=0.722,X[56,98]=0.733,X[57,98]=0.737,X[58,98]=0.694,X[59,98]=0.639,X[60,98]=0.482,X[61,98]=0.482,X[62,98]=0.435,X[63,98]=0.353,X[64,98]=0.369,X[65,98]=0.455,X[66,98]=0.435,X[67,98]=0.447,X[68,98]=0.447,X[69,98]=0.439,X[70,98]=0.490,X[71,98]=0.447,X[72,98]=0.510,X[73,98]=0.275,X[74,98]=0.314,X[75,98]=0.333,X[76,98]=0.349,X[77,98]=0.376,X[78,98]=0.361,X[79,98]=0.455,X[80,98]=0.400,X[81,98]=0.325,X[82,98]=0.392,X[83,98]=0.490,X[84,98]=0.494,X[85,98]=0.298,X[86,98]=0.475,X[87,98]=0.278,X[88,98]=0.396,X[89,98]=0.604,X[90,98]=0.596,X[91,98]=0.290,X[92,98]=0.471,X[93,98]=0.459,X[94,98]=0.400,X[95,98]=0.518,X[96,98]=0.525,X[97,98]=0.541,X[98,98]=0.451,X[99,98]=0.698,X[100,98]=0.502 X[1,99]=0.596,X[2,99]=0.643,X[3,99]=0.718,X[4,99]=0.643,X[5,99]=0.600,X[6,99]=0.608,X[7,99]=0.651,X[8,99]=0.745,X[9,99]=0.757,X[10,99]=0.725,X[11,99]=0.675,X[12,99]=0.478,X[13,99]=0.345,X[14,99]=0.388,X[15,99]=0.416,X[16,99]=0.451,X[17,99]=0.404,X[18,99]=0.408,X[19,99]=0.353,X[20,99]=0.451,X[21,99]=0.329,X[22,99]=0.365,X[23,99]=0.275,X[24,99]=0.325,X[25,99]=0.275,X[26,99]=0.510,X[27,99]=0.416,X[28,99]=0.482,X[29,99]=0.349,X[30,99]=0.694,X[31,99]=0.337,X[32,99]=0.337,X[33,99]=0.384,X[34,99]=0.478,X[35,99]=0.435,X[36,99]=0.510,X[37,99]=0.400,X[38,99]=0.678,X[39,99]=0.600,X[40,99]=0.624,X[41,99]=0.522,X[42,99]=0.380,X[43,99]=0.557,X[44,99]=0.600,X[45,99]=0.651,X[46,99]=0.608,X[47,99]=0.275,X[48,99]=0.463,X[49,99]=0.694,X[50,99]=0.702 X[51,99]=0.643,X[52,99]=0.710,X[53,99]=0.722,X[54,99]=0.675,X[55,99]=0.631,X[56,99]=0.616,X[57,99]=0.737,X[58,99]=0.749,X[59,99]=0.714,X[60,99]=0.749,X[61,99]=0.722,X[62,99]=0.729,X[63,99]=0.361,X[64,99]=0.384,X[65,99]=0.459,X[66,99]=0.396,X[67,99]=0.357,X[68,99]=0.392,X[69,99]=0.314,X[70,99]=0.494,X[71,99]=0.325,X[72,99]=0.475,X[73,99]=0.294,X[74,99]=0.392,X[75,99]=0.290,X[76,99]=0.451,X[77,99]=0.420,X[78,99]=0.435,X[79,99]=0.463,X[80,99]=0.557,X[81,99]=0.314,X[82,99]=0.341,X[83,99]=0.369,X[84,99]=0.400,X[85,99]=0.557,X[86,99]=0.553,X[87,99]=0.392,X[88,99]=0.553,X[89,99]=0.655,X[90,99]=0.753,X[91,99]=0.514,X[92,99]=0.345,X[93,99]=0.404,X[94,99]=0.600,X[95,99]=0.635,X[96,99]=0.510,X[97,99]=0.651,X[98,99]=0.314,X[99,99]=0.706,X[100,99]=0.675 X[1,100]=0.584,X[2,100]=0.553,X[3,100]=0.675,X[4,100]=0.698,X[5,100]=0.753,X[6,100]=0.745,X[7,100]=0.600,X[8,100]=0.749,X[9,100]=0.741,X[10,100]=0.655,X[11,100]=0.639,X[12,100]=0.714,X[13,100]=0.349,X[14,100]=0.380,X[15,100]=0.306,X[16,100]=0.427,X[17,100]=0.392,X[18,100]=0.325,X[19,100]=0.224,X[20,100]=0.314,X[21,100]=0.278,X[22,100]=0.447,X[23,100]=0.271,X[24,100]=0.392,X[25,100]=0.318,X[26,100]=0.345,X[27,100]=0.278,X[28,100]=0.333,X[29,100]=0.580,X[30,100]=0.698,X[31,100]=0.373,X[32,100]=0.318,X[33,100]=0.349,X[34,100]=0.502,X[35,100]=0.447,X[36,100]=0.451,X[37,100]=0.294,X[38,100]=0.404,X[39,100]=0.447,X[40,100]=0.675,X[41,100]=0.569,X[42,100]=0.498,X[43,100]=0.459,X[44,100]=0.553,X[45,100]=0.588,X[46,100]=0.522,X[47,100]=0.243,X[48,100]=0.290,X[49,100]=0.373,X[50,100]=0.620 X[51,100]=0.533,X[52,100]=0.510,X[53,100]=0.631,X[54,100]=0.698,X[55,100]=0.725,X[56,100]=0.714,X[57,100]=0.698,X[58,100]=0.608,X[59,100]=0.655,X[60,100]=0.588,X[61,100]=0.604,X[62,100]=0.671,X[63,100]=0.369,X[64,100]=0.392,X[65,100]=0.310,X[66,100]=0.369,X[67,100]=0.349,X[68,100]=0.282,X[69,100]=0.239,X[70,100]=0.369,X[71,100]=0.561,X[72,100]=0.498,X[73,100]=0.251,X[74,100]=0.471,X[75,100]=0.400,X[76,100]=0.224,X[77,100]=0.329,X[78,100]=0.341,X[79,100]=0.467,X[80,100]=0.686,X[81,100]=0.345,X[82,100]=0.329,X[83,100]=0.369,X[84,100]=0.502,X[85,100]=0.478,X[86,100]=0.420,X[87,100]=0.255,X[88,100]=0.251,X[89,100]=0.498,X[90,100]=0.545,X[91,100]=0.522,X[92,100]=0.490,X[93,100]=0.435,X[94,100]=0.529,X[95,100]=0.584,X[96,100]=0.482,X[97,100]=0.490,X[98,100]=0.290,X[99,100]=0.380,X[100,100]=0.557 init: float res = 0.0 float lowtrap=abs(round(real(@itrap)*#maxiter)) float hightrap=abs(round(imag(@itrap)*#maxiter)) IF lowtrap>hightrap res=lowtrap lowtrap=hightrap hightrap=res ENDIF float iterexp = 0 float scale = @colors*#pi/128 complex zold = (0,0) complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float rotx = #x float roty = #y int irotx int iroty int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p = xx + flip(yy) loop: complex z1 = #z*(1-@weight) + p*@weight IF (@converge > 0) iterexp = iterexp + exp(-cabs(z1)) ELSE iterexp = iterexp + exp(-1/(cabs(zold - z1))) ENDIF zold = #z final: rotx = rotx/#width roty = roty/#height float xx = rotx rotx = #width+0.5*#width+(rotx-0.5)*cos(@angle*#pi/180)*#width - (roty-0.5)*sin(@angle*#pi/180)*#height roty = #height+0.5*#height+(roty-0.5)*cos(@angle*#pi/180)*#height + (xx-0.5)*sin(@angle*#pi/180)*#width irotx = abs(round(rotx)) iroty = abs(round(roty)) float smooth = iterexp*scale ez = cos(smooth)+flip(sin(smooth)) float angle = atan2(ez) IF (angle < 0) angle = angle + #pi * 2 ENDIF IF (@trap == true) IF (#numiter>=lowtrap)&&(#numiter<=hightrap) ; Is pixel in trap? #index = angle*(@palrange/(#pi*512)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+ @wate*\ X[1+(round((@hite*smooth+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*smooth+1)*(sum*@fbms+1)*iroty/@scale) % 100)]) ELSE #solid = true ENDIF ELSE #index = angle*(@palrange/(#pi*512)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+ @wate*\ X[1+(round((@hite*smooth+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*smooth+1)*(sum*@fbms+1)*iroty/@scale) % 100)]) ENDIF if @solidb && cabs(#z) == 0 #solid = true endif default: title = "Exp Rock2 Texture" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param solidb caption = "Solid background" default = false endparam param colors caption = "Color Spread" default = 2.0 hint = "2.0 approximates the iteration count. \ Use 10.0 for convergent fractals." endparam param trap caption = "Use Iteration Trap" default = false endparam param itrap caption="Trap Limits" default=(0.0,1.0) hint="Between 0.0 and 1.0" endparam param palrange caption = "Palette Range" default = 256.0 hint = "256 means use the whole palette." endparam param scale caption = "texture scale" default = 1.0 endparam param wate caption = "texture weight" default = 0.05 endparam param hite caption = "texture warp" default = 0.01 endparam param fbms caption = "texture fBm Weight" default = 0.01 endparam param angle caption = "texture rotation" default = 0.0 endparam param converge caption = "Fractal Type" default = 1 enum = "Convergent" "Divergent" hint = "Mandelbrot is Divergent, Newton is Convergent." endparam param weight caption = "fBm Weight" default = 0.5 min = 0.0 max = 1.0 endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Transfer Weight" default = 1.0 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam param fbmf caption = "fBm Final Weight" default = 10.0 endparam } exp_coral_texture { ; Ron Barnett, October 2003 global: float X[101,101] X[1,1]=0.075,X[2,1]=0.157,X[3,1]=0.278,X[4,1]=0.247,X[5,1]=0.208,X[6,1]=0.216,X[7,1]=0.231,X[8,1]=0.235,X[9,1]=0.227,X[10,1]=0.176,X[11,1]=0.118,X[12,1]=0.067,X[13,1]=0.078,X[14,1]=0.129,X[15,1]=0.192,X[16,1]=0.278,X[17,1]=0.286,X[18,1]=0.200,X[19,1]=0.078,X[20,1]=0.063,X[21,1]=0.075,X[22,1]=0.263,X[23,1]=0.475,X[24,1]=0.380,X[25,1]=0.208,X[26,1]=0.278,X[27,1]=0.361,X[28,1]=0.408,X[29,1]=0.420,X[30,1]=0.412,X[31,1]=0.357,X[32,1]=0.306,X[33,1]=0.431,X[34,1]=0.447,X[35,1]=0.306,X[36,1]=0.361,X[37,1]=0.424,X[38,1]=0.396,X[39,1]=0.400,X[40,1]=0.392,X[41,1]=0.369,X[42,1]=0.388,X[43,1]=0.325,X[44,1]=0.267,X[45,1]=0.239,X[46,1]=0.325,X[47,1]=0.404,X[48,1]=0.427,X[49,1]=0.365,X[50,1]=0.278 X[51,1]=0.200,X[52,1]=0.122,X[53,1]=0.059,X[54,1]=0.149,X[55,1]=0.247,X[56,1]=0.133,X[57,1]=0.063,X[58,1]=0.102,X[59,1]=0.098,X[60,1]=0.063,X[61,1]=0.118,X[62,1]=0.302,X[63,1]=0.302,X[64,1]=0.318,X[65,1]=0.349,X[66,1]=0.396,X[67,1]=0.412,X[68,1]=0.400,X[69,1]=0.345,X[70,1]=0.298,X[71,1]=0.294,X[72,1]=0.271,X[73,1]=0.290,X[74,1]=0.306,X[75,1]=0.286,X[76,1]=0.200,X[77,1]=0.122,X[78,1]=0.075,X[79,1]=0.063,X[80,1]=0.106,X[81,1]=0.294,X[82,1]=0.392,X[83,1]=0.282,X[84,1]=0.302,X[85,1]=0.184,X[86,1]=0.051,X[87,1]=0.059,X[88,1]=0.133,X[89,1]=0.204,X[90,1]=0.192,X[91,1]=0.188,X[92,1]=0.169,X[93,1]=0.180,X[94,1]=0.196,X[95,1]=0.173,X[96,1]=0.192,X[97,1]=0.192,X[98,1]=0.263,X[99,1]=0.294,X[100,1]=0.118 X[1,2]=0.043,X[2,2]=0.165,X[3,2]=0.365,X[4,2]=0.259,X[5,2]=0.208,X[6,2]=0.271,X[7,2]=0.247,X[8,2]=0.173,X[9,2]=0.192,X[10,2]=0.212,X[11,2]=0.188,X[12,2]=0.149,X[13,2]=0.180,X[14,2]=0.224,X[15,2]=0.255,X[16,2]=0.286,X[17,2]=0.169,X[18,2]=0.067,X[19,2]=0.082,X[20,2]=0.063,X[21,2]=0.039,X[22,2]=0.192,X[23,2]=0.353,X[24,2]=0.208,X[25,2]=0.196,X[26,2]=0.247,X[27,2]=0.310,X[28,2]=0.404,X[29,2]=0.439,X[30,2]=0.447,X[31,2]=0.404,X[32,2]=0.325,X[33,2]=0.282,X[34,2]=0.353,X[35,2]=0.180,X[36,2]=0.173,X[37,2]=0.224,X[38,2]=0.169,X[39,2]=0.208,X[40,2]=0.251,X[41,2]=0.384,X[42,2]=0.451,X[43,2]=0.475,X[44,2]=0.459,X[45,2]=0.318,X[46,2]=0.333,X[47,2]=0.416,X[48,2]=0.416,X[49,2]=0.325,X[50,2]=0.325 X[51,2]=0.388,X[52,2]=0.200,X[53,2]=0.059,X[54,2]=0.145,X[55,2]=0.231,X[56,2]=0.133,X[57,2]=0.039,X[58,2]=0.137,X[59,2]=0.188,X[60,2]=0.165,X[61,2]=0.290,X[62,2]=0.400,X[63,2]=0.290,X[64,2]=0.337,X[65,2]=0.337,X[66,2]=0.271,X[67,2]=0.286,X[68,2]=0.341,X[69,2]=0.302,X[70,2]=0.290,X[71,2]=0.310,X[72,2]=0.349,X[73,2]=0.357,X[74,2]=0.400,X[75,2]=0.392,X[76,2]=0.322,X[77,2]=0.259,X[78,2]=0.212,X[79,2]=0.122,X[80,2]=0.243,X[81,2]=0.361,X[82,2]=0.188,X[83,2]=0.071,X[84,2]=0.098,X[85,2]=0.059,X[86,2]=0.067,X[87,2]=0.125,X[88,2]=0.129,X[89,2]=0.157,X[90,2]=0.192,X[91,2]=0.180,X[92,2]=0.180,X[93,2]=0.204,X[94,2]=0.208,X[95,2]=0.192,X[96,2]=0.216,X[97,2]=0.286,X[98,2]=0.278,X[99,2]=0.337,X[100,2]=0.220 X[1,3]=0.118,X[2,3]=0.310,X[3,3]=0.404,X[4,3]=0.216,X[5,3]=0.243,X[6,3]=0.325,X[7,3]=0.310,X[8,3]=0.259,X[9,3]=0.176,X[10,3]=0.161,X[11,3]=0.259,X[12,3]=0.271,X[13,3]=0.247,X[14,3]=0.220,X[15,3]=0.169,X[16,3]=0.204,X[17,3]=0.137,X[18,3]=0.039,X[19,3]=0.047,X[20,3]=0.063,X[21,3]=0.067,X[22,3]=0.141,X[23,3]=0.239,X[24,3]=0.259,X[25,3]=0.329,X[26,3]=0.373,X[27,3]=0.384,X[28,3]=0.455,X[29,3]=0.490,X[30,3]=0.467,X[31,3]=0.431,X[32,3]=0.404,X[33,3]=0.333,X[34,3]=0.267,X[35,3]=0.224,X[36,3]=0.173,X[37,3]=0.180,X[38,3]=0.094,X[39,3]=0.051,X[40,3]=0.039,X[41,3]=0.247,X[42,3]=0.396,X[43,3]=0.275,X[44,3]=0.341,X[45,3]=0.290,X[46,3]=0.318,X[47,3]=0.408,X[48,3]=0.388,X[49,3]=0.298,X[50,3]=0.263 X[51,3]=0.318,X[52,3]=0.161,X[53,3]=0.051,X[54,3]=0.137,X[55,3]=0.224,X[56,3]=0.145,X[57,3]=0.059,X[58,3]=0.071,X[59,3]=0.137,X[60,3]=0.325,X[61,3]=0.471,X[62,3]=0.329,X[63,3]=0.275,X[64,3]=0.357,X[65,3]=0.306,X[66,3]=0.271,X[67,3]=0.290,X[68,3]=0.310,X[69,3]=0.329,X[70,3]=0.369,X[71,3]=0.396,X[72,3]=0.408,X[73,3]=0.447,X[74,3]=0.482,X[75,3]=0.486,X[76,3]=0.408,X[77,3]=0.369,X[78,3]=0.412,X[79,3]=0.369,X[80,3]=0.388,X[81,3]=0.361,X[82,3]=0.247,X[83,3]=0.204,X[84,3]=0.204,X[85,3]=0.169,X[86,3]=0.216,X[87,3]=0.271,X[88,3]=0.224,X[89,3]=0.090,X[90,3]=0.133,X[91,3]=0.188,X[92,3]=0.212,X[93,3]=0.243,X[94,3]=0.239,X[95,3]=0.267,X[96,3]=0.306,X[97,3]=0.200,X[98,3]=0.082,X[99,3]=0.278,X[100,3]=0.314 X[1,4]=0.322,X[2,4]=0.420,X[3,4]=0.267,X[4,4]=0.212,X[5,4]=0.361,X[6,4]=0.235,X[7,4]=0.243,X[8,4]=0.314,X[9,4]=0.235,X[10,4]=0.239,X[11,4]=0.376,X[12,4]=0.404,X[13,4]=0.322,X[14,4]=0.294,X[15,4]=0.227,X[16,4]=0.173,X[17,4]=0.110,X[18,4]=0.075,X[19,4]=0.149,X[20,4]=0.212,X[21,4]=0.271,X[22,4]=0.325,X[23,4]=0.373,X[24,4]=0.404,X[25,4]=0.447,X[26,4]=0.451,X[27,4]=0.486,X[28,4]=0.486,X[29,4]=0.447,X[30,4]=0.427,X[31,4]=0.455,X[32,4]=0.459,X[33,4]=0.435,X[34,4]=0.369,X[35,4]=0.286,X[36,4]=0.208,X[37,4]=0.212,X[38,4]=0.180,X[39,4]=0.090,X[40,4]=0.075,X[41,4]=0.184,X[42,4]=0.388,X[43,4]=0.314,X[44,4]=0.267,X[45,4]=0.255,X[46,4]=0.325,X[47,4]=0.380,X[48,4]=0.376,X[49,4]=0.282,X[50,4]=0.306 X[51,4]=0.275,X[52,4]=0.180,X[53,4]=0.110,X[54,4]=0.122,X[55,4]=0.200,X[56,4]=0.145,X[57,4]=0.063,X[58,4]=0.035,X[59,4]=0.027,X[60,4]=0.188,X[61,4]=0.275,X[62,4]=0.196,X[63,4]=0.290,X[64,4]=0.357,X[65,4]=0.341,X[66,4]=0.353,X[67,4]=0.380,X[68,4]=0.400,X[69,4]=0.404,X[70,4]=0.420,X[71,4]=0.467,X[72,4]=0.514,X[73,4]=0.518,X[74,4]=0.424,X[75,4]=0.267,X[76,4]=0.125,X[77,4]=0.145,X[78,4]=0.216,X[79,4]=0.325,X[80,4]=0.427,X[81,4]=0.475,X[82,4]=0.486,X[83,4]=0.463,X[84,4]=0.427,X[85,4]=0.361,X[86,4]=0.267,X[87,4]=0.192,X[88,4]=0.122,X[89,4]=0.122,X[90,4]=0.192,X[91,4]=0.231,X[92,4]=0.220,X[93,4]=0.220,X[94,4]=0.290,X[95,4]=0.282,X[96,4]=0.298,X[97,4]=0.243,X[98,4]=0.157,X[99,4]=0.243,X[100,4]=0.384 X[1,5]=0.447,X[2,5]=0.318,X[3,5]=0.200,X[4,5]=0.184,X[5,5]=0.133,X[6,5]=0.051,X[7,5]=0.157,X[8,5]=0.302,X[9,5]=0.267,X[10,5]=0.384,X[11,5]=0.443,X[12,5]=0.337,X[13,5]=0.263,X[14,5]=0.302,X[15,5]=0.306,X[16,5]=0.278,X[17,5]=0.180,X[18,5]=0.188,X[19,5]=0.290,X[20,5]=0.365,X[21,5]=0.400,X[22,5]=0.439,X[23,5]=0.490,X[24,5]=0.486,X[25,5]=0.494,X[26,5]=0.490,X[27,5]=0.431,X[28,5]=0.345,X[29,5]=0.369,X[30,5]=0.322,X[31,5]=0.318,X[32,5]=0.424,X[33,5]=0.443,X[34,5]=0.420,X[35,5]=0.376,X[36,5]=0.314,X[37,5]=0.231,X[38,5]=0.255,X[39,5]=0.231,X[40,5]=0.165,X[41,5]=0.216,X[42,5]=0.376,X[43,5]=0.463,X[44,5]=0.267,X[45,5]=0.251,X[46,5]=0.337,X[47,5]=0.373,X[48,5]=0.369,X[49,5]=0.267,X[50,5]=0.220 X[51,5]=0.227,X[52,5]=0.251,X[53,5]=0.208,X[54,5]=0.153,X[55,5]=0.173,X[56,5]=0.110,X[57,5]=0.051,X[58,5]=0.086,X[59,5]=0.118,X[60,5]=0.176,X[61,5]=0.216,X[62,5]=0.255,X[63,5]=0.314,X[64,5]=0.353,X[65,5]=0.384,X[66,5]=0.396,X[67,5]=0.420,X[68,5]=0.439,X[69,5]=0.467,X[70,5]=0.502,X[71,5]=0.471,X[72,5]=0.400,X[73,5]=0.416,X[74,5]=0.204,X[75,5]=0.035,X[76,5]=0.055,X[77,5]=0.063,X[78,5]=0.071,X[79,5]=0.169,X[80,5]=0.380,X[81,5]=0.361,X[82,5]=0.282,X[83,5]=0.365,X[84,5]=0.416,X[85,5]=0.310,X[86,5]=0.055,X[87,5]=0.063,X[88,5]=0.157,X[89,5]=0.220,X[90,5]=0.294,X[91,5]=0.298,X[92,5]=0.231,X[93,5]=0.216,X[94,5]=0.263,X[95,5]=0.149,X[96,5]=0.204,X[97,5]=0.337,X[98,5]=0.380,X[99,5]=0.388,X[100,5]=0.443 X[1,6]=0.431,X[2,6]=0.247,X[3,6]=0.204,X[4,6]=0.137,X[5,6]=0.043,X[6,6]=0.102,X[7,6]=0.173,X[8,6]=0.302,X[9,6]=0.380,X[10,6]=0.416,X[11,6]=0.282,X[12,6]=0.247,X[13,6]=0.200,X[14,6]=0.157,X[15,6]=0.220,X[16,6]=0.318,X[17,6]=0.341,X[18,6]=0.267,X[19,6]=0.298,X[20,6]=0.424,X[21,6]=0.471,X[22,6]=0.475,X[23,6]=0.384,X[24,6]=0.282,X[25,6]=0.216,X[26,6]=0.192,X[27,6]=0.286,X[28,6]=0.400,X[29,6]=0.404,X[30,6]=0.286,X[31,6]=0.153,X[32,6]=0.298,X[33,6]=0.404,X[34,6]=0.431,X[35,6]=0.435,X[36,6]=0.404,X[37,6]=0.318,X[38,6]=0.259,X[39,6]=0.247,X[40,6]=0.235,X[41,6]=0.212,X[42,6]=0.235,X[43,6]=0.353,X[44,6]=0.212,X[45,6]=0.251,X[46,6]=0.337,X[47,6]=0.369,X[48,6]=0.349,X[49,6]=0.176,X[50,6]=0.196 X[51,6]=0.227,X[52,6]=0.216,X[53,6]=0.224,X[54,6]=0.208,X[55,6]=0.173,X[56,6]=0.129,X[57,6]=0.137,X[58,6]=0.188,X[59,6]=0.235,X[60,6]=0.271,X[61,6]=0.306,X[62,6]=0.345,X[63,6]=0.376,X[64,6]=0.400,X[65,6]=0.412,X[66,6]=0.435,X[67,6]=0.459,X[68,6]=0.506,X[69,6]=0.506,X[70,6]=0.365,X[71,6]=0.125,X[72,6]=0.153,X[73,6]=0.369,X[74,6]=0.255,X[75,6]=0.039,X[76,6]=0.059,X[77,6]=0.055,X[78,6]=0.125,X[79,6]=0.169,X[80,6]=0.294,X[81,6]=0.396,X[82,6]=0.227,X[83,6]=0.259,X[84,6]=0.263,X[85,6]=0.192,X[86,6]=0.075,X[87,6]=0.086,X[88,6]=0.200,X[89,6]=0.314,X[90,6]=0.278,X[91,6]=0.141,X[92,6]=0.086,X[93,6]=0.216,X[94,6]=0.239,X[95,6]=0.098,X[96,6]=0.047,X[97,6]=0.071,X[98,6]=0.133,X[99,6]=0.227,X[100,6]=0.325 X[1,7]=0.396,X[2,7]=0.318,X[3,7]=0.196,X[4,7]=0.141,X[5,7]=0.129,X[6,7]=0.216,X[7,7]=0.235,X[8,7]=0.337,X[9,7]=0.482,X[10,7]=0.471,X[11,7]=0.314,X[12,7]=0.333,X[13,7]=0.298,X[14,7]=0.247,X[15,7]=0.204,X[16,7]=0.220,X[17,7]=0.298,X[18,7]=0.353,X[19,7]=0.294,X[20,7]=0.302,X[21,7]=0.282,X[22,7]=0.173,X[23,7]=0.059,X[24,7]=0.043,X[25,7]=0.031,X[26,7]=0.090,X[27,7]=0.337,X[28,7]=0.482,X[29,7]=0.369,X[30,7]=0.125,X[31,7]=0.141,X[32,7]=0.310,X[33,7]=0.278,X[34,7]=0.302,X[35,7]=0.392,X[36,7]=0.416,X[37,7]=0.373,X[38,7]=0.341,X[39,7]=0.286,X[40,7]=0.239,X[41,7]=0.263,X[42,7]=0.224,X[43,7]=0.086,X[44,7]=0.102,X[45,7]=0.278,X[46,7]=0.341,X[47,7]=0.373,X[48,7]=0.310,X[49,7]=0.086,X[50,7]=0.094 X[51,7]=0.161,X[52,7]=0.192,X[53,7]=0.196,X[54,7]=0.204,X[55,7]=0.212,X[56,7]=0.220,X[57,7]=0.247,X[58,7]=0.286,X[59,7]=0.337,X[60,7]=0.357,X[61,7]=0.388,X[62,7]=0.431,X[63,7]=0.467,X[64,7]=0.439,X[65,7]=0.439,X[66,7]=0.443,X[67,7]=0.412,X[68,7]=0.376,X[69,7]=0.290,X[70,7]=0.169,X[71,7]=0.020,X[72,7]=0.106,X[73,7]=0.290,X[74,7]=0.357,X[75,7]=0.114,X[76,7]=0.071,X[77,7]=0.145,X[78,7]=0.231,X[79,7]=0.192,X[80,7]=0.208,X[81,7]=0.404,X[82,7]=0.392,X[83,7]=0.325,X[84,7]=0.333,X[85,7]=0.298,X[86,7]=0.247,X[87,7]=0.157,X[88,7]=0.153,X[89,7]=0.157,X[90,7]=0.086,X[91,7]=0.047,X[92,7]=0.067,X[93,7]=0.243,X[94,7]=0.267,X[95,7]=0.102,X[96,7]=0.055,X[97,7]=0.071,X[98,7]=0.051,X[99,7]=0.051,X[100,7]=0.125 X[1,8]=0.302,X[2,8]=0.349,X[3,8]=0.212,X[4,8]=0.212,X[5,8]=0.231,X[6,8]=0.294,X[7,8]=0.349,X[8,8]=0.478,X[9,8]=0.412,X[10,8]=0.341,X[11,8]=0.376,X[12,8]=0.431,X[13,8]=0.518,X[14,8]=0.349,X[15,8]=0.212,X[16,8]=0.224,X[17,8]=0.239,X[18,8]=0.231,X[19,8]=0.137,X[20,8]=0.063,X[21,8]=0.063,X[22,8]=0.035,X[23,8]=0.043,X[24,8]=0.063,X[25,8]=0.086,X[26,8]=0.298,X[27,8]=0.486,X[28,8]=0.361,X[29,8]=0.227,X[30,8]=0.129,X[31,8]=0.102,X[32,8]=0.200,X[33,8]=0.188,X[34,8]=0.192,X[35,8]=0.325,X[36,8]=0.376,X[37,8]=0.380,X[38,8]=0.388,X[39,8]=0.357,X[40,8]=0.302,X[41,8]=0.271,X[42,8]=0.216,X[43,8]=0.078,X[44,8]=0.141,X[45,8]=0.302,X[46,8]=0.337,X[47,8]=0.361,X[48,8]=0.271,X[49,8]=0.075,X[50,8]=0.063 X[51,8]=0.051,X[52,8]=0.122,X[53,8]=0.208,X[54,8]=0.243,X[55,8]=0.275,X[56,8]=0.318,X[57,8]=0.361,X[58,8]=0.384,X[59,8]=0.420,X[60,8]=0.467,X[61,8]=0.482,X[62,8]=0.525,X[63,8]=0.455,X[64,8]=0.400,X[65,8]=0.431,X[66,8]=0.455,X[67,8]=0.439,X[68,8]=0.361,X[69,8]=0.251,X[70,8]=0.176,X[71,8]=0.102,X[72,8]=0.125,X[73,8]=0.231,X[74,8]=0.349,X[75,8]=0.231,X[76,8]=0.184,X[77,8]=0.275,X[78,8]=0.255,X[79,8]=0.090,X[80,8]=0.090,X[81,8]=0.278,X[82,8]=0.431,X[83,8]=0.278,X[84,8]=0.239,X[85,8]=0.263,X[86,8]=0.333,X[87,8]=0.306,X[88,8]=0.212,X[89,8]=0.098,X[90,8]=0.067,X[91,8]=0.047,X[92,8]=0.071,X[93,8]=0.196,X[94,8]=0.318,X[95,8]=0.176,X[96,8]=0.067,X[97,8]=0.071,X[98,8]=0.063,X[99,8]=0.055,X[100,8]=0.082 X[1,9]=0.212,X[2,9]=0.365,X[3,9]=0.282,X[4,9]=0.243,X[5,9]=0.325,X[6,9]=0.349,X[7,9]=0.447,X[8,9]=0.451,X[9,9]=0.129,X[10,9]=0.043,X[11,9]=0.086,X[12,9]=0.263,X[13,9]=0.412,X[14,9]=0.286,X[15,9]=0.278,X[16,9]=0.286,X[17,9]=0.310,X[18,9]=0.255,X[19,9]=0.176,X[20,9]=0.094,X[21,9]=0.055,X[22,9]=0.059,X[23,9]=0.059,X[24,9]=0.063,X[25,9]=0.227,X[26,9]=0.463,X[27,9]=0.451,X[28,9]=0.176,X[29,9]=0.235,X[30,9]=0.259,X[31,9]=0.047,X[32,9]=0.118,X[33,9]=0.192,X[34,9]=0.298,X[35,9]=0.427,X[36,9]=0.369,X[37,9]=0.365,X[38,9]=0.380,X[39,9]=0.369,X[40,9]=0.333,X[41,9]=0.329,X[42,9]=0.275,X[43,9]=0.161,X[44,9]=0.165,X[45,9]=0.302,X[46,9]=0.337,X[47,9]=0.341,X[48,9]=0.220,X[49,9]=0.059,X[50,9]=0.086 X[51,9]=0.176,X[52,9]=0.239,X[53,9]=0.286,X[54,9]=0.329,X[55,9]=0.373,X[56,9]=0.412,X[57,9]=0.459,X[58,9]=0.518,X[59,9]=0.545,X[60,9]=0.510,X[61,9]=0.412,X[62,9]=0.267,X[63,9]=0.204,X[64,9]=0.306,X[65,9]=0.412,X[66,9]=0.443,X[67,9]=0.463,X[68,9]=0.459,X[69,9]=0.388,X[70,9]=0.298,X[71,9]=0.220,X[72,9]=0.176,X[73,9]=0.192,X[74,9]=0.314,X[75,9]=0.329,X[76,9]=0.329,X[77,9]=0.314,X[78,9]=0.145,X[79,9]=0.063,X[80,9]=0.035,X[81,9]=0.059,X[82,9]=0.235,X[83,9]=0.247,X[84,9]=0.278,X[85,9]=0.231,X[86,9]=0.220,X[87,9]=0.341,X[88,9]=0.369,X[89,9]=0.129,X[90,9]=0.063,X[91,9]=0.098,X[92,9]=0.102,X[93,9]=0.165,X[94,9]=0.298,X[95,9]=0.286,X[96,9]=0.102,X[97,9]=0.055,X[98,9]=0.055,X[99,9]=0.094,X[100,9]=0.129 X[1,10]=0.227,X[2,10]=0.341,X[3,10]=0.325,X[4,10]=0.275,X[5,10]=0.286,X[6,10]=0.400,X[7,10]=0.427,X[8,10]=0.192,X[9,10]=0.051,X[10,10]=0.090,X[11,10]=0.176,X[12,10]=0.259,X[13,10]=0.337,X[14,10]=0.259,X[15,10]=0.208,X[16,10]=0.322,X[17,10]=0.306,X[18,10]=0.235,X[19,10]=0.314,X[20,10]=0.243,X[21,10]=0.122,X[22,10]=0.090,X[23,10]=0.047,X[24,10]=0.055,X[25,10]=0.145,X[26,10]=0.329,X[27,10]=0.176,X[28,10]=0.200,X[29,10]=0.349,X[30,10]=0.369,X[31,10]=0.098,X[32,10]=0.149,X[33,10]=0.278,X[34,10]=0.435,X[35,10]=0.345,X[36,10]=0.278,X[37,10]=0.427,X[38,10]=0.373,X[39,10]=0.345,X[40,10]=0.357,X[41,10]=0.345,X[42,10]=0.337,X[43,10]=0.314,X[44,10]=0.282,X[45,10]=0.333,X[46,10]=0.365,X[47,10]=0.349,X[48,10]=0.243,X[49,10]=0.227,X[50,10]=0.290 X[51,10]=0.349,X[52,10]=0.369,X[53,10]=0.384,X[54,10]=0.420,X[55,10]=0.478,X[56,10]=0.541,X[57,10]=0.522,X[58,10]=0.498,X[59,10]=0.373,X[60,10]=0.349,X[61,10]=0.310,X[62,10]=0.192,X[63,10]=0.200,X[64,10]=0.365,X[65,10]=0.482,X[66,10]=0.314,X[67,10]=0.333,X[68,10]=0.459,X[69,10]=0.471,X[70,10]=0.435,X[71,10]=0.369,X[72,10]=0.278,X[73,10]=0.235,X[74,10]=0.361,X[75,10]=0.424,X[76,10]=0.400,X[77,10]=0.376,X[78,10]=0.392,X[79,10]=0.337,X[80,10]=0.149,X[81,10]=0.114,X[82,10]=0.224,X[83,10]=0.259,X[84,10]=0.314,X[85,10]=0.314,X[86,10]=0.251,X[87,10]=0.231,X[88,10]=0.208,X[89,10]=0.075,X[90,10]=0.161,X[91,10]=0.282,X[92,10]=0.263,X[93,10]=0.259,X[94,10]=0.278,X[95,10]=0.329,X[96,10]=0.153,X[97,10]=0.051,X[98,10]=0.094,X[99,10]=0.145,X[100,10]=0.176 X[1,11]=0.329,X[2,11]=0.286,X[3,11]=0.322,X[4,11]=0.314,X[5,11]=0.361,X[6,11]=0.427,X[7,11]=0.282,X[8,11]=0.180,X[9,11]=0.165,X[10,11]=0.227,X[11,11]=0.329,X[12,11]=0.318,X[13,11]=0.204,X[14,11]=0.180,X[15,11]=0.263,X[16,11]=0.322,X[17,11]=0.192,X[18,11]=0.071,X[19,11]=0.180,X[20,11]=0.255,X[21,11]=0.247,X[22,11]=0.173,X[23,11]=0.110,X[24,11]=0.086,X[25,11]=0.055,X[26,11]=0.078,X[27,11]=0.075,X[28,11]=0.220,X[29,11]=0.349,X[30,11]=0.294,X[31,11]=0.157,X[32,11]=0.251,X[33,11]=0.373,X[34,11]=0.384,X[35,11]=0.137,X[36,11]=0.231,X[37,11]=0.408,X[38,11]=0.435,X[39,11]=0.247,X[40,11]=0.275,X[41,11]=0.341,X[42,11]=0.345,X[43,11]=0.353,X[44,11]=0.357,X[45,11]=0.365,X[46,11]=0.376,X[47,11]=0.384,X[48,11]=0.337,X[49,11]=0.357,X[50,11]=0.380 X[51,11]=0.400,X[52,11]=0.435,X[53,11]=0.518,X[54,11]=0.514,X[55,11]=0.494,X[56,11]=0.404,X[57,11]=0.290,X[58,11]=0.278,X[59,11]=0.259,X[60,11]=0.255,X[61,11]=0.333,X[62,11]=0.333,X[63,11]=0.325,X[64,11]=0.478,X[65,11]=0.369,X[66,11]=0.075,X[67,11]=0.180,X[68,11]=0.416,X[69,11]=0.439,X[70,11]=0.475,X[71,11]=0.482,X[72,11]=0.435,X[73,11]=0.365,X[74,11]=0.349,X[75,11]=0.427,X[76,11]=0.345,X[77,11]=0.129,X[78,11]=0.227,X[79,11]=0.361,X[80,11]=0.322,X[81,11]=0.271,X[82,11]=0.255,X[83,11]=0.310,X[84,11]=0.118,X[85,11]=0.129,X[86,11]=0.255,X[87,11]=0.294,X[88,11]=0.169,X[89,11]=0.110,X[90,11]=0.196,X[91,11]=0.384,X[92,11]=0.388,X[93,11]=0.400,X[94,11]=0.392,X[95,11]=0.396,X[96,11]=0.337,X[97,11]=0.263,X[98,11]=0.231,X[99,11]=0.227,X[100,11]=0.247 X[1,12]=0.325,X[2,12]=0.282,X[3,12]=0.361,X[4,12]=0.388,X[5,12]=0.404,X[6,12]=0.345,X[7,12]=0.275,X[8,12]=0.263,X[9,12]=0.255,X[10,12]=0.318,X[11,12]=0.271,X[12,12]=0.125,X[13,12]=0.129,X[14,12]=0.341,X[15,12]=0.373,X[16,12]=0.294,X[17,12]=0.157,X[18,12]=0.039,X[19,12]=0.090,X[20,12]=0.114,X[21,12]=0.180,X[22,12]=0.227,X[23,12]=0.200,X[24,12]=0.153,X[25,12]=0.098,X[26,12]=0.102,X[27,12]=0.173,X[28,12]=0.255,X[29,12]=0.306,X[30,12]=0.173,X[31,12]=0.251,X[32,12]=0.400,X[33,12]=0.271,X[34,12]=0.122,X[35,12]=0.078,X[36,12]=0.231,X[37,12]=0.349,X[38,12]=0.486,X[39,12]=0.239,X[40,12]=0.137,X[41,12]=0.267,X[42,12]=0.310,X[43,12]=0.361,X[44,12]=0.365,X[45,12]=0.373,X[46,12]=0.384,X[47,12]=0.396,X[48,12]=0.396,X[49,12]=0.416,X[50,12]=0.435 X[51,12]=0.463,X[52,12]=0.486,X[53,12]=0.420,X[54,12]=0.314,X[55,12]=0.298,X[56,12]=0.243,X[57,12]=0.216,X[58,12]=0.165,X[59,12]=0.220,X[60,12]=0.247,X[61,12]=0.224,X[62,12]=0.224,X[63,12]=0.239,X[64,12]=0.349,X[65,12]=0.141,X[66,12]=0.102,X[67,12]=0.224,X[68,12]=0.435,X[69,12]=0.376,X[70,12]=0.396,X[71,12]=0.529,X[72,12]=0.561,X[73,12]=0.545,X[74,12]=0.447,X[75,12]=0.392,X[76,12]=0.420,X[77,12]=0.192,X[78,12]=0.082,X[79,12]=0.239,X[80,12]=0.337,X[81,12]=0.239,X[82,12]=0.231,X[83,12]=0.278,X[84,12]=0.086,X[85,12]=0.039,X[86,12]=0.180,X[87,12]=0.349,X[88,12]=0.235,X[89,12]=0.188,X[90,12]=0.278,X[91,12]=0.384,X[92,12]=0.220,X[93,12]=0.239,X[94,12]=0.337,X[95,12]=0.463,X[96,12]=0.494,X[97,12]=0.451,X[98,12]=0.431,X[99,12]=0.400,X[100,12]=0.353 X[1,13]=0.337,X[2,13]=0.361,X[3,13]=0.408,X[4,13]=0.435,X[5,13]=0.408,X[6,13]=0.357,X[7,13]=0.310,X[8,13]=0.345,X[9,13]=0.302,X[10,13]=0.173,X[11,13]=0.067,X[12,13]=0.106,X[13,13]=0.329,X[14,13]=0.329,X[15,13]=0.169,X[16,13]=0.224,X[17,13]=0.153,X[18,13]=0.122,X[19,13]=0.212,X[20,13]=0.192,X[21,13]=0.106,X[22,13]=0.122,X[23,13]=0.200,X[24,13]=0.204,X[25,13]=0.196,X[26,13]=0.243,X[27,13]=0.247,X[28,13]=0.231,X[29,13]=0.278,X[30,13]=0.243,X[31,13]=0.369,X[32,13]=0.345,X[33,13]=0.090,X[34,13]=0.047,X[35,13]=0.055,X[36,13]=0.235,X[37,13]=0.329,X[38,13]=0.329,X[39,13]=0.200,X[40,13]=0.235,X[41,13]=0.290,X[42,13]=0.306,X[43,13]=0.365,X[44,13]=0.376,X[45,13]=0.408,X[46,13]=0.412,X[47,13]=0.412,X[48,13]=0.420,X[49,13]=0.435,X[50,13]=0.451 X[51,13]=0.443,X[52,13]=0.318,X[53,13]=0.114,X[54,13]=0.122,X[55,13]=0.227,X[56,13]=0.263,X[57,13]=0.325,X[58,13]=0.165,X[59,13]=0.184,X[60,13]=0.200,X[61,13]=0.212,X[62,13]=0.204,X[63,13]=0.184,X[64,13]=0.173,X[65,13]=0.184,X[66,13]=0.227,X[67,13]=0.251,X[68,13]=0.290,X[69,13]=0.349,X[70,13]=0.290,X[71,13]=0.271,X[72,13]=0.463,X[73,13]=0.592,X[74,13]=0.373,X[75,13]=0.212,X[76,13]=0.431,X[77,13]=0.384,X[78,13]=0.212,X[79,13]=0.153,X[80,13]=0.086,X[81,13]=0.071,X[82,13]=0.188,X[83,13]=0.169,X[84,13]=0.114,X[85,13]=0.137,X[86,13]=0.208,X[87,13]=0.325,X[88,13]=0.314,X[89,13]=0.239,X[90,13]=0.400,X[91,13]=0.357,X[92,13]=0.161,X[93,13]=0.200,X[94,13]=0.384,X[95,13]=0.459,X[96,13]=0.310,X[97,13]=0.341,X[98,13]=0.396,X[99,13]=0.388,X[100,13]=0.420 X[1,14]=0.110,X[2,14]=0.294,X[3,14]=0.443,X[4,14]=0.467,X[5,14]=0.486,X[6,14]=0.455,X[7,14]=0.416,X[8,14]=0.424,X[9,14]=0.392,X[10,14]=0.337,X[11,14]=0.294,X[12,14]=0.310,X[13,14]=0.369,X[14,14]=0.196,X[15,14]=0.149,X[16,14]=0.224,X[17,14]=0.208,X[18,14]=0.267,X[19,14]=0.302,X[20,14]=0.294,X[21,14]=0.251,X[22,14]=0.149,X[23,14]=0.102,X[24,14]=0.114,X[25,14]=0.216,X[26,14]=0.345,X[27,14]=0.369,X[28,14]=0.318,X[29,14]=0.357,X[30,14]=0.420,X[31,14]=0.404,X[32,14]=0.216,X[33,14]=0.075,X[34,14]=0.063,X[35,14]=0.071,X[36,14]=0.208,X[37,14]=0.278,X[38,14]=0.231,X[39,14]=0.263,X[40,14]=0.302,X[41,14]=0.341,X[42,14]=0.365,X[43,14]=0.408,X[44,14]=0.400,X[45,14]=0.396,X[46,14]=0.412,X[47,14]=0.424,X[48,14]=0.424,X[49,14]=0.420,X[50,14]=0.341 X[51,14]=0.298,X[52,14]=0.176,X[53,14]=0.071,X[54,14]=0.129,X[55,14]=0.227,X[56,14]=0.216,X[57,14]=0.263,X[58,14]=0.110,X[59,14]=0.118,X[60,14]=0.176,X[61,14]=0.216,X[62,14]=0.227,X[63,14]=0.192,X[64,14]=0.188,X[65,14]=0.235,X[66,14]=0.224,X[67,14]=0.141,X[68,14]=0.220,X[69,14]=0.251,X[70,14]=0.098,X[71,14]=0.071,X[72,14]=0.239,X[73,14]=0.365,X[74,14]=0.239,X[75,14]=0.090,X[76,14]=0.345,X[77,14]=0.447,X[78,14]=0.314,X[79,14]=0.153,X[80,14]=0.047,X[81,14]=0.078,X[82,14]=0.176,X[83,14]=0.227,X[84,14]=0.302,X[85,14]=0.329,X[86,14]=0.314,X[87,14]=0.345,X[88,14]=0.384,X[89,14]=0.380,X[90,14]=0.357,X[91,14]=0.173,X[92,14]=0.243,X[93,14]=0.404,X[94,14]=0.451,X[95,14]=0.333,X[96,14]=0.278,X[97,14]=0.231,X[98,14]=0.290,X[99,14]=0.408,X[100,14]=0.306 X[1,15]=0.204,X[2,15]=0.420,X[3,15]=0.475,X[4,15]=0.443,X[5,15]=0.439,X[6,15]=0.247,X[7,15]=0.306,X[8,15]=0.278,X[9,15]=0.247,X[10,15]=0.310,X[11,15]=0.369,X[12,15]=0.416,X[13,15]=0.443,X[14,15]=0.443,X[15,15]=0.396,X[16,15]=0.353,X[17,15]=0.318,X[18,15]=0.267,X[19,15]=0.318,X[20,15]=0.353,X[21,15]=0.353,X[22,15]=0.302,X[23,15]=0.208,X[24,15]=0.129,X[25,15]=0.231,X[26,15]=0.373,X[27,15]=0.404,X[28,15]=0.373,X[29,15]=0.412,X[30,15]=0.459,X[31,15]=0.294,X[32,15]=0.165,X[33,15]=0.078,X[34,15]=0.090,X[35,15]=0.165,X[36,15]=0.239,X[37,15]=0.282,X[38,15]=0.318,X[39,15]=0.357,X[40,15]=0.380,X[41,15]=0.404,X[42,15]=0.416,X[43,15]=0.427,X[44,15]=0.412,X[45,15]=0.420,X[46,15]=0.424,X[47,15]=0.451,X[48,15]=0.435,X[49,15]=0.435,X[50,15]=0.400 X[51,15]=0.282,X[52,15]=0.169,X[53,15]=0.078,X[54,15]=0.125,X[55,15]=0.224,X[56,15]=0.133,X[57,15]=0.071,X[58,15]=0.075,X[59,15]=0.051,X[60,15]=0.063,X[61,15]=0.118,X[62,15]=0.196,X[63,15]=0.212,X[64,15]=0.216,X[65,15]=0.290,X[66,15]=0.294,X[67,15]=0.231,X[68,15]=0.165,X[69,15]=0.063,X[70,15]=0.055,X[71,15]=0.051,X[72,15]=0.165,X[73,15]=0.290,X[74,15]=0.243,X[75,15]=0.063,X[76,15]=0.141,X[77,15]=0.161,X[78,15]=0.157,X[79,15]=0.118,X[80,15]=0.063,X[81,15]=0.106,X[82,15]=0.192,X[83,15]=0.235,X[84,15]=0.337,X[85,15]=0.396,X[86,15]=0.373,X[87,15]=0.412,X[88,15]=0.459,X[89,15]=0.431,X[90,15]=0.196,X[91,15]=0.129,X[92,15]=0.298,X[93,15]=0.431,X[94,15]=0.302,X[95,15]=0.275,X[96,15]=0.286,X[97,15]=0.263,X[98,15]=0.408,X[99,15]=0.380,X[100,15]=0.153 X[1,16]=0.408,X[2,16]=0.525,X[3,16]=0.392,X[4,16]=0.306,X[5,16]=0.400,X[6,16]=0.255,X[7,16]=0.235,X[8,16]=0.106,X[9,16]=0.031,X[10,16]=0.047,X[11,16]=0.106,X[12,16]=0.341,X[13,16]=0.412,X[14,16]=0.388,X[15,16]=0.431,X[16,16]=0.478,X[17,16]=0.420,X[18,16]=0.129,X[19,16]=0.157,X[20,16]=0.306,X[21,16]=0.380,X[22,16]=0.365,X[23,16]=0.333,X[24,16]=0.278,X[25,16]=0.247,X[26,16]=0.235,X[27,16]=0.337,X[28,16]=0.298,X[29,16]=0.329,X[30,16]=0.400,X[31,16]=0.306,X[32,16]=0.192,X[33,16]=0.180,X[34,16]=0.243,X[35,16]=0.298,X[36,16]=0.349,X[37,16]=0.388,X[38,16]=0.396,X[39,16]=0.427,X[40,16]=0.459,X[41,16]=0.463,X[42,16]=0.424,X[43,16]=0.349,X[44,16]=0.396,X[45,16]=0.424,X[46,16]=0.463,X[47,16]=0.518,X[48,16]=0.502,X[49,16]=0.529,X[50,16]=0.451 X[51,16]=0.388,X[52,16]=0.302,X[53,16]=0.173,X[54,16]=0.125,X[55,16]=0.220,X[56,16]=0.145,X[57,16]=0.051,X[58,16]=0.051,X[59,16]=0.055,X[60,16]=0.059,X[61,16]=0.110,X[62,16]=0.220,X[63,16]=0.282,X[64,16]=0.259,X[65,16]=0.329,X[66,16]=0.329,X[67,16]=0.306,X[68,16]=0.263,X[69,16]=0.169,X[70,16]=0.094,X[71,16]=0.063,X[72,16]=0.192,X[73,16]=0.333,X[74,16]=0.271,X[75,16]=0.075,X[76,16]=0.059,X[77,16]=0.106,X[78,16]=0.149,X[79,16]=0.102,X[80,16]=0.133,X[81,16]=0.220,X[82,16]=0.239,X[83,16]=0.271,X[84,16]=0.271,X[85,16]=0.184,X[86,16]=0.110,X[87,16]=0.165,X[88,16]=0.337,X[89,16]=0.404,X[90,16]=0.227,X[91,16]=0.227,X[92,16]=0.275,X[93,16]=0.290,X[94,16]=0.314,X[95,16]=0.310,X[96,16]=0.329,X[97,16]=0.420,X[98,16]=0.404,X[99,16]=0.216,X[100,16]=0.216 X[1,17]=0.498,X[2,17]=0.384,X[3,17]=0.192,X[4,17]=0.106,X[5,17]=0.333,X[6,17]=0.322,X[7,17]=0.192,X[8,17]=0.153,X[9,17]=0.086,X[10,17]=0.051,X[11,17]=0.035,X[12,17]=0.200,X[13,17]=0.376,X[14,17]=0.122,X[15,17]=0.129,X[16,17]=0.247,X[17,17]=0.231,X[18,17]=0.059,X[19,17]=0.051,X[20,17]=0.090,X[21,17]=0.200,X[22,17]=0.325,X[23,17]=0.365,X[24,17]=0.345,X[25,17]=0.314,X[26,17]=0.267,X[27,17]=0.263,X[28,17]=0.184,X[29,17]=0.235,X[30,17]=0.290,X[31,17]=0.271,X[32,17]=0.278,X[33,17]=0.325,X[34,17]=0.365,X[35,17]=0.392,X[36,17]=0.431,X[37,17]=0.482,X[38,17]=0.510,X[39,17]=0.490,X[40,17]=0.478,X[41,17]=0.502,X[42,17]=0.451,X[43,17]=0.373,X[44,17]=0.396,X[45,17]=0.431,X[46,17]=0.494,X[47,17]=0.455,X[48,17]=0.431,X[49,17]=0.490,X[50,17]=0.490 X[51,17]=0.431,X[52,17]=0.404,X[53,17]=0.333,X[54,17]=0.220,X[55,17]=0.212,X[56,17]=0.145,X[57,17]=0.055,X[58,17]=0.078,X[59,17]=0.129,X[60,17]=0.212,X[61,17]=0.322,X[62,17]=0.357,X[63,17]=0.271,X[64,17]=0.251,X[65,17]=0.259,X[66,17]=0.247,X[67,17]=0.255,X[68,17]=0.325,X[69,17]=0.345,X[70,17]=0.247,X[71,17]=0.129,X[72,17]=0.196,X[73,17]=0.349,X[74,17]=0.298,X[75,17]=0.118,X[76,17]=0.165,X[77,17]=0.204,X[78,17]=0.192,X[79,17]=0.200,X[80,17]=0.282,X[81,17]=0.318,X[82,17]=0.271,X[83,17]=0.263,X[84,17]=0.341,X[85,17]=0.208,X[86,17]=0.094,X[87,17]=0.071,X[88,17]=0.220,X[89,17]=0.396,X[90,17]=0.325,X[91,17]=0.302,X[92,17]=0.227,X[93,17]=0.247,X[94,17]=0.353,X[95,17]=0.263,X[96,17]=0.365,X[97,17]=0.498,X[98,17]=0.451,X[99,17]=0.310,X[100,17]=0.353 X[1,18]=0.455,X[2,18]=0.196,X[3,18]=0.035,X[4,18]=0.078,X[5,18]=0.255,X[6,18]=0.369,X[7,18]=0.255,X[8,18]=0.235,X[9,18]=0.141,X[10,18]=0.047,X[11,18]=0.051,X[12,18]=0.090,X[13,18]=0.369,X[14,18]=0.302,X[15,18]=0.129,X[16,18]=0.188,X[17,18]=0.141,X[18,18]=0.055,X[19,18]=0.047,X[20,18]=0.055,X[21,18]=0.039,X[22,18]=0.145,X[23,18]=0.302,X[24,18]=0.333,X[25,18]=0.337,X[26,18]=0.322,X[27,18]=0.267,X[28,18]=0.188,X[29,18]=0.231,X[30,18]=0.314,X[31,18]=0.353,X[32,18]=0.376,X[33,18]=0.416,X[34,18]=0.475,X[35,18]=0.502,X[36,18]=0.529,X[37,18]=0.510,X[38,18]=0.325,X[39,18]=0.188,X[40,18]=0.227,X[41,18]=0.302,X[42,18]=0.447,X[43,18]=0.408,X[44,18]=0.380,X[45,18]=0.443,X[46,18]=0.498,X[47,18]=0.420,X[48,18]=0.271,X[49,18]=0.290,X[50,18]=0.416 X[51,18]=0.455,X[52,18]=0.459,X[53,18]=0.424,X[54,18]=0.345,X[55,18]=0.255,X[56,18]=0.157,X[57,18]=0.082,X[58,18]=0.153,X[59,18]=0.286,X[60,18]=0.345,X[61,18]=0.255,X[62,18]=0.129,X[63,18]=0.145,X[64,18]=0.227,X[65,18]=0.173,X[66,18]=0.141,X[67,18]=0.212,X[68,18]=0.251,X[69,18]=0.322,X[70,18]=0.318,X[71,18]=0.161,X[72,18]=0.192,X[73,18]=0.243,X[74,18]=0.227,X[75,18]=0.216,X[76,18]=0.208,X[77,18]=0.188,X[78,18]=0.247,X[79,18]=0.349,X[80,18]=0.325,X[81,18]=0.267,X[82,18]=0.314,X[83,18]=0.204,X[84,18]=0.176,X[85,18]=0.251,X[86,18]=0.278,X[87,18]=0.235,X[88,18]=0.239,X[89,18]=0.345,X[90,18]=0.314,X[91,18]=0.149,X[92,18]=0.169,X[93,18]=0.235,X[94,18]=0.302,X[95,18]=0.314,X[96,18]=0.357,X[97,18]=0.376,X[98,18]=0.369,X[99,18]=0.369,X[100,18]=0.431 X[1,19]=0.224,X[2,19]=0.161,X[3,19]=0.118,X[4,19]=0.180,X[5,19]=0.231,X[6,19]=0.357,X[7,19]=0.318,X[8,19]=0.137,X[9,19]=0.039,X[10,19]=0.051,X[11,19]=0.063,X[12,19]=0.047,X[13,19]=0.251,X[14,19]=0.451,X[15,19]=0.243,X[16,19]=0.200,X[17,19]=0.212,X[18,19]=0.141,X[19,19]=0.059,X[20,19]=0.118,X[21,19]=0.176,X[22,19]=0.180,X[23,19]=0.239,X[24,19]=0.243,X[25,19]=0.310,X[26,19]=0.353,X[27,19]=0.329,X[28,19]=0.322,X[29,19]=0.345,X[30,19]=0.412,X[31,19]=0.455,X[32,19]=0.478,X[33,19]=0.525,X[34,19]=0.506,X[35,19]=0.478,X[36,19]=0.494,X[37,19]=0.345,X[38,19]=0.153,X[39,19]=0.157,X[40,19]=0.227,X[41,19]=0.306,X[42,19]=0.310,X[43,19]=0.263,X[44,19]=0.380,X[45,19]=0.467,X[46,19]=0.486,X[47,19]=0.420,X[48,19]=0.286,X[49,19]=0.102,X[50,19]=0.200 X[51,19]=0.357,X[52,19]=0.427,X[53,19]=0.459,X[54,19]=0.416,X[55,19]=0.365,X[56,19]=0.298,X[57,19]=0.176,X[58,19]=0.129,X[59,19]=0.192,X[60,19]=0.149,X[61,19]=0.051,X[62,19]=0.043,X[63,19]=0.157,X[64,19]=0.243,X[65,19]=0.204,X[66,19]=0.071,X[67,19]=0.086,X[68,19]=0.149,X[69,19]=0.212,X[70,19]=0.224,X[71,19]=0.196,X[72,19]=0.180,X[73,19]=0.180,X[74,19]=0.180,X[75,19]=0.204,X[76,19]=0.231,X[77,19]=0.318,X[78,19]=0.349,X[79,19]=0.239,X[80,19]=0.098,X[81,19]=0.122,X[82,19]=0.282,X[83,19]=0.286,X[84,19]=0.153,X[85,19]=0.204,X[86,19]=0.294,X[87,19]=0.349,X[88,19]=0.282,X[89,19]=0.212,X[90,19]=0.353,X[91,19]=0.145,X[92,19]=0.067,X[93,19]=0.196,X[94,19]=0.365,X[95,19]=0.459,X[96,19]=0.384,X[97,19]=0.322,X[98,19]=0.337,X[99,19]=0.400,X[100,19]=0.357 X[1,20]=0.176,X[2,20]=0.184,X[3,20]=0.200,X[4,20]=0.239,X[5,20]=0.192,X[6,20]=0.267,X[7,20]=0.322,X[8,20]=0.157,X[9,20]=0.102,X[10,20]=0.063,X[11,20]=0.051,X[12,20]=0.106,X[13,20]=0.216,X[14,20]=0.302,X[15,20]=0.243,X[16,20]=0.224,X[17,20]=0.286,X[18,20]=0.286,X[19,20]=0.176,X[20,20]=0.227,X[21,20]=0.361,X[22,20]=0.310,X[23,20]=0.282,X[24,20]=0.302,X[25,20]=0.353,X[26,20]=0.384,X[27,20]=0.400,X[28,20]=0.384,X[29,20]=0.416,X[30,20]=0.514,X[31,20]=0.576,X[32,20]=0.498,X[33,20]=0.361,X[34,20]=0.325,X[35,20]=0.427,X[36,20]=0.384,X[37,20]=0.227,X[38,20]=0.220,X[39,20]=0.259,X[40,20]=0.329,X[41,20]=0.251,X[42,20]=0.102,X[43,20]=0.227,X[44,20]=0.392,X[45,20]=0.439,X[46,20]=0.443,X[47,20]=0.298,X[48,20]=0.184,X[49,20]=0.067,X[50,20]=0.055 X[51,20]=0.129,X[52,20]=0.251,X[53,20]=0.388,X[54,20]=0.431,X[55,20]=0.416,X[56,20]=0.396,X[57,20]=0.341,X[58,20]=0.235,X[59,20]=0.114,X[60,20]=0.051,X[61,20]=0.039,X[62,20]=0.055,X[63,20]=0.165,X[64,20]=0.263,X[65,20]=0.310,X[66,20]=0.075,X[67,20]=0.086,X[68,20]=0.145,X[69,20]=0.224,X[70,20]=0.267,X[71,20]=0.290,X[72,20]=0.271,X[73,20]=0.227,X[74,20]=0.212,X[75,20]=0.235,X[76,20]=0.306,X[77,20]=0.263,X[78,20]=0.263,X[79,20]=0.325,X[80,20]=0.275,X[81,20]=0.255,X[82,20]=0.298,X[83,20]=0.333,X[84,20]=0.239,X[85,20]=0.263,X[86,20]=0.286,X[87,20]=0.192,X[88,20]=0.090,X[89,20]=0.059,X[90,20]=0.306,X[91,20]=0.267,X[92,20]=0.094,X[93,20]=0.255,X[94,20]=0.435,X[95,20]=0.420,X[96,20]=0.255,X[97,20]=0.278,X[98,20]=0.443,X[99,20]=0.478,X[100,20]=0.286 X[1,21]=0.106,X[2,21]=0.235,X[3,21]=0.318,X[4,21]=0.290,X[5,21]=0.224,X[6,21]=0.290,X[7,21]=0.388,X[8,21]=0.388,X[9,21]=0.376,X[10,21]=0.310,X[11,21]=0.247,X[12,21]=0.267,X[13,21]=0.314,X[14,21]=0.216,X[15,21]=0.200,X[16,21]=0.259,X[17,21]=0.259,X[18,21]=0.239,X[19,21]=0.271,X[20,21]=0.271,X[21,21]=0.310,X[22,21]=0.318,X[23,21]=0.349,X[24,21]=0.376,X[25,21]=0.396,X[26,21]=0.404,X[27,21]=0.420,X[28,21]=0.443,X[29,21]=0.478,X[30,21]=0.482,X[31,21]=0.380,X[32,21]=0.349,X[33,21]=0.310,X[34,21]=0.369,X[35,21]=0.376,X[36,21]=0.251,X[37,21]=0.224,X[38,21]=0.239,X[39,21]=0.231,X[40,21]=0.200,X[41,21]=0.145,X[42,21]=0.082,X[43,21]=0.267,X[44,21]=0.396,X[45,21]=0.451,X[46,21]=0.416,X[47,21]=0.247,X[48,21]=0.122,X[49,21]=0.059,X[50,21]=0.098 X[51,21]=0.196,X[52,21]=0.278,X[53,21]=0.235,X[54,21]=0.314,X[55,21]=0.404,X[56,21]=0.416,X[57,21]=0.400,X[58,21]=0.345,X[59,21]=0.275,X[60,21]=0.176,X[61,21]=0.102,X[62,21]=0.086,X[63,21]=0.169,X[64,21]=0.231,X[65,21]=0.255,X[66,21]=0.220,X[67,21]=0.255,X[68,21]=0.314,X[69,21]=0.341,X[70,21]=0.380,X[71,21]=0.416,X[72,21]=0.424,X[73,21]=0.380,X[74,21]=0.278,X[75,21]=0.239,X[76,21]=0.149,X[77,21]=0.055,X[78,21]=0.176,X[79,21]=0.341,X[80,21]=0.376,X[81,21]=0.400,X[82,21]=0.384,X[83,21]=0.416,X[84,21]=0.388,X[85,21]=0.349,X[86,21]=0.286,X[87,21]=0.204,X[88,21]=0.114,X[89,21]=0.078,X[90,21]=0.212,X[91,21]=0.306,X[92,21]=0.239,X[93,21]=0.380,X[94,21]=0.384,X[95,21]=0.255,X[96,21]=0.282,X[97,21]=0.427,X[98,21]=0.451,X[99,21]=0.349,X[100,21]=0.361 X[1,22]=0.278,X[2,22]=0.400,X[3,22]=0.396,X[4,22]=0.322,X[5,22]=0.345,X[6,22]=0.435,X[7,22]=0.435,X[8,22]=0.420,X[9,22]=0.333,X[10,22]=0.416,X[11,22]=0.443,X[12,22]=0.349,X[13,22]=0.196,X[14,22]=0.204,X[15,22]=0.212,X[16,22]=0.278,X[17,22]=0.239,X[18,22]=0.208,X[19,22]=0.278,X[20,22]=0.302,X[21,22]=0.349,X[22,22]=0.384,X[23,22]=0.396,X[24,22]=0.396,X[25,22]=0.424,X[26,22]=0.447,X[27,22]=0.439,X[28,22]=0.459,X[29,22]=0.447,X[30,22]=0.384,X[31,22]=0.357,X[32,22]=0.380,X[33,22]=0.420,X[34,22]=0.412,X[35,22]=0.310,X[36,22]=0.251,X[37,22]=0.259,X[38,22]=0.286,X[39,22]=0.255,X[40,22]=0.196,X[41,22]=0.169,X[42,22]=0.224,X[43,22]=0.298,X[44,22]=0.384,X[45,22]=0.459,X[46,22]=0.400,X[47,22]=0.231,X[48,22]=0.137,X[49,22]=0.094,X[50,22]=0.224 X[51,22]=0.322,X[52,22]=0.239,X[53,22]=0.086,X[54,22]=0.165,X[55,22]=0.306,X[56,22]=0.373,X[57,22]=0.412,X[58,22]=0.380,X[59,22]=0.333,X[60,22]=0.298,X[61,22]=0.227,X[62,22]=0.149,X[63,22]=0.212,X[64,22]=0.282,X[65,22]=0.310,X[66,22]=0.361,X[67,22]=0.373,X[68,22]=0.420,X[69,22]=0.478,X[70,22]=0.475,X[71,22]=0.506,X[72,22]=0.494,X[73,22]=0.400,X[74,22]=0.345,X[75,22]=0.271,X[76,22]=0.192,X[77,22]=0.098,X[78,22]=0.098,X[79,22]=0.184,X[80,22]=0.255,X[81,22]=0.255,X[82,22]=0.349,X[83,22]=0.490,X[84,22]=0.478,X[85,22]=0.435,X[86,22]=0.431,X[87,22]=0.416,X[88,22]=0.376,X[89,22]=0.318,X[90,22]=0.302,X[91,22]=0.380,X[92,22]=0.408,X[93,22]=0.384,X[94,22]=0.239,X[95,22]=0.231,X[96,22]=0.404,X[97,22]=0.490,X[98,22]=0.220,X[99,22]=0.129,X[100,22]=0.396 X[1,23]=0.412,X[2,23]=0.345,X[3,23]=0.271,X[4,23]=0.251,X[5,23]=0.420,X[6,23]=0.443,X[7,23]=0.376,X[8,23]=0.447,X[9,23]=0.278,X[10,23]=0.216,X[11,23]=0.196,X[12,23]=0.133,X[13,23]=0.137,X[14,23]=0.200,X[15,23]=0.188,X[16,23]=0.231,X[17,23]=0.271,X[18,23]=0.298,X[19,23]=0.341,X[20,23]=0.376,X[21,23]=0.376,X[22,23]=0.427,X[23,23]=0.459,X[24,23]=0.471,X[25,23]=0.475,X[26,23]=0.349,X[27,23]=0.388,X[28,23]=0.475,X[29,23]=0.357,X[30,23]=0.169,X[31,23]=0.286,X[32,23]=0.404,X[33,23]=0.455,X[34,23]=0.443,X[35,23]=0.455,X[36,23]=0.408,X[37,23]=0.380,X[38,23]=0.341,X[39,23]=0.286,X[40,23]=0.302,X[41,23]=0.263,X[42,23]=0.310,X[43,23]=0.298,X[44,23]=0.400,X[45,23]=0.431,X[46,23]=0.388,X[47,23]=0.239,X[48,23]=0.137,X[49,23]=0.086,X[50,23]=0.216 X[51,23]=0.173,X[52,23]=0.137,X[53,23]=0.086,X[54,23]=0.161,X[55,23]=0.267,X[56,23]=0.263,X[57,23]=0.322,X[58,23]=0.380,X[59,23]=0.373,X[60,23]=0.357,X[61,23]=0.318,X[62,23]=0.290,X[63,23]=0.302,X[64,23]=0.365,X[65,23]=0.420,X[66,23]=0.451,X[67,23]=0.475,X[68,23]=0.447,X[69,23]=0.439,X[70,23]=0.400,X[71,23]=0.310,X[72,23]=0.235,X[73,23]=0.322,X[74,23]=0.318,X[75,23]=0.224,X[76,23]=0.325,X[77,23]=0.247,X[78,23]=0.165,X[79,23]=0.176,X[80,23]=0.286,X[81,23]=0.286,X[82,23]=0.443,X[83,23]=0.353,X[84,23]=0.200,X[85,23]=0.247,X[86,23]=0.286,X[87,23]=0.278,X[88,23]=0.286,X[89,23]=0.298,X[90,23]=0.357,X[91,23]=0.427,X[92,23]=0.443,X[93,23]=0.416,X[94,23]=0.369,X[95,23]=0.341,X[96,23]=0.463,X[97,23]=0.325,X[98,23]=0.102,X[99,23]=0.086,X[100,23]=0.357 X[1,24]=0.365,X[2,24]=0.259,X[3,24]=0.259,X[4,24]=0.337,X[5,24]=0.451,X[6,24]=0.294,X[7,24]=0.310,X[8,24]=0.431,X[9,24]=0.384,X[10,24]=0.212,X[11,24]=0.149,X[12,24]=0.098,X[13,24]=0.145,X[14,24]=0.220,X[15,24]=0.208,X[16,24]=0.235,X[17,24]=0.318,X[18,24]=0.380,X[19,24]=0.420,X[20,24]=0.455,X[21,24]=0.482,X[22,24]=0.529,X[23,24]=0.518,X[24,24]=0.380,X[25,24]=0.259,X[26,24]=0.184,X[27,24]=0.365,X[28,24]=0.510,X[29,24]=0.353,X[30,24]=0.145,X[31,24]=0.345,X[32,24]=0.463,X[33,24]=0.471,X[34,24]=0.443,X[35,24]=0.259,X[36,24]=0.314,X[37,24]=0.431,X[38,24]=0.404,X[39,24]=0.420,X[40,24]=0.416,X[41,24]=0.392,X[42,24]=0.329,X[43,24]=0.294,X[44,24]=0.396,X[45,24]=0.420,X[46,24]=0.341,X[47,24]=0.212,X[48,24]=0.153,X[49,24]=0.118,X[50,24]=0.180 X[51,24]=0.235,X[52,24]=0.231,X[53,24]=0.122,X[54,24]=0.161,X[55,24]=0.337,X[56,24]=0.231,X[57,24]=0.118,X[58,24]=0.255,X[59,24]=0.345,X[60,24]=0.341,X[61,24]=0.345,X[62,24]=0.361,X[63,24]=0.361,X[64,24]=0.380,X[65,24]=0.388,X[66,24]=0.333,X[67,24]=0.302,X[68,24]=0.337,X[69,24]=0.322,X[70,24]=0.200,X[71,24]=0.086,X[72,24]=0.173,X[73,24]=0.302,X[74,24]=0.208,X[75,24]=0.067,X[76,24]=0.169,X[77,24]=0.255,X[78,24]=0.259,X[79,24]=0.188,X[80,24]=0.282,X[81,24]=0.455,X[82,24]=0.404,X[83,24]=0.224,X[84,24]=0.200,X[85,24]=0.180,X[86,24]=0.184,X[87,24]=0.216,X[88,24]=0.184,X[89,24]=0.125,X[90,24]=0.329,X[91,24]=0.471,X[92,24]=0.471,X[93,24]=0.451,X[94,24]=0.408,X[95,24]=0.416,X[96,24]=0.451,X[97,24]=0.400,X[98,24]=0.373,X[99,24]=0.318,X[100,24]=0.384 X[1,25]=0.455,X[2,25]=0.447,X[3,25]=0.408,X[4,25]=0.427,X[5,25]=0.384,X[6,25]=0.267,X[7,25]=0.220,X[8,25]=0.349,X[9,25]=0.486,X[10,25]=0.243,X[11,25]=0.176,X[12,25]=0.188,X[13,25]=0.212,X[14,25]=0.231,X[15,25]=0.224,X[16,25]=0.243,X[17,25]=0.361,X[18,25]=0.439,X[19,25]=0.490,X[20,25]=0.502,X[21,25]=0.424,X[22,25]=0.290,X[23,25]=0.239,X[24,25]=0.184,X[25,25]=0.196,X[26,25]=0.247,X[27,25]=0.396,X[28,25]=0.478,X[29,25]=0.376,X[30,25]=0.310,X[31,25]=0.482,X[32,25]=0.373,X[33,25]=0.239,X[34,25]=0.412,X[35,25]=0.176,X[36,25]=0.137,X[37,25]=0.275,X[38,25]=0.306,X[39,25]=0.380,X[40,25]=0.306,X[41,25]=0.376,X[42,25]=0.357,X[43,25]=0.322,X[44,25]=0.373,X[45,25]=0.408,X[46,25]=0.345,X[47,25]=0.235,X[48,25]=0.184,X[49,25]=0.255,X[50,25]=0.361 X[51,25]=0.333,X[52,25]=0.169,X[53,25]=0.039,X[54,25]=0.176,X[55,25]=0.373,X[56,25]=0.251,X[57,25]=0.071,X[58,25]=0.086,X[59,25]=0.180,X[60,25]=0.302,X[61,25]=0.373,X[62,25]=0.376,X[63,25]=0.380,X[64,25]=0.408,X[65,25]=0.376,X[66,25]=0.271,X[67,25]=0.267,X[68,25]=0.267,X[69,25]=0.149,X[70,25]=0.059,X[71,25]=0.063,X[72,25]=0.165,X[73,25]=0.267,X[74,25]=0.188,X[75,25]=0.063,X[76,25]=0.059,X[77,25]=0.090,X[78,25]=0.176,X[79,25]=0.224,X[80,25]=0.302,X[81,25]=0.353,X[82,25]=0.204,X[83,25]=0.180,X[84,25]=0.192,X[85,25]=0.224,X[86,25]=0.337,X[87,25]=0.349,X[88,25]=0.231,X[89,25]=0.298,X[90,25]=0.455,X[91,25]=0.333,X[92,25]=0.392,X[93,25]=0.392,X[94,25]=0.216,X[95,25]=0.216,X[96,25]=0.227,X[97,25]=0.220,X[98,25]=0.286,X[99,25]=0.341,X[100,25]=0.416 X[1,26]=0.384,X[2,26]=0.400,X[3,26]=0.506,X[4,26]=0.490,X[5,26]=0.396,X[6,26]=0.310,X[7,26]=0.208,X[8,26]=0.247,X[9,26]=0.341,X[10,26]=0.145,X[11,26]=0.071,X[12,26]=0.157,X[13,26]=0.224,X[14,26]=0.251,X[15,26]=0.275,X[16,26]=0.263,X[17,26]=0.380,X[18,26]=0.447,X[19,26]=0.384,X[20,26]=0.243,X[21,26]=0.094,X[22,26]=0.055,X[23,26]=0.153,X[24,26]=0.133,X[25,26]=0.137,X[26,26]=0.294,X[27,26]=0.424,X[28,26]=0.494,X[29,26]=0.408,X[30,26]=0.439,X[31,26]=0.435,X[32,26]=0.184,X[33,26]=0.078,X[34,26]=0.357,X[35,26]=0.322,X[36,26]=0.188,X[37,26]=0.224,X[38,26]=0.259,X[39,26]=0.216,X[40,26]=0.075,X[41,26]=0.208,X[42,26]=0.314,X[43,26]=0.322,X[44,26]=0.396,X[45,26]=0.416,X[46,26]=0.353,X[47,26]=0.255,X[48,26]=0.243,X[49,26]=0.337,X[50,26]=0.275 X[51,26]=0.114,X[52,26]=0.031,X[53,26]=0.055,X[54,26]=0.173,X[55,26]=0.333,X[56,26]=0.286,X[57,26]=0.149,X[58,26]=0.055,X[59,26]=0.129,X[60,26]=0.298,X[61,26]=0.384,X[62,26]=0.400,X[63,26]=0.424,X[64,26]=0.408,X[65,26]=0.420,X[66,26]=0.384,X[67,26]=0.271,X[68,26]=0.102,X[69,26]=0.035,X[70,26]=0.047,X[71,26]=0.071,X[72,26]=0.161,X[73,26]=0.235,X[74,26]=0.161,X[75,26]=0.055,X[76,26]=0.039,X[77,26]=0.063,X[78,26]=0.086,X[79,26]=0.184,X[80,26]=0.227,X[81,26]=0.196,X[82,26]=0.169,X[83,26]=0.204,X[84,26]=0.239,X[85,26]=0.235,X[86,26]=0.196,X[87,26]=0.247,X[88,26]=0.294,X[89,26]=0.467,X[90,26]=0.420,X[91,26]=0.141,X[92,26]=0.294,X[93,26]=0.412,X[94,26]=0.278,X[95,26]=0.220,X[96,26]=0.153,X[97,26]=0.051,X[98,26]=0.031,X[99,26]=0.118,X[100,26]=0.376 X[1,27]=0.404,X[2,27]=0.271,X[3,27]=0.267,X[4,27]=0.251,X[5,27]=0.216,X[6,27]=0.220,X[7,27]=0.263,X[8,27]=0.294,X[9,27]=0.231,X[10,27]=0.145,X[11,27]=0.063,X[12,27]=0.082,X[13,27]=0.176,X[14,27]=0.271,X[15,27]=0.235,X[16,27]=0.114,X[17,27]=0.184,X[18,27]=0.180,X[19,27]=0.102,X[20,27]=0.059,X[21,27]=0.047,X[22,27]=0.090,X[23,27]=0.204,X[24,27]=0.227,X[25,27]=0.204,X[26,27]=0.306,X[27,27]=0.431,X[28,27]=0.490,X[29,27]=0.443,X[30,27]=0.451,X[31,27]=0.243,X[32,27]=0.169,X[33,27]=0.153,X[34,27]=0.302,X[35,27]=0.369,X[36,27]=0.224,X[37,27]=0.224,X[38,27]=0.200,X[39,27]=0.090,X[40,27]=0.067,X[41,27]=0.086,X[42,27]=0.243,X[43,27]=0.325,X[44,27]=0.388,X[45,27]=0.404,X[46,27]=0.298,X[47,27]=0.235,X[48,27]=0.243,X[49,27]=0.180,X[50,27]=0.078 X[51,27]=0.035,X[52,27]=0.039,X[53,27]=0.071,X[54,27]=0.075,X[55,27]=0.118,X[56,27]=0.200,X[57,27]=0.184,X[58,27]=0.157,X[59,27]=0.220,X[60,27]=0.318,X[61,27]=0.420,X[62,27]=0.482,X[63,27]=0.486,X[64,27]=0.451,X[65,27]=0.435,X[66,27]=0.427,X[67,27]=0.396,X[68,27]=0.306,X[69,27]=0.157,X[70,27]=0.063,X[71,27]=0.039,X[72,27]=0.145,X[73,27]=0.235,X[74,27]=0.149,X[75,27]=0.039,X[76,27]=0.075,X[77,27]=0.149,X[78,27]=0.227,X[79,27]=0.325,X[80,27]=0.322,X[81,27]=0.224,X[82,27]=0.200,X[83,27]=0.235,X[84,27]=0.235,X[85,27]=0.180,X[86,27]=0.133,X[87,27]=0.231,X[88,27]=0.412,X[89,27]=0.427,X[90,27]=0.243,X[91,27]=0.259,X[92,27]=0.271,X[93,27]=0.365,X[94,27]=0.314,X[95,27]=0.314,X[96,27]=0.282,X[97,27]=0.192,X[98,27]=0.118,X[99,27]=0.145,X[100,27]=0.322 X[1,28]=0.424,X[2,28]=0.325,X[3,28]=0.086,X[4,28]=0.133,X[5,28]=0.196,X[6,28]=0.173,X[7,28]=0.208,X[8,28]=0.243,X[9,28]=0.306,X[10,28]=0.290,X[11,28]=0.129,X[12,28]=0.133,X[13,28]=0.173,X[14,28]=0.263,X[15,28]=0.165,X[16,28]=0.051,X[17,28]=0.075,X[18,28]=0.067,X[19,28]=0.063,X[20,28]=0.059,X[21,28]=0.075,X[22,28]=0.094,X[23,28]=0.212,X[24,28]=0.341,X[25,28]=0.361,X[26,28]=0.353,X[27,28]=0.451,X[28,28]=0.475,X[29,28]=0.388,X[30,28]=0.267,X[31,28]=0.204,X[32,28]=0.220,X[33,28]=0.235,X[34,28]=0.278,X[35,28]=0.357,X[36,28]=0.290,X[37,28]=0.227,X[38,28]=0.200,X[39,28]=0.078,X[40,28]=0.055,X[41,28]=0.086,X[42,28]=0.227,X[43,28]=0.337,X[44,28]=0.380,X[45,28]=0.373,X[46,28]=0.298,X[47,28]=0.333,X[48,28]=0.349,X[49,28]=0.243,X[50,28]=0.184 X[51,28]=0.094,X[52,28]=0.059,X[53,28]=0.059,X[54,28]=0.039,X[55,28]=0.047,X[56,28]=0.176,X[57,28]=0.180,X[58,28]=0.173,X[59,28]=0.224,X[60,28]=0.329,X[61,28]=0.463,X[62,28]=0.459,X[63,28]=0.329,X[64,28]=0.420,X[65,28]=0.482,X[66,28]=0.451,X[67,28]=0.431,X[68,28]=0.420,X[69,28]=0.345,X[70,28]=0.216,X[71,28]=0.106,X[72,28]=0.133,X[73,28]=0.220,X[74,28]=0.165,X[75,28]=0.129,X[76,28]=0.212,X[77,28]=0.282,X[78,28]=0.345,X[79,28]=0.286,X[80,28]=0.173,X[81,28]=0.224,X[82,28]=0.318,X[83,28]=0.341,X[84,28]=0.329,X[85,28]=0.290,X[86,28]=0.247,X[87,28]=0.365,X[88,28]=0.427,X[89,28]=0.333,X[90,28]=0.325,X[91,28]=0.275,X[92,28]=0.216,X[93,28]=0.294,X[94,28]=0.353,X[95,28]=0.239,X[96,28]=0.227,X[97,28]=0.255,X[98,28]=0.235,X[99,28]=0.216,X[100,28]=0.302 X[1,29]=0.349,X[2,29]=0.420,X[3,29]=0.180,X[4,29]=0.137,X[5,29]=0.188,X[6,29]=0.176,X[7,29]=0.192,X[8,29]=0.106,X[9,29]=0.118,X[10,29]=0.188,X[11,29]=0.212,X[12,29]=0.259,X[13,29]=0.200,X[14,29]=0.243,X[15,29]=0.149,X[16,29]=0.075,X[17,29]=0.055,X[18,29]=0.055,X[19,29]=0.075,X[20,29]=0.059,X[21,29]=0.055,X[22,29]=0.110,X[23,29]=0.188,X[24,29]=0.267,X[25,29]=0.306,X[26,29]=0.365,X[27,29]=0.498,X[28,29]=0.514,X[29,29]=0.361,X[30,29]=0.212,X[31,29]=0.231,X[32,29]=0.243,X[33,29]=0.239,X[34,29]=0.208,X[35,29]=0.282,X[36,29]=0.337,X[37,29]=0.216,X[38,29]=0.188,X[39,29]=0.082,X[40,29]=0.035,X[41,29]=0.071,X[42,29]=0.251,X[43,29]=0.349,X[44,29]=0.373,X[45,29]=0.369,X[46,29]=0.286,X[47,29]=0.290,X[48,29]=0.263,X[49,29]=0.278,X[50,29]=0.298 X[51,29]=0.231,X[52,29]=0.157,X[53,29]=0.075,X[54,29]=0.051,X[55,29]=0.063,X[56,29]=0.169,X[57,29]=0.157,X[58,29]=0.157,X[59,29]=0.231,X[60,29]=0.369,X[61,29]=0.463,X[62,29]=0.388,X[63,29]=0.169,X[64,29]=0.278,X[65,29]=0.380,X[66,29]=0.471,X[67,29]=0.486,X[68,29]=0.435,X[69,29]=0.408,X[70,29]=0.380,X[71,29]=0.294,X[72,29]=0.188,X[73,29]=0.196,X[74,29]=0.204,X[75,29]=0.239,X[76,29]=0.318,X[77,29]=0.306,X[78,29]=0.176,X[79,29]=0.071,X[80,29]=0.063,X[81,29]=0.114,X[82,29]=0.318,X[83,29]=0.314,X[84,29]=0.251,X[85,29]=0.337,X[86,29]=0.384,X[87,29]=0.416,X[88,29]=0.298,X[89,29]=0.216,X[90,29]=0.153,X[91,29]=0.086,X[92,29]=0.165,X[93,29]=0.243,X[94,29]=0.361,X[95,29]=0.278,X[96,29]=0.200,X[97,29]=0.235,X[98,29]=0.302,X[99,29]=0.267,X[100,29]=0.220 X[1,30]=0.196,X[2,30]=0.243,X[3,30]=0.204,X[4,30]=0.204,X[5,30]=0.192,X[6,30]=0.188,X[7,30]=0.220,X[8,30]=0.141,X[9,30]=0.161,X[10,30]=0.278,X[11,30]=0.294,X[12,30]=0.161,X[13,30]=0.141,X[14,30]=0.224,X[15,30]=0.165,X[16,30]=0.082,X[17,30]=0.063,X[18,30]=0.090,X[19,30]=0.067,X[20,30]=0.063,X[21,30]=0.051,X[22,30]=0.102,X[23,30]=0.188,X[24,30]=0.204,X[25,30]=0.267,X[26,30]=0.420,X[27,30]=0.549,X[28,30]=0.494,X[29,30]=0.373,X[30,30]=0.282,X[31,30]=0.278,X[32,30]=0.318,X[33,30]=0.290,X[34,30]=0.235,X[35,30]=0.259,X[36,30]=0.353,X[37,30]=0.329,X[38,30]=0.314,X[39,30]=0.216,X[40,30]=0.102,X[41,30]=0.137,X[42,30]=0.278,X[43,30]=0.357,X[44,30]=0.380,X[45,30]=0.318,X[46,30]=0.255,X[47,30]=0.251,X[48,30]=0.149,X[49,30]=0.110,X[50,30]=0.251 X[51,30]=0.384,X[52,30]=0.306,X[53,30]=0.098,X[54,30]=0.051,X[55,30]=0.071,X[56,30]=0.176,X[57,30]=0.157,X[58,30]=0.157,X[59,30]=0.231,X[60,30]=0.361,X[61,30]=0.471,X[62,30]=0.380,X[63,30]=0.192,X[64,30]=0.239,X[65,30]=0.165,X[66,30]=0.255,X[67,30]=0.443,X[68,30]=0.498,X[69,30]=0.482,X[70,30]=0.439,X[71,30]=0.420,X[72,30]=0.349,X[73,30]=0.267,X[74,30]=0.216,X[75,30]=0.239,X[76,30]=0.192,X[77,30]=0.059,X[78,30]=0.047,X[79,30]=0.063,X[80,30]=0.055,X[81,30]=0.075,X[82,30]=0.243,X[83,30]=0.173,X[84,30]=0.106,X[85,30]=0.349,X[86,30]=0.471,X[87,30]=0.447,X[88,30]=0.314,X[89,30]=0.129,X[90,30]=0.027,X[91,30]=0.059,X[92,30]=0.106,X[93,30]=0.224,X[94,30]=0.325,X[95,30]=0.322,X[96,30]=0.271,X[97,30]=0.259,X[98,30]=0.192,X[99,30]=0.153,X[100,30]=0.122 X[1,31]=0.082,X[2,31]=0.149,X[3,31]=0.220,X[4,31]=0.275,X[5,31]=0.231,X[6,31]=0.180,X[7,31]=0.212,X[8,31]=0.251,X[9,31]=0.314,X[10,31]=0.267,X[11,31]=0.114,X[12,31]=0.047,X[13,31]=0.133,X[14,31]=0.220,X[15,31]=0.176,X[16,31]=0.129,X[17,31]=0.157,X[18,31]=0.176,X[19,31]=0.145,X[20,31]=0.075,X[21,31]=0.059,X[22,31]=0.133,X[23,31]=0.188,X[24,31]=0.220,X[25,31]=0.345,X[26,31]=0.471,X[27,31]=0.561,X[28,31]=0.475,X[29,31]=0.361,X[30,31]=0.282,X[31,31]=0.290,X[32,31]=0.369,X[33,31]=0.306,X[34,31]=0.298,X[35,31]=0.369,X[36,31]=0.427,X[37,31]=0.435,X[38,31]=0.388,X[39,31]=0.333,X[40,31]=0.259,X[41,31]=0.275,X[42,31]=0.306,X[43,31]=0.337,X[44,31]=0.365,X[45,31]=0.310,X[46,31]=0.227,X[47,31]=0.227,X[48,31]=0.165,X[49,31]=0.055,X[50,31]=0.059 X[51,31]=0.200,X[52,31]=0.224,X[53,31]=0.055,X[54,31]=0.043,X[55,31]=0.090,X[56,31]=0.180,X[57,31]=0.208,X[58,31]=0.224,X[59,31]=0.278,X[60,31]=0.369,X[61,31]=0.471,X[62,31]=0.357,X[63,31]=0.165,X[64,31]=0.298,X[65,31]=0.114,X[66,31]=0.035,X[67,31]=0.176,X[68,31]=0.388,X[69,31]=0.506,X[70,31]=0.549,X[71,31]=0.549,X[72,31]=0.471,X[73,31]=0.349,X[74,31]=0.192,X[75,31]=0.180,X[76,31]=0.106,X[77,31]=0.055,X[78,31]=0.071,X[79,31]=0.047,X[80,31]=0.063,X[81,31]=0.102,X[82,31]=0.216,X[83,31]=0.212,X[84,31]=0.278,X[85,31]=0.478,X[86,31]=0.376,X[87,31]=0.310,X[88,31]=0.361,X[89,31]=0.094,X[90,31]=0.063,X[91,31]=0.106,X[92,31]=0.169,X[93,31]=0.259,X[94,31]=0.357,X[95,31]=0.392,X[96,31]=0.420,X[97,31]=0.400,X[98,31]=0.345,X[99,31]=0.247,X[100,31]=0.118 X[1,32]=0.063,X[2,32]=0.106,X[3,32]=0.235,X[4,32]=0.361,X[5,32]=0.329,X[6,32]=0.239,X[7,32]=0.192,X[8,32]=0.216,X[9,32]=0.208,X[10,32]=0.086,X[11,32]=0.043,X[12,32]=0.063,X[13,32]=0.129,X[14,32]=0.216,X[15,32]=0.196,X[16,32]=0.188,X[17,32]=0.169,X[18,32]=0.153,X[19,32]=0.192,X[20,32]=0.169,X[21,32]=0.141,X[22,32]=0.204,X[23,32]=0.255,X[24,32]=0.259,X[25,32]=0.333,X[26,32]=0.471,X[27,32]=0.459,X[28,32]=0.384,X[29,32]=0.420,X[30,32]=0.337,X[31,32]=0.263,X[32,32]=0.298,X[33,32]=0.235,X[34,32]=0.322,X[35,32]=0.435,X[36,32]=0.345,X[37,32]=0.322,X[38,32]=0.259,X[39,32]=0.302,X[40,32]=0.333,X[41,32]=0.361,X[42,32]=0.365,X[43,32]=0.357,X[44,32]=0.369,X[45,32]=0.369,X[46,32]=0.337,X[47,32]=0.267,X[48,32]=0.153,X[49,32]=0.059,X[50,32]=0.063 X[51,32]=0.055,X[52,32]=0.059,X[53,32]=0.067,X[54,32]=0.086,X[55,32]=0.149,X[56,32]=0.216,X[57,32]=0.243,X[58,32]=0.278,X[59,32]=0.322,X[60,32]=0.376,X[61,32]=0.463,X[62,32]=0.341,X[63,32]=0.204,X[64,32]=0.396,X[65,32]=0.133,X[66,32]=0.047,X[67,32]=0.086,X[68,32]=0.216,X[69,32]=0.361,X[70,32]=0.490,X[71,32]=0.576,X[72,32]=0.424,X[73,32]=0.251,X[74,32]=0.208,X[75,32]=0.200,X[76,32]=0.196,X[77,32]=0.141,X[78,32]=0.090,X[79,32]=0.063,X[80,32]=0.122,X[81,32]=0.173,X[82,32]=0.227,X[83,32]=0.329,X[84,32]=0.443,X[85,32]=0.443,X[86,32]=0.125,X[87,32]=0.180,X[88,32]=0.404,X[89,32]=0.153,X[90,32]=0.157,X[91,32]=0.247,X[92,32]=0.247,X[93,32]=0.345,X[94,32]=0.455,X[95,32]=0.443,X[96,32]=0.408,X[97,32]=0.318,X[98,32]=0.424,X[99,32]=0.447,X[100,32]=0.255 X[1,33]=0.180,X[2,33]=0.169,X[3,33]=0.325,X[4,33]=0.278,X[5,33]=0.204,X[6,33]=0.255,X[7,33]=0.184,X[8,33]=0.165,X[9,33]=0.216,X[10,33]=0.200,X[11,33]=0.102,X[12,33]=0.047,X[13,33]=0.118,X[14,33]=0.204,X[15,33]=0.180,X[16,33]=0.196,X[17,33]=0.176,X[18,33]=0.122,X[19,33]=0.145,X[20,33]=0.196,X[21,33]=0.263,X[22,33]=0.341,X[23,33]=0.325,X[24,33]=0.290,X[25,33]=0.365,X[26,33]=0.373,X[27,33]=0.263,X[28,33]=0.176,X[29,33]=0.302,X[30,33]=0.388,X[31,33]=0.259,X[32,33]=0.227,X[33,33]=0.216,X[34,33]=0.369,X[35,33]=0.322,X[36,33]=0.259,X[37,33]=0.306,X[38,33]=0.345,X[39,33]=0.384,X[40,33]=0.412,X[41,33]=0.384,X[42,33]=0.361,X[43,33]=0.369,X[44,33]=0.408,X[45,33]=0.439,X[46,33]=0.447,X[47,33]=0.369,X[48,33]=0.243,X[49,33]=0.114,X[50,33]=0.078 X[51,33]=0.067,X[52,33]=0.075,X[53,33]=0.133,X[54,33]=0.208,X[55,33]=0.278,X[56,33]=0.329,X[57,33]=0.294,X[58,33]=0.278,X[59,33]=0.275,X[60,33]=0.396,X[61,33]=0.482,X[62,33]=0.337,X[63,33]=0.153,X[64,33]=0.200,X[65,33]=0.110,X[66,33]=0.118,X[67,33]=0.192,X[68,33]=0.235,X[69,33]=0.212,X[70,33]=0.314,X[71,33]=0.439,X[72,33]=0.290,X[73,33]=0.216,X[74,33]=0.282,X[75,33]=0.290,X[76,33]=0.220,X[77,33]=0.188,X[78,33]=0.169,X[79,33]=0.110,X[80,33]=0.114,X[81,33]=0.165,X[82,33]=0.231,X[83,33]=0.357,X[84,33]=0.420,X[85,33]=0.196,X[86,33]=0.110,X[87,33]=0.216,X[88,33]=0.416,X[89,33]=0.333,X[90,33]=0.286,X[91,33]=0.345,X[92,33]=0.337,X[93,33]=0.451,X[94,33]=0.329,X[95,33]=0.357,X[96,33]=0.431,X[97,33]=0.239,X[98,33]=0.231,X[99,33]=0.282,X[100,33]=0.271 X[1,34]=0.239,X[2,34]=0.208,X[3,34]=0.176,X[4,34]=0.102,X[5,34]=0.098,X[6,34]=0.176,X[7,34]=0.224,X[8,34]=0.325,X[9,34]=0.314,X[10,34]=0.224,X[11,34]=0.114,X[12,34]=0.059,X[13,34]=0.129,X[14,34]=0.192,X[15,34]=0.165,X[16,34]=0.184,X[17,34]=0.176,X[18,34]=0.173,X[19,34]=0.231,X[20,34]=0.353,X[21,34]=0.353,X[22,34]=0.259,X[23,34]=0.231,X[24,34]=0.290,X[25,34]=0.255,X[26,34]=0.255,X[27,34]=0.263,X[28,34]=0.180,X[29,34]=0.149,X[30,34]=0.169,X[31,34]=0.180,X[32,34]=0.196,X[33,34]=0.251,X[34,34]=0.294,X[35,34]=0.325,X[36,34]=0.365,X[37,34]=0.412,X[38,34]=0.475,X[39,34]=0.455,X[40,34]=0.361,X[41,34]=0.333,X[42,34]=0.396,X[43,34]=0.400,X[44,34]=0.439,X[45,34]=0.502,X[46,34]=0.518,X[47,34]=0.459,X[48,34]=0.400,X[49,34]=0.294,X[50,34]=0.141 X[51,34]=0.110,X[52,34]=0.180,X[53,34]=0.282,X[54,34]=0.365,X[55,34]=0.322,X[56,34]=0.180,X[57,34]=0.169,X[58,34]=0.282,X[59,34]=0.298,X[60,34]=0.416,X[61,34]=0.510,X[62,34]=0.380,X[63,34]=0.110,X[64,34]=0.102,X[65,34]=0.169,X[66,34]=0.247,X[67,34]=0.267,X[68,34]=0.204,X[69,34]=0.263,X[70,34]=0.318,X[71,34]=0.212,X[72,34]=0.176,X[73,34]=0.251,X[74,34]=0.251,X[75,34]=0.192,X[76,34]=0.239,X[77,34]=0.243,X[78,34]=0.204,X[79,34]=0.188,X[80,34]=0.153,X[81,34]=0.102,X[82,34]=0.129,X[83,34]=0.192,X[84,34]=0.200,X[85,34]=0.204,X[86,34]=0.310,X[87,34]=0.282,X[88,34]=0.376,X[89,34]=0.384,X[90,34]=0.275,X[91,34]=0.192,X[92,34]=0.392,X[93,34]=0.396,X[94,34]=0.173,X[95,34]=0.271,X[96,34]=0.455,X[97,34]=0.349,X[98,34]=0.180,X[99,34]=0.192,X[100,34]=0.267 X[1,35]=0.133,X[2,35]=0.188,X[3,35]=0.200,X[4,35]=0.180,X[5,35]=0.200,X[6,35]=0.231,X[7,35]=0.263,X[8,35]=0.200,X[9,35]=0.169,X[10,35]=0.220,X[11,35]=0.200,X[12,35]=0.141,X[13,35]=0.149,X[14,35]=0.200,X[15,35]=0.173,X[16,35]=0.184,X[17,35]=0.216,X[18,35]=0.286,X[19,35]=0.369,X[20,35]=0.353,X[21,35]=0.337,X[22,35]=0.251,X[23,35]=0.263,X[24,35]=0.220,X[25,35]=0.078,X[26,35]=0.106,X[27,35]=0.231,X[28,35]=0.325,X[29,35]=0.216,X[30,35]=0.075,X[31,35]=0.173,X[32,35]=0.220,X[33,35]=0.294,X[34,35]=0.361,X[35,35]=0.431,X[36,35]=0.475,X[37,35]=0.467,X[38,35]=0.467,X[39,35]=0.290,X[40,35]=0.180,X[41,35]=0.302,X[42,35]=0.400,X[43,35]=0.435,X[44,35]=0.490,X[45,35]=0.475,X[46,35]=0.380,X[47,35]=0.435,X[48,35]=0.467,X[49,35]=0.420,X[50,35]=0.341 X[51,35]=0.235,X[52,35]=0.271,X[53,35]=0.345,X[54,35]=0.227,X[55,35]=0.102,X[56,35]=0.035,X[57,35]=0.047,X[58,35]=0.094,X[59,35]=0.255,X[60,35]=0.408,X[61,35]=0.525,X[62,35]=0.427,X[63,35]=0.208,X[64,35]=0.212,X[65,35]=0.290,X[66,35]=0.318,X[67,35]=0.173,X[68,35]=0.224,X[69,35]=0.318,X[70,35]=0.153,X[71,35]=0.047,X[72,35]=0.169,X[73,35]=0.286,X[74,35]=0.231,X[75,35]=0.082,X[76,35]=0.090,X[77,35]=0.200,X[78,35]=0.286,X[79,35]=0.231,X[80,35]=0.212,X[81,35]=0.176,X[82,35]=0.141,X[83,35]=0.184,X[84,35]=0.224,X[85,35]=0.278,X[86,35]=0.302,X[87,35]=0.298,X[88,35]=0.282,X[89,35]=0.184,X[90,35]=0.075,X[91,35]=0.071,X[92,35]=0.224,X[93,35]=0.227,X[94,35]=0.188,X[95,35]=0.231,X[96,35]=0.404,X[97,35]=0.463,X[98,35]=0.216,X[99,35]=0.141,X[100,35]=0.200 X[1,36]=0.067,X[2,36]=0.086,X[3,36]=0.133,X[4,36]=0.192,X[5,36]=0.243,X[6,36]=0.247,X[7,36]=0.208,X[8,36]=0.114,X[9,36]=0.071,X[10,36]=0.122,X[11,36]=0.184,X[12,36]=0.200,X[13,36]=0.212,X[14,36]=0.216,X[15,36]=0.216,X[16,36]=0.235,X[17,36]=0.318,X[18,36]=0.325,X[19,36]=0.325,X[20,36]=0.365,X[21,36]=0.361,X[22,36]=0.278,X[23,36]=0.271,X[24,36]=0.157,X[25,36]=0.063,X[26,36]=0.075,X[27,36]=0.063,X[28,36]=0.157,X[29,36]=0.141,X[30,36]=0.078,X[31,36]=0.188,X[32,36]=0.247,X[33,36]=0.369,X[34,36]=0.467,X[35,36]=0.455,X[36,36]=0.388,X[37,36]=0.349,X[38,36]=0.239,X[39,36]=0.090,X[40,36]=0.180,X[41,36]=0.314,X[42,36]=0.404,X[43,36]=0.459,X[44,36]=0.475,X[45,36]=0.345,X[46,36]=0.184,X[47,36]=0.243,X[48,36]=0.408,X[49,36]=0.482,X[50,36]=0.447 X[51,36]=0.384,X[52,36]=0.278,X[53,36]=0.133,X[54,36]=0.031,X[55,36]=0.059,X[56,36]=0.067,X[57,36]=0.051,X[58,36]=0.067,X[59,36]=0.102,X[60,36]=0.239,X[61,36]=0.376,X[62,36]=0.392,X[63,36]=0.251,X[64,36]=0.282,X[65,36]=0.263,X[66,36]=0.125,X[67,36]=0.051,X[68,36]=0.216,X[69,36]=0.208,X[70,36]=0.090,X[71,36]=0.063,X[72,36]=0.173,X[73,36]=0.298,X[74,36]=0.251,X[75,36]=0.094,X[76,36]=0.055,X[77,36]=0.067,X[78,36]=0.200,X[79,36]=0.169,X[80,36]=0.137,X[81,36]=0.184,X[82,36]=0.208,X[83,36]=0.239,X[84,36]=0.220,X[85,36]=0.216,X[86,36]=0.275,X[87,36]=0.251,X[88,36]=0.094,X[89,36]=0.055,X[90,36]=0.063,X[91,36]=0.067,X[92,36]=0.043,X[93,36]=0.086,X[94,36]=0.145,X[95,36]=0.220,X[96,36]=0.298,X[97,36]=0.357,X[98,36]=0.227,X[99,36]=0.086,X[100,36]=0.047 X[1,37]=0.043,X[2,37]=0.039,X[3,37]=0.067,X[4,37]=0.212,X[5,37]=0.325,X[6,37]=0.349,X[7,37]=0.267,X[8,37]=0.200,X[9,37]=0.129,X[10,37]=0.051,X[11,37]=0.086,X[12,37]=0.188,X[13,37]=0.227,X[14,37]=0.231,X[15,37]=0.231,X[16,37]=0.247,X[17,37]=0.251,X[18,37]=0.310,X[19,37]=0.384,X[20,37]=0.251,X[21,37]=0.208,X[22,37]=0.255,X[23,37]=0.259,X[24,37]=0.220,X[25,37]=0.114,X[26,37]=0.067,X[27,37]=0.051,X[28,37]=0.043,X[29,37]=0.047,X[30,37]=0.086,X[31,37]=0.180,X[32,37]=0.271,X[33,37]=0.396,X[34,37]=0.302,X[35,37]=0.137,X[36,37]=0.196,X[37,37]=0.337,X[38,37]=0.188,X[39,37]=0.114,X[40,37]=0.227,X[41,37]=0.329,X[42,37]=0.412,X[43,37]=0.447,X[44,37]=0.478,X[45,37]=0.365,X[46,37]=0.208,X[47,37]=0.176,X[48,37]=0.251,X[49,37]=0.361,X[50,37]=0.475 X[51,37]=0.482,X[52,37]=0.392,X[53,37]=0.286,X[54,37]=0.125,X[55,37]=0.153,X[56,37]=0.231,X[57,37]=0.098,X[58,37]=0.075,X[59,37]=0.137,X[60,37]=0.188,X[61,37]=0.243,X[62,37]=0.302,X[63,37]=0.259,X[64,37]=0.267,X[65,37]=0.094,X[66,37]=0.035,X[67,37]=0.059,X[68,37]=0.173,X[69,37]=0.204,X[70,37]=0.102,X[71,37]=0.059,X[72,37]=0.173,X[73,37]=0.318,X[74,37]=0.263,X[75,37]=0.075,X[76,37]=0.055,X[77,37]=0.078,X[78,37]=0.082,X[79,37]=0.059,X[80,37]=0.082,X[81,37]=0.161,X[82,37]=0.247,X[83,37]=0.306,X[84,37]=0.286,X[85,37]=0.200,X[86,37]=0.212,X[87,37]=0.149,X[88,37]=0.055,X[89,37]=0.071,X[90,37]=0.059,X[91,37]=0.075,X[92,37]=0.067,X[93,37]=0.051,X[94,37]=0.106,X[95,37]=0.212,X[96,37]=0.216,X[97,37]=0.290,X[98,37]=0.294,X[99,37]=0.188,X[100,37]=0.090 X[1,38]=0.122,X[2,38]=0.067,X[3,38]=0.063,X[4,38]=0.239,X[5,38]=0.243,X[6,38]=0.220,X[7,38]=0.282,X[8,38]=0.310,X[9,38]=0.243,X[10,38]=0.157,X[11,38]=0.149,X[12,38]=0.231,X[13,38]=0.267,X[14,38]=0.267,X[15,38]=0.290,X[16,38]=0.259,X[17,38]=0.212,X[18,38]=0.212,X[19,38]=0.216,X[20,38]=0.176,X[21,38]=0.278,X[22,38]=0.278,X[23,38]=0.263,X[24,38]=0.267,X[25,38]=0.227,X[26,38]=0.145,X[27,38]=0.082,X[28,38]=0.059,X[29,38]=0.051,X[30,38]=0.090,X[31,38]=0.184,X[32,38]=0.216,X[33,38]=0.161,X[34,38]=0.071,X[35,38]=0.043,X[36,38]=0.204,X[37,38]=0.369,X[38,38]=0.271,X[39,38]=0.231,X[40,38]=0.251,X[41,38]=0.333,X[42,38]=0.424,X[43,38]=0.459,X[44,38]=0.486,X[45,38]=0.388,X[46,38]=0.388,X[47,38]=0.259,X[48,38]=0.239,X[49,38]=0.259,X[50,38]=0.337 X[51,38]=0.475,X[52,38]=0.502,X[53,38]=0.408,X[54,38]=0.125,X[55,38]=0.141,X[56,38]=0.318,X[57,38]=0.212,X[58,38]=0.165,X[59,38]=0.227,X[60,38]=0.298,X[61,38]=0.278,X[62,38]=0.165,X[63,38]=0.196,X[64,38]=0.267,X[65,38]=0.133,X[66,38]=0.059,X[67,38]=0.059,X[68,38]=0.161,X[69,38]=0.200,X[70,38]=0.110,X[71,38]=0.055,X[72,38]=0.180,X[73,38]=0.333,X[74,38]=0.306,X[75,38]=0.082,X[76,38]=0.067,X[77,38]=0.078,X[78,38]=0.051,X[79,38]=0.082,X[80,38]=0.173,X[81,38]=0.227,X[82,38]=0.282,X[83,38]=0.322,X[84,38]=0.318,X[85,38]=0.294,X[86,38]=0.243,X[87,38]=0.157,X[88,38]=0.082,X[89,38]=0.067,X[90,38]=0.071,X[91,38]=0.055,X[92,38]=0.071,X[93,38]=0.075,X[94,38]=0.133,X[95,38]=0.208,X[96,38]=0.231,X[97,38]=0.318,X[98,38]=0.325,X[99,38]=0.251,X[100,38]=0.176 X[1,39]=0.176,X[2,39]=0.149,X[3,39]=0.110,X[4,39]=0.227,X[5,39]=0.188,X[6,39]=0.129,X[7,39]=0.200,X[8,39]=0.243,X[9,39]=0.349,X[10,39]=0.337,X[11,39]=0.271,X[12,39]=0.282,X[13,39]=0.278,X[14,39]=0.333,X[15,39]=0.345,X[16,39]=0.251,X[17,39]=0.318,X[18,39]=0.227,X[19,39]=0.153,X[20,39]=0.192,X[21,39]=0.267,X[22,39]=0.243,X[23,39]=0.314,X[24,39]=0.212,X[25,39]=0.224,X[26,39]=0.235,X[27,39]=0.173,X[28,39]=0.114,X[29,39]=0.078,X[30,39]=0.106,X[31,39]=0.188,X[32,39]=0.180,X[33,39]=0.102,X[34,39]=0.082,X[35,39]=0.094,X[36,39]=0.204,X[37,39]=0.341,X[38,39]=0.384,X[39,39]=0.329,X[40,39]=0.243,X[41,39]=0.353,X[42,39]=0.443,X[43,39]=0.506,X[44,39]=0.439,X[45,39]=0.271,X[46,39]=0.278,X[47,39]=0.314,X[48,39]=0.337,X[49,39]=0.286,X[50,39]=0.282 X[51,39]=0.337,X[52,39]=0.502,X[53,39]=0.341,X[54,39]=0.063,X[55,39]=0.067,X[56,39]=0.298,X[57,39]=0.314,X[58,39]=0.239,X[59,39]=0.325,X[60,39]=0.408,X[61,39]=0.208,X[62,39]=0.051,X[63,39]=0.173,X[64,39]=0.282,X[65,39]=0.220,X[66,39]=0.149,X[67,39]=0.082,X[68,39]=0.180,X[69,39]=0.204,X[70,39]=0.106,X[71,39]=0.114,X[72,39]=0.208,X[73,39]=0.278,X[74,39]=0.235,X[75,39]=0.090,X[76,39]=0.078,X[77,39]=0.059,X[78,39]=0.055,X[79,39]=0.078,X[80,39]=0.173,X[81,39]=0.259,X[82,39]=0.263,X[83,39]=0.137,X[84,39]=0.118,X[85,39]=0.231,X[86,39]=0.333,X[87,39]=0.325,X[88,39]=0.212,X[89,39]=0.094,X[90,39]=0.067,X[91,39]=0.059,X[92,39]=0.129,X[93,39]=0.212,X[94,39]=0.216,X[95,39]=0.204,X[96,39]=0.196,X[97,39]=0.122,X[98,39]=0.114,X[99,39]=0.176,X[100,39]=0.173 X[1,40]=0.200,X[2,40]=0.173,X[3,40]=0.165,X[4,40]=0.224,X[5,40]=0.192,X[6,40]=0.133,X[7,40]=0.173,X[8,40]=0.204,X[9,40]=0.318,X[10,40]=0.380,X[11,40]=0.337,X[12,40]=0.341,X[13,40]=0.259,X[14,40]=0.298,X[15,40]=0.212,X[16,40]=0.082,X[17,40]=0.224,X[18,40]=0.275,X[19,40]=0.231,X[20,40]=0.173,X[21,40]=0.173,X[22,40]=0.216,X[23,40]=0.384,X[24,40]=0.145,X[25,40]=0.090,X[26,40]=0.180,X[27,40]=0.180,X[28,40]=0.216,X[29,40]=0.192,X[30,40]=0.188,X[31,40]=0.204,X[32,40]=0.224,X[33,40]=0.204,X[34,40]=0.161,X[35,40]=0.188,X[36,40]=0.275,X[37,40]=0.341,X[38,40]=0.278,X[39,40]=0.145,X[40,40]=0.192,X[41,40]=0.361,X[42,40]=0.443,X[43,40]=0.533,X[44,40]=0.455,X[45,40]=0.306,X[46,40]=0.255,X[47,40]=0.298,X[48,40]=0.298,X[49,40]=0.169,X[50,40]=0.286 X[51,40]=0.267,X[52,40]=0.337,X[53,40]=0.247,X[54,40]=0.090,X[55,40]=0.051,X[56,40]=0.208,X[57,40]=0.357,X[58,40]=0.282,X[59,40]=0.384,X[60,40]=0.357,X[61,40]=0.184,X[62,40]=0.141,X[63,40]=0.188,X[64,40]=0.306,X[65,40]=0.271,X[66,40]=0.184,X[67,40]=0.188,X[68,40]=0.298,X[69,40]=0.329,X[70,40]=0.227,X[71,40]=0.251,X[72,40]=0.200,X[73,40]=0.192,X[74,40]=0.094,X[75,40]=0.043,X[76,40]=0.059,X[77,40]=0.063,X[78,40]=0.106,X[79,40]=0.071,X[80,40]=0.090,X[81,40]=0.173,X[82,40]=0.239,X[83,40]=0.110,X[84,40]=0.039,X[85,40]=0.141,X[86,40]=0.294,X[87,40]=0.345,X[88,40]=0.263,X[89,40]=0.059,X[90,40]=0.055,X[91,40]=0.067,X[92,40]=0.184,X[93,40]=0.290,X[94,40]=0.227,X[95,40]=0.192,X[96,40]=0.157,X[97,40]=0.039,X[98,40]=0.055,X[99,40]=0.118,X[100,40]=0.173 X[1,41]=0.137,X[2,41]=0.176,X[3,41]=0.180,X[4,41]=0.231,X[5,41]=0.286,X[6,41]=0.188,X[7,41]=0.235,X[8,41]=0.322,X[9,41]=0.329,X[10,41]=0.318,X[11,41]=0.345,X[12,41]=0.255,X[13,41]=0.157,X[14,41]=0.271,X[15,41]=0.188,X[16,41]=0.051,X[17,41]=0.075,X[18,41]=0.141,X[19,41]=0.212,X[20,41]=0.231,X[21,41]=0.192,X[22,41]=0.176,X[23,41]=0.196,X[24,41]=0.141,X[25,41]=0.153,X[26,41]=0.224,X[27,41]=0.294,X[28,41]=0.275,X[29,41]=0.275,X[30,41]=0.239,X[31,41]=0.220,X[32,41]=0.271,X[33,41]=0.325,X[34,41]=0.247,X[35,41]=0.212,X[36,41]=0.302,X[37,41]=0.180,X[38,41]=0.078,X[39,41]=0.122,X[40,41]=0.243,X[41,41]=0.384,X[42,41]=0.463,X[43,41]=0.545,X[44,41]=0.412,X[45,41]=0.243,X[46,41]=0.298,X[47,41]=0.298,X[48,41]=0.204,X[49,41]=0.075,X[50,41]=0.086 X[51,41]=0.161,X[52,41]=0.251,X[53,41]=0.325,X[54,41]=0.353,X[55,41]=0.278,X[56,41]=0.263,X[57,41]=0.396,X[58,41]=0.396,X[59,41]=0.408,X[60,41]=0.306,X[61,41]=0.278,X[62,41]=0.212,X[63,41]=0.290,X[64,41]=0.373,X[65,41]=0.275,X[66,41]=0.145,X[67,41]=0.278,X[68,41]=0.416,X[69,41]=0.420,X[70,41]=0.294,X[71,41]=0.212,X[72,41]=0.180,X[73,41]=0.208,X[74,41]=0.153,X[75,41]=0.059,X[76,41]=0.055,X[77,41]=0.106,X[78,41]=0.184,X[79,41]=0.114,X[80,41]=0.067,X[81,41]=0.114,X[82,41]=0.267,X[83,41]=0.165,X[84,41]=0.051,X[85,41]=0.200,X[86,41]=0.400,X[87,41]=0.196,X[88,41]=0.165,X[89,41]=0.122,X[90,41]=0.063,X[91,41]=0.063,X[92,41]=0.102,X[93,41]=0.169,X[94,41]=0.188,X[95,41]=0.204,X[96,41]=0.216,X[97,41]=0.145,X[98,41]=0.075,X[99,41]=0.055,X[100,41]=0.075 X[1,42]=0.082,X[2,42]=0.098,X[3,42]=0.173,X[4,42]=0.247,X[5,42]=0.361,X[6,42]=0.294,X[7,42]=0.318,X[8,42]=0.271,X[9,42]=0.255,X[10,42]=0.267,X[11,42]=0.149,X[12,42]=0.075,X[13,42]=0.133,X[14,42]=0.243,X[15,42]=0.153,X[16,42]=0.035,X[17,42]=0.055,X[18,42]=0.078,X[19,42]=0.086,X[20,42]=0.157,X[21,42]=0.200,X[22,42]=0.200,X[23,42]=0.165,X[24,42]=0.192,X[25,42]=0.224,X[26,42]=0.204,X[27,42]=0.208,X[28,42]=0.282,X[29,42]=0.278,X[30,42]=0.208,X[31,42]=0.239,X[32,42]=0.271,X[33,42]=0.267,X[34,42]=0.271,X[35,42]=0.255,X[36,42]=0.220,X[37,42]=0.169,X[38,42]=0.188,X[39,42]=0.247,X[40,42]=0.302,X[41,42]=0.400,X[42,42]=0.514,X[43,42]=0.576,X[44,42]=0.365,X[45,42]=0.082,X[46,42]=0.118,X[47,42]=0.243,X[48,42]=0.176,X[49,42]=0.067,X[50,42]=0.059 X[51,42]=0.024,X[52,42]=0.102,X[53,42]=0.224,X[54,42]=0.314,X[55,42]=0.361,X[56,42]=0.392,X[57,42]=0.431,X[58,42]=0.451,X[59,42]=0.341,X[60,42]=0.271,X[61,42]=0.157,X[62,42]=0.094,X[63,42]=0.278,X[64,42]=0.341,X[65,42]=0.290,X[66,42]=0.282,X[67,42]=0.400,X[68,42]=0.424,X[69,42]=0.263,X[70,42]=0.192,X[71,42]=0.212,X[72,42]=0.208,X[73,42]=0.224,X[74,42]=0.267,X[75,42]=0.204,X[76,42]=0.102,X[77,42]=0.114,X[78,42]=0.212,X[79,42]=0.106,X[80,42]=0.051,X[81,42]=0.102,X[82,42]=0.329,X[83,42]=0.239,X[84,42]=0.055,X[85,42]=0.165,X[86,42]=0.247,X[87,42]=0.125,X[88,42]=0.169,X[89,42]=0.169,X[90,42]=0.075,X[91,42]=0.090,X[92,42]=0.173,X[93,42]=0.235,X[94,42]=0.227,X[95,42]=0.220,X[96,42]=0.282,X[97,42]=0.294,X[98,42]=0.200,X[99,42]=0.102,X[100,42]=0.051 X[1,43]=0.125,X[2,43]=0.169,X[3,43]=0.227,X[4,43]=0.251,X[5,43]=0.302,X[6,43]=0.298,X[7,43]=0.259,X[8,43]=0.243,X[9,43]=0.227,X[10,43]=0.110,X[11,43]=0.043,X[12,43]=0.055,X[13,43]=0.133,X[14,43]=0.231,X[15,43]=0.157,X[16,43]=0.055,X[17,43]=0.071,X[18,43]=0.067,X[19,43]=0.063,X[20,43]=0.071,X[21,43]=0.071,X[22,43]=0.141,X[23,43]=0.196,X[24,43]=0.239,X[25,43]=0.227,X[26,43]=0.129,X[27,43]=0.200,X[28,43]=0.271,X[29,43]=0.184,X[30,43]=0.220,X[31,43]=0.278,X[32,43]=0.271,X[33,43]=0.247,X[34,43]=0.173,X[35,43]=0.188,X[36,43]=0.298,X[37,43]=0.251,X[38,43]=0.263,X[39,43]=0.290,X[40,43]=0.318,X[41,43]=0.420,X[42,43]=0.490,X[43,43]=0.557,X[44,43]=0.365,X[45,43]=0.078,X[46,43]=0.110,X[47,43]=0.235,X[48,43]=0.165,X[49,43]=0.067,X[50,43]=0.110 X[51,43]=0.133,X[52,43]=0.055,X[53,43]=0.122,X[54,43]=0.192,X[55,43]=0.196,X[56,43]=0.216,X[57,43]=0.294,X[58,43]=0.420,X[59,43]=0.314,X[60,43]=0.173,X[61,43]=0.067,X[62,43]=0.063,X[63,43]=0.098,X[64,43]=0.071,X[65,43]=0.247,X[66,43]=0.424,X[67,43]=0.431,X[68,43]=0.267,X[69,43]=0.220,X[70,43]=0.275,X[71,43]=0.196,X[72,43]=0.208,X[73,43]=0.259,X[74,43]=0.271,X[75,43]=0.271,X[76,43]=0.243,X[77,43]=0.173,X[78,43]=0.184,X[79,43]=0.090,X[80,43]=0.031,X[81,43]=0.082,X[82,43]=0.208,X[83,43]=0.212,X[84,43]=0.102,X[85,43]=0.071,X[86,43]=0.043,X[87,43]=0.094,X[88,43]=0.184,X[89,43]=0.169,X[90,43]=0.141,X[91,43]=0.251,X[92,43]=0.322,X[93,43]=0.196,X[94,43]=0.161,X[95,43]=0.255,X[96,43]=0.255,X[97,43]=0.188,X[98,43]=0.275,X[99,43]=0.235,X[100,43]=0.149 X[1,44]=0.220,X[2,44]=0.255,X[3,44]=0.306,X[4,44]=0.271,X[5,44]=0.259,X[6,44]=0.271,X[7,44]=0.302,X[8,44]=0.322,X[9,44]=0.286,X[10,44]=0.259,X[11,44]=0.145,X[12,44]=0.071,X[13,44]=0.114,X[14,44]=0.227,X[15,44]=0.169,X[16,44]=0.075,X[17,44]=0.086,X[18,44]=0.125,X[19,44]=0.071,X[20,44]=0.051,X[21,44]=0.059,X[22,44]=0.075,X[23,44]=0.224,X[24,44]=0.314,X[25,44]=0.345,X[26,44]=0.247,X[27,44]=0.204,X[28,44]=0.137,X[29,44]=0.204,X[30,44]=0.267,X[31,44]=0.275,X[32,44]=0.286,X[33,44]=0.282,X[34,44]=0.271,X[35,44]=0.204,X[36,44]=0.208,X[37,44]=0.259,X[38,44]=0.294,X[39,44]=0.196,X[40,44]=0.165,X[41,44]=0.290,X[42,44]=0.298,X[43,44]=0.298,X[44,44]=0.259,X[45,44]=0.102,X[46,44]=0.145,X[47,44]=0.224,X[48,44]=0.169,X[49,44]=0.051,X[50,44]=0.141 X[51,44]=0.286,X[52,44]=0.125,X[53,44]=0.086,X[54,44]=0.173,X[55,44]=0.180,X[56,44]=0.192,X[57,44]=0.278,X[58,44]=0.365,X[59,44]=0.341,X[60,44]=0.169,X[61,44]=0.075,X[62,44]=0.047,X[63,44]=0.051,X[64,44]=0.110,X[65,44]=0.353,X[66,44]=0.498,X[67,44]=0.502,X[68,44]=0.427,X[69,44]=0.427,X[70,44]=0.431,X[71,44]=0.267,X[72,44]=0.204,X[73,44]=0.278,X[74,44]=0.173,X[75,44]=0.094,X[76,44]=0.208,X[77,44]=0.282,X[78,44]=0.208,X[79,44]=0.082,X[80,44]=0.078,X[81,44]=0.145,X[82,44]=0.208,X[83,44]=0.259,X[84,44]=0.220,X[85,44]=0.090,X[86,44]=0.055,X[87,44]=0.094,X[88,44]=0.196,X[89,44]=0.184,X[90,44]=0.231,X[91,44]=0.310,X[92,44]=0.188,X[93,44]=0.106,X[94,44]=0.161,X[95,44]=0.275,X[96,44]=0.243,X[97,44]=0.078,X[98,44]=0.090,X[99,44]=0.224,X[100,44]=0.286 X[1,45]=0.314,X[2,45]=0.337,X[3,45]=0.353,X[4,45]=0.263,X[5,45]=0.239,X[6,45]=0.212,X[7,45]=0.325,X[8,45]=0.235,X[9,45]=0.173,X[10,45]=0.314,X[11,45]=0.259,X[12,45]=0.173,X[13,45]=0.145,X[14,45]=0.216,X[15,45]=0.153,X[16,45]=0.051,X[17,45]=0.118,X[18,45]=0.184,X[19,45]=0.149,X[20,45]=0.114,X[21,45]=0.149,X[22,45]=0.157,X[23,45]=0.251,X[24,45]=0.231,X[25,45]=0.235,X[26,45]=0.278,X[27,45]=0.278,X[28,45]=0.231,X[29,45]=0.188,X[30,45]=0.161,X[31,45]=0.282,X[32,45]=0.322,X[33,45]=0.247,X[34,45]=0.318,X[35,45]=0.298,X[36,45]=0.208,X[37,45]=0.180,X[38,45]=0.224,X[39,45]=0.153,X[40,45]=0.090,X[41,45]=0.200,X[42,45]=0.145,X[43,45]=0.059,X[44,45]=0.125,X[45,45]=0.173,X[46,45]=0.176,X[47,45]=0.208,X[48,45]=0.161,X[49,45]=0.055,X[50,45]=0.067 X[51,45]=0.263,X[52,45]=0.251,X[53,45]=0.075,X[54,45]=0.078,X[55,45]=0.157,X[56,45]=0.243,X[57,45]=0.314,X[58,45]=0.310,X[59,45]=0.361,X[60,45]=0.255,X[61,45]=0.165,X[62,45]=0.086,X[63,45]=0.106,X[64,45]=0.322,X[65,45]=0.514,X[66,45]=0.314,X[67,45]=0.220,X[68,45]=0.349,X[69,45]=0.357,X[70,45]=0.388,X[71,45]=0.259,X[72,45]=0.212,X[73,45]=0.282,X[74,45]=0.169,X[75,45]=0.059,X[76,45]=0.063,X[77,45]=0.204,X[78,45]=0.275,X[79,45]=0.165,X[80,45]=0.192,X[81,45]=0.255,X[82,45]=0.337,X[83,45]=0.325,X[84,45]=0.247,X[85,45]=0.141,X[86,45]=0.059,X[87,45]=0.082,X[88,45]=0.188,X[89,45]=0.200,X[90,45]=0.173,X[91,45]=0.114,X[92,45]=0.157,X[93,45]=0.239,X[94,45]=0.231,X[95,45]=0.282,X[96,45]=0.259,X[97,45]=0.098,X[98,45]=0.067,X[99,45]=0.176,X[100,45]=0.294 X[1,46]=0.373,X[2,46]=0.380,X[3,46]=0.263,X[4,46]=0.180,X[5,46]=0.239,X[6,46]=0.192,X[7,46]=0.294,X[8,46]=0.157,X[9,46]=0.039,X[10,46]=0.102,X[11,46]=0.212,X[12,46]=0.259,X[13,46]=0.192,X[14,46]=0.208,X[15,46]=0.157,X[16,46]=0.059,X[17,46]=0.075,X[18,46]=0.149,X[19,46]=0.184,X[20,46]=0.247,X[21,46]=0.278,X[22,46]=0.239,X[23,46]=0.247,X[24,46]=0.196,X[25,46]=0.180,X[26,46]=0.259,X[27,46]=0.314,X[28,46]=0.384,X[29,46]=0.251,X[30,46]=0.102,X[31,46]=0.294,X[32,46]=0.361,X[33,46]=0.294,X[34,46]=0.294,X[35,46]=0.196,X[36,46]=0.247,X[37,46]=0.227,X[38,46]=0.180,X[39,46]=0.145,X[40,46]=0.153,X[41,46]=0.216,X[42,46]=0.161,X[43,46]=0.137,X[44,46]=0.216,X[45,46]=0.271,X[46,46]=0.247,X[47,46]=0.239,X[48,46]=0.200,X[49,46]=0.110,X[50,46]=0.067 X[51,46]=0.176,X[52,46]=0.306,X[53,46]=0.110,X[54,46]=0.047,X[55,46]=0.075,X[56,46]=0.235,X[57,46]=0.231,X[58,46]=0.239,X[59,46]=0.361,X[60,46]=0.325,X[61,46]=0.314,X[62,46]=0.235,X[63,46]=0.278,X[64,46]=0.467,X[65,46]=0.369,X[66,46]=0.071,X[67,46]=0.063,X[68,46]=0.161,X[69,46]=0.212,X[70,46]=0.094,X[71,46]=0.059,X[72,46]=0.208,X[73,46]=0.325,X[74,46]=0.169,X[75,46]=0.071,X[76,46]=0.043,X[77,46]=0.118,X[78,46]=0.216,X[79,46]=0.235,X[80,46]=0.278,X[81,46]=0.353,X[82,46]=0.247,X[83,46]=0.102,X[84,46]=0.165,X[85,46]=0.200,X[86,46]=0.157,X[87,46]=0.129,X[88,46]=0.208,X[89,46]=0.204,X[90,46]=0.118,X[91,46]=0.196,X[92,46]=0.298,X[93,46]=0.267,X[94,46]=0.216,X[95,46]=0.337,X[96,46]=0.263,X[97,46]=0.102,X[98,46]=0.090,X[99,46]=0.200,X[100,46]=0.318 X[1,47]=0.267,X[2,47]=0.161,X[3,47]=0.051,X[4,47]=0.149,X[5,47]=0.275,X[6,47]=0.180,X[7,47]=0.243,X[8,47]=0.157,X[9,47]=0.063,X[10,47]=0.051,X[11,47]=0.055,X[12,47]=0.137,X[13,47]=0.188,X[14,47]=0.192,X[15,47]=0.169,X[16,47]=0.129,X[17,47]=0.153,X[18,47]=0.204,X[19,47]=0.255,X[20,47]=0.263,X[21,47]=0.220,X[22,47]=0.196,X[23,47]=0.224,X[24,47]=0.243,X[25,47]=0.294,X[26,47]=0.298,X[27,47]=0.157,X[28,47]=0.204,X[29,47]=0.239,X[30,47]=0.106,X[31,47]=0.243,X[32,47]=0.286,X[33,47]=0.192,X[34,47]=0.110,X[35,47]=0.067,X[36,47]=0.098,X[37,47]=0.204,X[38,47]=0.216,X[39,47]=0.184,X[40,47]=0.176,X[41,47]=0.173,X[42,47]=0.200,X[43,47]=0.235,X[44,47]=0.278,X[45,47]=0.208,X[46,47]=0.153,X[47,47]=0.239,X[48,47]=0.341,X[49,47]=0.341,X[50,47]=0.310 X[51,47]=0.298,X[52,47]=0.345,X[53,47]=0.227,X[54,47]=0.071,X[55,47]=0.082,X[56,47]=0.200,X[57,47]=0.216,X[58,47]=0.251,X[59,47]=0.325,X[60,47]=0.333,X[61,47]=0.322,X[62,47]=0.345,X[63,47]=0.412,X[64,47]=0.369,X[65,47]=0.090,X[66,47]=0.055,X[67,47]=0.059,X[68,47]=0.153,X[69,47]=0.220,X[70,47]=0.090,X[71,47]=0.059,X[72,47]=0.235,X[73,47]=0.369,X[74,47]=0.188,X[75,47]=0.082,X[76,47]=0.149,X[77,47]=0.227,X[78,47]=0.259,X[79,47]=0.267,X[80,47]=0.259,X[81,47]=0.161,X[82,47]=0.047,X[83,47]=0.055,X[84,47]=0.067,X[85,47]=0.141,X[86,47]=0.188,X[87,47]=0.220,X[88,47]=0.239,X[89,47]=0.227,X[90,47]=0.259,X[91,47]=0.322,X[92,47]=0.235,X[93,47]=0.090,X[94,47]=0.145,X[95,47]=0.345,X[96,47]=0.314,X[97,47]=0.165,X[98,47]=0.141,X[99,47]=0.227,X[100,47]=0.333 X[1,48]=0.059,X[2,48]=0.051,X[3,48]=0.051,X[4,48]=0.227,X[5,48]=0.400,X[6,48]=0.192,X[7,48]=0.227,X[8,48]=0.125,X[9,48]=0.055,X[10,48]=0.067,X[11,48]=0.059,X[12,48]=0.125,X[13,48]=0.176,X[14,48]=0.212,X[15,48]=0.212,X[16,48]=0.173,X[17,48]=0.224,X[18,48]=0.224,X[19,48]=0.125,X[20,48]=0.110,X[21,48]=0.192,X[22,48]=0.212,X[23,48]=0.247,X[24,48]=0.306,X[25,48]=0.220,X[26,48]=0.090,X[27,48]=0.067,X[28,48]=0.071,X[29,48]=0.071,X[30,48]=0.082,X[31,48]=0.208,X[32,48]=0.216,X[33,48]=0.090,X[34,48]=0.051,X[35,48]=0.067,X[36,48]=0.071,X[37,48]=0.176,X[38,48]=0.298,X[39,48]=0.212,X[40,48]=0.184,X[41,48]=0.204,X[42,48]=0.235,X[43,48]=0.169,X[44,48]=0.075,X[45,48]=0.075,X[46,48]=0.153,X[47,48]=0.224,X[48,48]=0.314,X[49,48]=0.337,X[50,48]=0.376 X[51,48]=0.396,X[52,48]=0.431,X[53,48]=0.451,X[54,48]=0.376,X[55,48]=0.314,X[56,48]=0.302,X[57,48]=0.275,X[58,48]=0.325,X[59,48]=0.251,X[60,48]=0.306,X[61,48]=0.314,X[62,48]=0.380,X[63,48]=0.388,X[64,48]=0.173,X[65,48]=0.043,X[66,48]=0.059,X[67,48]=0.071,X[68,48]=0.157,X[69,48]=0.196,X[70,48]=0.102,X[71,48]=0.188,X[72,48]=0.349,X[73,48]=0.349,X[74,48]=0.224,X[75,48]=0.200,X[76,48]=0.306,X[77,48]=0.349,X[78,48]=0.275,X[79,48]=0.306,X[80,48]=0.318,X[81,48]=0.161,X[82,48]=0.082,X[83,48]=0.051,X[84,48]=0.055,X[85,48]=0.063,X[86,48]=0.086,X[87,48]=0.173,X[88,48]=0.227,X[89,48]=0.302,X[90,48]=0.271,X[91,48]=0.129,X[92,48]=0.051,X[93,48]=0.071,X[94,48]=0.129,X[95,48]=0.267,X[96,48]=0.286,X[97,48]=0.200,X[98,48]=0.196,X[99,48]=0.251,X[100,48]=0.204 X[1,49]=0.055,X[2,49]=0.075,X[3,49]=0.082,X[4,49]=0.176,X[5,49]=0.243,X[6,49]=0.165,X[7,49]=0.224,X[8,49]=0.133,X[9,49]=0.063,X[10,49]=0.098,X[11,49]=0.180,X[12,49]=0.239,X[13,49]=0.224,X[14,49]=0.224,X[15,49]=0.271,X[16,49]=0.275,X[17,49]=0.204,X[18,49]=0.204,X[19,49]=0.180,X[20,49]=0.169,X[21,49]=0.231,X[22,49]=0.239,X[23,49]=0.286,X[24,49]=0.329,X[25,49]=0.086,X[26,49]=0.086,X[27,49]=0.161,X[28,49]=0.137,X[29,49]=0.075,X[30,49]=0.082,X[31,49]=0.212,X[32,49]=0.212,X[33,49]=0.114,X[34,49]=0.075,X[35,49]=0.082,X[36,49]=0.055,X[37,49]=0.192,X[38,49]=0.341,X[39,49]=0.145,X[40,49]=0.161,X[41,49]=0.263,X[42,49]=0.282,X[43,49]=0.212,X[44,49]=0.125,X[45,49]=0.165,X[46,49]=0.212,X[47,49]=0.212,X[48,49]=0.251,X[49,49]=0.235,X[50,49]=0.200 X[51,49]=0.314,X[52,49]=0.459,X[53,49]=0.404,X[54,49]=0.373,X[55,49]=0.392,X[56,49]=0.412,X[57,49]=0.404,X[58,49]=0.376,X[59,49]=0.333,X[60,49]=0.376,X[61,49]=0.416,X[62,49]=0.404,X[63,49]=0.302,X[64,49]=0.212,X[65,49]=0.149,X[66,49]=0.082,X[67,49]=0.071,X[68,49]=0.145,X[69,49]=0.188,X[70,49]=0.227,X[71,49]=0.392,X[72,49]=0.333,X[73,49]=0.235,X[74,49]=0.286,X[75,49]=0.349,X[76,49]=0.314,X[77,49]=0.180,X[78,49]=0.098,X[79,49]=0.212,X[80,49]=0.255,X[81,49]=0.271,X[82,49]=0.259,X[83,49]=0.176,X[84,49]=0.118,X[85,49]=0.071,X[86,49]=0.055,X[87,49]=0.106,X[88,49]=0.227,X[89,49]=0.263,X[90,49]=0.098,X[91,49]=0.035,X[92,49]=0.067,X[93,49]=0.106,X[94,49]=0.165,X[95,49]=0.216,X[96,49]=0.267,X[97,49]=0.212,X[98,49]=0.208,X[99,49]=0.141,X[100,49]=0.047 X[1,50]=0.114,X[2,50]=0.141,X[3,50]=0.188,X[4,50]=0.114,X[5,50]=0.047,X[6,50]=0.129,X[7,50]=0.220,X[8,50]=0.137,X[9,50]=0.122,X[10,50]=0.243,X[11,50]=0.325,X[12,50]=0.208,X[13,50]=0.180,X[14,50]=0.259,X[15,50]=0.278,X[16,50]=0.290,X[17,50]=0.286,X[18,50]=0.220,X[19,50]=0.216,X[20,50]=0.212,X[21,50]=0.188,X[22,50]=0.180,X[23,50]=0.263,X[24,50]=0.216,X[25,50]=0.071,X[26,50]=0.082,X[27,50]=0.173,X[28,50]=0.204,X[29,50]=0.169,X[30,50]=0.122,X[31,50]=0.196,X[32,50]=0.204,X[33,50]=0.122,X[34,50]=0.082,X[35,50]=0.063,X[36,50]=0.063,X[37,50]=0.094,X[38,50]=0.106,X[39,50]=0.063,X[40,50]=0.184,X[41,50]=0.322,X[42,50]=0.345,X[43,50]=0.318,X[44,50]=0.275,X[45,50]=0.192,X[46,50]=0.184,X[47,50]=0.227,X[48,50]=0.278,X[49,50]=0.286,X[50,50]=0.278 X[51,50]=0.435,X[52,50]=0.345,X[53,50]=0.098,X[54,50]=0.153,X[55,50]=0.224,X[56,50]=0.275,X[57,50]=0.294,X[58,50]=0.247,X[59,50]=0.298,X[60,50]=0.412,X[61,50]=0.451,X[62,50]=0.439,X[63,50]=0.427,X[64,50]=0.373,X[65,50]=0.337,X[66,50]=0.275,X[67,50]=0.180,X[68,50]=0.196,X[69,50]=0.251,X[70,50]=0.361,X[71,50]=0.341,X[72,50]=0.243,X[73,50]=0.286,X[74,50]=0.333,X[75,50]=0.251,X[76,50]=0.137,X[77,50]=0.075,X[78,50]=0.071,X[79,50]=0.184,X[80,50]=0.133,X[81,50]=0.118,X[82,50]=0.263,X[83,50]=0.337,X[84,50]=0.208,X[85,50]=0.059,X[86,50]=0.086,X[87,50]=0.098,X[88,50]=0.224,X[89,50]=0.224,X[90,50]=0.055,X[91,50]=0.055,X[92,50]=0.145,X[93,50]=0.204,X[94,50]=0.267,X[95,50]=0.286,X[96,50]=0.278,X[97,50]=0.180,X[98,50]=0.208,X[99,50]=0.098,X[100,50]=0.035 X[1,51]=0.212,X[2,51]=0.255,X[3,51]=0.333,X[4,51]=0.184,X[5,51]=0.063,X[6,51]=0.125,X[7,51]=0.224,X[8,51]=0.161,X[9,51]=0.220,X[10,51]=0.337,X[11,51]=0.176,X[12,51]=0.043,X[13,51]=0.149,X[14,51]=0.282,X[15,51]=0.275,X[16,51]=0.259,X[17,51]=0.247,X[18,51]=0.282,X[19,51]=0.267,X[20,51]=0.271,X[21,51]=0.306,X[22,51]=0.208,X[23,51]=0.231,X[24,51]=0.125,X[25,51]=0.055,X[26,51]=0.059,X[27,51]=0.098,X[28,51]=0.161,X[29,51]=0.208,X[30,51]=0.188,X[31,51]=0.196,X[32,51]=0.216,X[33,51]=0.125,X[34,51]=0.055,X[35,51]=0.071,X[36,51]=0.094,X[37,51]=0.067,X[38,51]=0.067,X[39,51]=0.063,X[40,51]=0.212,X[41,51]=0.251,X[42,51]=0.216,X[43,51]=0.290,X[44,51]=0.314,X[45,51]=0.333,X[46,51]=0.255,X[47,51]=0.200,X[48,51]=0.220,X[49,51]=0.208,X[50,51]=0.439 X[51,51]=0.447,X[52,51]=0.231,X[53,51]=0.176,X[54,51]=0.259,X[55,51]=0.376,X[56,51]=0.286,X[57,51]=0.106,X[58,51]=0.071,X[59,51]=0.306,X[60,51]=0.459,X[61,51]=0.459,X[62,51]=0.443,X[63,51]=0.314,X[64,51]=0.325,X[65,51]=0.392,X[66,51]=0.408,X[67,51]=0.412,X[68,51]=0.392,X[69,51]=0.369,X[70,51]=0.392,X[71,51]=0.337,X[72,51]=0.333,X[73,51]=0.298,X[74,51]=0.227,X[75,51]=0.188,X[76,51]=0.188,X[77,51]=0.157,X[78,51]=0.118,X[79,51]=0.184,X[80,51]=0.141,X[81,51]=0.051,X[82,51]=0.067,X[83,51]=0.149,X[84,51]=0.106,X[85,51]=0.082,X[86,51]=0.067,X[87,51]=0.078,X[88,51]=0.212,X[89,51]=0.208,X[90,51]=0.078,X[91,51]=0.090,X[92,51]=0.208,X[93,51]=0.310,X[94,51]=0.322,X[95,51]=0.176,X[96,51]=0.078,X[97,51]=0.145,X[98,51]=0.204,X[99,51]=0.137,X[100,51]=0.137 X[1,52]=0.318,X[2,52]=0.329,X[3,52]=0.212,X[4,52]=0.075,X[5,52]=0.055,X[6,52]=0.145,X[7,52]=0.208,X[8,52]=0.149,X[9,52]=0.161,X[10,52]=0.110,X[11,52]=0.059,X[12,52]=0.051,X[13,52]=0.145,X[14,52]=0.294,X[15,52]=0.263,X[16,52]=0.243,X[17,52]=0.212,X[18,52]=0.196,X[19,52]=0.224,X[20,52]=0.204,X[21,52]=0.333,X[22,52]=0.349,X[23,52]=0.267,X[24,52]=0.133,X[25,52]=0.059,X[26,52]=0.059,X[27,52]=0.063,X[28,52]=0.063,X[29,52]=0.133,X[30,52]=0.204,X[31,52]=0.188,X[32,52]=0.188,X[33,52]=0.118,X[34,52]=0.063,X[35,52]=0.075,X[36,52]=0.051,X[37,52]=0.055,X[38,52]=0.055,X[39,52]=0.063,X[40,52]=0.192,X[41,52]=0.243,X[42,52]=0.231,X[43,52]=0.180,X[44,52]=0.090,X[45,52]=0.247,X[46,52]=0.396,X[47,52]=0.282,X[48,52]=0.239,X[49,52]=0.165,X[50,52]=0.302 X[51,52]=0.255,X[52,52]=0.282,X[53,52]=0.310,X[54,52]=0.349,X[55,52]=0.216,X[56,52]=0.098,X[57,52]=0.051,X[58,52]=0.247,X[59,52]=0.475,X[60,52]=0.337,X[61,52]=0.275,X[62,52]=0.435,X[63,52]=0.149,X[64,52]=0.039,X[65,52]=0.102,X[66,52]=0.176,X[67,52]=0.290,X[68,52]=0.325,X[69,52]=0.404,X[70,52]=0.459,X[71,52]=0.482,X[72,52]=0.471,X[73,52]=0.435,X[74,52]=0.388,X[75,52]=0.196,X[76,52]=0.173,X[77,52]=0.196,X[78,52]=0.239,X[79,52]=0.227,X[80,52]=0.149,X[81,52]=0.067,X[82,52]=0.059,X[83,52]=0.055,X[84,52]=0.059,X[85,52]=0.055,X[86,52]=0.047,X[87,52]=0.094,X[88,52]=0.204,X[89,52]=0.208,X[90,52]=0.075,X[91,52]=0.067,X[92,52]=0.173,X[93,52]=0.231,X[94,52]=0.137,X[95,52]=0.063,X[96,52]=0.055,X[97,52]=0.149,X[98,52]=0.200,X[99,52]=0.212,X[100,52]=0.235 X[1,53]=0.282,X[2,53]=0.129,X[3,53]=0.051,X[4,53]=0.043,X[5,53]=0.082,X[6,53]=0.161,X[7,53]=0.204,X[8,53]=0.165,X[9,53]=0.063,X[10,53]=0.035,X[11,53]=0.071,X[12,53]=0.075,X[13,53]=0.169,X[14,53]=0.322,X[15,53]=0.235,X[16,53]=0.231,X[17,53]=0.196,X[18,53]=0.063,X[19,53]=0.067,X[20,53]=0.071,X[21,53]=0.102,X[22,53]=0.247,X[23,53]=0.349,X[24,53]=0.153,X[25,53]=0.063,X[26,53]=0.055,X[27,53]=0.047,X[28,53]=0.071,X[29,53]=0.063,X[30,53]=0.149,X[31,53]=0.192,X[32,53]=0.196,X[33,53]=0.176,X[34,53]=0.145,X[35,53]=0.075,X[36,53]=0.059,X[37,53]=0.063,X[38,53]=0.063,X[39,53]=0.086,X[40,53]=0.169,X[41,53]=0.275,X[42,53]=0.176,X[43,53]=0.043,X[44,53]=0.059,X[45,53]=0.086,X[46,53]=0.196,X[47,53]=0.325,X[48,53]=0.259,X[49,53]=0.173,X[50,53]=0.208 X[51,53]=0.243,X[52,53]=0.271,X[53,53]=0.282,X[54,53]=0.149,X[55,53]=0.051,X[56,53]=0.055,X[57,53]=0.188,X[58,53]=0.443,X[59,53]=0.427,X[60,53]=0.118,X[61,53]=0.102,X[62,53]=0.380,X[63,53]=0.263,X[64,53]=0.059,X[65,53]=0.114,X[66,53]=0.188,X[67,53]=0.239,X[68,53]=0.267,X[69,53]=0.353,X[70,53]=0.408,X[71,53]=0.337,X[72,53]=0.329,X[73,53]=0.376,X[74,53]=0.384,X[75,53]=0.192,X[76,53]=0.204,X[77,53]=0.286,X[78,53]=0.310,X[79,53]=0.298,X[80,53]=0.208,X[81,53]=0.114,X[82,53]=0.067,X[83,53]=0.067,X[84,53]=0.055,X[85,53]=0.059,X[86,53]=0.059,X[87,53]=0.086,X[88,53]=0.196,X[89,53]=0.200,X[90,53]=0.055,X[91,53]=0.035,X[92,53]=0.075,X[93,53]=0.082,X[94,53]=0.051,X[95,53]=0.055,X[96,53]=0.106,X[97,53]=0.180,X[98,53]=0.227,X[99,53]=0.255,X[100,53]=0.333 X[1,54]=0.071,X[2,54]=0.067,X[3,54]=0.067,X[4,54]=0.114,X[5,54]=0.200,X[6,54]=0.208,X[7,54]=0.208,X[8,54]=0.247,X[9,54]=0.204,X[10,54]=0.094,X[11,54]=0.047,X[12,54]=0.063,X[13,54]=0.184,X[14,54]=0.365,X[15,54]=0.282,X[16,54]=0.259,X[17,54]=0.290,X[18,54]=0.086,X[19,54]=0.063,X[20,54]=0.055,X[21,54]=0.051,X[22,54]=0.180,X[23,54]=0.373,X[24,54]=0.208,X[25,54]=0.114,X[26,54]=0.078,X[27,54]=0.082,X[28,54]=0.102,X[29,54]=0.149,X[30,54]=0.212,X[31,54]=0.204,X[32,54]=0.231,X[33,54]=0.247,X[34,54]=0.200,X[35,54]=0.157,X[36,54]=0.118,X[37,54]=0.067,X[38,54]=0.059,X[39,54]=0.071,X[40,54]=0.165,X[41,54]=0.357,X[42,54]=0.192,X[43,54]=0.035,X[44,54]=0.039,X[45,54]=0.039,X[46,54]=0.149,X[47,54]=0.337,X[48,54]=0.290,X[49,54]=0.306,X[50,54]=0.329 X[51,54]=0.294,X[52,54]=0.263,X[53,54]=0.176,X[54,54]=0.153,X[55,54]=0.141,X[56,54]=0.188,X[57,54]=0.388,X[58,54]=0.447,X[59,54]=0.129,X[60,54]=0.039,X[61,54]=0.055,X[62,54]=0.255,X[63,54]=0.353,X[64,54]=0.212,X[65,54]=0.227,X[66,54]=0.290,X[67,54]=0.259,X[68,54]=0.235,X[69,54]=0.337,X[70,54]=0.424,X[71,54]=0.333,X[72,54]=0.298,X[73,54]=0.200,X[74,54]=0.161,X[75,54]=0.224,X[76,54]=0.325,X[77,54]=0.341,X[78,54]=0.337,X[79,54]=0.345,X[80,54]=0.302,X[81,54]=0.227,X[82,54]=0.122,X[83,54]=0.118,X[84,54]=0.071,X[85,54]=0.059,X[86,54]=0.067,X[87,54]=0.078,X[88,54]=0.180,X[89,54]=0.192,X[90,54]=0.078,X[91,54]=0.063,X[92,54]=0.082,X[93,54]=0.075,X[94,54]=0.086,X[95,54]=0.137,X[96,54]=0.224,X[97,54]=0.314,X[98,54]=0.282,X[99,54]=0.286,X[100,54]=0.216 X[1,55]=0.188,X[2,55]=0.122,X[3,55]=0.145,X[4,55]=0.255,X[5,55]=0.243,X[6,55]=0.208,X[7,55]=0.247,X[8,55]=0.278,X[9,55]=0.294,X[10,55]=0.239,X[11,55]=0.129,X[12,55]=0.055,X[13,55]=0.141,X[14,55]=0.298,X[15,55]=0.271,X[16,55]=0.180,X[17,55]=0.231,X[18,55]=0.075,X[19,55]=0.035,X[20,55]=0.063,X[21,55]=0.047,X[22,55]=0.114,X[23,55]=0.165,X[24,55]=0.196,X[25,55]=0.145,X[26,55]=0.063,X[27,55]=0.125,X[28,55]=0.176,X[29,55]=0.243,X[30,55]=0.204,X[31,55]=0.224,X[32,55]=0.275,X[33,55]=0.306,X[34,55]=0.263,X[35,55]=0.204,X[36,55]=0.184,X[37,55]=0.149,X[38,55]=0.110,X[39,55]=0.051,X[40,55]=0.122,X[41,55]=0.298,X[42,55]=0.176,X[43,55]=0.047,X[44,55]=0.059,X[45,55]=0.102,X[46,55]=0.216,X[47,55]=0.345,X[48,55]=0.365,X[49,55]=0.298,X[50,55]=0.176 X[51,55]=0.278,X[52,55]=0.365,X[53,55]=0.341,X[54,55]=0.322,X[55,55]=0.271,X[56,55]=0.345,X[57,55]=0.435,X[58,55]=0.231,X[59,55]=0.047,X[60,55]=0.051,X[61,55]=0.082,X[62,55]=0.204,X[63,55]=0.369,X[64,55]=0.318,X[65,55]=0.310,X[66,55]=0.204,X[67,55]=0.102,X[68,55]=0.184,X[69,55]=0.306,X[70,55]=0.357,X[71,55]=0.439,X[72,55]=0.286,X[73,55]=0.243,X[74,55]=0.208,X[75,55]=0.173,X[76,55]=0.220,X[77,55]=0.329,X[78,55]=0.286,X[79,55]=0.106,X[80,55]=0.184,X[81,55]=0.200,X[82,55]=0.192,X[83,55]=0.231,X[84,55]=0.165,X[85,55]=0.086,X[86,55]=0.075,X[87,55]=0.071,X[88,55]=0.180,X[89,55]=0.180,X[90,55]=0.059,X[91,55]=0.071,X[92,55]=0.075,X[93,55]=0.114,X[94,55]=0.208,X[95,55]=0.298,X[96,55]=0.349,X[97,55]=0.302,X[98,55]=0.208,X[99,55]=0.318,X[100,55]=0.290 X[1,56]=0.282,X[2,56]=0.263,X[3,56]=0.271,X[4,56]=0.231,X[5,56]=0.118,X[6,56]=0.157,X[7,56]=0.271,X[8,56]=0.212,X[9,56]=0.125,X[10,56]=0.212,X[11,56]=0.263,X[12,56]=0.196,X[13,56]=0.094,X[14,56]=0.086,X[15,56]=0.102,X[16,56]=0.051,X[17,56]=0.059,X[18,56]=0.075,X[19,56]=0.063,X[20,56]=0.067,X[21,56]=0.063,X[22,56]=0.059,X[23,56]=0.114,X[24,56]=0.188,X[25,56]=0.157,X[26,56]=0.071,X[27,56]=0.176,X[28,56]=0.302,X[29,56]=0.255,X[30,56]=0.106,X[31,56]=0.235,X[32,56]=0.259,X[33,56]=0.149,X[34,56]=0.173,X[35,56]=0.243,X[36,56]=0.239,X[37,56]=0.212,X[38,56]=0.192,X[39,56]=0.118,X[40,56]=0.110,X[41,56]=0.200,X[42,56]=0.149,X[43,56]=0.086,X[44,56]=0.176,X[45,56]=0.251,X[46,56]=0.325,X[47,56]=0.298,X[48,56]=0.212,X[49,56]=0.098,X[50,56]=0.055 X[51,56]=0.118,X[52,56]=0.169,X[53,56]=0.192,X[54,56]=0.310,X[55,56]=0.384,X[56,56]=0.435,X[57,56]=0.329,X[58,56]=0.169,X[59,56]=0.125,X[60,56]=0.149,X[61,56]=0.212,X[62,56]=0.267,X[63,56]=0.329,X[64,56]=0.333,X[65,56]=0.133,X[66,56]=0.039,X[67,56]=0.039,X[68,56]=0.173,X[69,56]=0.271,X[70,56]=0.204,X[71,56]=0.349,X[72,56]=0.239,X[73,56]=0.231,X[74,56]=0.243,X[75,56]=0.220,X[76,56]=0.188,X[77,56]=0.165,X[78,56]=0.098,X[79,56]=0.114,X[80,56]=0.176,X[81,56]=0.243,X[82,56]=0.318,X[83,56]=0.278,X[84,56]=0.239,X[85,56]=0.173,X[86,56]=0.098,X[87,56]=0.075,X[88,56]=0.153,X[89,56]=0.165,X[90,56]=0.082,X[91,56]=0.129,X[92,56]=0.173,X[93,56]=0.247,X[94,56]=0.357,X[95,56]=0.337,X[96,56]=0.216,X[97,56]=0.082,X[98,56]=0.055,X[99,56]=0.094,X[100,56]=0.176 X[1,57]=0.149,X[2,57]=0.290,X[3,57]=0.325,X[4,57]=0.114,X[5,57]=0.051,X[6,57]=0.176,X[7,57]=0.282,X[8,57]=0.212,X[9,57]=0.059,X[10,57]=0.063,X[11,57]=0.196,X[12,57]=0.290,X[13,57]=0.133,X[14,57]=0.051,X[15,57]=0.035,X[16,57]=0.043,X[17,57]=0.059,X[18,57]=0.086,X[19,57]=0.133,X[20,57]=0.094,X[21,57]=0.067,X[22,57]=0.047,X[23,57]=0.102,X[24,57]=0.212,X[25,57]=0.169,X[26,57]=0.086,X[27,57]=0.235,X[28,57]=0.247,X[29,57]=0.122,X[30,57]=0.102,X[31,57]=0.271,X[32,57]=0.271,X[33,57]=0.133,X[34,57]=0.039,X[35,57]=0.102,X[36,57]=0.271,X[37,57]=0.239,X[38,57]=0.192,X[39,57]=0.200,X[40,57]=0.196,X[41,57]=0.204,X[42,57]=0.192,X[43,57]=0.212,X[44,57]=0.290,X[45,57]=0.341,X[46,57]=0.231,X[47,57]=0.098,X[48,57]=0.051,X[49,57]=0.071,X[50,57]=0.082 X[51,57]=0.071,X[52,57]=0.055,X[53,57]=0.071,X[54,57]=0.314,X[55,57]=0.463,X[56,57]=0.459,X[57,57]=0.349,X[58,57]=0.200,X[59,57]=0.204,X[60,57]=0.251,X[61,57]=0.306,X[62,57]=0.275,X[63,57]=0.243,X[64,57]=0.345,X[65,57]=0.259,X[66,57]=0.200,X[67,57]=0.133,X[68,57]=0.188,X[69,57]=0.227,X[70,57]=0.125,X[71,57]=0.067,X[72,57]=0.137,X[73,57]=0.255,X[74,57]=0.188,X[75,57]=0.157,X[76,57]=0.208,X[77,57]=0.188,X[78,57]=0.173,X[79,57]=0.216,X[80,57]=0.212,X[81,57]=0.192,X[82,57]=0.212,X[83,57]=0.169,X[84,57]=0.165,X[85,57]=0.204,X[86,57]=0.157,X[87,57]=0.149,X[88,57]=0.161,X[89,57]=0.169,X[90,57]=0.169,X[91,57]=0.224,X[92,57]=0.310,X[93,57]=0.365,X[94,57]=0.208,X[95,57]=0.078,X[96,57]=0.043,X[97,57]=0.071,X[98,57]=0.055,X[99,57]=0.059,X[100,57]=0.075 X[1,58]=0.153,X[2,58]=0.200,X[3,58]=0.118,X[4,58]=0.075,X[5,58]=0.055,X[6,58]=0.165,X[7,58]=0.318,X[8,58]=0.212,X[9,58]=0.075,X[10,58]=0.067,X[11,58]=0.063,X[12,58]=0.141,X[13,58]=0.125,X[14,58]=0.082,X[15,58]=0.118,X[16,58]=0.094,X[17,58]=0.059,X[18,58]=0.078,X[19,58]=0.169,X[20,58]=0.192,X[21,58]=0.118,X[22,58]=0.051,X[23,58]=0.106,X[24,58]=0.196,X[25,58]=0.169,X[26,58]=0.075,X[27,58]=0.137,X[28,58]=0.173,X[29,58]=0.200,X[30,58]=0.129,X[31,58]=0.263,X[32,58]=0.294,X[33,58]=0.118,X[34,58]=0.020,X[35,58]=0.051,X[36,58]=0.090,X[37,58]=0.125,X[38,58]=0.090,X[39,58]=0.169,X[40,58]=0.216,X[41,58]=0.220,X[42,58]=0.231,X[43,58]=0.243,X[44,58]=0.231,X[45,58]=0.137,X[46,58]=0.031,X[47,58]=0.043,X[48,58]=0.071,X[49,58]=0.051,X[50,58]=0.055 X[51,58]=0.071,X[52,58]=0.071,X[53,58]=0.243,X[54,58]=0.475,X[55,58]=0.427,X[56,58]=0.278,X[57,58]=0.404,X[58,58]=0.282,X[59,58]=0.247,X[60,58]=0.306,X[61,58]=0.243,X[62,58]=0.173,X[63,58]=0.314,X[64,58]=0.420,X[65,58]=0.416,X[66,58]=0.388,X[67,58]=0.400,X[68,58]=0.380,X[69,58]=0.298,X[70,58]=0.125,X[71,58]=0.063,X[72,58]=0.129,X[73,58]=0.235,X[74,58]=0.153,X[75,58]=0.051,X[76,58]=0.110,X[77,58]=0.173,X[78,58]=0.208,X[79,58]=0.251,X[80,58]=0.212,X[81,58]=0.118,X[82,58]=0.173,X[83,58]=0.125,X[84,58]=0.082,X[85,58]=0.169,X[86,58]=0.216,X[87,58]=0.286,X[88,58]=0.278,X[89,58]=0.212,X[90,58]=0.235,X[91,58]=0.275,X[92,58]=0.235,X[93,58]=0.125,X[94,58]=0.059,X[95,58]=0.051,X[96,58]=0.051,X[97,58]=0.075,X[98,58]=0.059,X[99,58]=0.047,X[100,58]=0.059 X[1,59]=0.165,X[2,59]=0.184,X[3,59]=0.098,X[4,59]=0.082,X[5,59]=0.059,X[6,59]=0.180,X[7,59]=0.357,X[8,59]=0.239,X[9,59]=0.082,X[10,59]=0.043,X[11,59]=0.055,X[12,59]=0.063,X[13,59]=0.063,X[14,59]=0.133,X[15,59]=0.282,X[16,59]=0.200,X[17,59]=0.059,X[18,59]=0.059,X[19,59]=0.129,X[20,59]=0.208,X[21,59]=0.196,X[22,59]=0.157,X[23,59]=0.157,X[24,59]=0.212,X[25,59]=0.180,X[26,59]=0.122,X[27,59]=0.212,X[28,59]=0.302,X[29,59]=0.192,X[30,59]=0.106,X[31,59]=0.286,X[32,59]=0.318,X[33,59]=0.114,X[34,59]=0.059,X[35,59]=0.071,X[36,59]=0.059,X[37,59]=0.063,X[38,59]=0.125,X[39,59]=0.208,X[40,59]=0.259,X[41,59]=0.259,X[42,59]=0.271,X[43,59]=0.247,X[44,59]=0.149,X[45,59]=0.063,X[46,59]=0.055,X[47,59]=0.078,X[48,59]=0.059,X[49,59]=0.071,X[50,59]=0.075 X[51,59]=0.047,X[52,59]=0.176,X[53,59]=0.439,X[54,59]=0.475,X[55,59]=0.247,X[56,59]=0.235,X[57,59]=0.416,X[58,59]=0.341,X[59,59]=0.227,X[60,59]=0.271,X[61,59]=0.212,X[62,59]=0.314,X[63,59]=0.435,X[64,59]=0.404,X[65,59]=0.431,X[66,59]=0.200,X[67,59]=0.165,X[68,59]=0.318,X[69,59]=0.337,X[70,59]=0.122,X[71,59]=0.043,X[72,59]=0.110,X[73,59]=0.227,X[74,59]=0.157,X[75,59]=0.067,X[76,59]=0.055,X[77,59]=0.118,X[78,59]=0.247,X[79,59]=0.322,X[80,59]=0.329,X[81,59]=0.235,X[82,59]=0.176,X[83,59]=0.145,X[84,59]=0.188,X[85,59]=0.239,X[86,59]=0.333,X[87,59]=0.353,X[88,59]=0.278,X[89,59]=0.243,X[90,59]=0.251,X[91,59]=0.204,X[92,59]=0.075,X[93,59]=0.020,X[94,59]=0.059,X[95,59]=0.059,X[96,59]=0.059,X[97,59]=0.039,X[98,59]=0.067,X[99,59]=0.078,X[100,59]=0.075 X[1,60]=0.169,X[2,60]=0.204,X[3,60]=0.106,X[4,60]=0.039,X[5,60]=0.047,X[6,60]=0.188,X[7,60]=0.349,X[8,60]=0.263,X[9,60]=0.071,X[10,60]=0.071,X[11,60]=0.059,X[12,60]=0.055,X[13,60]=0.047,X[14,60]=0.122,X[15,60]=0.294,X[16,60]=0.310,X[17,60]=0.094,X[18,60]=0.059,X[19,60]=0.200,X[20,60]=0.298,X[21,60]=0.169,X[22,60]=0.184,X[23,60]=0.235,X[24,60]=0.243,X[25,60]=0.235,X[26,60]=0.275,X[27,60]=0.314,X[28,60]=0.224,X[29,60]=0.071,X[30,60]=0.094,X[31,60]=0.290,X[32,60]=0.345,X[33,60]=0.180,X[34,60]=0.075,X[35,60]=0.063,X[36,60]=0.125,X[37,60]=0.176,X[38,60]=0.231,X[39,60]=0.275,X[40,60]=0.275,X[41,60]=0.302,X[42,60]=0.337,X[43,60]=0.278,X[44,60]=0.286,X[45,60]=0.208,X[46,60]=0.110,X[47,60]=0.051,X[48,60]=0.051,X[49,60]=0.067,X[50,60]=0.075 X[51,60]=0.047,X[52,60]=0.114,X[53,60]=0.322,X[54,60]=0.286,X[55,60]=0.192,X[56,60]=0.243,X[57,60]=0.392,X[58,60]=0.361,X[59,60]=0.196,X[60,60]=0.243,X[61,60]=0.259,X[62,60]=0.439,X[63,60]=0.400,X[64,60]=0.302,X[65,60]=0.451,X[66,60]=0.267,X[67,60]=0.027,X[68,60]=0.141,X[69,60]=0.224,X[70,60]=0.114,X[71,60]=0.047,X[72,60]=0.114,X[73,60]=0.216,X[74,60]=0.180,X[75,60]=0.082,X[76,60]=0.055,X[77,60]=0.141,X[78,60]=0.267,X[79,60]=0.204,X[80,60]=0.251,X[81,60]=0.298,X[82,60]=0.282,X[83,60]=0.216,X[84,60]=0.192,X[85,60]=0.298,X[86,60]=0.329,X[87,60]=0.275,X[88,60]=0.275,X[89,60]=0.325,X[90,60]=0.306,X[91,60]=0.259,X[92,60]=0.161,X[93,60]=0.071,X[94,60]=0.059,X[95,60]=0.067,X[96,60]=0.071,X[97,60]=0.063,X[98,60]=0.051,X[99,60]=0.067,X[100,60]=0.063 X[1,61]=0.153,X[2,61]=0.173,X[3,61]=0.141,X[4,61]=0.067,X[5,61]=0.055,X[6,61]=0.173,X[7,61]=0.259,X[8,61]=0.161,X[9,61]=0.059,X[10,61]=0.090,X[11,61]=0.071,X[12,61]=0.071,X[13,61]=0.039,X[14,61]=0.098,X[15,61]=0.251,X[16,61]=0.361,X[17,61]=0.184,X[18,61]=0.125,X[19,61]=0.376,X[20,61]=0.290,X[21,61]=0.047,X[22,61]=0.071,X[23,61]=0.231,X[24,61]=0.294,X[25,61]=0.306,X[26,61]=0.239,X[27,61]=0.188,X[28,61]=0.239,X[29,61]=0.173,X[30,61]=0.106,X[31,61]=0.129,X[32,61]=0.204,X[33,61]=0.212,X[34,61]=0.129,X[35,61]=0.161,X[36,61]=0.243,X[37,61]=0.310,X[38,61]=0.282,X[39,61]=0.192,X[40,61]=0.122,X[41,61]=0.282,X[42,61]=0.263,X[43,61]=0.137,X[44,61]=0.263,X[45,61]=0.282,X[46,61]=0.227,X[47,61]=0.149,X[48,61]=0.086,X[49,61]=0.075,X[50,61]=0.067 X[51,61]=0.071,X[52,61]=0.059,X[53,61]=0.102,X[54,61]=0.169,X[55,61]=0.200,X[56,61]=0.196,X[57,61]=0.180,X[58,61]=0.129,X[59,61]=0.173,X[60,61]=0.251,X[61,61]=0.325,X[62,61]=0.482,X[63,61]=0.369,X[64,61]=0.333,X[65,61]=0.420,X[66,61]=0.416,X[67,61]=0.176,X[68,61]=0.169,X[69,61]=0.212,X[70,61]=0.118,X[71,61]=0.067,X[72,61]=0.110,X[73,61]=0.204,X[74,61]=0.196,X[75,61]=0.176,X[76,61]=0.110,X[77,61]=0.149,X[78,61]=0.259,X[79,61]=0.137,X[80,61]=0.149,X[81,61]=0.267,X[82,61]=0.345,X[83,61]=0.365,X[84,61]=0.275,X[85,61]=0.259,X[86,61]=0.263,X[87,61]=0.188,X[88,61]=0.267,X[89,61]=0.337,X[90,61]=0.231,X[91,61]=0.290,X[92,61]=0.306,X[93,61]=0.212,X[94,61]=0.125,X[95,61]=0.055,X[96,61]=0.102,X[97,61]=0.169,X[98,61]=0.122,X[99,61]=0.059,X[100,61]=0.051 X[1,62]=0.180,X[2,62]=0.235,X[3,62]=0.247,X[4,62]=0.165,X[5,62]=0.173,X[6,62]=0.263,X[7,62]=0.231,X[8,62]=0.094,X[9,62]=0.110,X[10,62]=0.137,X[11,62]=0.090,X[12,62]=0.137,X[13,62]=0.196,X[14,62]=0.184,X[15,62]=0.220,X[16,62]=0.337,X[17,62]=0.306,X[18,62]=0.322,X[19,62]=0.384,X[20,62]=0.098,X[21,62]=0.027,X[22,62]=0.055,X[23,62]=0.145,X[24,62]=0.322,X[25,62]=0.235,X[26,62]=0.090,X[27,62]=0.239,X[28,62]=0.408,X[29,62]=0.298,X[30,62]=0.157,X[31,62]=0.106,X[32,62]=0.149,X[33,62]=0.204,X[34,62]=0.216,X[35,62]=0.294,X[36,62]=0.353,X[37,62]=0.267,X[38,62]=0.129,X[39,62]=0.051,X[40,62]=0.086,X[41,62]=0.278,X[42,62]=0.212,X[43,62]=0.078,X[44,62]=0.192,X[45,62]=0.216,X[46,62]=0.239,X[47,62]=0.239,X[48,62]=0.188,X[49,62]=0.129,X[50,62]=0.071 X[51,62]=0.075,X[52,62]=0.125,X[53,62]=0.173,X[54,62]=0.267,X[55,62]=0.314,X[56,62]=0.196,X[57,62]=0.063,X[58,62]=0.071,X[59,62]=0.231,X[60,62]=0.286,X[61,62]=0.341,X[62,62]=0.392,X[63,62]=0.220,X[64,62]=0.118,X[65,62]=0.290,X[66,62]=0.486,X[67,62]=0.306,X[68,62]=0.169,X[69,62]=0.196,X[70,62]=0.114,X[71,62]=0.047,X[72,62]=0.094,X[73,62]=0.188,X[74,62]=0.173,X[75,62]=0.176,X[76,62]=0.196,X[77,62]=0.176,X[78,62]=0.239,X[79,62]=0.231,X[80,62]=0.286,X[81,62]=0.349,X[82,62]=0.298,X[83,62]=0.322,X[84,62]=0.357,X[85,62]=0.263,X[86,62]=0.176,X[87,62]=0.110,X[88,62]=0.224,X[89,62]=0.282,X[90,62]=0.188,X[91,62]=0.208,X[92,62]=0.208,X[93,62]=0.251,X[94,62]=0.227,X[95,62]=0.157,X[96,62]=0.133,X[97,62]=0.184,X[98,62]=0.188,X[99,62]=0.114,X[100,62]=0.110 X[1,63]=0.314,X[2,63]=0.294,X[3,63]=0.224,X[4,63]=0.259,X[5,63]=0.306,X[6,63]=0.239,X[7,63]=0.106,X[8,63]=0.086,X[9,63]=0.161,X[10,63]=0.173,X[11,63]=0.133,X[12,63]=0.204,X[13,63]=0.341,X[14,63]=0.373,X[15,63]=0.353,X[16,63]=0.400,X[17,63]=0.443,X[18,63]=0.408,X[19,63]=0.188,X[20,63]=0.051,X[21,63]=0.063,X[22,63]=0.039,X[23,63]=0.137,X[24,63]=0.310,X[25,63]=0.235,X[26,63]=0.212,X[27,63]=0.404,X[28,63]=0.388,X[29,63]=0.165,X[30,63]=0.173,X[31,63]=0.188,X[32,63]=0.173,X[33,63]=0.208,X[34,63]=0.298,X[35,63]=0.278,X[36,63]=0.169,X[37,63]=0.141,X[38,63]=0.165,X[39,63]=0.133,X[40,63]=0.149,X[41,63]=0.239,X[42,63]=0.176,X[43,63]=0.098,X[44,63]=0.208,X[45,63]=0.184,X[46,63]=0.114,X[47,63]=0.153,X[48,63]=0.216,X[49,63]=0.196,X[50,63]=0.161 X[51,63]=0.173,X[52,63]=0.216,X[53,63]=0.235,X[54,63]=0.224,X[55,63]=0.141,X[56,63]=0.067,X[57,63]=0.047,X[58,63]=0.149,X[59,63]=0.329,X[60,63]=0.365,X[61,63]=0.216,X[62,63]=0.110,X[63,63]=0.059,X[64,63]=0.031,X[65,63]=0.110,X[66,63]=0.247,X[67,63]=0.224,X[68,63]=0.188,X[69,63]=0.212,X[70,63]=0.192,X[71,63]=0.114,X[72,63]=0.122,X[73,63]=0.196,X[74,63]=0.137,X[75,63]=0.094,X[76,63]=0.176,X[77,63]=0.192,X[78,63]=0.267,X[79,63]=0.322,X[80,63]=0.325,X[81,63]=0.314,X[82,63]=0.318,X[83,63]=0.220,X[84,63]=0.161,X[85,63]=0.227,X[86,63]=0.282,X[87,63]=0.247,X[88,63]=0.235,X[89,63]=0.235,X[90,63]=0.188,X[91,63]=0.204,X[92,63]=0.145,X[93,63]=0.153,X[94,63]=0.224,X[95,63]=0.224,X[96,63]=0.184,X[97,63]=0.161,X[98,63]=0.169,X[99,63]=0.192,X[100,63]=0.235 X[1,64]=0.231,X[2,64]=0.247,X[3,64]=0.286,X[4,64]=0.298,X[5,64]=0.184,X[6,64]=0.063,X[7,64]=0.067,X[8,64]=0.078,X[9,64]=0.114,X[10,64]=0.165,X[11,64]=0.161,X[12,64]=0.180,X[13,64]=0.188,X[14,64]=0.216,X[15,64]=0.329,X[16,64]=0.349,X[17,64]=0.443,X[18,64]=0.329,X[19,64]=0.063,X[20,64]=0.059,X[21,64]=0.059,X[22,64]=0.055,X[23,64]=0.129,X[24,64]=0.255,X[25,64]=0.329,X[26,64]=0.404,X[27,64]=0.412,X[28,64]=0.169,X[29,64]=0.094,X[30,64]=0.216,X[31,64]=0.220,X[32,64]=0.184,X[33,64]=0.200,X[34,64]=0.188,X[35,64]=0.145,X[36,64]=0.192,X[37,64]=0.271,X[38,64]=0.298,X[39,64]=0.212,X[40,64]=0.192,X[41,64]=0.224,X[42,64]=0.173,X[43,64]=0.110,X[44,64]=0.192,X[45,64]=0.180,X[46,64]=0.047,X[47,64]=0.071,X[48,64]=0.196,X[49,64]=0.220,X[50,64]=0.188 X[51,64]=0.227,X[52,64]=0.227,X[53,64]=0.145,X[54,64]=0.051,X[55,64]=0.035,X[56,64]=0.071,X[57,64]=0.051,X[58,64]=0.110,X[59,64]=0.227,X[60,64]=0.220,X[61,64]=0.051,X[62,64]=0.055,X[63,64]=0.059,X[64,64]=0.067,X[65,64]=0.110,X[66,64]=0.192,X[67,64]=0.227,X[68,64]=0.216,X[69,64]=0.231,X[70,64]=0.294,X[71,64]=0.255,X[72,64]=0.173,X[73,64]=0.188,X[74,64]=0.169,X[75,64]=0.173,X[76,64]=0.239,X[77,64]=0.271,X[78,64]=0.271,X[79,64]=0.294,X[80,64]=0.278,X[81,64]=0.290,X[82,64]=0.176,X[83,64]=0.067,X[84,64]=0.047,X[85,64]=0.102,X[86,64]=0.165,X[87,64]=0.290,X[88,64]=0.318,X[89,64]=0.212,X[90,64]=0.200,X[91,64]=0.220,X[92,64]=0.188,X[93,64]=0.216,X[94,64]=0.286,X[95,64]=0.208,X[96,64]=0.196,X[97,64]=0.192,X[98,64]=0.192,X[99,64]=0.235,X[100,64]=0.239 X[1,65]=0.165,X[2,65]=0.235,X[3,65]=0.216,X[4,65]=0.114,X[5,65]=0.071,X[6,65]=0.055,X[7,65]=0.075,X[8,65]=0.059,X[9,65]=0.102,X[10,65]=0.235,X[11,65]=0.220,X[12,65]=0.200,X[13,65]=0.212,X[14,65]=0.208,X[15,65]=0.212,X[16,65]=0.137,X[17,65]=0.290,X[18,65]=0.384,X[19,65]=0.118,X[20,65]=0.039,X[21,65]=0.051,X[22,65]=0.059,X[23,65]=0.106,X[24,65]=0.224,X[25,65]=0.384,X[26,65]=0.475,X[27,65]=0.333,X[28,65]=0.208,X[29,65]=0.243,X[30,65]=0.290,X[31,65]=0.255,X[32,65]=0.176,X[33,65]=0.192,X[34,65]=0.192,X[35,65]=0.224,X[36,65]=0.325,X[37,65]=0.337,X[38,65]=0.212,X[39,65]=0.106,X[40,65]=0.157,X[41,65]=0.220,X[42,65]=0.184,X[43,65]=0.145,X[44,65]=0.216,X[45,65]=0.192,X[46,65]=0.145,X[47,65]=0.224,X[48,65]=0.310,X[49,65]=0.208,X[50,65]=0.184 X[51,65]=0.306,X[52,65]=0.310,X[53,65]=0.247,X[54,65]=0.137,X[55,65]=0.075,X[56,65]=0.067,X[57,65]=0.055,X[58,65]=0.067,X[59,65]=0.059,X[60,65]=0.078,X[61,65]=0.082,X[62,65]=0.071,X[63,65]=0.098,X[64,65]=0.169,X[65,65]=0.286,X[66,65]=0.302,X[67,65]=0.165,X[68,65]=0.196,X[69,65]=0.275,X[70,65]=0.255,X[71,65]=0.239,X[72,65]=0.271,X[73,65]=0.212,X[74,65]=0.184,X[75,65]=0.239,X[76,65]=0.322,X[77,65]=0.278,X[78,65]=0.290,X[79,65]=0.278,X[80,65]=0.255,X[81,65]=0.176,X[82,65]=0.149,X[83,65]=0.106,X[84,65]=0.075,X[85,65]=0.043,X[86,65]=0.051,X[87,65]=0.122,X[88,65]=0.216,X[89,65]=0.212,X[90,65]=0.216,X[91,65]=0.247,X[92,65]=0.278,X[93,65]=0.325,X[94,65]=0.216,X[95,65]=0.110,X[96,65]=0.094,X[97,65]=0.161,X[98,65]=0.239,X[99,65]=0.275,X[100,65]=0.216 X[1,66]=0.255,X[2,66]=0.200,X[3,66]=0.110,X[4,66]=0.047,X[5,66]=0.071,X[6,66]=0.071,X[7,66]=0.055,X[8,66]=0.047,X[9,66]=0.071,X[10,66]=0.235,X[11,66]=0.290,X[12,66]=0.149,X[13,66]=0.176,X[14,66]=0.278,X[15,66]=0.235,X[16,66]=0.133,X[17,66]=0.192,X[18,66]=0.373,X[19,66]=0.208,X[20,66]=0.055,X[21,66]=0.051,X[22,66]=0.055,X[23,66]=0.137,X[24,66]=0.345,X[25,66]=0.467,X[26,66]=0.431,X[27,66]=0.439,X[28,66]=0.455,X[29,66]=0.459,X[30,66]=0.310,X[31,66]=0.165,X[32,66]=0.184,X[33,66]=0.224,X[34,66]=0.255,X[35,66]=0.329,X[36,66]=0.302,X[37,66]=0.133,X[38,66]=0.067,X[39,66]=0.043,X[40,66]=0.086,X[41,66]=0.204,X[42,66]=0.212,X[43,66]=0.220,X[44,66]=0.239,X[45,66]=0.239,X[46,66]=0.286,X[47,66]=0.306,X[48,66]=0.184,X[49,66]=0.086,X[50,66]=0.224 X[51,66]=0.290,X[52,66]=0.298,X[53,66]=0.302,X[54,66]=0.294,X[55,66]=0.204,X[56,66]=0.125,X[57,66]=0.075,X[58,66]=0.063,X[59,66]=0.157,X[60,66]=0.192,X[61,66]=0.075,X[62,66]=0.059,X[63,66]=0.122,X[64,66]=0.259,X[65,66]=0.278,X[66,66]=0.122,X[67,66]=0.055,X[68,66]=0.196,X[69,66]=0.286,X[70,66]=0.196,X[71,66]=0.176,X[72,66]=0.247,X[73,66]=0.282,X[74,66]=0.247,X[75,66]=0.227,X[76,66]=0.251,X[77,66]=0.267,X[78,66]=0.290,X[79,66]=0.333,X[80,66]=0.220,X[81,66]=0.165,X[82,66]=0.294,X[83,66]=0.310,X[84,66]=0.137,X[85,66]=0.067,X[86,66]=0.129,X[87,66]=0.188,X[88,66]=0.188,X[89,66]=0.208,X[90,66]=0.196,X[91,66]=0.259,X[92,66]=0.278,X[93,66]=0.220,X[94,66]=0.098,X[95,66]=0.051,X[96,66]=0.051,X[97,66]=0.173,X[98,66]=0.298,X[99,66]=0.353,X[100,66]=0.306 X[1,67]=0.306,X[2,67]=0.318,X[3,67]=0.239,X[4,67]=0.145,X[5,67]=0.114,X[6,67]=0.086,X[7,67]=0.063,X[8,67]=0.075,X[9,67]=0.043,X[10,67]=0.129,X[11,67]=0.322,X[12,67]=0.216,X[13,67]=0.196,X[14,67]=0.208,X[15,67]=0.196,X[16,67]=0.216,X[17,67]=0.208,X[18,67]=0.325,X[19,67]=0.302,X[20,67]=0.075,X[21,67]=0.075,X[22,67]=0.071,X[23,67]=0.294,X[24,67]=0.498,X[25,67]=0.392,X[26,67]=0.102,X[27,67]=0.224,X[28,67]=0.353,X[29,67]=0.353,X[30,67]=0.184,X[31,67]=0.212,X[32,67]=0.282,X[33,67]=0.286,X[34,67]=0.286,X[35,67]=0.251,X[36,67]=0.114,X[37,67]=0.039,X[38,67]=0.055,X[39,67]=0.067,X[40,67]=0.102,X[41,67]=0.208,X[42,67]=0.184,X[43,67]=0.161,X[44,67]=0.235,X[45,67]=0.302,X[46,67]=0.243,X[47,67]=0.122,X[48,67]=0.031,X[49,67]=0.075,X[50,67]=0.243 X[51,67]=0.200,X[52,67]=0.071,X[53,67]=0.196,X[54,67]=0.314,X[55,67]=0.357,X[56,67]=0.286,X[57,67]=0.141,X[58,67]=0.078,X[59,67]=0.212,X[60,67]=0.318,X[61,67]=0.149,X[62,67]=0.051,X[63,67]=0.118,X[64,67]=0.271,X[65,67]=0.129,X[66,67]=0.051,X[67,67]=0.039,X[68,67]=0.200,X[69,67]=0.286,X[70,67]=0.243,X[71,67]=0.243,X[72,67]=0.278,X[73,67]=0.306,X[74,67]=0.345,X[75,67]=0.267,X[76,67]=0.231,X[77,67]=0.176,X[78,67]=0.180,X[79,67]=0.353,X[80,67]=0.227,X[81,67]=0.196,X[82,67]=0.396,X[83,67]=0.349,X[84,67]=0.180,X[85,67]=0.094,X[86,67]=0.184,X[87,67]=0.275,X[88,67]=0.200,X[89,67]=0.204,X[90,67]=0.216,X[91,67]=0.275,X[92,67]=0.224,X[93,67]=0.176,X[94,67]=0.078,X[95,67]=0.039,X[96,67]=0.063,X[97,67]=0.212,X[98,67]=0.263,X[99,67]=0.180,X[100,67]=0.239 X[1,68]=0.204,X[2,68]=0.298,X[3,68]=0.408,X[4,68]=0.247,X[5,68]=0.204,X[6,68]=0.200,X[7,68]=0.220,X[8,68]=0.224,X[9,68]=0.161,X[10,68]=0.176,X[11,68]=0.290,X[12,68]=0.310,X[13,68]=0.196,X[14,68]=0.216,X[15,68]=0.302,X[16,68]=0.357,X[17,68]=0.243,X[18,68]=0.290,X[19,68]=0.361,X[20,68]=0.165,X[21,68]=0.059,X[22,68]=0.220,X[23,68]=0.443,X[24,68]=0.420,X[25,68]=0.192,X[26,68]=0.059,X[27,68]=0.133,X[28,68]=0.173,X[29,68]=0.173,X[30,68]=0.282,X[31,68]=0.357,X[32,68]=0.365,X[33,68]=0.243,X[34,68]=0.271,X[35,68]=0.286,X[36,68]=0.192,X[37,68]=0.122,X[38,68]=0.071,X[39,68]=0.063,X[40,68]=0.110,X[41,68]=0.200,X[42,68]=0.145,X[43,68]=0.094,X[44,68]=0.243,X[45,68]=0.243,X[46,68]=0.082,X[47,68]=0.051,X[48,68]=0.082,X[49,68]=0.086,X[50,68]=0.208 X[51,68]=0.200,X[52,68]=0.071,X[53,68]=0.153,X[54,68]=0.200,X[55,68]=0.227,X[56,68]=0.310,X[57,68]=0.122,X[58,68]=0.110,X[59,68]=0.173,X[60,68]=0.329,X[61,68]=0.259,X[62,68]=0.055,X[63,68]=0.157,X[64,68]=0.392,X[65,68]=0.196,X[66,68]=0.055,X[67,68]=0.125,X[68,68]=0.251,X[69,68]=0.310,X[70,68]=0.294,X[71,68]=0.247,X[72,68]=0.196,X[73,68]=0.286,X[74,68]=0.322,X[75,68]=0.267,X[76,68]=0.329,X[77,68]=0.263,X[78,68]=0.200,X[79,68]=0.337,X[80,68]=0.333,X[81,68]=0.349,X[82,68]=0.380,X[83,68]=0.204,X[84,68]=0.188,X[85,68]=0.090,X[86,68]=0.133,X[87,68]=0.298,X[88,68]=0.208,X[89,68]=0.200,X[90,68]=0.298,X[91,68]=0.408,X[92,68]=0.325,X[93,68]=0.184,X[94,68]=0.098,X[95,68]=0.071,X[96,68]=0.075,X[97,68]=0.188,X[98,68]=0.239,X[99,68]=0.129,X[100,68]=0.188 X[1,69]=0.169,X[2,69]=0.192,X[3,69]=0.275,X[4,69]=0.302,X[5,69]=0.349,X[6,69]=0.235,X[7,69]=0.294,X[8,69]=0.384,X[9,69]=0.384,X[10,69]=0.376,X[11,69]=0.369,X[12,69]=0.361,X[13,69]=0.278,X[14,69]=0.286,X[15,69]=0.310,X[16,69]=0.180,X[17,69]=0.110,X[18,69]=0.173,X[19,69]=0.302,X[20,69]=0.275,X[21,69]=0.216,X[22,69]=0.380,X[23,69]=0.384,X[24,69]=0.231,X[25,69]=0.137,X[26,69]=0.075,X[27,69]=0.141,X[28,69]=0.192,X[29,69]=0.282,X[30,69]=0.345,X[31,69]=0.314,X[32,69]=0.384,X[33,69]=0.180,X[34,69]=0.098,X[35,69]=0.216,X[36,69]=0.286,X[37,69]=0.290,X[38,69]=0.235,X[39,69]=0.141,X[40,69]=0.149,X[41,69]=0.200,X[42,69]=0.188,X[43,69]=0.137,X[44,69]=0.227,X[45,69]=0.212,X[46,69]=0.071,X[47,69]=0.063,X[48,69]=0.067,X[49,69]=0.075,X[50,69]=0.208 X[51,69]=0.263,X[52,69]=0.106,X[53,69]=0.157,X[54,69]=0.165,X[55,69]=0.055,X[56,69]=0.118,X[57,69]=0.145,X[58,69]=0.173,X[59,69]=0.184,X[60,69]=0.278,X[61,69]=0.337,X[62,69]=0.196,X[63,69]=0.337,X[64,69]=0.365,X[65,69]=0.145,X[66,69]=0.149,X[67,69]=0.239,X[68,69]=0.306,X[69,69]=0.337,X[70,69]=0.243,X[71,69]=0.106,X[72,69]=0.255,X[73,69]=0.345,X[74,69]=0.212,X[75,69]=0.153,X[76,69]=0.306,X[77,69]=0.369,X[78,69]=0.361,X[79,69]=0.404,X[80,69]=0.447,X[81,69]=0.412,X[82,69]=0.231,X[83,69]=0.173,X[84,69]=0.188,X[85,69]=0.141,X[86,69]=0.200,X[87,69]=0.306,X[88,69]=0.271,X[89,69]=0.290,X[90,69]=0.412,X[91,69]=0.400,X[92,69]=0.267,X[93,69]=0.216,X[94,69]=0.106,X[95,69]=0.055,X[96,69]=0.055,X[97,69]=0.165,X[98,69]=0.247,X[99,69]=0.153,X[100,69]=0.188 X[1,70]=0.216,X[2,70]=0.243,X[3,70]=0.298,X[4,70]=0.318,X[5,70]=0.196,X[6,70]=0.055,X[7,70]=0.067,X[8,70]=0.180,X[9,70]=0.290,X[10,70]=0.357,X[11,70]=0.412,X[12,70]=0.494,X[13,70]=0.459,X[14,70]=0.416,X[15,70]=0.376,X[16,70]=0.314,X[17,70]=0.243,X[18,70]=0.176,X[19,70]=0.259,X[20,70]=0.353,X[21,70]=0.384,X[22,70]=0.384,X[23,70]=0.220,X[24,70]=0.180,X[25,70]=0.176,X[26,70]=0.173,X[27,70]=0.243,X[28,70]=0.318,X[29,70]=0.325,X[30,70]=0.353,X[31,70]=0.369,X[32,70]=0.357,X[33,70]=0.220,X[34,70]=0.122,X[35,70]=0.184,X[36,70]=0.165,X[37,70]=0.216,X[38,70]=0.329,X[39,70]=0.251,X[40,70]=0.216,X[41,70]=0.208,X[42,70]=0.247,X[43,70]=0.259,X[44,70]=0.208,X[45,70]=0.169,X[46,70]=0.078,X[47,70]=0.067,X[48,70]=0.043,X[49,70]=0.055,X[50,70]=0.196 X[51,70]=0.345,X[52,70]=0.125,X[53,70]=0.145,X[54,70]=0.157,X[55,70]=0.094,X[56,70]=0.176,X[57,70]=0.310,X[58,70]=0.353,X[59,70]=0.322,X[60,70]=0.306,X[61,70]=0.396,X[62,70]=0.388,X[63,70]=0.404,X[64,70]=0.224,X[65,70]=0.196,X[66,70]=0.286,X[67,70]=0.306,X[68,70]=0.259,X[69,70]=0.318,X[70,70]=0.184,X[71,70]=0.212,X[72,70]=0.408,X[73,70]=0.412,X[74,70]=0.188,X[75,70]=0.043,X[76,70]=0.063,X[77,70]=0.129,X[78,70]=0.263,X[79,70]=0.361,X[80,70]=0.435,X[81,70]=0.349,X[82,70]=0.157,X[83,70]=0.157,X[84,70]=0.188,X[85,70]=0.243,X[86,70]=0.322,X[87,70]=0.314,X[88,70]=0.341,X[89,70]=0.416,X[90,70]=0.420,X[91,70]=0.239,X[92,70]=0.263,X[93,70]=0.310,X[94,70]=0.212,X[95,70]=0.114,X[96,70]=0.078,X[97,70]=0.165,X[98,70]=0.329,X[99,70]=0.188,X[100,70]=0.188 X[1,71]=0.255,X[2,71]=0.310,X[3,71]=0.275,X[4,71]=0.102,X[5,71]=0.055,X[6,71]=0.051,X[7,71]=0.078,X[8,71]=0.157,X[9,71]=0.231,X[10,71]=0.314,X[11,71]=0.439,X[12,71]=0.475,X[13,71]=0.396,X[14,71]=0.322,X[15,71]=0.333,X[16,71]=0.357,X[17,71]=0.376,X[18,71]=0.361,X[19,71]=0.380,X[20,71]=0.427,X[21,71]=0.427,X[22,71]=0.353,X[23,71]=0.278,X[24,71]=0.235,X[25,71]=0.239,X[26,71]=0.243,X[27,71]=0.298,X[28,71]=0.216,X[29,71]=0.255,X[30,71]=0.353,X[31,71]=0.180,X[32,71]=0.180,X[33,71]=0.212,X[34,71]=0.235,X[35,71]=0.224,X[36,71]=0.137,X[37,71]=0.161,X[38,71]=0.302,X[39,71]=0.247,X[40,71]=0.176,X[41,71]=0.235,X[42,71]=0.267,X[43,71]=0.263,X[44,71]=0.267,X[45,71]=0.208,X[46,71]=0.122,X[47,71]=0.071,X[48,71]=0.051,X[49,71]=0.067,X[50,71]=0.102 X[51,71]=0.180,X[52,71]=0.106,X[53,71]=0.149,X[54,71]=0.192,X[55,71]=0.216,X[56,71]=0.251,X[57,71]=0.341,X[58,71]=0.345,X[59,71]=0.341,X[60,71]=0.384,X[61,71]=0.439,X[62,71]=0.451,X[63,71]=0.302,X[64,71]=0.224,X[65,71]=0.302,X[66,71]=0.286,X[67,71]=0.141,X[68,71]=0.129,X[69,71]=0.278,X[70,71]=0.267,X[71,71]=0.392,X[72,71]=0.416,X[73,71]=0.306,X[74,71]=0.165,X[75,71]=0.055,X[76,71]=0.039,X[77,71]=0.039,X[78,71]=0.078,X[79,71]=0.188,X[80,71]=0.341,X[81,71]=0.400,X[82,71]=0.208,X[83,71]=0.200,X[84,71]=0.224,X[85,71]=0.235,X[86,71]=0.267,X[87,71]=0.267,X[88,71]=0.384,X[89,71]=0.482,X[90,71]=0.412,X[91,71]=0.306,X[92,71]=0.271,X[93,71]=0.306,X[94,71]=0.290,X[95,71]=0.224,X[96,71]=0.145,X[97,71]=0.141,X[98,71]=0.298,X[99,71]=0.239,X[100,71]=0.224 X[1,72]=0.271,X[2,72]=0.306,X[3,72]=0.196,X[4,72]=0.133,X[5,72]=0.137,X[6,72]=0.216,X[7,72]=0.298,X[8,72]=0.271,X[9,72]=0.373,X[10,72]=0.404,X[11,72]=0.224,X[12,72]=0.161,X[13,72]=0.176,X[14,72]=0.180,X[15,72]=0.235,X[16,72]=0.267,X[17,72]=0.235,X[18,72]=0.286,X[19,72]=0.435,X[20,72]=0.427,X[21,72]=0.463,X[22,72]=0.369,X[23,72]=0.345,X[24,72]=0.349,X[25,72]=0.376,X[26,72]=0.384,X[27,72]=0.365,X[28,72]=0.302,X[29,72]=0.369,X[30,72]=0.306,X[31,72]=0.184,X[32,72]=0.180,X[33,72]=0.251,X[34,72]=0.329,X[35,72]=0.302,X[36,72]=0.255,X[37,72]=0.278,X[38,72]=0.216,X[39,72]=0.086,X[40,72]=0.106,X[41,72]=0.271,X[42,72]=0.235,X[43,72]=0.125,X[44,72]=0.212,X[45,72]=0.231,X[46,72]=0.239,X[47,72]=0.161,X[48,72]=0.059,X[49,72]=0.075,X[50,72]=0.082 X[51,72]=0.122,X[52,72]=0.196,X[53,72]=0.278,X[54,72]=0.286,X[55,72]=0.275,X[56,72]=0.196,X[57,72]=0.169,X[58,72]=0.114,X[59,72]=0.161,X[60,72]=0.247,X[61,72]=0.310,X[62,72]=0.396,X[63,72]=0.318,X[64,72]=0.267,X[65,72]=0.208,X[66,72]=0.086,X[67,72]=0.051,X[68,72]=0.110,X[69,72]=0.325,X[70,72]=0.467,X[71,72]=0.490,X[72,72]=0.376,X[73,72]=0.349,X[74,72]=0.333,X[75,72]=0.188,X[76,72]=0.118,X[77,72]=0.169,X[78,72]=0.255,X[79,72]=0.286,X[80,72]=0.255,X[81,72]=0.322,X[82,72]=0.306,X[83,72]=0.306,X[84,72]=0.318,X[85,72]=0.267,X[86,72]=0.322,X[87,72]=0.427,X[88,72]=0.451,X[89,72]=0.373,X[90,72]=0.290,X[91,72]=0.275,X[92,72]=0.290,X[93,72]=0.353,X[94,72]=0.247,X[95,72]=0.169,X[96,72]=0.212,X[97,72]=0.255,X[98,72]=0.302,X[99,72]=0.286,X[100,72]=0.192 X[1,73]=0.196,X[2,73]=0.224,X[3,73]=0.271,X[4,73]=0.298,X[5,73]=0.282,X[6,73]=0.275,X[7,73]=0.212,X[8,73]=0.118,X[9,73]=0.227,X[10,73]=0.259,X[11,73]=0.114,X[12,73]=0.063,X[13,73]=0.051,X[14,73]=0.082,X[15,73]=0.153,X[16,73]=0.263,X[17,73]=0.255,X[18,73]=0.392,X[19,73]=0.471,X[20,73]=0.318,X[21,73]=0.416,X[22,73]=0.357,X[23,73]=0.212,X[24,73]=0.294,X[25,73]=0.345,X[26,73]=0.267,X[27,73]=0.373,X[28,73]=0.400,X[29,73]=0.443,X[30,73]=0.467,X[31,73]=0.482,X[32,73]=0.447,X[33,73]=0.388,X[34,73]=0.271,X[35,73]=0.141,X[36,73]=0.200,X[37,73]=0.212,X[38,73]=0.161,X[39,73]=0.137,X[40,73]=0.145,X[41,73]=0.298,X[42,73]=0.278,X[43,73]=0.122,X[44,73]=0.169,X[45,73]=0.169,X[46,73]=0.125,X[47,73]=0.114,X[48,73]=0.071,X[49,73]=0.114,X[50,73]=0.196 X[51,73]=0.282,X[52,73]=0.337,X[53,73]=0.306,X[54,73]=0.227,X[55,73]=0.314,X[56,73]=0.251,X[57,73]=0.145,X[58,73]=0.161,X[59,73]=0.224,X[60,73]=0.306,X[61,73]=0.255,X[62,73]=0.294,X[63,73]=0.353,X[64,73]=0.267,X[65,73]=0.145,X[66,73]=0.039,X[67,73]=0.071,X[68,73]=0.267,X[69,73]=0.471,X[70,73]=0.455,X[71,73]=0.400,X[72,73]=0.416,X[73,73]=0.439,X[74,73]=0.467,X[75,73]=0.329,X[76,73]=0.204,X[77,73]=0.306,X[78,73]=0.286,X[79,73]=0.153,X[80,73]=0.078,X[81,73]=0.196,X[82,73]=0.365,X[83,73]=0.286,X[84,73]=0.329,X[85,73]=0.306,X[86,73]=0.420,X[87,73]=0.471,X[88,73]=0.263,X[89,73]=0.208,X[90,73]=0.180,X[91,73]=0.176,X[92,73]=0.153,X[93,73]=0.227,X[94,73]=0.231,X[95,73]=0.208,X[96,73]=0.322,X[97,73]=0.341,X[98,73]=0.263,X[99,73]=0.200,X[100,73]=0.184 X[1,74]=0.220,X[2,74]=0.220,X[3,74]=0.235,X[4,74]=0.251,X[5,74]=0.329,X[6,74]=0.188,X[7,74]=0.051,X[8,74]=0.047,X[9,74]=0.082,X[10,74]=0.145,X[11,74]=0.192,X[12,74]=0.180,X[13,74]=0.122,X[14,74]=0.059,X[15,74]=0.051,X[16,74]=0.141,X[17,74]=0.357,X[18,74]=0.482,X[19,74]=0.388,X[20,74]=0.337,X[21,74]=0.322,X[22,74]=0.373,X[23,74]=0.149,X[24,74]=0.267,X[25,74]=0.259,X[26,74]=0.055,X[27,74]=0.129,X[28,74]=0.275,X[29,74]=0.341,X[30,74]=0.227,X[31,74]=0.349,X[32,74]=0.369,X[33,74]=0.275,X[34,74]=0.082,X[35,74]=0.067,X[36,74]=0.137,X[37,74]=0.224,X[38,74]=0.227,X[39,74]=0.208,X[40,74]=0.216,X[41,74]=0.325,X[42,74]=0.290,X[43,74]=0.129,X[44,74]=0.196,X[45,74]=0.165,X[46,74]=0.055,X[47,74]=0.082,X[48,74]=0.165,X[49,74]=0.235,X[50,74]=0.349 X[51,74]=0.369,X[52,74]=0.239,X[53,74]=0.098,X[54,74]=0.059,X[55,74]=0.192,X[56,74]=0.325,X[57,74]=0.302,X[58,74]=0.259,X[59,74]=0.263,X[60,74]=0.243,X[61,74]=0.090,X[62,74]=0.125,X[63,74]=0.353,X[64,74]=0.298,X[65,74]=0.106,X[66,74]=0.043,X[67,74]=0.200,X[68,74]=0.451,X[69,74]=0.447,X[70,74]=0.325,X[71,74]=0.373,X[72,74]=0.369,X[73,74]=0.369,X[74,74]=0.373,X[75,74]=0.341,X[76,74]=0.239,X[77,74]=0.184,X[78,74]=0.078,X[79,74]=0.051,X[80,74]=0.047,X[81,74]=0.125,X[82,74]=0.318,X[83,74]=0.286,X[84,74]=0.267,X[85,74]=0.384,X[86,74]=0.427,X[87,74]=0.384,X[88,74]=0.310,X[89,74]=0.243,X[90,74]=0.208,X[91,74]=0.196,X[92,74]=0.169,X[93,74]=0.196,X[94,74]=0.251,X[95,74]=0.345,X[96,74]=0.278,X[97,74]=0.153,X[98,74]=0.125,X[99,74]=0.149,X[100,74]=0.188 X[1,75]=0.255,X[2,75]=0.259,X[3,75]=0.251,X[4,75]=0.216,X[5,75]=0.129,X[6,75]=0.067,X[7,75]=0.075,X[8,75]=0.063,X[9,75]=0.063,X[10,75]=0.098,X[11,75]=0.216,X[12,75]=0.227,X[13,75]=0.216,X[14,75]=0.169,X[15,75]=0.169,X[16,75]=0.325,X[17,75]=0.494,X[18,75]=0.427,X[19,75]=0.275,X[20,75]=0.161,X[21,75]=0.141,X[22,75]=0.365,X[23,75]=0.247,X[24,75]=0.247,X[25,75]=0.227,X[26,75]=0.055,X[27,75]=0.067,X[28,75]=0.098,X[29,75]=0.263,X[30,75]=0.255,X[31,75]=0.169,X[32,75]=0.122,X[33,75]=0.118,X[34,75]=0.149,X[35,75]=0.208,X[36,75]=0.290,X[37,75]=0.306,X[38,75]=0.169,X[39,75]=0.125,X[40,75]=0.216,X[41,75]=0.318,X[42,75]=0.329,X[43,75]=0.173,X[44,75]=0.188,X[45,75]=0.184,X[46,75]=0.157,X[47,75]=0.220,X[48,75]=0.302,X[49,75]=0.349,X[50,75]=0.224 X[51,75]=0.200,X[52,75]=0.302,X[53,75]=0.263,X[54,75]=0.208,X[55,75]=0.192,X[56,75]=0.318,X[57,75]=0.247,X[58,75]=0.275,X[59,75]=0.318,X[60,75]=0.110,X[61,75]=0.059,X[62,75]=0.063,X[63,75]=0.278,X[64,75]=0.345,X[65,75]=0.110,X[66,75]=0.149,X[67,75]=0.400,X[68,75]=0.420,X[69,75]=0.224,X[70,75]=0.231,X[71,75]=0.282,X[72,75]=0.318,X[73,75]=0.365,X[74,75]=0.400,X[75,75]=0.467,X[76,75]=0.424,X[77,75]=0.388,X[78,75]=0.361,X[79,75]=0.282,X[80,75]=0.220,X[81,75]=0.173,X[82,75]=0.278,X[83,75]=0.337,X[84,75]=0.373,X[85,75]=0.376,X[86,75]=0.165,X[87,75]=0.157,X[88,75]=0.361,X[89,75]=0.353,X[90,75]=0.235,X[91,75]=0.216,X[92,75]=0.227,X[93,75]=0.263,X[94,75]=0.365,X[95,75]=0.298,X[96,75]=0.145,X[97,75]=0.188,X[98,75]=0.231,X[99,75]=0.200,X[100,75]=0.200 X[1,76]=0.263,X[2,76]=0.310,X[3,76]=0.306,X[4,76]=0.286,X[5,76]=0.259,X[6,76]=0.137,X[7,76]=0.075,X[8,76]=0.075,X[9,76]=0.067,X[10,76]=0.161,X[11,76]=0.337,X[12,76]=0.349,X[13,76]=0.337,X[14,76]=0.310,X[15,76]=0.306,X[16,76]=0.404,X[17,76]=0.373,X[18,76]=0.196,X[19,76]=0.078,X[20,76]=0.039,X[21,76]=0.075,X[22,76]=0.278,X[23,76]=0.345,X[24,76]=0.235,X[25,76]=0.184,X[26,76]=0.063,X[27,76]=0.059,X[28,76]=0.035,X[29,76]=0.220,X[30,76]=0.404,X[31,76]=0.216,X[32,76]=0.180,X[33,76]=0.188,X[34,76]=0.227,X[35,76]=0.208,X[36,76]=0.220,X[37,76]=0.169,X[38,76]=0.075,X[39,76]=0.071,X[40,76]=0.090,X[41,76]=0.176,X[42,76]=0.212,X[43,76]=0.216,X[44,76]=0.216,X[45,76]=0.224,X[46,76]=0.239,X[47,76]=0.294,X[48,76]=0.243,X[49,76]=0.137,X[50,76]=0.051 X[51,76]=0.157,X[52,76]=0.337,X[53,76]=0.380,X[54,76]=0.400,X[55,76]=0.384,X[56,76]=0.396,X[57,76]=0.361,X[58,76]=0.298,X[59,76]=0.255,X[60,76]=0.157,X[61,76]=0.106,X[62,76]=0.071,X[63,76]=0.196,X[64,76]=0.325,X[65,76]=0.227,X[66,76]=0.325,X[67,76]=0.408,X[68,76]=0.157,X[69,76]=0.071,X[70,76]=0.157,X[71,76]=0.169,X[72,76]=0.169,X[73,76]=0.247,X[74,76]=0.416,X[75,76]=0.420,X[76,76]=0.357,X[77,76]=0.337,X[78,76]=0.345,X[79,76]=0.373,X[80,76]=0.384,X[81,76]=0.369,X[82,76]=0.380,X[83,76]=0.416,X[84,76]=0.431,X[85,76]=0.310,X[86,76]=0.153,X[87,76]=0.157,X[88,76]=0.251,X[89,76]=0.306,X[90,76]=0.247,X[91,76]=0.239,X[92,76]=0.263,X[93,76]=0.373,X[94,76]=0.369,X[95,76]=0.220,X[96,76]=0.243,X[97,76]=0.318,X[98,76]=0.325,X[99,76]=0.271,X[100,76]=0.278 X[1,77]=0.196,X[2,77]=0.337,X[3,77]=0.208,X[4,77]=0.173,X[5,77]=0.298,X[6,77]=0.243,X[7,77]=0.176,X[8,77]=0.098,X[9,77]=0.043,X[10,77]=0.082,X[11,77]=0.184,X[12,77]=0.247,X[13,77]=0.290,X[14,77]=0.369,X[15,77]=0.431,X[16,77]=0.412,X[17,77]=0.180,X[18,77]=0.051,X[19,77]=0.043,X[20,77]=0.051,X[21,77]=0.039,X[22,77]=0.153,X[23,77]=0.357,X[24,77]=0.259,X[25,77]=0.173,X[26,77]=0.075,X[27,77]=0.055,X[28,77]=0.055,X[29,77]=0.157,X[30,77]=0.333,X[31,77]=0.153,X[32,77]=0.157,X[33,77]=0.227,X[34,77]=0.255,X[35,77]=0.196,X[36,77]=0.165,X[37,77]=0.165,X[38,77]=0.086,X[39,77]=0.067,X[40,77]=0.071,X[41,77]=0.063,X[42,77]=0.149,X[43,77]=0.220,X[44,77]=0.239,X[45,77]=0.239,X[46,77]=0.243,X[47,77]=0.180,X[48,77]=0.059,X[49,77]=0.059,X[50,77]=0.082 X[51,77]=0.086,X[52,77]=0.086,X[53,77]=0.114,X[54,77]=0.169,X[55,77]=0.282,X[56,77]=0.463,X[57,77]=0.478,X[58,77]=0.427,X[59,77]=0.420,X[60,77]=0.412,X[61,77]=0.361,X[62,77]=0.290,X[63,77]=0.282,X[64,77]=0.357,X[65,77]=0.388,X[66,77]=0.400,X[67,77]=0.208,X[68,77]=0.047,X[69,77]=0.082,X[70,77]=0.180,X[71,77]=0.235,X[72,77]=0.259,X[73,77]=0.396,X[74,77]=0.439,X[75,77]=0.384,X[76,77]=0.349,X[77,77]=0.141,X[78,77]=0.082,X[79,77]=0.102,X[80,77]=0.125,X[81,77]=0.188,X[82,77]=0.365,X[83,77]=0.455,X[84,77]=0.459,X[85,77]=0.459,X[86,77]=0.420,X[87,77]=0.373,X[88,77]=0.357,X[89,77]=0.314,X[90,77]=0.298,X[91,77]=0.278,X[92,77]=0.341,X[93,77]=0.369,X[94,77]=0.255,X[95,77]=0.180,X[96,77]=0.286,X[97,77]=0.345,X[98,77]=0.314,X[99,77]=0.286,X[100,77]=0.173 X[1,78]=0.176,X[2,78]=0.302,X[3,78]=0.125,X[4,78]=0.075,X[5,78]=0.165,X[6,78]=0.216,X[7,78]=0.255,X[8,78]=0.208,X[9,78]=0.137,X[10,78]=0.122,X[11,78]=0.188,X[12,78]=0.204,X[13,78]=0.278,X[14,78]=0.427,X[15,78]=0.506,X[16,78]=0.439,X[17,78]=0.227,X[18,78]=0.051,X[19,78]=0.051,X[20,78]=0.055,X[21,78]=0.055,X[22,78]=0.098,X[23,78]=0.325,X[24,78]=0.333,X[25,78]=0.294,X[26,78]=0.204,X[27,78]=0.122,X[28,78]=0.086,X[29,78]=0.071,X[30,78]=0.090,X[31,78]=0.106,X[32,78]=0.173,X[33,78]=0.286,X[34,78]=0.345,X[35,78]=0.310,X[36,78]=0.224,X[37,78]=0.169,X[38,78]=0.071,X[39,78]=0.051,X[40,78]=0.114,X[41,78]=0.145,X[42,78]=0.204,X[43,78]=0.271,X[44,78]=0.271,X[45,78]=0.294,X[46,78]=0.298,X[47,78]=0.231,X[48,78]=0.137,X[49,78]=0.078,X[50,78]=0.086 X[51,78]=0.059,X[52,78]=0.039,X[53,78]=0.027,X[54,78]=0.082,X[55,78]=0.353,X[56,78]=0.396,X[57,78]=0.157,X[58,78]=0.110,X[59,78]=0.180,X[60,78]=0.247,X[61,78]=0.302,X[62,78]=0.341,X[63,78]=0.357,X[64,78]=0.404,X[65,78]=0.439,X[66,78]=0.404,X[67,78]=0.322,X[68,78]=0.239,X[69,78]=0.243,X[70,78]=0.298,X[71,78]=0.259,X[72,78]=0.349,X[73,78]=0.427,X[74,78]=0.365,X[75,78]=0.412,X[76,78]=0.302,X[77,78]=0.212,X[78,78]=0.153,X[79,78]=0.082,X[80,78]=0.047,X[81,78]=0.216,X[82,78]=0.431,X[83,78]=0.431,X[84,78]=0.463,X[85,78]=0.361,X[86,78]=0.341,X[87,78]=0.424,X[88,78]=0.416,X[89,78]=0.384,X[90,78]=0.400,X[91,78]=0.376,X[92,78]=0.400,X[93,78]=0.384,X[94,78]=0.353,X[95,78]=0.275,X[96,78]=0.267,X[97,78]=0.290,X[98,78]=0.227,X[99,78]=0.098,X[100,78]=0.047 X[1,79]=0.157,X[2,79]=0.200,X[3,79]=0.173,X[4,79]=0.239,X[5,79]=0.263,X[6,79]=0.188,X[7,79]=0.137,X[8,79]=0.208,X[9,79]=0.212,X[10,79]=0.180,X[11,79]=0.173,X[12,79]=0.235,X[13,79]=0.408,X[14,79]=0.498,X[15,79]=0.365,X[16,79]=0.392,X[17,79]=0.282,X[18,79]=0.071,X[19,79]=0.051,X[20,79]=0.067,X[21,79]=0.055,X[22,79]=0.224,X[23,79]=0.416,X[24,79]=0.439,X[25,79]=0.412,X[26,79]=0.392,X[27,79]=0.396,X[28,79]=0.329,X[29,79]=0.157,X[30,79]=0.153,X[31,79]=0.173,X[32,79]=0.231,X[33,79]=0.263,X[34,79]=0.180,X[35,79]=0.247,X[36,79]=0.318,X[37,79]=0.290,X[38,79]=0.188,X[39,79]=0.153,X[40,79]=0.188,X[41,79]=0.212,X[42,79]=0.224,X[43,79]=0.188,X[44,79]=0.290,X[45,79]=0.365,X[46,79]=0.216,X[47,79]=0.306,X[48,79]=0.290,X[49,79]=0.176,X[50,79]=0.102 X[51,79]=0.055,X[52,79]=0.071,X[53,79]=0.141,X[54,79]=0.392,X[55,79]=0.439,X[56,79]=0.145,X[57,79]=0.051,X[58,79]=0.086,X[59,79]=0.090,X[60,79]=0.055,X[61,79]=0.063,X[62,79]=0.082,X[63,79]=0.263,X[64,79]=0.443,X[65,79]=0.475,X[66,79]=0.455,X[67,79]=0.416,X[68,79]=0.443,X[69,79]=0.439,X[70,79]=0.388,X[71,79]=0.357,X[72,79]=0.357,X[73,79]=0.341,X[74,79]=0.365,X[75,79]=0.318,X[76,79]=0.263,X[77,79]=0.259,X[78,79]=0.278,X[79,79]=0.188,X[80,79]=0.212,X[81,79]=0.431,X[82,79]=0.451,X[83,79]=0.227,X[84,79]=0.380,X[85,79]=0.365,X[86,79]=0.333,X[87,79]=0.263,X[88,79]=0.145,X[89,79]=0.169,X[90,79]=0.263,X[91,79]=0.369,X[92,79]=0.447,X[93,79]=0.482,X[94,79]=0.502,X[95,79]=0.486,X[96,79]=0.459,X[97,79]=0.322,X[98,79]=0.129,X[99,79]=0.055,X[100,79]=0.086 X[1,80]=0.173,X[2,80]=0.208,X[3,80]=0.271,X[4,80]=0.259,X[5,80]=0.145,X[6,80]=0.075,X[7,80]=0.055,X[8,80]=0.086,X[9,80]=0.161,X[10,80]=0.192,X[11,80]=0.200,X[12,80]=0.349,X[13,80]=0.490,X[14,80]=0.318,X[15,80]=0.231,X[16,80]=0.318,X[17,80]=0.392,X[18,80]=0.122,X[19,80]=0.059,X[20,80]=0.047,X[21,80]=0.157,X[22,80]=0.404,X[23,80]=0.353,X[24,80]=0.427,X[25,80]=0.345,X[26,80]=0.122,X[27,80]=0.200,X[28,80]=0.271,X[29,80]=0.165,X[30,80]=0.137,X[31,80]=0.169,X[32,80]=0.227,X[33,80]=0.251,X[34,80]=0.129,X[35,80]=0.114,X[36,80]=0.235,X[37,80]=0.325,X[38,80]=0.353,X[39,80]=0.243,X[40,80]=0.251,X[41,80]=0.278,X[42,80]=0.161,X[43,80]=0.102,X[44,80]=0.267,X[45,80]=0.267,X[46,80]=0.071,X[47,80]=0.106,X[48,80]=0.220,X[49,80]=0.259,X[50,80]=0.216 X[51,80]=0.145,X[52,80]=0.086,X[53,80]=0.180,X[54,80]=0.384,X[55,80]=0.180,X[56,80]=0.086,X[57,80]=0.173,X[58,80]=0.247,X[59,80]=0.235,X[60,80]=0.122,X[61,80]=0.043,X[62,80]=0.180,X[63,80]=0.427,X[64,80]=0.412,X[65,80]=0.373,X[66,80]=0.392,X[67,80]=0.129,X[68,80]=0.208,X[69,80]=0.314,X[70,80]=0.400,X[71,80]=0.412,X[72,80]=0.357,X[73,80]=0.400,X[74,80]=0.435,X[75,80]=0.427,X[76,80]=0.408,X[77,80]=0.369,X[78,80]=0.361,X[79,80]=0.263,X[80,80]=0.388,X[81,80]=0.475,X[82,80]=0.267,X[83,80]=0.220,X[84,80]=0.333,X[85,80]=0.392,X[86,80]=0.204,X[87,80]=0.118,X[88,80]=0.157,X[89,80]=0.239,X[90,80]=0.231,X[91,80]=0.263,X[92,80]=0.404,X[93,80]=0.369,X[94,80]=0.282,X[95,80]=0.278,X[96,80]=0.384,X[97,80]=0.318,X[98,80]=0.196,X[99,80]=0.161,X[100,80]=0.125 X[1,81]=0.231,X[2,81]=0.231,X[3,81]=0.216,X[4,81]=0.122,X[5,81]=0.063,X[6,81]=0.039,X[7,81]=0.063,X[8,81]=0.051,X[9,81]=0.086,X[10,81]=0.133,X[11,81]=0.220,X[12,81]=0.349,X[13,81]=0.388,X[14,81]=0.200,X[15,81]=0.192,X[16,81]=0.235,X[17,81]=0.408,X[18,81]=0.176,X[19,81]=0.055,X[20,81]=0.110,X[21,81]=0.376,X[22,81]=0.392,X[23,81]=0.145,X[24,81]=0.365,X[25,81]=0.424,X[26,81]=0.122,X[27,81]=0.090,X[28,81]=0.118,X[29,81]=0.078,X[30,81]=0.071,X[31,81]=0.090,X[32,81]=0.188,X[33,81]=0.251,X[34,81]=0.196,X[35,81]=0.196,X[36,81]=0.227,X[37,81]=0.227,X[38,81]=0.318,X[39,81]=0.349,X[40,81]=0.294,X[41,81]=0.157,X[42,81]=0.051,X[43,81]=0.082,X[44,81]=0.231,X[45,81]=0.208,X[46,81]=0.110,X[47,81]=0.075,X[48,81]=0.075,X[49,81]=0.137,X[50,81]=0.220 X[51,81]=0.224,X[52,81]=0.173,X[53,81]=0.114,X[54,81]=0.137,X[55,81]=0.157,X[56,81]=0.224,X[57,81]=0.298,X[58,81]=0.267,X[59,81]=0.165,X[60,81]=0.075,X[61,81]=0.137,X[62,81]=0.396,X[63,81]=0.478,X[64,81]=0.176,X[65,81]=0.161,X[66,81]=0.412,X[67,81]=0.192,X[68,81]=0.020,X[69,81]=0.169,X[70,81]=0.239,X[71,81]=0.141,X[72,81]=0.169,X[73,81]=0.388,X[74,81]=0.431,X[75,81]=0.416,X[76,81]=0.447,X[77,81]=0.463,X[78,81]=0.439,X[79,81]=0.373,X[80,81]=0.455,X[81,81]=0.325,X[82,81]=0.247,X[83,81]=0.302,X[84,81]=0.275,X[85,81]=0.369,X[86,81]=0.263,X[87,81]=0.216,X[88,81]=0.302,X[89,81]=0.345,X[90,81]=0.235,X[91,81]=0.216,X[92,81]=0.325,X[93,81]=0.400,X[94,81]=0.133,X[95,81]=0.051,X[96,81]=0.141,X[97,81]=0.220,X[98,81]=0.231,X[99,81]=0.200,X[100,81]=0.192 X[1,82]=0.286,X[2,82]=0.239,X[3,82]=0.188,X[4,82]=0.118,X[5,82]=0.059,X[6,82]=0.063,X[7,82]=0.051,X[8,82]=0.086,X[9,82]=0.055,X[10,82]=0.118,X[11,82]=0.267,X[12,82]=0.294,X[13,82]=0.325,X[14,82]=0.298,X[15,82]=0.235,X[16,82]=0.176,X[17,82]=0.176,X[18,82]=0.094,X[19,82]=0.047,X[20,82]=0.129,X[21,82]=0.376,X[22,82]=0.227,X[23,82]=0.157,X[24,82]=0.275,X[25,82]=0.459,X[26,82]=0.318,X[27,82]=0.141,X[28,82]=0.192,X[29,82]=0.110,X[30,82]=0.059,X[31,82]=0.071,X[32,82]=0.137,X[33,82]=0.306,X[34,82]=0.231,X[35,82]=0.204,X[36,82]=0.227,X[37,82]=0.286,X[38,82]=0.298,X[39,82]=0.216,X[40,82]=0.078,X[41,82]=0.071,X[42,82]=0.059,X[43,82]=0.075,X[44,82]=0.216,X[45,82]=0.196,X[46,82]=0.180,X[47,82]=0.141,X[48,82]=0.129,X[49,82]=0.129,X[50,82]=0.153 X[51,82]=0.176,X[52,82]=0.200,X[53,82]=0.192,X[54,82]=0.192,X[55,82]=0.243,X[56,82]=0.192,X[57,82]=0.129,X[58,82]=0.067,X[59,82]=0.039,X[60,82]=0.118,X[61,82]=0.357,X[62,82]=0.486,X[63,82]=0.204,X[64,82]=0.047,X[65,82]=0.082,X[66,82]=0.322,X[67,82]=0.298,X[68,82]=0.071,X[69,82]=0.055,X[70,82]=0.059,X[71,82]=0.039,X[72,82]=0.165,X[73,82]=0.329,X[74,82]=0.424,X[75,82]=0.333,X[76,82]=0.333,X[77,82]=0.345,X[78,82]=0.369,X[79,82]=0.424,X[80,82]=0.384,X[81,82]=0.255,X[82,82]=0.286,X[83,82]=0.231,X[84,82]=0.208,X[85,82]=0.318,X[86,82]=0.357,X[87,82]=0.298,X[88,82]=0.310,X[89,82]=0.306,X[90,82]=0.220,X[91,82]=0.216,X[92,82]=0.239,X[93,82]=0.447,X[94,82]=0.298,X[95,82]=0.071,X[96,82]=0.043,X[97,82]=0.086,X[98,82]=0.165,X[99,82]=0.141,X[100,82]=0.216 X[1,83]=0.322,X[2,83]=0.357,X[3,83]=0.294,X[4,83]=0.212,X[5,83]=0.110,X[6,83]=0.075,X[7,83]=0.118,X[8,83]=0.188,X[9,83]=0.090,X[10,83]=0.137,X[11,83]=0.267,X[12,83]=0.125,X[13,83]=0.110,X[14,83]=0.235,X[15,83]=0.333,X[16,83]=0.318,X[17,83]=0.212,X[18,83]=0.098,X[19,83]=0.055,X[20,83]=0.102,X[21,83]=0.227,X[22,83]=0.243,X[23,83]=0.227,X[24,83]=0.235,X[25,83]=0.420,X[26,83]=0.427,X[27,83]=0.239,X[28,83]=0.188,X[29,83]=0.106,X[30,83]=0.059,X[31,83]=0.118,X[32,83]=0.184,X[33,83]=0.310,X[34,83]=0.302,X[35,83]=0.216,X[36,83]=0.220,X[37,83]=0.275,X[38,83]=0.129,X[39,83]=0.043,X[40,83]=0.047,X[41,83]=0.071,X[42,83]=0.063,X[43,83]=0.086,X[44,83]=0.204,X[45,83]=0.212,X[46,83]=0.196,X[47,83]=0.173,X[48,83]=0.239,X[49,83]=0.259,X[50,83]=0.239 X[51,83]=0.208,X[52,83]=0.129,X[53,83]=0.169,X[54,83]=0.247,X[55,83]=0.318,X[56,83]=0.298,X[57,83]=0.251,X[58,83]=0.220,X[59,83]=0.169,X[60,83]=0.290,X[61,83]=0.447,X[62,83]=0.275,X[63,83]=0.043,X[64,83]=0.047,X[65,83]=0.055,X[66,83]=0.200,X[67,83]=0.373,X[68,83]=0.145,X[69,83]=0.051,X[70,83]=0.055,X[71,83]=0.051,X[72,83]=0.157,X[73,83]=0.271,X[74,83]=0.396,X[75,83]=0.361,X[76,83]=0.247,X[77,83]=0.353,X[78,83]=0.443,X[79,83]=0.420,X[80,83]=0.282,X[81,83]=0.192,X[82,83]=0.271,X[83,83]=0.239,X[84,83]=0.227,X[85,83]=0.259,X[86,83]=0.345,X[87,83]=0.275,X[88,83]=0.278,X[89,83]=0.259,X[90,83]=0.165,X[91,83]=0.204,X[92,83]=0.212,X[93,83]=0.357,X[94,83]=0.267,X[95,83]=0.055,X[96,83]=0.043,X[97,83]=0.086,X[98,83]=0.153,X[99,83]=0.169,X[100,83]=0.271 X[1,84]=0.196,X[2,84]=0.239,X[3,84]=0.278,X[4,84]=0.337,X[5,84]=0.286,X[6,84]=0.192,X[7,84]=0.235,X[8,84]=0.278,X[9,84]=0.133,X[10,84]=0.118,X[11,84]=0.243,X[12,84]=0.133,X[13,84]=0.047,X[14,84]=0.051,X[15,84]=0.153,X[16,84]=0.329,X[17,84]=0.290,X[18,84]=0.082,X[19,84]=0.122,X[20,84]=0.239,X[21,84]=0.306,X[22,84]=0.251,X[23,84]=0.204,X[24,84]=0.247,X[25,84]=0.275,X[26,84]=0.173,X[27,84]=0.271,X[28,84]=0.255,X[29,84]=0.165,X[30,84]=0.149,X[31,84]=0.224,X[32,84]=0.267,X[33,84]=0.298,X[34,84]=0.259,X[35,84]=0.208,X[36,84]=0.231,X[37,84]=0.231,X[38,84]=0.078,X[39,84]=0.059,X[40,84]=0.055,X[41,84]=0.071,X[42,84]=0.071,X[43,84]=0.086,X[44,84]=0.192,X[45,84]=0.184,X[46,84]=0.196,X[47,84]=0.212,X[48,84]=0.275,X[49,84]=0.306,X[50,84]=0.318 X[51,84]=0.282,X[52,84]=0.114,X[53,84]=0.173,X[54,84]=0.318,X[55,84]=0.369,X[56,84]=0.392,X[57,84]=0.365,X[58,84]=0.353,X[59,84]=0.369,X[60,84]=0.412,X[61,84]=0.298,X[62,84]=0.067,X[63,84]=0.055,X[64,84]=0.059,X[65,84]=0.051,X[66,84]=0.110,X[67,84]=0.333,X[68,84]=0.259,X[69,84]=0.071,X[70,84]=0.067,X[71,84]=0.051,X[72,84]=0.118,X[73,84]=0.184,X[74,84]=0.275,X[75,84]=0.431,X[76,84]=0.349,X[77,84]=0.431,X[78,84]=0.475,X[79,84]=0.420,X[80,84]=0.227,X[81,84]=0.184,X[82,84]=0.267,X[83,84]=0.251,X[84,84]=0.263,X[85,84]=0.275,X[86,84]=0.341,X[87,84]=0.349,X[88,84]=0.337,X[89,84]=0.251,X[90,84]=0.216,X[91,84]=0.227,X[92,84]=0.224,X[93,84]=0.247,X[94,84]=0.082,X[95,84]=0.063,X[96,84]=0.067,X[97,84]=0.094,X[98,84]=0.176,X[99,84]=0.231,X[100,84]=0.275 X[1,85]=0.188,X[2,85]=0.200,X[3,85]=0.188,X[4,85]=0.224,X[5,85]=0.388,X[6,85]=0.361,X[7,85]=0.247,X[8,85]=0.133,X[9,85]=0.078,X[10,85]=0.110,X[11,85]=0.243,X[12,85]=0.188,X[13,85]=0.067,X[14,85]=0.055,X[15,85]=0.051,X[16,85]=0.114,X[17,85]=0.125,X[18,85]=0.071,X[19,85]=0.208,X[20,85]=0.318,X[21,85]=0.184,X[22,85]=0.122,X[23,85]=0.192,X[24,85]=0.267,X[25,85]=0.263,X[26,85]=0.141,X[27,85]=0.122,X[28,85]=0.235,X[29,85]=0.263,X[30,85]=0.243,X[31,85]=0.337,X[32,85]=0.286,X[33,85]=0.161,X[34,85]=0.102,X[35,85]=0.200,X[36,85]=0.224,X[37,85]=0.212,X[38,85]=0.071,X[39,85]=0.063,X[40,85]=0.063,X[41,85]=0.067,X[42,85]=0.067,X[43,85]=0.082,X[44,85]=0.184,X[45,85]=0.173,X[46,85]=0.200,X[47,85]=0.231,X[48,85]=0.298,X[49,85]=0.325,X[50,85]=0.345 X[51,85]=0.314,X[52,85]=0.196,X[53,85]=0.227,X[54,85]=0.239,X[55,85]=0.180,X[56,85]=0.224,X[57,85]=0.290,X[58,85]=0.341,X[59,85]=0.443,X[60,85]=0.478,X[61,85]=0.243,X[62,85]=0.047,X[63,85]=0.071,X[64,85]=0.059,X[65,85]=0.086,X[66,85]=0.071,X[67,85]=0.231,X[68,85]=0.329,X[69,85]=0.208,X[70,85]=0.161,X[71,85]=0.086,X[72,85]=0.122,X[73,85]=0.200,X[74,85]=0.176,X[75,85]=0.290,X[76,85]=0.447,X[77,85]=0.475,X[78,85]=0.255,X[79,85]=0.349,X[80,85]=0.353,X[81,85]=0.235,X[82,85]=0.255,X[83,85]=0.251,X[84,85]=0.341,X[85,85]=0.361,X[86,85]=0.424,X[87,85]=0.431,X[88,85]=0.392,X[89,85]=0.376,X[90,85]=0.408,X[91,85]=0.369,X[92,85]=0.302,X[93,85]=0.329,X[94,85]=0.118,X[95,85]=0.055,X[96,85]=0.071,X[97,85]=0.075,X[98,85]=0.118,X[99,85]=0.173,X[100,85]=0.255 X[1,86]=0.216,X[2,86]=0.212,X[3,86]=0.243,X[4,86]=0.212,X[5,86]=0.220,X[6,86]=0.196,X[7,86]=0.090,X[8,86]=0.063,X[9,86]=0.063,X[10,86]=0.098,X[11,86]=0.282,X[12,86]=0.302,X[13,86]=0.133,X[14,86]=0.055,X[15,86]=0.059,X[16,86]=0.075,X[17,86]=0.047,X[18,86]=0.051,X[19,86]=0.145,X[20,86]=0.118,X[21,86]=0.055,X[22,86]=0.055,X[23,86]=0.141,X[24,86]=0.263,X[25,86]=0.282,X[26,86]=0.224,X[27,86]=0.196,X[28,86]=0.200,X[29,86]=0.208,X[30,86]=0.259,X[31,86]=0.227,X[32,86]=0.098,X[33,86]=0.039,X[34,86]=0.075,X[35,86]=0.204,X[36,86]=0.216,X[37,86]=0.204,X[38,86]=0.106,X[39,86]=0.129,X[40,86]=0.082,X[41,86]=0.063,X[42,86]=0.043,X[43,86]=0.090,X[44,86]=0.184,X[45,86]=0.173,X[46,86]=0.188,X[47,86]=0.235,X[48,86]=0.318,X[49,86]=0.361,X[50,86]=0.384 X[51,86]=0.294,X[52,86]=0.129,X[53,86]=0.196,X[54,86]=0.220,X[55,86]=0.078,X[56,86]=0.051,X[57,86]=0.231,X[58,86]=0.439,X[59,86]=0.506,X[60,86]=0.400,X[61,86]=0.349,X[62,86]=0.098,X[63,86]=0.059,X[64,86]=0.071,X[65,86]=0.071,X[66,86]=0.071,X[67,86]=0.267,X[68,86]=0.400,X[69,86]=0.404,X[70,86]=0.404,X[71,86]=0.345,X[72,86]=0.282,X[73,86]=0.239,X[74,86]=0.173,X[75,86]=0.341,X[76,86]=0.478,X[77,86]=0.322,X[78,86]=0.231,X[79,86]=0.353,X[80,86]=0.420,X[81,86]=0.306,X[82,86]=0.282,X[83,86]=0.200,X[84,86]=0.329,X[85,86]=0.443,X[86,86]=0.333,X[87,86]=0.412,X[88,86]=0.365,X[89,86]=0.188,X[90,86]=0.247,X[91,86]=0.322,X[92,86]=0.263,X[93,86]=0.294,X[94,86]=0.184,X[95,86]=0.078,X[96,86]=0.106,X[97,86]=0.169,X[98,86]=0.204,X[99,86]=0.180,X[100,86]=0.247 X[1,87]=0.282,X[2,87]=0.239,X[3,87]=0.314,X[4,87]=0.310,X[5,87]=0.231,X[6,87]=0.125,X[7,87]=0.067,X[8,87]=0.055,X[9,87]=0.047,X[10,87]=0.055,X[11,87]=0.176,X[12,87]=0.271,X[13,87]=0.153,X[14,87]=0.051,X[15,87]=0.071,X[16,87]=0.063,X[17,87]=0.051,X[18,87]=0.067,X[19,87]=0.063,X[20,87]=0.063,X[21,87]=0.078,X[22,87]=0.071,X[23,87]=0.129,X[24,87]=0.306,X[25,87]=0.282,X[26,87]=0.204,X[27,87]=0.267,X[28,87]=0.278,X[29,87]=0.196,X[30,87]=0.090,X[31,87]=0.055,X[32,87]=0.067,X[33,87]=0.071,X[34,87]=0.129,X[35,87]=0.247,X[36,87]=0.204,X[37,87]=0.208,X[38,87]=0.173,X[39,87]=0.251,X[40,87]=0.176,X[41,87]=0.094,X[42,87]=0.125,X[43,87]=0.129,X[44,87]=0.165,X[45,87]=0.173,X[46,87]=0.216,X[47,87]=0.275,X[48,87]=0.333,X[49,87]=0.357,X[50,87]=0.380 X[51,87]=0.259,X[52,87]=0.129,X[53,87]=0.192,X[54,87]=0.235,X[55,87]=0.090,X[56,87]=0.153,X[57,87]=0.384,X[58,87]=0.490,X[59,87]=0.314,X[60,87]=0.192,X[61,87]=0.400,X[62,87]=0.200,X[63,87]=0.071,X[64,87]=0.075,X[65,87]=0.051,X[66,87]=0.212,X[67,87]=0.416,X[68,87]=0.412,X[69,87]=0.431,X[70,87]=0.322,X[71,87]=0.345,X[72,87]=0.404,X[73,87]=0.353,X[74,87]=0.169,X[75,87]=0.251,X[76,87]=0.365,X[77,87]=0.325,X[78,87]=0.337,X[79,87]=0.298,X[80,87]=0.392,X[81,87]=0.357,X[82,87]=0.294,X[83,87]=0.212,X[84,87]=0.416,X[85,87]=0.353,X[86,87]=0.086,X[87,87]=0.314,X[88,87]=0.443,X[89,87]=0.243,X[90,87]=0.180,X[91,87]=0.208,X[92,87]=0.224,X[93,87]=0.204,X[94,87]=0.169,X[95,87]=0.165,X[96,87]=0.247,X[97,87]=0.302,X[98,87]=0.302,X[99,87]=0.267,X[100,87]=0.290 X[1,88]=0.290,X[2,88]=0.259,X[3,88]=0.286,X[4,88]=0.200,X[5,88]=0.216,X[6,88]=0.271,X[7,88]=0.192,X[8,88]=0.086,X[9,88]=0.086,X[10,88]=0.047,X[11,88]=0.082,X[12,88]=0.188,X[13,88]=0.149,X[14,88]=0.051,X[15,88]=0.055,X[16,88]=0.055,X[17,88]=0.106,X[18,88]=0.098,X[19,88]=0.067,X[20,88]=0.063,X[21,88]=0.055,X[22,88]=0.043,X[23,88]=0.137,X[24,88]=0.318,X[25,88]=0.333,X[26,88]=0.216,X[27,88]=0.318,X[28,88]=0.337,X[29,88]=0.275,X[30,88]=0.098,X[31,88]=0.075,X[32,88]=0.200,X[33,88]=0.153,X[34,88]=0.149,X[35,88]=0.298,X[36,88]=0.212,X[37,88]=0.196,X[38,88]=0.231,X[39,88]=0.302,X[40,88]=0.286,X[41,88]=0.220,X[42,88]=0.173,X[43,88]=0.161,X[44,88]=0.188,X[45,88]=0.251,X[46,88]=0.263,X[47,88]=0.302,X[48,88]=0.329,X[49,88]=0.345,X[50,88]=0.384 X[51,88]=0.275,X[52,88]=0.239,X[53,88]=0.231,X[54,88]=0.314,X[55,88]=0.098,X[56,88]=0.153,X[57,88]=0.404,X[58,88]=0.318,X[59,88]=0.063,X[60,88]=0.078,X[61,88]=0.388,X[62,88]=0.325,X[63,88]=0.137,X[64,88]=0.149,X[65,88]=0.169,X[66,88]=0.404,X[67,88]=0.337,X[68,88]=0.231,X[69,88]=0.443,X[70,88]=0.255,X[71,88]=0.169,X[72,88]=0.251,X[73,88]=0.278,X[74,88]=0.243,X[75,88]=0.282,X[76,88]=0.361,X[77,88]=0.318,X[78,88]=0.157,X[79,88]=0.082,X[80,88]=0.137,X[81,88]=0.157,X[82,88]=0.145,X[83,88]=0.208,X[84,88]=0.400,X[85,88]=0.169,X[86,88]=0.063,X[87,88]=0.243,X[88,88]=0.471,X[89,88]=0.365,X[90,88]=0.224,X[91,88]=0.239,X[92,88]=0.306,X[93,88]=0.290,X[94,88]=0.208,X[95,88]=0.204,X[96,88]=0.235,X[97,88]=0.267,X[98,88]=0.322,X[99,88]=0.184,X[100,88]=0.208 X[1,89]=0.212,X[2,89]=0.271,X[3,89]=0.282,X[4,89]=0.145,X[5,89]=0.063,X[6,89]=0.173,X[7,89]=0.278,X[8,89]=0.125,X[9,89]=0.047,X[10,89]=0.055,X[11,89]=0.098,X[12,89]=0.184,X[13,89]=0.122,X[14,89]=0.071,X[15,89]=0.106,X[16,89]=0.173,X[17,89]=0.216,X[18,89]=0.204,X[19,89]=0.098,X[20,89]=0.063,X[21,89]=0.071,X[22,89]=0.067,X[23,89]=0.165,X[24,89]=0.282,X[25,89]=0.365,X[26,89]=0.337,X[27,89]=0.278,X[28,89]=0.188,X[29,89]=0.298,X[30,89]=0.212,X[31,89]=0.224,X[32,89]=0.392,X[33,89]=0.231,X[34,89]=0.094,X[35,89]=0.196,X[36,89]=0.259,X[37,89]=0.212,X[38,89]=0.231,X[39,89]=0.322,X[40,89]=0.337,X[41,89]=0.310,X[42,89]=0.243,X[43,89]=0.216,X[44,89]=0.322,X[45,89]=0.373,X[46,89]=0.282,X[47,89]=0.294,X[48,89]=0.325,X[49,89]=0.345,X[50,89]=0.384 X[51,89]=0.310,X[52,89]=0.196,X[53,89]=0.141,X[54,89]=0.302,X[55,89]=0.137,X[56,89]=0.063,X[57,89]=0.204,X[58,89]=0.259,X[59,89]=0.137,X[60,89]=0.055,X[61,89]=0.251,X[62,89]=0.255,X[63,89]=0.137,X[64,89]=0.196,X[65,89]=0.337,X[66,89]=0.463,X[67,89]=0.192,X[68,89]=0.098,X[69,89]=0.408,X[70,89]=0.373,X[71,89]=0.169,X[72,89]=0.188,X[73,89]=0.243,X[74,89]=0.325,X[75,89]=0.357,X[76,89]=0.192,X[77,89]=0.075,X[78,89]=0.043,X[79,89]=0.047,X[80,89]=0.047,X[81,89]=0.063,X[82,89]=0.173,X[83,89]=0.208,X[84,89]=0.235,X[85,89]=0.137,X[86,89]=0.200,X[87,89]=0.322,X[88,89]=0.424,X[89,89]=0.388,X[90,89]=0.239,X[91,89]=0.259,X[92,89]=0.231,X[93,89]=0.227,X[94,89]=0.275,X[95,89]=0.243,X[96,89]=0.192,X[97,89]=0.227,X[98,89]=0.165,X[99,89]=0.035,X[100,89]=0.051 X[1,90]=0.204,X[2,90]=0.325,X[3,90]=0.271,X[4,90]=0.161,X[5,90]=0.055,X[6,90]=0.043,X[7,90]=0.161,X[8,90]=0.090,X[9,90]=0.043,X[10,90]=0.051,X[11,90]=0.078,X[12,90]=0.184,X[13,90]=0.145,X[14,90]=0.153,X[15,90]=0.208,X[16,90]=0.286,X[17,90]=0.353,X[18,90]=0.227,X[19,90]=0.086,X[20,90]=0.051,X[21,90]=0.067,X[22,90]=0.141,X[23,90]=0.267,X[24,90]=0.322,X[25,90]=0.294,X[26,90]=0.216,X[27,90]=0.106,X[28,90]=0.071,X[29,90]=0.208,X[30,90]=0.224,X[31,90]=0.278,X[32,90]=0.341,X[33,90]=0.176,X[34,90]=0.086,X[35,90]=0.082,X[36,90]=0.259,X[37,90]=0.271,X[38,90]=0.173,X[39,90]=0.243,X[40,90]=0.329,X[41,90]=0.357,X[42,90]=0.325,X[43,90]=0.286,X[44,90]=0.282,X[45,90]=0.282,X[46,90]=0.247,X[47,90]=0.306,X[48,90]=0.345,X[49,90]=0.376,X[50,90]=0.373 X[51,90]=0.263,X[52,90]=0.094,X[53,90]=0.024,X[54,90]=0.094,X[55,90]=0.169,X[56,90]=0.231,X[57,90]=0.314,X[58,90]=0.357,X[59,90]=0.263,X[60,90]=0.075,X[61,90]=0.059,X[62,90]=0.047,X[63,90]=0.114,X[64,90]=0.204,X[65,90]=0.227,X[66,90]=0.329,X[67,90]=0.290,X[68,90]=0.106,X[69,90]=0.302,X[70,90]=0.486,X[71,90]=0.318,X[72,90]=0.208,X[73,90]=0.235,X[74,90]=0.259,X[75,90]=0.255,X[76,90]=0.110,X[77,90]=0.047,X[78,90]=0.055,X[79,90]=0.075,X[80,90]=0.063,X[81,90]=0.075,X[82,90]=0.188,X[83,90]=0.212,X[84,90]=0.212,X[85,90]=0.157,X[86,90]=0.271,X[87,90]=0.251,X[88,90]=0.165,X[89,90]=0.169,X[90,90]=0.235,X[91,90]=0.290,X[92,90]=0.227,X[93,90]=0.247,X[94,90]=0.318,X[95,90]=0.341,X[96,90]=0.290,X[97,90]=0.169,X[98,90]=0.059,X[99,90]=0.039,X[100,90]=0.067 X[1,91]=0.224,X[2,91]=0.369,X[3,91]=0.275,X[4,91]=0.133,X[5,91]=0.055,X[6,91]=0.067,X[7,91]=0.078,X[8,91]=0.047,X[9,91]=0.067,X[10,91]=0.071,X[11,91]=0.090,X[12,91]=0.192,X[13,91]=0.216,X[14,91]=0.243,X[15,91]=0.314,X[16,91]=0.357,X[17,91]=0.208,X[18,91]=0.082,X[19,91]=0.047,X[20,91]=0.071,X[21,91]=0.063,X[22,91]=0.098,X[23,91]=0.220,X[24,91]=0.173,X[25,91]=0.118,X[26,91]=0.298,X[27,91]=0.341,X[28,91]=0.263,X[29,91]=0.247,X[30,91]=0.263,X[31,91]=0.255,X[32,91]=0.235,X[33,91]=0.220,X[34,91]=0.173,X[35,91]=0.129,X[36,91]=0.231,X[37,91]=0.306,X[38,91]=0.196,X[39,91]=0.255,X[40,91]=0.353,X[41,91]=0.365,X[42,91]=0.361,X[43,91]=0.341,X[44,91]=0.286,X[45,91]=0.239,X[46,91]=0.239,X[47,91]=0.333,X[48,91]=0.376,X[49,91]=0.384,X[50,91]=0.361 X[51,91]=0.318,X[52,91]=0.161,X[53,91]=0.137,X[54,91]=0.251,X[55,91]=0.333,X[56,91]=0.380,X[57,91]=0.420,X[58,91]=0.475,X[59,91]=0.388,X[60,91]=0.188,X[61,91]=0.086,X[62,91]=0.051,X[63,91]=0.110,X[64,91]=0.192,X[65,91]=0.078,X[66,91]=0.161,X[67,91]=0.365,X[68,91]=0.224,X[69,91]=0.247,X[70,91]=0.447,X[71,91]=0.435,X[72,91]=0.243,X[73,91]=0.227,X[74,91]=0.247,X[75,91]=0.263,X[76,91]=0.122,X[77,91]=0.051,X[78,91]=0.055,X[79,91]=0.153,X[80,91]=0.082,X[81,91]=0.067,X[82,91]=0.180,X[83,91]=0.204,X[84,91]=0.208,X[85,91]=0.145,X[86,91]=0.161,X[87,91]=0.173,X[88,91]=0.153,X[89,91]=0.078,X[90,91]=0.196,X[91,91]=0.310,X[92,91]=0.255,X[93,91]=0.278,X[94,91]=0.294,X[95,91]=0.290,X[96,91]=0.314,X[97,91]=0.271,X[98,91]=0.188,X[99,91]=0.114,X[100,91]=0.071 X[1,92]=0.224,X[2,92]=0.345,X[3,92]=0.282,X[4,92]=0.129,X[5,92]=0.075,X[6,92]=0.082,X[7,92]=0.051,X[8,92]=0.035,X[9,92]=0.059,X[10,92]=0.110,X[11,92]=0.184,X[12,92]=0.235,X[13,92]=0.255,X[14,92]=0.267,X[15,92]=0.286,X[16,92]=0.220,X[17,92]=0.118,X[18,92]=0.055,X[19,92]=0.071,X[20,92]=0.071,X[21,92]=0.071,X[22,92]=0.039,X[23,92]=0.055,X[24,92]=0.051,X[25,92]=0.063,X[26,92]=0.137,X[27,92]=0.227,X[28,92]=0.302,X[29,92]=0.325,X[30,92]=0.310,X[31,92]=0.333,X[32,92]=0.278,X[33,92]=0.188,X[34,92]=0.188,X[35,92]=0.200,X[36,92]=0.231,X[37,92]=0.310,X[38,92]=0.322,X[39,92]=0.408,X[40,92]=0.392,X[41,92]=0.216,X[42,92]=0.282,X[43,92]=0.345,X[44,92]=0.341,X[45,92]=0.294,X[46,92]=0.290,X[47,92]=0.365,X[48,92]=0.400,X[49,92]=0.376,X[50,92]=0.302 X[51,92]=0.235,X[52,92]=0.278,X[53,92]=0.345,X[54,92]=0.408,X[55,92]=0.455,X[56,92]=0.494,X[57,92]=0.522,X[58,92]=0.400,X[59,92]=0.275,X[60,92]=0.208,X[61,92]=0.169,X[62,92]=0.114,X[63,92]=0.157,X[64,92]=0.224,X[65,92]=0.110,X[66,92]=0.063,X[67,92]=0.286,X[68,92]=0.322,X[69,92]=0.294,X[70,92]=0.408,X[71,92]=0.255,X[72,92]=0.141,X[73,92]=0.220,X[74,92]=0.220,X[75,92]=0.306,X[76,92]=0.129,X[77,92]=0.051,X[78,92]=0.153,X[79,92]=0.333,X[80,92]=0.294,X[81,92]=0.118,X[82,92]=0.176,X[83,92]=0.192,X[84,92]=0.188,X[85,92]=0.184,X[86,92]=0.227,X[87,92]=0.314,X[88,92]=0.294,X[89,92]=0.102,X[90,92]=0.192,X[91,92]=0.349,X[92,92]=0.267,X[93,92]=0.255,X[94,92]=0.267,X[95,92]=0.235,X[96,92]=0.220,X[97,92]=0.302,X[98,92]=0.373,X[99,92]=0.247,X[100,92]=0.086 X[1,93]=0.118,X[2,93]=0.176,X[3,93]=0.224,X[4,93]=0.137,X[5,93]=0.059,X[6,93]=0.059,X[7,93]=0.055,X[8,93]=0.078,X[9,93]=0.141,X[10,93]=0.231,X[11,93]=0.329,X[12,93]=0.318,X[13,93]=0.294,X[14,93]=0.294,X[15,93]=0.180,X[16,93]=0.192,X[17,93]=0.125,X[18,93]=0.055,X[19,93]=0.055,X[20,93]=0.094,X[21,93]=0.169,X[22,93]=0.102,X[23,93]=0.125,X[24,93]=0.110,X[25,93]=0.067,X[26,93]=0.039,X[27,93]=0.043,X[28,93]=0.059,X[29,93]=0.149,X[30,93]=0.318,X[31,93]=0.353,X[32,93]=0.294,X[33,93]=0.173,X[34,93]=0.173,X[35,93]=0.212,X[36,93]=0.224,X[37,93]=0.290,X[38,93]=0.408,X[39,93]=0.431,X[40,93]=0.224,X[41,93]=0.071,X[42,93]=0.122,X[43,93]=0.282,X[44,93]=0.369,X[45,93]=0.376,X[46,93]=0.376,X[47,93]=0.392,X[48,93]=0.408,X[49,93]=0.404,X[50,93]=0.373 X[51,93]=0.357,X[52,93]=0.416,X[53,93]=0.478,X[54,93]=0.525,X[55,93]=0.518,X[56,93]=0.427,X[57,93]=0.263,X[58,93]=0.078,X[59,93]=0.071,X[60,93]=0.165,X[61,93]=0.169,X[62,93]=0.173,X[63,93]=0.224,X[64,93]=0.345,X[65,93]=0.341,X[66,93]=0.243,X[67,93]=0.310,X[68,93]=0.412,X[69,93]=0.416,X[70,93]=0.310,X[71,93]=0.063,X[72,93]=0.118,X[73,93]=0.227,X[74,93]=0.216,X[75,93]=0.314,X[76,93]=0.196,X[77,93]=0.110,X[78,93]=0.322,X[79,93]=0.443,X[80,93]=0.267,X[81,93]=0.086,X[82,93]=0.176,X[83,93]=0.204,X[84,93]=0.212,X[85,93]=0.251,X[86,93]=0.357,X[87,93]=0.294,X[88,93]=0.149,X[89,93]=0.078,X[90,93]=0.216,X[91,93]=0.384,X[92,93]=0.278,X[93,93]=0.231,X[94,93]=0.263,X[95,93]=0.298,X[96,93]=0.231,X[97,93]=0.200,X[98,93]=0.298,X[99,93]=0.235,X[100,93]=0.051 X[1,94]=0.039,X[2,94]=0.110,X[3,94]=0.196,X[4,94]=0.129,X[5,94]=0.047,X[6,94]=0.067,X[7,94]=0.133,X[8,94]=0.208,X[9,94]=0.314,X[10,94]=0.357,X[11,94]=0.314,X[12,94]=0.216,X[13,94]=0.157,X[14,94]=0.259,X[15,94]=0.271,X[16,94]=0.247,X[17,94]=0.169,X[18,94]=0.086,X[19,94]=0.082,X[20,94]=0.196,X[21,94]=0.271,X[22,94]=0.235,X[23,94]=0.231,X[24,94]=0.243,X[25,94]=0.094,X[26,94]=0.075,X[27,94]=0.063,X[28,94]=0.071,X[29,94]=0.125,X[30,94]=0.341,X[31,94]=0.380,X[32,94]=0.294,X[33,94]=0.180,X[34,94]=0.220,X[35,94]=0.263,X[36,94]=0.263,X[37,94]=0.361,X[38,94]=0.490,X[39,94]=0.510,X[40,94]=0.396,X[41,94]=0.365,X[42,94]=0.353,X[43,94]=0.329,X[44,94]=0.325,X[45,94]=0.361,X[46,94]=0.369,X[47,94]=0.396,X[48,94]=0.420,X[49,94]=0.447,X[50,94]=0.455 X[51,94]=0.459,X[52,94]=0.502,X[53,94]=0.494,X[54,94]=0.373,X[55,94]=0.259,X[56,94]=0.196,X[57,94]=0.122,X[58,94]=0.090,X[59,94]=0.149,X[60,94]=0.224,X[61,94]=0.298,X[62,94]=0.271,X[63,94]=0.267,X[64,94]=0.298,X[65,94]=0.325,X[66,94]=0.353,X[67,94]=0.373,X[68,94]=0.447,X[69,94]=0.388,X[70,94]=0.086,X[71,94]=0.031,X[72,94]=0.122,X[73,94]=0.208,X[74,94]=0.271,X[75,94]=0.373,X[76,94]=0.282,X[77,94]=0.325,X[78,94]=0.431,X[79,94]=0.298,X[80,94]=0.082,X[81,94]=0.125,X[82,94]=0.208,X[83,94]=0.239,X[84,94]=0.278,X[85,94]=0.353,X[86,94]=0.243,X[87,94]=0.082,X[88,94]=0.125,X[89,94]=0.235,X[90,94]=0.318,X[91,94]=0.306,X[92,94]=0.200,X[93,94]=0.271,X[94,94]=0.196,X[95,94]=0.141,X[96,94]=0.220,X[97,94]=0.231,X[98,94]=0.216,X[99,94]=0.149,X[100,94]=0.078 X[1,95]=0.094,X[2,95]=0.125,X[3,95]=0.212,X[4,95]=0.133,X[5,95]=0.118,X[6,95]=0.192,X[7,95]=0.263,X[8,95]=0.333,X[9,95]=0.302,X[10,95]=0.161,X[11,95]=0.153,X[12,95]=0.200,X[13,95]=0.161,X[14,95]=0.114,X[15,95]=0.192,X[16,95]=0.294,X[17,95]=0.318,X[18,95]=0.243,X[19,95]=0.200,X[20,95]=0.271,X[21,95]=0.302,X[22,95]=0.302,X[23,95]=0.275,X[24,95]=0.255,X[25,95]=0.157,X[26,95]=0.071,X[27,95]=0.071,X[28,95]=0.051,X[29,95]=0.137,X[30,95]=0.365,X[31,95]=0.373,X[32,95]=0.310,X[33,95]=0.247,X[34,95]=0.278,X[35,95]=0.259,X[36,95]=0.353,X[37,95]=0.502,X[38,95]=0.404,X[39,95]=0.373,X[40,95]=0.412,X[41,95]=0.361,X[42,95]=0.420,X[43,95]=0.325,X[44,95]=0.184,X[45,95]=0.216,X[46,95]=0.310,X[47,95]=0.400,X[48,95]=0.451,X[49,95]=0.482,X[50,95]=0.498 X[51,95]=0.471,X[52,95]=0.337,X[53,95]=0.169,X[54,95]=0.145,X[55,95]=0.165,X[56,95]=0.176,X[57,95]=0.192,X[58,95]=0.216,X[59,95]=0.255,X[60,95]=0.345,X[61,95]=0.325,X[62,95]=0.306,X[63,95]=0.337,X[64,95]=0.239,X[65,95]=0.231,X[66,95]=0.263,X[67,95]=0.231,X[68,95]=0.314,X[69,95]=0.388,X[70,95]=0.125,X[71,95]=0.043,X[72,95]=0.102,X[73,95]=0.200,X[74,95]=0.212,X[75,95]=0.255,X[76,95]=0.341,X[77,95]=0.447,X[78,95]=0.369,X[79,95]=0.157,X[80,95]=0.165,X[81,95]=0.247,X[82,95]=0.290,X[83,95]=0.290,X[84,95]=0.278,X[85,95]=0.255,X[86,95]=0.204,X[87,95]=0.125,X[88,95]=0.161,X[89,95]=0.275,X[90,95]=0.220,X[91,95]=0.090,X[92,95]=0.094,X[93,95]=0.302,X[94,95]=0.275,X[95,95]=0.059,X[96,95]=0.086,X[97,95]=0.149,X[98,95]=0.204,X[99,95]=0.220,X[100,95]=0.176 X[1,96]=0.204,X[2,96]=0.204,X[3,96]=0.204,X[4,96]=0.200,X[5,96]=0.227,X[6,96]=0.318,X[7,96]=0.325,X[8,96]=0.212,X[9,96]=0.078,X[10,96]=0.075,X[11,96]=0.075,X[12,96]=0.106,X[13,96]=0.176,X[14,96]=0.192,X[15,96]=0.216,X[16,96]=0.235,X[17,96]=0.290,X[18,96]=0.314,X[19,96]=0.235,X[20,96]=0.275,X[21,96]=0.306,X[22,96]=0.325,X[23,96]=0.318,X[24,96]=0.306,X[25,96]=0.255,X[26,96]=0.169,X[27,96]=0.071,X[28,96]=0.047,X[29,96]=0.157,X[30,96]=0.345,X[31,96]=0.349,X[32,96]=0.302,X[33,96]=0.255,X[34,96]=0.176,X[35,96]=0.263,X[36,96]=0.459,X[37,96]=0.447,X[38,96]=0.275,X[39,96]=0.220,X[40,96]=0.235,X[41,96]=0.251,X[42,96]=0.208,X[43,96]=0.133,X[44,96]=0.075,X[45,96]=0.125,X[46,96]=0.278,X[47,96]=0.400,X[48,96]=0.467,X[49,96]=0.506,X[50,96]=0.369 X[51,96]=0.263,X[52,96]=0.192,X[53,96]=0.157,X[54,96]=0.165,X[55,96]=0.173,X[56,96]=0.196,X[57,96]=0.235,X[58,96]=0.282,X[59,96]=0.357,X[60,96]=0.365,X[61,96]=0.318,X[62,96]=0.294,X[63,96]=0.212,X[64,96]=0.231,X[65,96]=0.298,X[66,96]=0.318,X[67,96]=0.267,X[68,96]=0.247,X[69,96]=0.388,X[70,96]=0.220,X[71,96]=0.039,X[72,96]=0.094,X[73,96]=0.188,X[74,96]=0.149,X[75,96]=0.220,X[76,96]=0.424,X[77,96]=0.510,X[78,96]=0.471,X[79,96]=0.416,X[80,96]=0.416,X[81,96]=0.427,X[82,96]=0.286,X[83,96]=0.235,X[84,96]=0.318,X[85,96]=0.255,X[86,96]=0.227,X[87,96]=0.204,X[88,96]=0.180,X[89,96]=0.118,X[90,96]=0.051,X[91,96]=0.047,X[92,96]=0.063,X[93,96]=0.106,X[94,96]=0.137,X[95,96]=0.043,X[96,96]=0.043,X[97,96]=0.071,X[98,96]=0.063,X[99,96]=0.161,X[100,96]=0.204 X[1,97]=0.180,X[2,97]=0.220,X[3,97]=0.227,X[4,97]=0.235,X[5,97]=0.243,X[6,97]=0.263,X[7,97]=0.196,X[8,97]=0.071,X[9,97]=0.071,X[10,97]=0.075,X[11,97]=0.051,X[12,97]=0.059,X[13,97]=0.086,X[14,97]=0.149,X[15,97]=0.216,X[16,97]=0.247,X[17,97]=0.294,X[18,97]=0.247,X[19,97]=0.122,X[20,97]=0.224,X[21,97]=0.329,X[22,97]=0.353,X[23,97]=0.337,X[24,97]=0.345,X[25,97]=0.325,X[26,97]=0.298,X[27,97]=0.216,X[28,97]=0.145,X[29,97]=0.220,X[30,97]=0.333,X[31,97]=0.384,X[32,97]=0.322,X[33,97]=0.145,X[34,97]=0.180,X[35,97]=0.404,X[36,97]=0.427,X[37,97]=0.278,X[38,97]=0.278,X[39,97]=0.282,X[40,97]=0.224,X[41,97]=0.212,X[42,97]=0.224,X[43,97]=0.208,X[44,97]=0.173,X[45,97]=0.176,X[46,97]=0.290,X[47,97]=0.400,X[48,97]=0.463,X[49,97]=0.451,X[50,97]=0.282 X[51,97]=0.165,X[52,97]=0.137,X[53,97]=0.173,X[54,97]=0.188,X[55,97]=0.251,X[56,97]=0.314,X[57,97]=0.290,X[58,97]=0.286,X[59,97]=0.267,X[60,97]=0.294,X[61,97]=0.220,X[62,97]=0.298,X[63,97]=0.216,X[64,97]=0.255,X[65,97]=0.329,X[66,97]=0.345,X[67,97]=0.255,X[68,97]=0.231,X[69,97]=0.329,X[70,97]=0.314,X[71,97]=0.098,X[72,97]=0.110,X[73,97]=0.192,X[74,97]=0.231,X[75,97]=0.420,X[76,97]=0.478,X[77,97]=0.318,X[78,97]=0.396,X[79,97]=0.447,X[80,97]=0.384,X[81,97]=0.376,X[82,97]=0.137,X[83,97]=0.188,X[84,97]=0.278,X[85,97]=0.247,X[86,97]=0.278,X[87,97]=0.282,X[88,97]=0.267,X[89,97]=0.212,X[90,97]=0.086,X[91,97]=0.055,X[92,97]=0.075,X[93,97]=0.129,X[94,97]=0.137,X[95,97]=0.063,X[96,97]=0.067,X[97,97]=0.051,X[98,97]=0.055,X[99,97]=0.075,X[100,97]=0.090 X[1,98]=0.224,X[2,98]=0.259,X[3,98]=0.267,X[4,98]=0.263,X[5,98]=0.235,X[6,98]=0.176,X[7,98]=0.169,X[8,98]=0.090,X[9,98]=0.055,X[10,98]=0.047,X[11,98]=0.078,X[12,98]=0.071,X[13,98]=0.051,X[14,98]=0.043,X[15,98]=0.149,X[16,98]=0.267,X[17,98]=0.212,X[18,98]=0.086,X[19,98]=0.059,X[20,98]=0.137,X[21,98]=0.231,X[22,98]=0.271,X[23,98]=0.349,X[24,98]=0.365,X[25,98]=0.353,X[26,98]=0.345,X[27,98]=0.329,X[28,98]=0.275,X[29,98]=0.275,X[30,98]=0.341,X[31,98]=0.388,X[32,98]=0.345,X[33,98]=0.282,X[34,98]=0.357,X[35,98]=0.396,X[36,98]=0.259,X[37,98]=0.192,X[38,98]=0.106,X[39,98]=0.192,X[40,98]=0.251,X[41,98]=0.216,X[42,98]=0.196,X[43,98]=0.263,X[44,98]=0.337,X[45,98]=0.275,X[46,98]=0.294,X[47,98]=0.400,X[48,98]=0.451,X[49,98]=0.396,X[50,98]=0.125 X[51,98]=0.067,X[52,98]=0.153,X[53,98]=0.243,X[54,98]=0.329,X[55,98]=0.369,X[56,98]=0.275,X[57,98]=0.212,X[58,98]=0.341,X[59,98]=0.259,X[60,98]=0.176,X[61,98]=0.106,X[62,98]=0.239,X[63,98]=0.298,X[64,98]=0.275,X[65,98]=0.369,X[66,98]=0.353,X[67,98]=0.118,X[68,98]=0.102,X[69,98]=0.243,X[70,98]=0.369,X[71,98]=0.231,X[72,98]=0.157,X[73,98]=0.227,X[74,98]=0.376,X[75,98]=0.486,X[76,98]=0.365,X[77,98]=0.314,X[78,98]=0.322,X[79,98]=0.192,X[80,98]=0.098,X[81,98]=0.075,X[82,98]=0.051,X[83,98]=0.200,X[84,98]=0.306,X[85,98]=0.176,X[86,98]=0.114,X[87,98]=0.278,X[88,98]=0.306,X[89,98]=0.227,X[90,98]=0.090,X[91,98]=0.043,X[92,98]=0.067,X[93,98]=0.173,X[94,98]=0.176,X[95,98]=0.094,X[96,98]=0.067,X[97,98]=0.051,X[98,98]=0.059,X[99,98]=0.078,X[100,98]=0.133 X[1,99]=0.286,X[2,99]=0.267,X[3,99]=0.302,X[4,99]=0.314,X[5,99]=0.278,X[6,99]=0.306,X[7,99]=0.208,X[8,99]=0.094,X[9,99]=0.051,X[10,99]=0.047,X[11,99]=0.063,X[12,99]=0.059,X[13,99]=0.043,X[14,99]=0.051,X[15,99]=0.153,X[16,99]=0.259,X[17,99]=0.149,X[18,99]=0.075,X[19,99]=0.055,X[20,99]=0.059,X[21,99]=0.047,X[22,99]=0.075,X[23,99]=0.231,X[24,99]=0.353,X[25,99]=0.353,X[26,99]=0.345,X[27,99]=0.357,X[28,99]=0.357,X[29,99]=0.329,X[30,99]=0.357,X[31,99]=0.373,X[32,99]=0.373,X[33,99]=0.416,X[34,99]=0.412,X[35,99]=0.251,X[36,99]=0.200,X[37,99]=0.208,X[38,99]=0.075,X[39,99]=0.067,X[40,99]=0.161,X[41,99]=0.216,X[42,99]=0.271,X[43,99]=0.400,X[44,99]=0.341,X[45,99]=0.216,X[46,99]=0.306,X[47,99]=0.396,X[48,99]=0.455,X[49,99]=0.369,X[50,99]=0.173 X[51,99]=0.208,X[52,99]=0.294,X[53,99]=0.365,X[54,99]=0.290,X[55,99]=0.302,X[56,99]=0.149,X[57,99]=0.047,X[58,99]=0.247,X[59,99]=0.380,X[60,99]=0.345,X[61,99]=0.318,X[62,99]=0.314,X[63,99]=0.306,X[64,99]=0.302,X[65,99]=0.380,X[66,99]=0.318,X[67,99]=0.086,X[68,99]=0.055,X[69,99]=0.145,X[70,99]=0.322,X[71,99]=0.294,X[72,99]=0.227,X[73,99]=0.333,X[74,99]=0.408,X[75,99]=0.298,X[76,99]=0.263,X[77,99]=0.184,X[78,99]=0.086,X[79,99]=0.039,X[80,99]=0.055,X[81,99]=0.059,X[82,99]=0.110,X[83,99]=0.247,X[84,99]=0.341,X[85,99]=0.157,X[86,99]=0.059,X[87,99]=0.078,X[88,99]=0.114,X[89,99]=0.149,X[90,99]=0.082,X[91,99]=0.051,X[92,99]=0.102,X[93,99]=0.173,X[94,99]=0.188,X[95,99]=0.090,X[96,99]=0.071,X[97,99]=0.067,X[98,99]=0.125,X[99,99]=0.176,X[100,99]=0.239 X[1,100]=0.208,X[2,100]=0.212,X[3,100]=0.318,X[4,100]=0.259,X[5,100]=0.184,X[6,100]=0.286,X[7,100]=0.259,X[8,100]=0.192,X[9,100]=0.129,X[10,100]=0.071,X[11,100]=0.071,X[12,100]=0.055,X[13,100]=0.078,X[14,100]=0.063,X[15,100]=0.129,X[16,100]=0.188,X[17,100]=0.188,X[18,100]=0.153,X[19,100]=0.051,X[20,100]=0.059,X[21,100]=0.078,X[22,100]=0.090,X[23,100]=0.247,X[24,100]=0.384,X[25,100]=0.349,X[26,100]=0.341,X[27,100]=0.349,X[28,100]=0.380,X[29,100]=0.392,X[30,100]=0.400,X[31,100]=0.349,X[32,100]=0.376,X[33,100]=0.443,X[34,100]=0.427,X[35,100]=0.396,X[36,100]=0.341,X[37,100]=0.306,X[38,100]=0.220,X[39,100]=0.161,X[40,100]=0.192,X[41,100]=0.224,X[42,100]=0.353,X[43,100]=0.376,X[44,100]=0.216,X[45,100]=0.180,X[46,100]=0.322,X[47,100]=0.396,X[48,100]=0.424,X[49,100]=0.349,X[50,100]=0.192 X[51,100]=0.275,X[52,100]=0.341,X[53,100]=0.153,X[54,100]=0.161,X[55,100]=0.259,X[56,100]=0.157,X[57,100]=0.055,X[58,100]=0.157,X[59,100]=0.282,X[60,100]=0.345,X[61,100]=0.400,X[62,100]=0.396,X[63,100]=0.294,X[64,100]=0.314,X[65,100]=0.376,X[66,100]=0.345,X[67,100]=0.204,X[68,100]=0.184,X[69,100]=0.204,X[70,100]=0.267,X[71,100]=0.322,X[72,100]=0.290,X[73,100]=0.290,X[74,100]=0.263,X[75,100]=0.184,X[76,100]=0.106,X[77,100]=0.051,X[78,100]=0.059,X[79,100]=0.086,X[80,100]=0.055,X[81,100]=0.090,X[82,100]=0.255,X[83,100]=0.353,X[84,100]=0.373,X[85,100]=0.153,X[86,100]=0.055,X[87,100]=0.067,X[88,100]=0.129,X[89,100]=0.165,X[90,100]=0.169,X[91,100]=0.118,X[92,100]=0.102,X[93,100]=0.188,X[94,100]=0.196,X[95,100]=0.098,X[96,100]=0.114,X[97,100]=0.173,X[98,100]=0.231,X[99,100]=0.227,X[100,100]=0.294 init: float res = 0.0 float lowtrap=abs(round(real(@itrap)*#maxiter)) float hightrap=abs(round(imag(@itrap)*#maxiter)) IF lowtrap>hightrap res=lowtrap lowtrap=hightrap hightrap=res ENDIF float iterexp = 0 float scale = @colors*#pi/128 complex zold = (0,0) complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float rotx = #x float roty = #y int irotx int iroty int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p = xx + flip(yy) loop: complex z1 = #z*(1-@weight) + p*@weight IF (@converge > 0) iterexp = iterexp + exp(-cabs(z1)) ELSE iterexp = iterexp + exp(-1/(cabs(zold - z1))) ENDIF zold = #z final: rotx = rotx/#width roty = roty/#height float xx = rotx rotx = #width+0.5*#width+(rotx-0.5)*cos(@angle*#pi/180)*#width - (roty-0.5)*sin(@angle*#pi/180)*#height roty = #height+0.5*#height+(roty-0.5)*cos(@angle*#pi/180)*#height + (xx-0.5)*sin(@angle*#pi/180)*#width irotx = abs(round(rotx)) iroty = abs(round(roty)) float smooth = iterexp*scale ez = cos(smooth)+flip(sin(smooth)) float angle = atan2(ez) IF (angle < 0) angle = angle + #pi * 2 ENDIF IF (@trap == true) IF (#numiter>=lowtrap)&&(#numiter<=hightrap) ; Is pixel in trap? #index = angle*(@palrange/(#pi*512)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+ @wate*\ X[1+(round((@hite*smooth+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*smooth+1)*(sum*@fbms+1)*iroty/@scale) % 100)]) ELSE #solid = true ENDIF ELSE #index = angle*(@palrange/(#pi*512)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+ @wate*\ X[1+(round((@hite*smooth+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*smooth+1)*(sum*@fbms+1)*iroty/@scale) % 100)]) ENDIF if @solidb && cabs(#z) == 0 #solid = true endif default: title = "Exp Coral Texture" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param solidb caption = "Solid background" default = false endparam param colors caption = "Color Spread" default = 2.0 hint = "2.0 approximates the iteration count. \ Use 10.0 for convergent fractals." endparam param trap caption = "Use Iteration Trap" default = false endparam param itrap caption="Trap Limits" default=(0.0,1.0) hint="Between 0.0 and 1.0" endparam param palrange caption = "Palette Range" default = 256.0 hint = "256 means use the whole palette." endparam param scale caption = "texture scale" default = 1.0 endparam param wate caption = "texture weight" default = 0.05 endparam param hite caption = "texture warp" default = 0.01 endparam param fbms caption = "texture fBm Weight" default = 0.01 endparam param angle caption = "texture rotation" default = 0.0 endparam param converge caption = "Fractal Type" default = 1 enum = "Convergent" "Divergent" hint = "Mandelbrot is Divergent, Newton is Convergent." endparam param weight caption = "fBm Weight" default = 0.5 min = 0.0 max = 1.0 endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Transfer Weight" default = 1.0 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam param fbmf caption = "fBm Final Weight" default = 10.0 endparam } Heightfields { ; Ron Barnett, December 2010 ; This ucl is intended for use with the heightfield formula $define debug global: init: loop: final: if @ctype == "Diffuse lighting" float l = real(#z) float shad = imag(#z) l = l + 1 #index = 0.99*l + shad else #index = 0.05*(4+real(#z)) endif if cabs(#z) == 0 && @usesolid #solid = true endif default: title = "Heightfields" param version default = 1.00 visible = false hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." endparam bool param usesolid caption = "Use solid color" default = false endparam param ctype caption = "Color type" default = 0 enum = "Diffuse lighting" "Z value" endparam } 3D_Texturizer_Enhanced_III { ; Ron Barnett, April 25, 2004 ; This coloring method is based upon ; the Lighting and fBm formulas of ; Damien Jones ; Iteration trap functionality, from Red William and ; Height Trap functionality added January 6, 2002 ; Corrected fBM for zooms and image size Jan 19, 2002 ; Revised March 8, 2003 to support solid backgrounds ; for strange attractors ; Revised April 25, 2004 to correct for errors in rendering ; Texture II ; Revised December 5, 2004 to make the texture defaults = 0 ; Revised December 6, 2004 to add support for non-slope coloring ; of strange attractors final: float res=0 float lowtrap=abs(round(real(@itrap)*#maxiter)) float hightrap=abs(round(imag(@itrap)*#maxiter)) IF lowtrap>hightrap res=lowtrap lowtrap=hightrap hightrap=res ENDIF IF (@trapsum == true) lowtrap=real(@itrap) hightrap=imag(@itrap) IF lowtrap>hightrap res=lowtrap lowtrap=hightrap hightrap=res ENDIF ENDIF complex t = 0 float tII = 0 complex z1 = 0 float vz = -sqrt(1-|#z|) ; extract implied portion of normal float d2r = #pi/180; degrees to radians conversion factor float t1x = 0 float t2x = 0 float t3x = 0 float t1y = 0 float t2y = 0 float t3y = 0 float e1 = 0 float e2 = 0 float e3 = 0 float tx = 0 float ty = 0 float tz = 0 float td = 0 complex w = 0 complex ww = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 int i = 7 ; light origin float lpointx = @lpointx float lpointy = @lpointy float lpointz = @lplane ; light point at float lightx = @lightx float lighty = @lighty float lightz = @lightz ; create vector for light direction float lx = cos(@angle*d2r) * cos(@elevation*d2r) float ly = sin(@angle*d2r) * cos(@elevation*d2r) float lz = -sin(@elevation*d2r) ; light vector float lx = 0 float ly = 0 float lz = 0 if @ltype == "Infinite light" lx = cos(@angle*d2r) * cos(@elevation*d2r) ly = sin(@angle*d2r) * cos(@elevation*d2r) lz = -sin(@elevation*d2r) else lx = lightx-lpointx ly = -lighty+lpointy lz = lightz-lpointz endif float vd = sqrt(lx^2+ly^2+lz^2) lx = lx/vd ly = ly/vd lz = lz/vd complex p = #pixel * @nscale * r + @noffset WHILE (i > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 i = i - 1 ENDWHILE float x = 0.0 float y = 0.0 IF @transfer == 0 x = real(#pixel)*100+@fbm*(sum+1) y = imag(#pixel)*100+@fbm*(sum+1) ELSEIF @transfer == 1 x = real(#pixel)*200*(1+@fbm*(sum+1)*0.5) y = imag(#pixel)*200*(1+@fbm*(sum+1)*0.5) ELSEIF @transfer == 2 x = real(#pixel)*200/(1+@fbm*(sum+1)*0.5) y = imag(#pixel)*200/(1+@fbm*(sum+1)*0.5) ELSEIF @transfer == 3 x = real(#pixel)*200+10*log(@fbm*(sum+1)) y = imag(#pixel)*200+10*log(@fbm*(sum+1)) ELSEIF @transfer == 4 x = real(#pixel)*200+50*exp(@fbm*(sum+1)) y = imag(#pixel)*200+50*exp(@fbm*(sum+1)) ELSEIF @transfer == 5 x = real(#pixel)*200+50*(@fbm*(sum+1))*(@fbm*(sum+1)) y = imag(#pixel)*200+50*(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 x = real(#pixel)*200+50*sqrt(@fbm*(sum+1)) y = imag(#pixel)*200+50*sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 x = real(#pixel)*200+50*sin(@fbm*(sum+1)) y = imag(#pixel)*200+50*sin(@fbm*(sum+1)) ELSEIF @transfer == 8 x = real(#pixel)*200+50*asin(@fbm*(sum+1)) y = imag(#pixel)*200+50*asin(@fbm*(sum+1)) ELSEIF @transfer == 9 x = real(#pixel)*200+50*tan(@fbm*(sum+1)) y = imag(#pixel)*200+50*tan(@fbm*(sum+1)) ELSEIF @transfer == 10 x = real(#pixel)*200+50*atan(@fbm*(sum+1)) y = imag(#pixel)*200+50*atan(@fbm*(sum+1)) ENDIF ; create the texture float gridx = @gridx float gridy = @gridy x = x*(1+@blend*real(#z))/(1+@blend)+ real(#random)*@dx y = y*(1+@blend*imag(#z))/(1+@blend)+ imag(#random)*@dy IF @smooth == false IF @texture == 0 ;lattice t1x = sin(x/gridx)+@toffset t1y = cos(y/gridy)+@toffset t2x = t1x+0.00000001 t3x = t1x t2y = t1y t3y = t1y+0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 1 ;quilt t1x = tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cotan(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 2 ;circles and squares t1x = sin(x/gridx)+cos(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cos(y/gridy)+sin(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 3 ;triangles t1x = tan(x/gridx)+cotan(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cotan(y/gridy)+tan(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 4 ;X's and O's t1x = 1/sin(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cos(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 5 ;Dimples t1x = 1/tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cotan(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 6 ;Arrows t1x = 1/tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/sin(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 7 ; basketweave t1x = 1/sin(x/gridx)+1/cos(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cos(y/gridy)+1/sin(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 8 ; balls t1x = sin(x/gridx)^2 + cos(y/gridy)^2+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = sin(y/gridy)^2 + cos(x/gridx)^2+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 9 ;Net t1x = log(abs(sin(x/gridx)))+@toffset t2x = t1x+0.00000001 t3x = t1x t1y = log(abs(cos(y/gridy)))+@toffset t2y = t1y t3y = t1y+0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ENDIF ELSE IF @texture == 0 ;lattice t1x = sin(x/gridx)+1 t2x = sin((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = cos(y/gridy)+1 t2y = t1y t3y = cos((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 1 ;quilt t1x = tan(x/gridx)+1 t2x = tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = cotan(y/gridy)+1 t2y = t1y t3y = cotan((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 2 ;circles and squares t1x = sin(x/gridx)+cos(y/gridy)+@toffset t2x = sin((x+0.00000001)/gridx)+cos(y/gridy)+@toffset t3x = t1x t1y = cos(y/gridy)+sin(x/gridx)+@toffset t2y = t1y t3y = cos((y+0.00000001)/gridy)+sin(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 3 ;triangles t1x = tan(x/gridx)+cotan(y/gridy)+@toffset t2x = tan((x+0.00000001)/gridx)+cotan(y/gridy)+@toffset t3x = t1x t1y = cotan(y/gridy)+tan(x/gridx)+@toffset t2y = t1y t3y = cotan((y+0.00000001)/gridy)+tan(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 4 ;X's and O's t1x = 1/sin(x/gridx)+@toffset t2x = 1/sin((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/cos(y/gridy)+@toffset t2y = t1y t3y = 1/cos((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 5 ;Dimples t1x = 1/tan(x/gridx)+@toffset t2x = 1/tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/cotan(y/gridy)+@toffset t2y = t1y t3y = 1/cotan((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 6 ;Arrows t1x = 1/tan(x/gridx)+@toffset t2x = 1/tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/sin(y/gridy)+@toffset t2y = t1y t3y = 1/sin((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 7 ; basketweave t1x = 1/sin((x+0.00000001)/gridx)+1/cos(y/gridy)+@toffset t2x = 1/sin(x/gridx)+1/cos(y/gridy)+@toffset t3x = t1x t1y = 1/cos(y/gridy)+1/sin(x/gridx)+@toffset t2y = t1y t3y = 1/cos((y+0.00000001)/gridy)+1/sin(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 8 ; balls t1x = sin((x+0.00000001)/gridx)^2 + cos(y/gridy)^2+@toffset t2x = sin(x/gridx)^2 + cos(y/gridy)^2+@toffset t3x = t1x t1y = sin(y/gridy)^2 + cos(x/gridx)^2+@toffset t2y = t1y t3y = sin((y+0.00000001)/gridy)^2 + cos(x/gridx)^2+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 9 ;net t1x = log(abs(sin(x/gridx)))+1 t2x = log(abs(sin((x+0.00000001)/gridx)))+@toffset t3x = t1x t1y = log(abs(cos(y/gridy)))+1 t2y = t1y t3y = log(abs(cos((y+0.00000001)/gridy)))+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ENDIF ENDIF ; add the weighted texture z1 = #z*(1-@weight) + t*@weight ; w = fn2(fn1((fn3(#pixel+@pmix*(abs(real(#z))+flip(abs(imag(#z))))))*10^@pwr))*@ts w = fn2(fn1((fn3(#pixel+@pmix*((real(#z))+flip((imag(#z))))))*10^@pwr))*@ts ww = fn2(fn1((w - round(w)))) + @toffsetII tII = cabs(ww)*@tc tII = (tII - trunc(tII))*@tweight if @noslope == false ; compute cosine of angle between these vectors ; (this is the amount of lighting on the surface) float l = lx*real(z1) + ly*imag(z1) + lz*vz IF (l < @ambient); light is below the ambient level l = @ambient; set it to the ambient level ENDIF IF (@ambient < 0); the ambient level is negative l = l + 1; offset to prevent clipping at 0 ENDIF IF (@trap == true) IF (#numiter>=lowtrap)&&(#numiter<=hightrap) ; Is pixel in trap? #index = l*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+tII ELSE #solid = true ENDIF ELSEIF (@trapsum == true) float ht = abs(vz) IF (ht>=lowtrap)&&(ht<=hightrap) ; Is pixel in trap? #index = l*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+tII ELSE #solid = true ENDIF ELSE #index = l*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+tII ENDIF else float ix = real(#z) float iy = imag(#z) float iz = -sqrt(1-|#z|) float icabs = cabs(#z) if @coloring == "X" #index = ix^(@spread/20)*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+tII elseif @coloring == "Y" #index = iy^(@spread/20)*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+tII elseif @coloring == "Z" #index = iz^(@spread/20)*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+tII elseif @coloring == "Cabs" #index = icabs^(@spread/20)*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+tII endif endif if @solidb == true && cabs(#z) == 0 #solid = true endif default: title = "3D Texturizer Enhanced III" helpfile = "3D Texturizer Enhanced III.chm" $ifdef VER40 heading text = "Use with Slope formulas. Enhanced for alternate coloring \ of slope attractor formulas. The fBm textures are based upon \ the code of Damien Jones." endheading $else heading caption = "Use with Slope formulas" endheading heading caption = "Enhanced for alternate" endheading heading caption = "coloring of slope attractors." endheading $endif param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param trap caption="Use Trap by Iteration" default = false visible=@noslope==false endparam param trapsum caption="Use Trap by Height" default = false visible=@noslope==false endparam param itrap caption="Trap Limits" default=(0.0,1.0) hint="Between 0.0 and 1.0" visible=@noslope==false endparam param solidb caption="Use solid background" default = false endparam param noslope caption ="Use non-slope coloring" default = false endparam param coloring caption = "Coloring method" default = 0 enum = "X" "Y" "Z" "Cabs" visible=@noslope endparam param spread caption = "spread" default = 1.0 visible=@noslope==true endparam heading caption = "Slope Lighting" visible=@noslope==false endheading param ltype caption = "Light type" enum = "Point source" "Infinite light" default = 1 visible=@noslope==false endparam param angle caption = "Light Rotation" default = 120.0 hint = "Gives the rotation of the light source, in degrees." visible=@noslope==false && @ltype == "Infinite light" endparam param elevation caption = "Light Elevation" default = 60.0 hint = "Gives the elevation of the light source, in degrees." visible=@noslope==false && @ltype == "Infinite light" endparam $ifdef VER40 heading text = "Light Origin" visible=@noslope==false && @ltype == "Point source" endheading $else heading caption = " Light Origin" visible=@noslope==false && @ltype == "Point source" endheading $endif float param lpointx caption = " X" default = 1.5 visible=@noslope==false && @ltype == "Point source" endparam float param lpointy caption = " Y" default = 2 visible=@noslope==false && @ltype == "Point source" endparam float param lplane caption = " Z" default = 5 visible=@noslope==false && @ltype == "Point source" endparam $ifdef VER40 heading text = "Light Point At" visible=@noslope==false && @ltype == "Point source" endheading $else heading caption = " Light Point At" visible=@noslope==false && @ltype == "Point source" endheading $endif float param lightx caption = " X" default = 0.0 visible=@noslope==false && @ltype == "Point source" endparam float param lighty caption = " Y" default = 0.0 visible=@noslope==false && @ltype == "Point source" endparam float param lightz caption = " Z" default = 0.0 visible=@noslope==false && @ltype == "Point source" endparam param ambient caption = "Ambient Light" default = 0.0 min = -1.0 max = 1.0 hint = "Specifies the level of ambient light. Use -1.0 to \ color all surfaces." visible=@noslope==false endparam heading caption = "Lattice Textures" visible=@noslope==false endheading param texture caption = "Texture" default = 0 enum = "Lattice" "Quilt" "Circles & Squares" "Triangles" \ "X's & O's" "Dimples" "Arrows" "Basketweave" "Balls" \ "Net" visible=@noslope==false endparam param gridx caption = "Texture X distance" default = 1.0 visible=@noslope==false endparam param gridy caption = "Texture Y distance" default = 1.0 visible=@noslope==false endparam param dx caption = "Texture X randomizer" default = 0.0 visible=@noslope==false endparam param dy caption = "Texture Y randomizer" default = 0.0 visible=@noslope==false endparam param theight caption = "Texture Height" default = 1.0 visible=@noslope==false endparam param weight caption = "Texture Weight" default = 0.0 min = 0.0 max = 1.0 visible=@noslope==false endparam param blend caption = "Texture Blend" default = 0.5 visible=@noslope==false endparam param toffset caption = "Texturizer Offset" default = 1.0 visible=@noslope==false endparam param smooth caption = "Texture Smoothing" default = false hint = "Apply 3D smoothing to the texture" visible=@noslope==false endparam heading caption = "fBm Textures" endheading param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Texture Weight" default = 0.2 endparam param fbmf caption = "fBm Final Weight" default = 0.5 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam heading caption = "General Textures" endheading param toffsetII caption = "Texture II offset" default = (2,2) hint = "Changes the texture pattern." endparam param tweight caption = "Texture II weight" default = 0.0 endparam param ts caption = "Texture II scale" default = 5.0 endparam param tc caption = "Texture II modifier" default = 7.0 endparam param pwr caption = "Texture II power" default = 1e-8 endparam param pmix caption = "Pixel Strange Mix" default = 0.0 endparam func fn3 caption = "Texture II Adjustment" default = sin() endfunc func fn1 caption = "Texture II Function 1" default = sqr() endfunc func fn2 caption = "Texture II Function 2" default = acos() endfunc } Mira_G_Attractor { ; Ron Barnett May 28, 2010 ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering. ; Formula from the Wolfram Demonstration Project ; Suggested values to try: ; a b ;----------------- ; 0.29 1.0005 ; -0.48 0.93 ; -0.4 0.9999 ; -0.2 1.000 global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01))+@filter,round(#height*(1+@percentInc*0.01))+@filter] int count[round(#width*(1+@percentInc*0.01))+@filter,round(#height*(1+@percentInc*0.01))+@filter] float fx = @initx float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = @inity float fry = 1.0 float ffy = 0.0 float iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 0.3 float cx = 0 float cy = 0 if @oldver cy = imag(#center) cx = real(#center) else cy = imag(#center)/magfactor cx = real(#center)/magfactor endif float magn = 0 if @oldver magn = #magn else magn = #magn*magfactor endif float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float iterate = @density*30000000 complex at = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; if @oldver while (iter < (iterate*sqr(#width*#magn/400))) xx = fx fx = @b*fy + @a*fx - (1-@a)*2*fx^2/(1+fx^2)^2 fy = -xx + @a*fx - (1-@a)*2*fx^2/(1+fx^2)^2 ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = ffx*#width ffy = ffy*#height px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 endif iter = iter + 1 endwhile else iter = 0 while (iter < 10*@density*#width*#height*magn^2) xx = fx fx = @b*fy + @a*fx - (1-@a)*2*fx^2/(1+fx^2)^2 fy = -xx + @a*fx - (1-@a)*2*fx^2/(1+fx^2)^2 at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile endif ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if @oldver if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 4 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 7 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif else if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif endif default: $ifdef VER40 heading caption="Mira Attractor" endheading heading text="x -> b*y + a*x - (1-a)*2*x^2/(1+x^2)^2" endheading heading text="y -> -x + a*x - (1-a)*2*x^2/(1+x^2)^2" endheading heading text="Use with Pixel formula in jp.ufm, mt.ufm or reb.ufm" endheading $else heading caption="Mira Attractor" endheading heading caption="x -> b*y + a*x - (1-a)*2*x^2/(1+x^2)^2" endheading heading caption="y -> -x + a*x - (1-a)*2*x^2/(1+x^2)^2" endheading heading caption="Use with Pixel formula in jp.ufm, mt.ufm or reb.ufm" endheading $endif title="Mira G Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "Use old version" default = false endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam float param initx caption = "Initial X value" default = 0.1 endparam float param inity caption = "Initial Y value" default = 0.1 endparam float param density caption = "Hit Density" default = 1.0 hint = "Coloring density for the strange attractor." endparam int param filter caption = "Filter Width" default = 1 min = 0 endparam param scale caption = "Color Scaling" default = 0.2 visible = @oldver endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param a caption = "parameter a" default = -.399000001 endparam param b caption = "parameter b" default = 1.000001 endparam } Kaneko_G_Attractor { ; Ron Barnett May 28, 2010 ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering. ; Suggested values to try: ; a b ;----------------- ; 0.1 1.67 ; 0.5 4.0 ; 0.17 1.3 ; 0.562 2.76 global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01))+@filter,round(#height*(1+@percentInc*0.01))+@filter] int count[round(#width*(1+@percentInc*0.01))+@filter,round(#height*(1+@percentInc*0.01))+@filter] float fx = 0.1 float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = 0.1 float fry = 1.0 float ffy = 0.0 float iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 1.5 float cx = 0 float cy = 0 if @oldver cy = imag(#center) cx = real(#center) else cy = imag(#center)/magfactor cx = real(#center)/magfactor endif float magn = 0 if @oldver magn = #magn else magn = #magn*magfactor endif float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float iterate = @density*1e7 complex at = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; if @oldver while (iter < (iterate*sqr(#width*#magn/400))) xx = fx if @kantype == "I" fx = @a*fx + (1-@a)*(1-@b*fy^2) else fx = @a*fx + (1-@a)*(1-@b*abs(fy)) endif fy = xx ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = ffx*#width ffy = ffy*#height px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 endif iter = iter + 1 endwhile else iter = 0 while (iter < 10*@density*#width*#height*magn^2) xx = fx if @kantype == "I" fx = @a*fx + (1-@a)*(1-@b*fy^2) else fx = @a*fx + (1-@a)*(1-@b*abs(fy)) endif fy = xx at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile endif ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if @oldver if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 4 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 7 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif else if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif endif default: $ifdef VER40 heading caption="Kaneko Attractor" endheading heading caption=" Type I" endheading heading text="x -> a*x + 1 - a*(1-b*y^2)" endheading heading caption=" Type II" endheading heading text ="x -> a*x + 1 - a*(1-b*abs(y))" endheading heading text="y -> x" endheading $else heading caption="Kaneko Attractor" endheading heading caption="Type I" endheading heading caption="x -> a*x + 1 - a*(1-b*y^2)" endheading heading caption="Type II" endheading heading caption="x -> a*x + 1 - a*(1-b*abs(y))" endheading heading caption="y -> x" endheading heading caption="Use with Pixel formula in jp.ufm, mt.ufm or reb.ufm" endheading $endif title="Kaneko G Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "Use old version" default = false endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param kantype caption = "Kaneko type" default = 0 enum = "I" "II" endparam float param density caption = "Hit Density" default = 1.0 hint = "Coloring density for the strange attractor." endparam int param filter caption = "Filter Width" default = 1 min = 0 endparam param scale caption = "Color Scaling" default = 0.2 visible = @oldver endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param a caption = "parameter a" default = 0.4 endparam param b caption = "parameter b" default = 2.76 endparam } Chip_strange_g_attractor { ; Ron Barnett December 8, 2004 ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering. ; Modified March 2007 to build in the attractor ; magnification factor so that the default magnification ; on the Location tab can be used. The coloring has also ; been changed to make it more independent of the hit density ; and zooms. ; global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = 1.0 float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = 1.0 float fry = 1.0 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 0.002 float cx = 0 float cy = 0 if @oldver cy = imag(#center) cx = real(#center) else cy = imag(#center)/magfactor cx = real(#center)/magfactor endif float magn = 0 if @oldver magn = #magn else magn = #magn*magfactor endif float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float iterate = @density*1e11 complex at = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; if @oldver while (iter < (iterate*sqr(#width*magn/400))) xx = fx if fx != 0 fx = fy - abs(fx)/fx*cos(sqr(log(abs(@b*fx-@c))))*atan(sqr(log(abs(@b*fx-@c)))) else fx = fy - cos(sqr(log(abs(@b*fx-@c))))*atan(sqr(log(abs(@c*fx-@b)))) endif fy = @a-xx ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 endif iter = iter + 1 endwhile else iter = 0 while (iter < 3*@density*#width*#height*#magn^2) xx = fx if fx != 0 fx = fy - abs(fx)/fx*cos(sqr(log(abs(@b*fx-@c))))*atan(sqr(log(abs(@b*fx-@c)))) else fx = fy - cos(sqr(log(abs(@b*fx-@c))))*atan(sqr(log(abs(@c*fx-@b)))) endif fy = @a-xx; at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = ffx*#width ffy = ffy*#height px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile endif ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if @oldver if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 4 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 7 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif else if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif endif default: heading caption="Chip Attractor" endheading $ifdef VER40 heading text="x -> y - sign(x)*cos(sqr(log(abs(b*x - c)))) \ * atan(sqr(log(abs(c*x - b))))" endheading heading text="y -> a - x" endheading heading text="Use with Pixel formula in mt.ufm or Pixel offset in reb.ufm" endheading $else heading caption="x -> y-sign(x)*cos(sqr(log(abs(b*x - c))))" endheading heading caption=" *atan(sqr(log(abs(c*x - b))))" endheading heading caption="y -> a-x" endheading heading caption="Use with Pixel formula in mt.ufm" endheading heading caption="or Pixel offset in reb.ufm" endheading $endif title="Chip G Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "Use old version" default = false hint = "Set magnification to 0.002" endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 1.0 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param scale caption = "Color Scaling" default = 0.2 visible = @oldver endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param a caption = "parameter a" default = -15.0 endparam param b caption = "parameter b" default = -19.0 endparam param c caption = "parameter c" default = 1.0 endparam } Hopalong_G_Attractor { ; Ron Barnett December 7, 2004 ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering. global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = 1.0 float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = 1.0 float fry = 1.0 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 0.7 float cx = 0 float cy = 0 if @oldver cy = imag(#center) cx = real(#center) else cy = imag(#center)/magfactor cx = real(#center)/magfactor endif float magn = 0 if @oldver magn = #magn else magn = #magn*magfactor endif float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float iterate = @density*10000000 complex at = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; if @oldver while (iter < (iterate*sqr(#width*#magn/400))) xx = fx if fx != 0 fx = fy - abs(fx)/fx*sqrt(abs(@b*fx-@c)) else fx = fy - sqrt(abs(@b*fx-@c)) endif fy = @a-xx ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = ffx*#width ffy = ffy*#height px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 endif iter = iter + 1 endwhile else iter = 0 while (iter < 3*@density*#width*#height*magn^2) xx = fx if fx != 0 fx = fy - abs(fx)/fx*sqrt(abs(@b*fx-@c)) else fx = fy - sqrt(abs(@b*fx-@c)) endif fy = @a-xx at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile endif ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if @oldver if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 4 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 7 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif else if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif endif default: $ifdef VER40 heading caption="Hopalong Attractor" endheading heading text="x -> y - sign(x)*sqrt(abs(b*x-c))" endheading heading text="y -> a - x" endheading heading text="Use with Pixel formula in mt.ufm or reb.ufm" endheading $else heading caption="Hopalong Attractor" endheading heading caption="x -> y - sign(x)*sqrt(abs(b*x-c))" endheading heading caption="y -> a - x" endheading heading caption="Use with Pixel formula in mt.ufm or reb.ufm" endheading $endif title="Hopalong G Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "Use old version" default = false hint = "Set magnification to 0.3" endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 1.0 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param scale caption = "Color Scaling" default = 0.2 visible = @oldver endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param a caption = "parameter a" default = 0.4 endparam param b caption = "parameter b" default = 1.0 endparam param c caption = "parameter c" default = 0.0 endparam } Kam_Torus_G_Attractor { ; Ron Barnett December 7, 2004 ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering. global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = 1.0 float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = 1.0 float fry = 1.0 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float cx = 0 float cy = 0 cy = imag(#center) cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 complex at = 0 float orbit = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; iter = 0 while orbit < @orstop while iter < @npoints xx = fx fx = fx*cos(@a) - (fy - fx^2)*sin(@a) fy = xx*sin(@a) + (fy - xx^2)*cos(@a) at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter+1 endwhile orbit = @orstep + orbit fx = orbit/3 fy = orbit/3 iter = 0 endwhile ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount*20 elseif @method == 1 #index=xhit/(5*maxcount) elseif @method == 2 #index=yhit/(5*maxcount) elseif @method == 3 #index=(yhit+xhit)/(10*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(10*maxcount) elseif @method == 5 #index=(xhit*yhit)/(5e4*maxcount) elseif @method == 6 #index=(nhit+xhit)/(5*maxcount) elseif @method == 7 #index=(nhit+yhit)/(5*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(10*maxcount) endif default: heading caption="Kam Torus Attractor" endheading title="Kam Torus Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param filter caption = "Filter Width" default = 0 min = 0 endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam float param a caption = "parameter a" default = 1.57 endparam float param orstep caption = "Orbit Step" default = 0.05 endparam float param orstop caption = "Orbit Stop" default = 1.5 endparam int param npoints caption = "Points per Orbit" default = 1000 endparam } Hopalong_Attractor_New_Martin { ; Ron Barnett August 20, 2010 ; Based upon Hopalong_G_Attractor with Bruce Martin's ; two variable approach which also includes use initialization ; of x and y global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = @fx float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = @fy float fry = 1.0 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 0.7 float cx = 0 float cy = 0 cy = imag(#center)/magfactor cx = real(#center)/magfactor float magn = 0 magn = #magn*magfactor float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 complex at = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; iter = 0 int delta = 0 if @Delta == "0" delta = 0 elseif @delta == "1" delta = 1 endif while (iter < 3*@density*#width*#height*magn^2) xx = fx if fx != 0 fx = fy - abs(fx)/fx*sqrt(abs(@Beta*fx-Delta)) else fx = fy - sqrt(abs(@Beta*fx-Delta)) endif fy = @Alpha-xx at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif default: $ifdef VER40 heading caption="Hopalong New Martin Variant" endheading heading text="x -> y - sign(x)*sqrt(abs(Beta*x-Delta))" endheading heading text="y -> Alpha - x" endheading heading text ="Delta takes the value of 0 or 1." endheading heading text = "For a more symmetrical image set the rotation on the Location Tab \ to 22.5 degrees." endheading heading text="Use one of the Pixel formulas for the ufm" endheading $else heading caption="Hopalong New Martin Variant" endheading heading caption="x -> y - sign(x)*sqrt(abs(Beta*x-Delta))" endheading heading caption="y -> Alpha - x" endheading heading caption ="Delta takes the value of 0 or 1." heading caption="Use with Pixel formulas for the ufm" endheading $endif title="Hopalong New Martin Variant" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 1.0 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam float param Alpha caption = "Alpha" default = 0.4 endparam float param Beta caption = "Beta" default = 1.0 endparam param Delta caption = "Delta" enum = "0" "1" default = 0 endparam float param fx caption = "inital x" default = 0.0 endparam float param fy caption = "inital y" default = 0.0 endparam } Tinkerbell_Attractor { ; Ron Barnett September 9, 2010 $define debug global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = @fx float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = @fy float fry = 1.0 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 0.7 float cx = 0 float cy = 0 cy = imag(#center)/magfactor cx = real(#center)/magfactor float magn = 0 magn = #magn*magfactor float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 complex at = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; iter = 0 while (iter < 3*@density*#width*#height*magn^2) xx = fx fx = fx^2 - fy^2 + @a*fx + @b*fy fy = 2*xx*fy + @c*xx + @d*fy at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) print(at) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif default: $ifdef VER40 heading caption="Tinkerbell Attractor" endheading heading text="x -> x^2 - y^2 + @a*x + @b*y" endheading heading text="y -> 2*x*y - @c*x + @d*y" endheading heading text="Use one of the Pixel formulas for the ufm" endheading $else heading caption="Tinkerbell Attractor" endheading heading caption="x -> x^2 - y^2 + @a*x + @b*y" endheading heading caption="y -> 2*x*y - @c*x + @d*y" endheading caption="Use with Pixel formulas for the ufm" endheading $endif title="Tinkerbell Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 1.0 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam float param a caption = "parameter a" default = 0.9 endparam float param b caption = "parameter b" default = -0.6013 endparam float param c caption = "parameter c" default = 2.0 endparam float param d caption = "parameter d" default = 0.5 endparam float param fx caption = "inital x" default = -0.72 endparam float param fy caption = "inital y" default = -0.64 endparam } Latoocarfian_strange_g_attractor { ; Ron Barnett December 8, 2004 ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering. global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = 1.0 float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = 1.0 float fry = 1.0 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 1 float cx = 0 float cy = 0 if @oldver cy = imag(#center) cx = real(#center) else cy = imag(#center)/magfactor cx = real(#center)/magfactor endif float magn = 0 if @oldver magn = #magn else magn = #magn*magfactor endif float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float iterate = @density*10000000 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; if @oldver while (iter < (iterate*sqr(#width*#magn/400))) xx = fx fx = real(@fn1(@b*fy) + @c*@fn2(@b*fx)) fy = real(@fn3(@a*xx) + @d*@fn4(@a*fy)) ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 endif iter = iter + 1 endwhile else iter = 0 while (iter < 3*@density*#width*#height*magn^2) xx = fx fx = real(@fn1(@b*fy) + @c*@fn2(@b*fx)) fy = real(@fn3(@a*xx) + @d*@fn4(@a*fy)) at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = ffx*#width ffy = ffy*#height px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile endif ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if @oldver if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 4 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 7 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif else if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif endif default: heading caption="Latoocarfian Attractor" endheading $ifdef VER40 heading text="x -> sin(b*y) + c*sin(b*x)" endheading heading text="y -> sin(a*x) + d*sin(a*y)" endheading heading text="Use with Pixel formula in mt.ufm or reb.ufm" endheading $else heading caption="x -> sin(b*y) + c*sin(b*x)" endheading heading caption="y -> sin(a*x) + d*sin(a*y)" endheading $endif title="Latoocarfian G Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "Use old version" default = false hint = "Set magnification to 0.01" endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 0.1 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param scale caption = "Color Scaling" default = 0.2 visible = @oldver endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param a caption = "parameter a" default = -0.960918 endparam param b caption = "parameter b" default = 2.879879 endparam param c caption = "parameter c" default = 0.765145 endparam param d caption = "parameter d" default = 0.744728 endparam func fn1 caption = "function 1" default = sin() endfunc func fn2 caption = "function 2" default = sin() endfunc func fn3 caption = "function 3" default = sin() endfunc func fn4 caption = "function 4" default = sin() endfunc } Pickover_G_Attractor { ; Ron Barnett December 6, 2004 ; ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering. Corrections made to rotation ; about the z axis. global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] complex hits2[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = 1.0 float ffy = 0.0 float yy = 0 float zz = 0.0 float ffz = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 1 float cx = 0 float cy = 0 if @oldver cy = imag(#center) cx = real(#center) else cy = imag(#center)/magfactor cx = real(#center)/magfactor endif float magn = 0 if @oldver magn = #magn else magn = #magn*magfactor endif float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float tzmax = sqrt(txmax^2+tymax^2) float zmin = sqrt(xmin^2 + ymin^2) float iterate = @density*10000000 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 hits2[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; if @oldver while (iter < (iterate*sqr(#width*#magn/400))) xx = fx fx = real(@fn1(@a*fy)) - zz*real(@fn2(@b*fx)) fy = zz*real(@fn3(@c*xx)) - real(@fn4(@d*fy)) zz = real(@fn5(xx)) ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax ffz = (zmin-zz)/sqrt(txmax^2+tymax^2) xx = ffx ; ; rotation around the z axis ; xx = ffx ffx = 0.5 + (ffx - 0.5 - @rotoffx/txmax)*cos(#angle) - \ (ffy - 0.5 - @rotoffy/tymax)*sin(#angle)*#height/#width ffy = 0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(#angle) + \ (xx - 0.5 - @rotoffx/txmax)*sin(#angle)*#width/#height ; ; rotation around the y axis ; xx = ffx ffx = (0.5 + (ffz - 0.5 - @rotoffz/txmax)*sin(@zangle*pi/180) + \ (ffx - 0.5 - @rotoffx/txmax)*cos(@zangle*pi/180))*#width ffz = (0.5 + (ffz - 0.5 - @rotoffz/tzmax)*cos(@zangle*pi/180) - \ (xx - 0.5 - @rotoffx/txmax)*sin(@zangle*pi/180)) ; ; rotation around the x axis ; yy = ffy ffy = (0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(@xangle*pi/180) - \ (ffz - 0.5 - @rotoffz/tzmax)*sin(@xangle*pi/180))*#height ffz = (0.5 + (yy - 0.5 - @rotoffy/tymax)*sin(@xangle*pi/180) + \ (ffz - 0.5 - @rotoffz/tzmax)*cos(@xangle*pi/180))*#height/2 ; ; final translation ; ffx = ffx - @transx*#width ffy = ffy - @transy*#height ffz = ffz - @transz*#height/2 ; ; perspective application ; if @useproj ffx = (@cprojx*ffz-ffx*@cprojz)/(ffz-@cprojz) ffy = (@cprojy*ffz-ffy*@cprojz)/(ffz-@cprojz) endif px = trunc(ffx)+wd2 py = trunc(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) hits2[px,py] = hits2[px,py] + 1 + flip(ffz) endif iter = iter + 1 endwhile else iter = 0 while (iter < 3*@density*#width*#height*magn^2) xx = fx fx = real(@fn1(@a*fy)) - zz*real(@fn2(@b*fx)) fy = zz*real(@fn3(@c*xx)) - real(@fn4(@d*fy)) zz = real(@fn5(xx)) ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax ffz = (zmin-zz)/sqrt(txmax^2+tymax^2) xx = ffx ; ; rotation around the z axis ; xx = ffx ffx = 0.5 + (ffx - 0.5 - @rotoffx/txmax)*cos(#angle) - \ (ffy - 0.5 - @rotoffy/tymax)*sin(#angle)*#height/#width ffy = 0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(#angle) + \ (xx - 0.5 - @rotoffx/txmax)*sin(#angle)*#width/#height ; ; rotation around the y axis ; xx = ffx ffx = (0.5 + (ffz - 0.5 - @rotoffz/txmax)*sin(@zangle*pi/180) + \ (ffx - 0.5 - @rotoffx/txmax)*cos(@zangle*pi/180))*#width ffz = (0.5 + (ffz - 0.5 - @rotoffz/tzmax)*cos(@zangle*pi/180) - \ (xx - 0.5 - @rotoffx/txmax)*sin(@zangle*pi/180)) ; ; rotation around the x axis ; yy = ffy ffy = (0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(@xangle*pi/180) - \ (ffz - 0.5 - @rotoffz/tzmax)*sin(@xangle*pi/180))*#height ffz = (0.5 + (yy - 0.5 - @rotoffy/tymax)*sin(@xangle*pi/180) + \ (ffz - 0.5 - @rotoffz/tzmax)*cos(@xangle*pi/180))*#height/2 ; ; final translation ; ffx = ffx - @transx*#width ffy = ffy - @transy*#height ffz = ffz - @transz*#height/2 ; ; perspective application ; if @useproj ffx = (@cprojx*ffz-ffx*@cprojz)/(ffz-@cprojz) ffy = (@cprojy*ffz-ffy*@cprojz)/(ffz-@cprojz) endif px = trunc(ffx)+wd2 py = trunc(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) hits2[px,py] = hits2[px,py] + 1 + flip(ffz) if real(hits2[px,py]) > maxcount maxcount = round(real(hits2[px,py])) endif endif iter = iter + 1 endwhile endif ; init: float nhit=0 float xhit=0 float yhit=0 float zhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && real(hits2[xcrd,ycrd]) > @thresh if @filter == 0 nhit=real(hits2[xcrd,ycrd]) xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) zhit=imag(hits2[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 zhit = 0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + gauss[gx+@filter,gy+@filter]*real(hits2[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) zhit = zhit + gauss[gx+@filter,gy+@filter]*imag(hits2[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = nhit/gweight xhit = xhit/gweight yhit = yhit/gweight zhit = zhit/gweight endif else #solid=true endif if @oldver if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((zhit+1)/log(iterate))^@scale elseif @method == 4 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 7 #index=(((xhit+yhit)/(zhit+1)+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 9 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 10 #index=((nhit+zhit+1)/log(iterate))^@scale elseif @method == 11 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif else if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=zhit/(100*maxcount) elseif @method == 4 #index=(yhit+xhit)/(200*maxcount) elseif @method == 5 #index=(xhit-yhit)/(200*maxcount) elseif @method == 6 #index=(yhit*xhit)/(1e6*maxcount) elseif @method == 7 #index=(xhit+yhit)/zhit/maxcount elseif @method == 8 #index=(nhit+xhit)/(100*maxcount) elseif @method == 9 #index=(nhit+yhit)/(100*maxcount) elseif @method == 10 #index=(nhit+zhit)/(100*maxcount) elseif @method == 11 #index=(nhit+xhit+yhit)/(200*maxcount) endif endif default: heading caption="Pickover Attractor" endheading $ifdef VER40 heading text="x -> fn1(a*y) - z*fn2(b*x)" endheading heading text="y -> z*fn3(c*x) - fn4(d*y)" endheading heading text="z -> fn5(x)" endheading heading text="Use with Pixel formula in mt.ufm or reb.ufm" endheading $else heading caption="x -> fn1(a*y) - z*fn2(b*x)" endheading heading caption="y -> z*fn3(c*x) - fn4(d*y)" endheading heading caption="z -> fn5(x)" endheading heading caption="Use with Pixel formula in mt.ufm" endheading $endif title="Pickover G Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "Use old version" default = false endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 0.5 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param scale caption = "Color Scaling" default = 0.2 visible = @oldver endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FZ" "FX+FY" "FX-FY" "FX*FY" "(FX+FY)/FZ" \ "Count+FX" "Count+FY" "Count+FZ" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param xangle caption = "X Axis Rotation" default = 0.0 hint = "This is the fixed (horizontal) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param zangle caption = "Y Axis Rotation" default = 0.0 min = 0.0 max = 180.0 hint = "This is the fixed (vertical) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param rotoffx caption = "Rotation Center X Offset" default = 0.0 endparam param rotoffy caption = "Rotation Center Y Offset" default = 0.0 endparam param rotoffz caption = "Rotation Center Z Offset" default = 0.0 endparam param useproj caption = "Use Perspective" default = false endparam param cprojx caption = "X Center of Projection" default = 0.0 endparam param cprojy caption = "Y Center of Projection" default = 0.0 endparam param cprojz caption = "Z Center of Projection" default = -100.0 endparam param transx caption = "X Final Translation" default = 0.0 endparam param transy caption = "Y Final Translation" default = 0.0 endparam param transz caption = "Z Final Translation" default = 0.0 endparam param a caption = "parameter a" default = 2.24 endparam param b caption = "parameter b" default = 0.43 endparam param c caption = "parameter c" default = -0.65 endparam param d caption = "parameter d" default = -2.43 endparam func fn1 caption = "function 1" default = sin() endfunc func fn2 caption = "function 2" default = cos() endfunc func fn3 caption = "function 3" default = sin() endfunc func fn4 caption = "function 4" default = cos() endfunc func fn5 caption = "function 5" default = sin() endfunc } Quadruptwo_strange_g_attractor { ; Ron Barnett December 8, 2004 ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering.; Zoom in to about magn = 0.01 for a good starting point ; global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = 1.0 float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = 1.0 float fry = 1.0 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = .01 float cx = 0 float cy = 0 if @oldver cy = imag(#center) cx = real(#center) else cy = imag(#center)/magfactor cx = real(#center)/magfactor endif float magn = 0 if @oldver magn = #magn else magn = #magn*magfactor endif float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float iterate = @density*1e10 complex at = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; if @oldver while (iter < (iterate*sqr(#width*#magn/400))) xx = fx if fx != 0 fx = fy - abs(fx)/fx*sin(log(abs(@b*fx-@c)))*atan(sqr(log(abs(@c*fx-@b)))) else fx = fy - sin(log(abs(@b*fx-@c)))*atan(sqr(log(abs(@c*fx-@b)))) endif fy = @a-xx ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 endif iter = iter + 1 endwhile else iter = 0 while (iter < 3e5*@density*#width*#height*magn^2) xx = fx if fx != 0 fx = fy - abs(fx)/fx*sin(log(abs(@b*fx-@c)))*atan(sqr(log(abs(@c*fx-@b)))) else fx = fy - sin(log(abs(@b*fx-@c)))*atan(sqr(log(abs(@c*fx-@b)))) endif fy = @a-xx at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = ffx*#width ffy = ffy*#height px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile endif ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if @oldver if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 4 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 7 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif else if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif endif default: heading caption="Quadruptwo Attractor" endheading $ifdef VER40 heading text="x -> y-sign(x)*sin(log(abs(b*x-c))) \" endheading heading text=" *atan(sqr(log(abs(c*x-b))))" endheading heading text="y -> a - x" endheading heading text="Use with Pixel formula in mt.ufm or reb.ufm" endheading $else heading caption="x -> y-sign(x)*sin(log(abs(b*x-c))) \" endheading heading caption=" *atan(sqr(log(abs(c*x-b))))" endheading heading caption="y -> a - x" endheading heading caption="Use with Pixel formula in mt.ufm" endheading $endif title="Quadruptwo G Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "Use old version" default = false hint = "Set magnification to 0.01" endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 0.1 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param scale caption = "Color Scaling" default = 0.2 visible = @oldver endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param a caption = "parameter a" default = 34.0 endparam param b caption = "parameter b" default = 1.0 endparam param c caption = "parameter c" default = 5.0 endparam } Threeply_strange_g_attractor { ; Ron Barnett December 8, 2004 ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering. ; Zoom in to about magn = 0.001 for a good starting point ; global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = 1.0 float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = 1.0 float fry = 1.0 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 0.001 float cx = 0 float cy = 0 if @oldver cy = imag(#center) cx = real(#center) else cy = imag(#center)/magfactor cx = real(#center)/magfactor endif float magn = 0 if @oldver magn = #magn else magn = #magn*magfactor endif float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float iterate = @density*1e11 complex at = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; if @oldver while (iter < (iterate*sqr(#width*#magn/400))) xx = fx if fx != 0 fx = fy - abs(fx)/fx*(abs(sin(fx)*cos(@b)+@c-fx*sin(@a+@b+@c))) else fx = fy - (abs(sin(fx)*cos(@b)+@c-fx*sin(@a+@b+@c))) endif fy = @a-xx ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 endif iter = iter + 1 endwhile else iter = 0 while (iter < 3e6*@density*#width*#height*magn^2) xx = fx if fx != 0 fx = fy - abs(fx)/fx*(abs(sin(fx)*cos(@b)+@c-fx*sin(@a+@b+@c))) else fx = fy - (abs(sin(fx)*cos(@b)+@c-fx*sin(@a+@b+@c))) endif fy = @a-xx at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = ffx*#width ffy = ffy*#height px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile endif ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if @oldver if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 4 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 7 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif else if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif endif default: heading caption="Threeply Attractor" endheading $ifdef VER40 heading text="x->y-sign(x)*(abs(sin(x)*cos(@b)+@c-" endheading heading text=" x*sin(@a+@b+@c)))" endheading heading text="y->a-x" endheading heading text="Use with Pixel formula in mt.ufm or reb.ufm" endheading $else heading caption="x->y-sign(x)*(abs(sin(x)*cos(@b)+@c-" endheading heading caption=" x*sin(@a+@b+@c)))" endheading heading caption="y->a-x" endheading heading caption="Use with Pixel formula in mt.ufm" endheading $endif title="Threeply G Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "Use old version" default = false hint = "Set magnification to 0.002" endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 1.0 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param scale caption = "Color Scaling" default = 0.2 visible = @oldver endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param a caption = "parameter a" default = -55.0 endparam param b caption = "parameter b" default = -1.0 endparam param c caption = "parameter c" default = -42.0 endparam } Zito_G_Attractor { ; Ron Barnett December 6, 2004 ; Implements the mapping algorithm of Susan Chambless ; and Gaussian filtering. global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = 0.1 float ffx = 0.0 float xx = 0.0 float fy = 0.1 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float iterate = @density*10000000 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; while (iter < (iterate*sqr(#width*#magn/400))) xx = fx fx = fx*fy +@a*fx - fy fy = xx+fy ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 endif iter = iter + 1 endwhile ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else #solid=true endif if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 4 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 7 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif default: heading caption="Zito Attractor" endheading heading caption="x -> x*y + a*x - y" endheading heading caption="y -> x + y" endheading heading caption="Use with Pixel formula in mt.ufm" endheading heading caption="Set drawing method to one-pass" endheading title="Zito G Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 0.1 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param scale caption = "Color Scaling" default = 0.2 endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param a caption = "parameter a" default = 0.357057 endparam } exp_flower2a_texture { ; Ron Barnett, October 2003 global: float X[101,101] X[1,1]=0.471,X[2,1]=0.475,X[3,1]=0.388,X[4,1]=0.247,X[5,1]=0.235,X[6,1]=0.388,X[7,1]=0.694,X[8,1]=0.804,X[9,1]=0.498,X[10,1]=0.220,X[11,1]=0.376,X[12,1]=0.682,X[13,1]=0.843,X[14,1]=0.675,X[15,1]=0.510,X[16,1]=0.412,X[17,1]=0.529,X[18,1]=0.820,X[19,1]=0.824,X[20,1]=0.663,X[21,1]=0.525,X[22,1]=0.498,X[23,1]=0.510,X[24,1]=0.549,X[25,1]=0.502,X[26,1]=0.478,X[27,1]=0.494,X[28,1]=0.412,X[29,1]=0.482,X[30,1]=0.494,X[31,1]=0.569,X[32,1]=0.541,X[33,1]=0.282,X[34,1]=0.094,X[35,1]=0.420,X[36,1]=0.765,X[37,1]=0.580,X[38,1]=0.447,X[39,1]=0.486,X[40,1]=0.467,X[41,1]=0.490,X[42,1]=0.451,X[43,1]=0.329,X[44,1]=0.443,X[45,1]=0.282,X[46,1]=0.353,X[47,1]=0.369,X[48,1]=0.384,X[49,1]=0.486,X[50,1]=0.494 X[51,1]=0.529,X[52,1]=0.537,X[53,1]=0.502,X[54,1]=0.447,X[55,1]=0.498,X[56,1]=0.506,X[57,1]=0.490,X[58,1]=0.498,X[59,1]=0.529,X[60,1]=0.471,X[61,1]=0.502,X[62,1]=0.592,X[63,1]=0.549,X[64,1]=0.561,X[65,1]=0.502,X[66,1]=0.333,X[67,1]=0.114,X[68,1]=0.314,X[69,1]=0.655,X[70,1]=0.588,X[71,1]=0.486,X[72,1]=0.510,X[73,1]=0.510,X[74,1]=0.439,X[75,1]=0.396,X[76,1]=0.392,X[77,1]=0.369,X[78,1]=0.251,X[79,1]=0.180,X[80,1]=0.310,X[81,1]=0.573,X[82,1]=0.565,X[83,1]=0.573,X[84,1]=0.733,X[85,1]=0.686,X[86,1]=0.541,X[87,1]=0.322,X[88,1]=0.329,X[89,1]=0.482,X[90,1]=0.522,X[91,1]=0.537,X[92,1]=0.510,X[93,1]=0.447,X[94,1]=0.384,X[95,1]=0.459,X[96,1]=0.573,X[97,1]=0.549,X[98,1]=0.506,X[99,1]=0.510,X[100,1]=0.502 X[1,2]=0.482,X[2,2]=0.486,X[3,2]=0.337,X[4,2]=0.220,X[5,2]=0.200,X[6,2]=0.353,X[7,2]=0.675,X[8,2]=0.792,X[9,2]=0.549,X[10,2]=0.388,X[11,2]=0.463,X[12,2]=0.690,X[13,2]=0.851,X[14,2]=0.604,X[15,2]=0.498,X[16,2]=0.600,X[17,2]=0.675,X[18,2]=0.820,X[19,2]=0.839,X[20,2]=0.643,X[21,2]=0.494,X[22,2]=0.514,X[23,2]=0.525,X[24,2]=0.588,X[25,2]=0.541,X[26,2]=0.471,X[27,2]=0.486,X[28,2]=0.416,X[29,2]=0.455,X[30,2]=0.514,X[31,2]=0.631,X[32,2]=0.549,X[33,2]=0.278,X[34,2]=0.149,X[35,2]=0.357,X[36,2]=0.541,X[37,2]=0.525,X[38,2]=0.502,X[39,2]=0.506,X[40,2]=0.533,X[41,2]=0.506,X[42,2]=0.427,X[43,2]=0.380,X[44,2]=0.455,X[45,2]=0.239,X[46,2]=0.333,X[47,2]=0.345,X[48,2]=0.353,X[49,2]=0.502,X[50,2]=0.545 X[51,2]=0.584,X[52,2]=0.498,X[53,2]=0.510,X[54,2]=0.478,X[55,2]=0.498,X[56,2]=0.514,X[57,2]=0.498,X[58,2]=0.486,X[59,2]=0.522,X[60,2]=0.412,X[61,2]=0.506,X[62,2]=0.643,X[63,2]=0.612,X[64,2]=0.569,X[65,2]=0.435,X[66,2]=0.302,X[67,2]=0.161,X[68,2]=0.290,X[69,2]=0.467,X[70,2]=0.514,X[71,2]=0.502,X[72,2]=0.506,X[73,2]=0.494,X[74,2]=0.459,X[75,2]=0.400,X[76,2]=0.392,X[77,2]=0.369,X[78,2]=0.278,X[79,2]=0.290,X[80,2]=0.365,X[81,2]=0.486,X[82,2]=0.506,X[83,2]=0.533,X[84,2]=0.702,X[85,2]=0.761,X[86,2]=0.627,X[87,2]=0.475,X[88,2]=0.424,X[89,2]=0.486,X[90,2]=0.498,X[91,2]=0.549,X[92,2]=0.576,X[93,2]=0.490,X[94,2]=0.329,X[95,2]=0.325,X[96,2]=0.416,X[97,2]=0.486,X[98,2]=0.494,X[99,2]=0.482,X[100,2]=0.545 X[1,3]=0.502,X[2,3]=0.529,X[3,3]=0.451,X[4,3]=0.271,X[5,3]=0.251,X[6,3]=0.286,X[7,3]=0.561,X[8,3]=0.773,X[9,3]=0.533,X[10,3]=0.459,X[11,3]=0.498,X[12,3]=0.655,X[13,3]=0.843,X[14,3]=0.596,X[15,3]=0.510,X[16,3]=0.478,X[17,3]=0.478,X[18,3]=0.675,X[19,3]=0.733,X[20,3]=0.580,X[21,3]=0.569,X[22,3]=0.576,X[23,3]=0.580,X[24,3]=0.573,X[25,3]=0.557,X[26,3]=0.561,X[27,3]=0.525,X[28,3]=0.478,X[29,3]=0.471,X[30,3]=0.471,X[31,3]=0.573,X[32,3]=0.486,X[33,3]=0.388,X[34,3]=0.275,X[35,3]=0.427,X[36,3]=0.541,X[37,3]=0.553,X[38,3]=0.604,X[39,3]=0.494,X[40,3]=0.502,X[41,3]=0.557,X[42,3]=0.435,X[43,3]=0.486,X[44,3]=0.506,X[45,3]=0.459,X[46,3]=0.478,X[47,3]=0.557,X[48,3]=0.545,X[49,3]=0.545,X[50,3]=0.549 X[51,3]=0.596,X[52,3]=0.584,X[53,3]=0.584,X[54,3]=0.573,X[55,3]=0.522,X[56,3]=0.522,X[57,3]=0.522,X[58,3]=0.486,X[59,3]=0.518,X[60,3]=0.537,X[61,3]=0.573,X[62,3]=0.541,X[63,3]=0.522,X[64,3]=0.533,X[65,3]=0.510,X[66,3]=0.482,X[67,3]=0.314,X[68,3]=0.388,X[69,3]=0.506,X[70,3]=0.482,X[71,3]=0.455,X[72,3]=0.502,X[73,3]=0.475,X[74,3]=0.478,X[75,3]=0.522,X[76,3]=0.565,X[77,3]=0.600,X[78,3]=0.549,X[79,3]=0.345,X[80,3]=0.341,X[81,3]=0.349,X[82,3]=0.373,X[83,3]=0.502,X[84,3]=0.592,X[85,3]=0.776,X[86,3]=0.702,X[87,3]=0.541,X[88,3]=0.478,X[89,3]=0.447,X[90,3]=0.510,X[91,3]=0.506,X[92,3]=0.541,X[93,3]=0.561,X[94,3]=0.604,X[95,3]=0.749,X[96,3]=0.788,X[97,3]=0.651,X[98,3]=0.576,X[99,3]=0.627,X[100,3]=0.761 X[1,4]=0.612,X[2,4]=0.616,X[3,4]=0.545,X[4,4]=0.373,X[5,4]=0.235,X[6,4]=0.200,X[7,4]=0.502,X[8,4]=0.608,X[9,4]=0.467,X[10,4]=0.455,X[11,4]=0.510,X[12,4]=0.725,X[13,4]=0.851,X[14,4]=0.545,X[15,4]=0.498,X[16,4]=0.494,X[17,4]=0.455,X[18,4]=0.600,X[19,4]=0.576,X[20,4]=0.549,X[21,4]=0.588,X[22,4]=0.478,X[23,4]=0.455,X[24,4]=0.576,X[25,4]=0.569,X[26,4]=0.529,X[27,4]=0.525,X[28,4]=0.537,X[29,4]=0.424,X[30,4]=0.490,X[31,4]=0.557,X[32,4]=0.478,X[33,4]=0.455,X[34,4]=0.463,X[35,4]=0.471,X[36,4]=0.486,X[37,4]=0.529,X[38,4]=0.502,X[39,4]=0.431,X[40,4]=0.541,X[41,4]=0.678,X[42,4]=0.545,X[43,4]=0.553,X[44,4]=0.588,X[45,4]=0.596,X[46,4]=0.573,X[47,4]=0.522,X[48,4]=0.451,X[49,4]=0.431,X[50,4]=0.565 X[51,4]=0.588,X[52,4]=0.600,X[53,4]=0.584,X[54,4]=0.494,X[55,4]=0.478,X[56,4]=0.490,X[57,4]=0.482,X[58,4]=0.549,X[59,4]=0.525,X[60,4]=0.490,X[61,4]=0.482,X[62,4]=0.545,X[63,4]=0.722,X[64,4]=0.753,X[65,4]=0.667,X[66,4]=0.541,X[67,4]=0.522,X[68,4]=0.498,X[69,4]=0.525,X[70,4]=0.506,X[71,4]=0.518,X[72,4]=0.502,X[73,4]=0.529,X[74,4]=0.494,X[75,4]=0.529,X[76,4]=0.549,X[77,4]=0.522,X[78,4]=0.510,X[79,4]=0.420,X[80,4]=0.384,X[81,4]=0.388,X[82,4]=0.408,X[83,4]=0.424,X[84,4]=0.541,X[85,4]=0.663,X[86,4]=0.596,X[87,4]=0.573,X[88,4]=0.553,X[89,4]=0.459,X[90,4]=0.486,X[91,4]=0.482,X[92,4]=0.533,X[93,4]=0.627,X[94,4]=0.757,X[95,4]=0.812,X[96,4]=0.859,X[97,4]=0.878,X[98,4]=0.729,X[99,4]=0.702,X[100,4]=0.761 X[1,5]=0.800,X[2,5]=0.812,X[3,5]=0.722,X[4,5]=0.588,X[5,5]=0.392,X[6,5]=0.235,X[7,5]=0.525,X[8,5]=0.631,X[9,5]=0.451,X[10,5]=0.467,X[11,5]=0.518,X[12,5]=0.710,X[13,5]=0.651,X[14,5]=0.494,X[15,5]=0.561,X[16,5]=0.502,X[17,5]=0.506,X[18,5]=0.482,X[19,5]=0.447,X[20,5]=0.506,X[21,5]=0.596,X[22,5]=0.557,X[23,5]=0.471,X[24,5]=0.443,X[25,5]=0.475,X[26,5]=0.490,X[27,5]=0.604,X[28,5]=0.882,X[29,5]=0.533,X[30,5]=0.729,X[31,5]=0.722,X[32,5]=0.561,X[33,5]=0.486,X[34,5]=0.471,X[35,5]=0.388,X[36,5]=0.467,X[37,5]=0.533,X[38,5]=0.557,X[39,5]=0.502,X[40,5]=0.620,X[41,5]=0.765,X[42,5]=0.604,X[43,5]=0.573,X[44,5]=0.573,X[45,5]=0.518,X[46,5]=0.486,X[47,5]=0.443,X[48,5]=0.424,X[49,5]=0.427,X[50,5]=0.471 X[51,5]=0.471,X[52,5]=0.514,X[53,5]=0.494,X[54,5]=0.451,X[55,5]=0.467,X[56,5]=0.478,X[57,5]=0.427,X[58,5]=0.435,X[59,5]=0.467,X[60,5]=0.443,X[61,5]=0.498,X[62,5]=0.824,X[63,5]=0.922,X[64,5]=0.812,X[65,5]=0.835,X[66,5]=0.718,X[67,5]=0.694,X[68,5]=0.592,X[69,5]=0.596,X[70,5]=0.620,X[71,5]=0.647,X[72,5]=0.549,X[73,5]=0.486,X[74,5]=0.478,X[75,5]=0.424,X[76,5]=0.376,X[77,5]=0.329,X[78,5]=0.392,X[79,5]=0.467,X[80,5]=0.502,X[81,5]=0.471,X[82,5]=0.467,X[83,5]=0.435,X[84,5]=0.490,X[85,5]=0.588,X[86,5]=0.510,X[87,5]=0.573,X[88,5]=0.514,X[89,5]=0.494,X[90,5]=0.486,X[91,5]=0.486,X[92,5]=0.475,X[93,5]=0.392,X[94,5]=0.392,X[95,5]=0.608,X[96,5]=0.753,X[97,5]=0.761,X[98,5]=0.596,X[99,5]=0.651,X[100,5]=0.749 X[1,6]=0.671,X[2,6]=0.678,X[3,6]=0.769,X[4,6]=0.784,X[5,6]=0.604,X[6,6]=0.463,X[7,6]=0.514,X[8,6]=0.639,X[9,6]=0.506,X[10,6]=0.490,X[11,6]=0.502,X[12,6]=0.549,X[13,6]=0.506,X[14,6]=0.506,X[15,6]=0.561,X[16,6]=0.533,X[17,6]=0.584,X[18,6]=0.537,X[19,6]=0.612,X[20,6]=0.761,X[21,6]=0.843,X[22,6]=0.780,X[23,6]=0.686,X[24,6]=0.569,X[25,6]=0.545,X[26,6]=0.471,X[27,6]=0.565,X[28,6]=0.863,X[29,6]=0.698,X[30,6]=0.812,X[31,6]=0.859,X[32,6]=0.576,X[33,6]=0.467,X[34,6]=0.427,X[35,6]=0.424,X[36,6]=0.502,X[37,6]=0.506,X[38,6]=0.522,X[39,6]=0.522,X[40,6]=0.671,X[41,6]=0.788,X[42,6]=0.714,X[43,6]=0.627,X[44,6]=0.506,X[45,6]=0.463,X[46,6]=0.494,X[47,6]=0.502,X[48,6]=0.447,X[49,6]=0.392,X[50,6]=0.392 X[51,6]=0.416,X[52,6]=0.506,X[53,6]=0.525,X[54,6]=0.522,X[55,6]=0.518,X[56,6]=0.431,X[57,6]=0.392,X[58,6]=0.427,X[59,6]=0.447,X[60,6]=0.502,X[61,6]=0.439,X[62,6]=0.545,X[63,6]=0.663,X[64,6]=0.835,X[65,6]=0.859,X[66,6]=0.890,X[67,6]=0.694,X[68,6]=0.506,X[69,6]=0.557,X[70,6]=0.580,X[71,6]=0.471,X[72,6]=0.475,X[73,6]=0.455,X[74,6]=0.416,X[75,6]=0.349,X[76,6]=0.337,X[77,6]=0.298,X[78,6]=0.302,X[79,6]=0.318,X[80,6]=0.290,X[81,6]=0.275,X[82,6]=0.314,X[83,6]=0.325,X[84,6]=0.467,X[85,6]=0.510,X[86,6]=0.427,X[87,6]=0.518,X[88,6]=0.490,X[89,6]=0.494,X[90,6]=0.439,X[91,6]=0.431,X[92,6]=0.502,X[93,6]=0.463,X[94,6]=0.263,X[95,6]=0.184,X[96,6]=0.349,X[97,6]=0.431,X[98,6]=0.357,X[99,6]=0.580,X[100,6]=0.643 X[1,7]=0.412,X[2,7]=0.463,X[3,7]=0.600,X[4,7]=0.729,X[5,7]=0.506,X[6,7]=0.392,X[7,7]=0.494,X[8,7]=0.545,X[9,7]=0.522,X[10,7]=0.459,X[11,7]=0.463,X[12,7]=0.463,X[13,7]=0.459,X[14,7]=0.459,X[15,7]=0.529,X[16,7]=0.749,X[17,7]=0.776,X[18,7]=0.675,X[19,7]=0.631,X[20,7]=0.714,X[21,7]=0.773,X[22,7]=0.816,X[23,7]=0.808,X[24,7]=0.690,X[25,7]=0.612,X[26,7]=0.463,X[27,7]=0.624,X[28,7]=0.651,X[29,7]=0.694,X[30,7]=0.769,X[31,7]=0.667,X[32,7]=0.596,X[33,7]=0.635,X[34,7]=0.482,X[35,7]=0.541,X[36,7]=0.486,X[37,7]=0.455,X[38,7]=0.427,X[39,7]=0.310,X[40,7]=0.675,X[41,7]=0.812,X[42,7]=0.694,X[43,7]=0.690,X[44,7]=0.596,X[45,7]=0.549,X[46,7]=0.518,X[47,7]=0.455,X[48,7]=0.427,X[49,7]=0.424,X[50,7]=0.420 X[51,7]=0.478,X[52,7]=0.537,X[53,7]=0.486,X[54,7]=0.486,X[55,7]=0.494,X[56,7]=0.435,X[57,7]=0.431,X[58,7]=0.482,X[59,7]=0.459,X[60,7]=0.447,X[61,7]=0.447,X[62,7]=0.404,X[63,7]=0.502,X[64,7]=0.690,X[65,7]=0.714,X[66,7]=0.722,X[67,7]=0.612,X[68,7]=0.553,X[69,7]=0.459,X[70,7]=0.494,X[71,7]=0.482,X[72,7]=0.475,X[73,7]=0.580,X[74,7]=0.486,X[75,7]=0.400,X[76,7]=0.318,X[77,7]=0.286,X[78,7]=0.216,X[79,7]=0.216,X[80,7]=0.200,X[81,7]=0.169,X[82,7]=0.188,X[83,7]=0.259,X[84,7]=0.451,X[85,7]=0.439,X[86,7]=0.388,X[87,7]=0.435,X[88,7]=0.498,X[89,7]=0.490,X[90,7]=0.412,X[91,7]=0.392,X[92,7]=0.600,X[93,7]=0.573,X[94,7]=0.486,X[95,7]=0.208,X[96,7]=0.141,X[97,7]=0.231,X[98,7]=0.173,X[99,7]=0.408,X[100,7]=0.282 X[1,8]=0.384,X[2,8]=0.349,X[3,8]=0.380,X[4,8]=0.478,X[5,8]=0.478,X[6,8]=0.345,X[7,8]=0.384,X[8,8]=0.447,X[9,8]=0.502,X[10,8]=0.494,X[11,8]=0.345,X[12,8]=0.322,X[13,8]=0.388,X[14,8]=0.486,X[15,8]=0.647,X[16,8]=0.741,X[17,8]=0.616,X[18,8]=0.510,X[19,8]=0.471,X[20,8]=0.486,X[21,8]=0.592,X[22,8]=0.784,X[23,8]=0.702,X[24,8]=0.490,X[25,8]=0.451,X[26,8]=0.310,X[27,8]=0.612,X[28,8]=0.451,X[29,8]=0.345,X[30,8]=0.745,X[31,8]=0.855,X[32,8]=0.882,X[33,8]=0.737,X[34,8]=0.537,X[35,8]=0.612,X[36,8]=0.518,X[37,8]=0.376,X[38,8]=0.318,X[39,8]=0.239,X[40,8]=0.498,X[41,8]=0.545,X[42,8]=0.616,X[43,8]=0.573,X[44,8]=0.494,X[45,8]=0.490,X[46,8]=0.522,X[47,8]=0.537,X[48,8]=0.537,X[49,8]=0.522,X[50,8]=0.475 X[51,8]=0.467,X[52,8]=0.494,X[53,8]=0.467,X[54,8]=0.533,X[55,8]=0.486,X[56,8]=0.451,X[57,8]=0.482,X[58,8]=0.400,X[59,8]=0.361,X[60,8]=0.298,X[61,8]=0.427,X[62,8]=0.455,X[63,8]=0.416,X[64,8]=0.365,X[65,8]=0.635,X[66,8]=0.839,X[67,8]=0.749,X[68,8]=0.725,X[69,8]=0.600,X[70,8]=0.471,X[71,8]=0.490,X[72,8]=0.533,X[73,8]=0.561,X[74,8]=0.494,X[75,8]=0.506,X[76,8]=0.459,X[77,8]=0.451,X[78,8]=0.502,X[79,8]=0.525,X[80,8]=0.404,X[81,8]=0.263,X[82,8]=0.278,X[83,8]=0.353,X[84,8]=0.502,X[85,8]=0.518,X[86,8]=0.325,X[87,8]=0.357,X[88,8]=0.561,X[89,8]=0.600,X[90,8]=0.467,X[91,8]=0.306,X[92,8]=0.592,X[93,8]=0.804,X[94,8]=0.792,X[95,8]=0.655,X[96,8]=0.431,X[97,8]=0.267,X[98,8]=0.220,X[99,8]=0.353,X[100,8]=0.298 X[1,9]=0.373,X[2,9]=0.333,X[3,9]=0.275,X[4,9]=0.310,X[5,9]=0.388,X[6,9]=0.478,X[7,9]=0.478,X[8,9]=0.584,X[9,9]=0.569,X[10,9]=0.525,X[11,9]=0.310,X[12,9]=0.259,X[13,9]=0.361,X[14,9]=0.502,X[15,9]=0.533,X[16,9]=0.522,X[17,9]=0.490,X[18,9]=0.471,X[19,9]=0.502,X[20,9]=0.525,X[21,9]=0.518,X[22,9]=0.529,X[23,9]=0.369,X[24,9]=0.165,X[25,9]=0.314,X[26,9]=0.239,X[27,9]=0.376,X[28,9]=0.412,X[29,9]=0.435,X[30,9]=0.678,X[31,9]=0.804,X[32,9]=0.753,X[33,9]=0.490,X[34,9]=0.463,X[35,9]=0.573,X[36,9]=0.576,X[37,9]=0.478,X[38,9]=0.216,X[39,9]=0.169,X[40,9]=0.380,X[41,9]=0.329,X[42,9]=0.529,X[43,9]=0.533,X[44,9]=0.439,X[45,9]=0.561,X[46,9]=0.584,X[47,9]=0.541,X[48,9]=0.514,X[49,9]=0.510,X[50,9]=0.467 X[51,9]=0.510,X[52,9]=0.518,X[53,9]=0.510,X[54,9]=0.514,X[55,9]=0.463,X[56,9]=0.502,X[57,9]=0.502,X[58,9]=0.157,X[59,9]=0.086,X[60,9]=0.239,X[61,9]=0.290,X[62,9]=0.459,X[63,9]=0.345,X[64,9]=0.353,X[65,9]=0.678,X[66,9]=0.765,X[67,9]=0.753,X[68,9]=0.588,X[69,9]=0.533,X[70,9]=0.502,X[71,9]=0.380,X[72,9]=0.482,X[73,9]=0.498,X[74,9]=0.478,X[75,9]=0.451,X[76,9]=0.553,X[77,9]=0.627,X[78,9]=0.635,X[79,9]=0.569,X[80,9]=0.498,X[81,9]=0.325,X[82,9]=0.337,X[83,9]=0.435,X[84,9]=0.604,X[85,9]=0.549,X[86,9]=0.184,X[87,9]=0.310,X[88,9]=0.561,X[89,9]=0.702,X[90,9]=0.549,X[91,9]=0.251,X[92,9]=0.224,X[93,9]=0.651,X[94,9]=0.847,X[95,9]=0.859,X[96,9]=0.620,X[97,9]=0.294,X[98,9]=0.388,X[99,9]=0.486,X[100,9]=0.647 X[1,10]=0.439,X[2,10]=0.408,X[3,10]=0.318,X[4,10]=0.310,X[5,10]=0.392,X[6,10]=0.627,X[7,10]=0.592,X[8,10]=0.627,X[9,10]=0.698,X[10,10]=0.612,X[11,10]=0.467,X[12,10]=0.353,X[13,10]=0.384,X[14,10]=0.475,X[15,10]=0.510,X[16,10]=0.561,X[17,10]=0.541,X[18,10]=0.463,X[19,10]=0.392,X[20,10]=0.275,X[21,10]=0.263,X[22,10]=0.478,X[23,10]=0.533,X[24,10]=0.322,X[25,10]=0.208,X[26,10]=0.522,X[27,10]=0.631,X[28,10]=0.522,X[29,10]=0.510,X[30,10]=0.529,X[31,10]=0.549,X[32,10]=0.694,X[33,10]=0.557,X[34,10]=0.439,X[35,10]=0.427,X[36,10]=0.486,X[37,10]=0.490,X[38,10]=0.224,X[39,10]=0.196,X[40,10]=0.259,X[41,10]=0.404,X[42,10]=0.514,X[43,10]=0.561,X[44,10]=0.537,X[45,10]=0.557,X[46,10]=0.537,X[47,10]=0.541,X[48,10]=0.545,X[49,10]=0.580,X[50,10]=0.573 X[51,10]=0.580,X[52,10]=0.533,X[53,10]=0.604,X[54,10]=0.580,X[55,10]=0.518,X[56,10]=0.549,X[57,10]=0.557,X[58,10]=0.388,X[59,10]=0.157,X[60,10]=0.302,X[61,10]=0.576,X[62,10]=0.580,X[63,10]=0.502,X[64,10]=0.463,X[65,10]=0.596,X[66,10]=0.580,X[67,10]=0.702,X[68,10]=0.757,X[69,10]=0.522,X[70,10]=0.525,X[71,10]=0.510,X[72,10]=0.545,X[73,10]=0.478,X[74,10]=0.514,X[75,10]=0.486,X[76,10]=0.467,X[77,10]=0.506,X[78,10]=0.537,X[79,10]=0.475,X[80,10]=0.376,X[81,10]=0.282,X[82,10]=0.337,X[83,10]=0.424,X[84,10]=0.635,X[85,10]=0.427,X[86,10]=0.251,X[87,10]=0.290,X[88,10]=0.459,X[89,10]=0.722,X[90,10]=0.659,X[91,10]=0.286,X[92,10]=0.137,X[93,10]=0.459,X[94,10]=0.757,X[95,10]=0.835,X[96,10]=0.643,X[97,10]=0.510,X[98,10]=0.639,X[99,10]=0.745,X[100,10]=0.820 X[1,11]=0.576,X[2,11]=0.537,X[3,11]=0.482,X[4,11]=0.376,X[5,11]=0.373,X[6,11]=0.435,X[7,11]=0.463,X[8,11]=0.545,X[9,11]=0.694,X[10,11]=0.780,X[11,11]=0.647,X[12,11]=0.478,X[13,11]=0.439,X[14,11]=0.502,X[15,11]=0.510,X[16,11]=0.545,X[17,11]=0.565,X[18,11]=0.467,X[19,11]=0.392,X[20,11]=0.494,X[21,11]=0.522,X[22,11]=0.478,X[23,11]=0.475,X[24,11]=0.463,X[25,11]=0.286,X[26,11]=0.427,X[27,11]=0.624,X[28,11]=0.573,X[29,11]=0.384,X[30,11]=0.643,X[31,11]=0.835,X[32,11]=0.580,X[33,11]=0.475,X[34,11]=0.396,X[35,11]=0.435,X[36,11]=0.506,X[37,11]=0.467,X[38,11]=0.349,X[39,11]=0.435,X[40,11]=0.373,X[41,11]=0.384,X[42,11]=0.565,X[43,11]=0.502,X[44,11]=0.498,X[45,11]=0.557,X[46,11]=0.569,X[47,11]=0.525,X[48,11]=0.541,X[49,11]=0.498,X[50,11]=0.494 X[51,11]=0.561,X[52,11]=0.631,X[53,11]=0.651,X[54,11]=0.557,X[55,11]=0.553,X[56,11]=0.580,X[57,11]=0.580,X[58,11]=0.561,X[59,11]=0.408,X[60,11]=0.310,X[61,11]=0.502,X[62,11]=0.675,X[63,11]=0.502,X[64,11]=0.408,X[65,11]=0.490,X[66,11]=0.800,X[67,11]=0.667,X[68,11]=0.463,X[69,11]=0.486,X[70,11]=0.506,X[71,11]=0.588,X[72,11]=0.612,X[73,11]=0.631,X[74,11]=0.557,X[75,11]=0.431,X[76,11]=0.412,X[77,11]=0.455,X[78,11]=0.486,X[79,11]=0.514,X[80,11]=0.376,X[81,11]=0.204,X[82,11]=0.224,X[83,11]=0.494,X[84,11]=0.663,X[85,11]=0.463,X[86,11]=0.329,X[87,11]=0.239,X[88,11]=0.357,X[89,11]=0.737,X[90,11]=0.851,X[91,11]=0.431,X[92,11]=0.380,X[93,11]=0.463,X[94,11]=0.675,X[95,11]=0.812,X[96,11]=0.631,X[97,11]=0.565,X[98,11]=0.557,X[99,11]=0.608,X[100,11]=0.620 X[1,12]=0.553,X[2,12]=0.565,X[3,12]=0.557,X[4,12]=0.361,X[5,12]=0.337,X[6,12]=0.337,X[7,12]=0.388,X[8,12]=0.486,X[9,12]=0.588,X[10,12]=0.765,X[11,12]=0.678,X[12,12]=0.541,X[13,12]=0.482,X[14,12]=0.459,X[15,12]=0.494,X[16,12]=0.502,X[17,12]=0.545,X[18,12]=0.627,X[19,12]=0.761,X[20,12]=0.804,X[21,12]=0.757,X[22,12]=0.635,X[23,12]=0.549,X[24,12]=0.400,X[25,12]=0.165,X[26,12]=0.141,X[27,12]=0.325,X[28,12]=0.353,X[29,12]=0.376,X[30,12]=0.522,X[31,12]=0.702,X[32,12]=0.737,X[33,12]=0.478,X[34,12]=0.412,X[35,12]=0.447,X[36,12]=0.510,X[37,12]=0.533,X[38,12]=0.522,X[39,12]=0.541,X[40,12]=0.514,X[41,12]=0.424,X[42,12]=0.463,X[43,12]=0.455,X[44,12]=0.443,X[45,12]=0.502,X[46,12]=0.561,X[47,12]=0.420,X[48,12]=0.416,X[49,12]=0.451,X[50,12]=0.463 X[51,12]=0.482,X[52,12]=0.553,X[53,12]=0.529,X[54,12]=0.443,X[55,12]=0.482,X[56,12]=0.600,X[57,12]=0.627,X[58,12]=0.451,X[59,12]=0.180,X[60,12]=0.165,X[61,12]=0.192,X[62,12]=0.439,X[63,12]=0.259,X[64,12]=0.369,X[65,12]=0.384,X[66,12]=0.482,X[67,12]=0.796,X[68,12]=0.498,X[69,12]=0.475,X[70,12]=0.451,X[71,12]=0.514,X[72,12]=0.533,X[73,12]=0.537,X[74,12]=0.475,X[75,12]=0.396,X[76,12]=0.392,X[77,12]=0.514,X[78,12]=0.510,X[79,12]=0.467,X[80,12]=0.459,X[81,12]=0.290,X[82,12]=0.325,X[83,12]=0.624,X[84,12]=0.576,X[85,12]=0.435,X[86,12]=0.255,X[87,12]=0.180,X[88,12]=0.247,X[89,12]=0.639,X[90,12]=0.816,X[91,12]=0.443,X[92,12]=0.431,X[93,12]=0.502,X[94,12]=0.671,X[95,12]=0.780,X[96,12]=0.569,X[97,12]=0.490,X[98,12]=0.455,X[99,12]=0.471,X[100,12]=0.502 X[1,13]=0.455,X[2,13]=0.408,X[3,13]=0.443,X[4,13]=0.431,X[5,13]=0.424,X[6,13]=0.435,X[7,13]=0.435,X[8,13]=0.376,X[9,13]=0.533,X[10,13]=0.631,X[11,13]=0.580,X[12,13]=0.584,X[13,13]=0.525,X[14,13]=0.467,X[15,13]=0.478,X[16,13]=0.471,X[17,13]=0.514,X[18,13]=0.541,X[19,13]=0.671,X[20,13]=0.784,X[21,13]=0.796,X[22,13]=0.796,X[23,13]=0.757,X[24,13]=0.502,X[25,13]=0.478,X[26,13]=0.235,X[27,13]=0.196,X[28,13]=0.086,X[29,13]=0.145,X[30,13]=0.545,X[31,13]=0.537,X[32,13]=0.580,X[33,13]=0.475,X[34,13]=0.486,X[35,13]=0.475,X[36,13]=0.463,X[37,13]=0.506,X[38,13]=0.455,X[39,13]=0.502,X[40,13]=0.455,X[41,13]=0.482,X[42,13]=0.463,X[43,13]=0.435,X[44,13]=0.427,X[45,13]=0.490,X[46,13]=0.498,X[47,13]=0.522,X[48,13]=0.494,X[49,13]=0.447,X[50,13]=0.388 X[51,13]=0.420,X[52,13]=0.427,X[53,13]=0.463,X[54,13]=0.459,X[55,13]=0.471,X[56,13]=0.522,X[57,13]=0.569,X[58,13]=0.396,X[59,13]=0.239,X[60,13]=0.153,X[61,13]=0.114,X[62,13]=0.208,X[63,13]=0.157,X[64,13]=0.184,X[65,13]=0.475,X[66,13]=0.506,X[67,13]=0.588,X[68,13]=0.514,X[69,13]=0.435,X[70,13]=0.404,X[71,13]=0.404,X[72,13]=0.435,X[73,13]=0.537,X[74,13]=0.510,X[75,13]=0.478,X[76,13]=0.471,X[77,13]=0.478,X[78,13]=0.502,X[79,13]=0.522,X[80,13]=0.494,X[81,13]=0.455,X[82,13]=0.643,X[83,13]=0.749,X[84,13]=0.725,X[85,13]=0.702,X[86,13]=0.353,X[87,13]=0.255,X[88,13]=0.290,X[89,13]=0.576,X[90,13]=0.616,X[91,13]=0.420,X[92,13]=0.447,X[93,13]=0.525,X[94,13]=0.714,X[95,13]=0.710,X[96,13]=0.498,X[97,13]=0.510,X[98,13]=0.502,X[99,13]=0.498,X[100,13]=0.337 X[1,14]=0.471,X[2,14]=0.420,X[3,14]=0.494,X[4,14]=0.529,X[5,14]=0.510,X[6,14]=0.412,X[7,14]=0.251,X[8,14]=0.165,X[9,14]=0.475,X[10,14]=0.553,X[11,14]=0.482,X[12,14]=0.549,X[13,14]=0.498,X[14,14]=0.502,X[15,14]=0.518,X[16,14]=0.502,X[17,14]=0.482,X[18,14]=0.408,X[19,14]=0.439,X[20,14]=0.541,X[21,14]=0.647,X[22,14]=0.678,X[23,14]=0.831,X[24,14]=0.780,X[25,14]=0.698,X[26,14]=0.349,X[27,14]=0.243,X[28,14]=0.216,X[29,14]=0.184,X[30,14]=0.243,X[31,14]=0.471,X[32,14]=0.494,X[33,14]=0.490,X[34,14]=0.498,X[35,14]=0.498,X[36,14]=0.486,X[37,14]=0.490,X[38,14]=0.475,X[39,14]=0.502,X[40,14]=0.459,X[41,14]=0.451,X[42,14]=0.459,X[43,14]=0.435,X[44,14]=0.416,X[45,14]=0.518,X[46,14]=0.498,X[47,14]=0.486,X[48,14]=0.624,X[49,14]=0.573,X[50,14]=0.369 X[51,14]=0.451,X[52,14]=0.502,X[53,14]=0.467,X[54,14]=0.443,X[55,14]=0.412,X[56,14]=0.459,X[57,14]=0.482,X[58,14]=0.537,X[59,14]=0.467,X[60,14]=0.196,X[61,14]=0.333,X[62,14]=0.518,X[63,14]=0.392,X[64,14]=0.467,X[65,14]=0.467,X[66,14]=0.506,X[67,14]=0.498,X[68,14]=0.475,X[69,14]=0.435,X[70,14]=0.400,X[71,14]=0.424,X[72,14]=0.498,X[73,14]=0.482,X[74,14]=0.533,X[75,14]=0.506,X[76,14]=0.525,X[77,14]=0.518,X[78,14]=0.408,X[79,14]=0.420,X[80,14]=0.298,X[81,14]=0.322,X[82,14]=0.678,X[83,14]=0.769,X[84,14]=0.800,X[85,14]=0.859,X[86,14]=0.675,X[87,14]=0.545,X[88,14]=0.420,X[89,14]=0.651,X[90,14]=0.667,X[91,14]=0.463,X[92,14]=0.475,X[93,14]=0.533,X[94,14]=0.639,X[95,14]=0.557,X[96,14]=0.514,X[97,14]=0.576,X[98,14]=0.502,X[99,14]=0.518,X[100,14]=0.349 X[1,15]=0.651,X[2,15]=0.596,X[3,15]=0.573,X[4,15]=0.553,X[5,15]=0.537,X[6,15]=0.376,X[7,15]=0.125,X[8,15]=0.220,X[9,15]=0.475,X[10,15]=0.451,X[11,15]=0.435,X[12,15]=0.514,X[13,15]=0.471,X[14,15]=0.506,X[15,15]=0.490,X[16,15]=0.490,X[17,15]=0.518,X[18,15]=0.522,X[19,15]=0.569,X[20,15]=0.463,X[21,15]=0.459,X[22,15]=0.643,X[23,15]=0.686,X[24,15]=0.773,X[25,15]=0.706,X[26,15]=0.678,X[27,15]=0.557,X[28,15]=0.380,X[29,15]=0.451,X[30,15]=0.412,X[31,15]=0.506,X[32,15]=0.545,X[33,15]=0.529,X[34,15]=0.514,X[35,15]=0.494,X[36,15]=0.557,X[37,15]=0.549,X[38,15]=0.525,X[39,15]=0.486,X[40,15]=0.498,X[41,15]=0.471,X[42,15]=0.490,X[43,15]=0.424,X[44,15]=0.471,X[45,15]=0.498,X[46,15]=0.475,X[47,15]=0.561,X[48,15]=0.808,X[49,15]=0.843,X[50,15]=0.659 X[51,15]=0.502,X[52,15]=0.541,X[53,15]=0.525,X[54,15]=0.604,X[55,15]=0.608,X[56,15]=0.537,X[57,15]=0.553,X[58,15]=0.553,X[59,15]=0.573,X[60,15]=0.478,X[61,15]=0.600,X[62,15]=0.824,X[63,15]=0.576,X[64,15]=0.757,X[65,15]=0.686,X[66,15]=0.812,X[67,15]=0.651,X[68,15]=0.502,X[69,15]=0.459,X[70,15]=0.424,X[71,15]=0.443,X[72,15]=0.482,X[73,15]=0.494,X[74,15]=0.541,X[75,15]=0.482,X[76,15]=0.525,X[77,15]=0.533,X[78,15]=0.420,X[79,15]=0.259,X[80,15]=0.145,X[81,15]=0.239,X[82,15]=0.475,X[83,15]=0.420,X[84,15]=0.663,X[85,15]=0.675,X[86,15]=0.620,X[87,15]=0.557,X[88,15]=0.475,X[89,15]=0.604,X[90,15]=0.631,X[91,15]=0.514,X[92,15]=0.486,X[93,15]=0.486,X[94,15]=0.510,X[95,15]=0.482,X[96,15]=0.494,X[97,15]=0.525,X[98,15]=0.596,X[99,15]=0.604,X[100,15]=0.647 X[1,16]=0.553,X[2,16]=0.522,X[3,16]=0.553,X[4,16]=0.702,X[5,16]=0.788,X[6,16]=0.549,X[7,16]=0.216,X[8,16]=0.318,X[9,16]=0.475,X[10,16]=0.439,X[11,16]=0.380,X[12,16]=0.431,X[13,16]=0.471,X[14,16]=0.502,X[15,16]=0.384,X[16,16]=0.392,X[17,16]=0.522,X[18,16]=0.616,X[19,16]=0.525,X[20,16]=0.439,X[21,16]=0.498,X[22,16]=0.376,X[23,16]=0.408,X[24,16]=0.839,X[25,16]=0.945,X[26,16]=0.831,X[27,16]=0.706,X[28,16]=0.553,X[29,16]=0.561,X[30,16]=0.557,X[31,16]=0.529,X[32,16]=0.565,X[33,16]=0.494,X[34,16]=0.565,X[35,16]=0.565,X[36,16]=0.565,X[37,16]=0.584,X[38,16]=0.584,X[39,16]=0.588,X[40,16]=0.565,X[41,16]=0.533,X[42,16]=0.529,X[43,16]=0.471,X[44,16]=0.541,X[45,16]=0.506,X[46,16]=0.353,X[47,16]=0.502,X[48,16]=0.788,X[49,16]=0.831,X[50,16]=0.831 X[51,16]=0.639,X[52,16]=0.553,X[53,16]=0.631,X[54,16]=0.773,X[55,16]=0.827,X[56,16]=0.608,X[57,16]=0.608,X[58,16]=0.682,X[59,16]=0.651,X[60,16]=0.514,X[61,16]=0.565,X[62,16]=0.647,X[63,16]=0.624,X[64,16]=0.784,X[65,16]=0.804,X[66,16]=0.796,X[67,16]=0.639,X[68,16]=0.549,X[69,16]=0.498,X[70,16]=0.482,X[71,16]=0.573,X[72,16]=0.502,X[73,16]=0.518,X[74,16]=0.635,X[75,16]=0.565,X[76,16]=0.565,X[77,16]=0.576,X[78,16]=0.631,X[79,16]=0.514,X[80,16]=0.231,X[81,16]=0.251,X[82,16]=0.427,X[83,16]=0.310,X[84,16]=0.392,X[85,16]=0.424,X[86,16]=0.490,X[87,16]=0.431,X[88,16]=0.365,X[89,16]=0.471,X[90,16]=0.502,X[91,16]=0.494,X[92,16]=0.424,X[93,16]=0.435,X[94,16]=0.416,X[95,16]=0.443,X[96,16]=0.463,X[97,16]=0.600,X[98,16]=0.804,X[99,16]=0.757,X[100,16]=0.737 X[1,17]=0.498,X[2,17]=0.502,X[3,17]=0.588,X[4,17]=0.757,X[5,17]=0.722,X[6,17]=0.443,X[7,17]=0.325,X[8,17]=0.408,X[9,17]=0.541,X[10,17]=0.502,X[11,17]=0.271,X[12,17]=0.376,X[13,17]=0.506,X[14,17]=0.580,X[15,17]=0.427,X[16,17]=0.235,X[17,17]=0.271,X[18,17]=0.518,X[19,17]=0.553,X[20,17]=0.392,X[21,17]=0.416,X[22,17]=0.290,X[23,17]=0.525,X[24,17]=0.780,X[25,17]=0.796,X[26,17]=0.776,X[27,17]=0.584,X[28,17]=0.529,X[29,17]=0.537,X[30,17]=0.506,X[31,17]=0.569,X[32,17]=0.576,X[33,17]=0.557,X[34,17]=0.580,X[35,17]=0.580,X[36,17]=0.569,X[37,17]=0.620,X[38,17]=0.604,X[39,17]=0.557,X[40,17]=0.494,X[41,17]=0.557,X[42,17]=0.502,X[43,17]=0.482,X[44,17]=0.553,X[45,17]=0.435,X[46,17]=0.200,X[47,17]=0.200,X[48,17]=0.561,X[49,17]=0.761,X[50,17]=0.788 X[51,17]=0.663,X[52,17]=0.392,X[53,17]=0.471,X[54,17]=0.733,X[55,17]=0.804,X[56,17]=0.710,X[57,17]=0.525,X[58,17]=0.486,X[59,17]=0.545,X[60,17]=0.455,X[61,17]=0.569,X[62,17]=0.565,X[63,17]=0.584,X[64,17]=0.541,X[65,17]=0.757,X[66,17]=0.792,X[67,17]=0.875,X[68,17]=0.784,X[69,17]=0.529,X[70,17]=0.545,X[71,17]=0.549,X[72,17]=0.467,X[73,17]=0.706,X[74,17]=0.702,X[75,17]=0.533,X[76,17]=0.573,X[77,17]=0.612,X[78,17]=0.596,X[79,17]=0.408,X[80,17]=0.176,X[81,17]=0.341,X[82,17]=0.361,X[83,17]=0.376,X[84,17]=0.408,X[85,17]=0.412,X[86,17]=0.412,X[87,17]=0.412,X[88,17]=0.365,X[89,17]=0.412,X[90,17]=0.471,X[91,17]=0.541,X[92,17]=0.506,X[93,17]=0.318,X[94,17]=0.286,X[95,17]=0.396,X[96,17]=0.553,X[97,17]=0.694,X[98,17]=0.651,X[99,17]=0.518,X[100,17]=0.514 X[1,18]=0.580,X[2,18]=0.537,X[3,18]=0.467,X[4,18]=0.463,X[5,18]=0.486,X[6,18]=0.369,X[7,18]=0.380,X[8,18]=0.455,X[9,18]=0.659,X[10,18]=0.447,X[11,18]=0.247,X[12,18]=0.341,X[13,18]=0.576,X[14,18]=0.694,X[15,18]=0.471,X[16,18]=0.216,X[17,18]=0.239,X[18,18]=0.278,X[19,18]=0.486,X[20,18]=0.686,X[21,18]=0.541,X[22,18]=0.459,X[23,18]=0.498,X[24,18]=0.608,X[25,18]=0.592,X[26,18]=0.714,X[27,18]=0.620,X[28,18]=0.463,X[29,18]=0.439,X[30,18]=0.424,X[31,18]=0.545,X[32,18]=0.525,X[33,18]=0.525,X[34,18]=0.506,X[35,18]=0.471,X[36,18]=0.498,X[37,18]=0.545,X[38,18]=0.494,X[39,18]=0.451,X[40,18]=0.427,X[41,18]=0.522,X[42,18]=0.541,X[43,18]=0.557,X[44,18]=0.565,X[45,18]=0.431,X[46,18]=0.310,X[47,18]=0.212,X[48,18]=0.345,X[49,18]=0.647,X[50,18]=0.773 X[51,18]=0.627,X[52,18]=0.302,X[53,18]=0.404,X[54,18]=0.651,X[55,18]=0.710,X[56,18]=0.608,X[57,18]=0.373,X[58,18]=0.235,X[59,18]=0.616,X[60,18]=0.525,X[61,18]=0.439,X[62,18]=0.447,X[63,18]=0.298,X[64,18]=0.451,X[65,18]=0.820,X[66,18]=0.863,X[67,18]=0.792,X[68,18]=0.675,X[69,18]=0.573,X[70,18]=0.584,X[71,18]=0.612,X[72,18]=0.541,X[73,18]=0.694,X[74,18]=0.710,X[75,18]=0.608,X[76,18]=0.529,X[77,18]=0.541,X[78,18]=0.537,X[79,18]=0.420,X[80,18]=0.224,X[81,18]=0.325,X[82,18]=0.318,X[83,18]=0.306,X[84,18]=0.498,X[85,18]=0.514,X[86,18]=0.369,X[87,18]=0.490,X[88,18]=0.592,X[89,18]=0.561,X[90,18]=0.659,X[91,18]=0.604,X[92,18]=0.522,X[93,18]=0.322,X[94,18]=0.278,X[95,18]=0.392,X[96,18]=0.502,X[97,18]=0.514,X[98,18]=0.522,X[99,18]=0.502,X[100,18]=0.490 X[1,19]=0.431,X[2,19]=0.467,X[3,19]=0.467,X[4,19]=0.416,X[5,19]=0.396,X[6,19]=0.302,X[7,19]=0.333,X[8,19]=0.478,X[9,19]=0.616,X[10,19]=0.361,X[11,19]=0.227,X[12,19]=0.247,X[13,19]=0.522,X[14,19]=0.780,X[15,19]=0.612,X[16,19]=0.196,X[17,19]=0.173,X[18,19]=0.271,X[19,19]=0.318,X[20,19]=0.565,X[21,19]=0.631,X[22,19]=0.384,X[23,19]=0.455,X[24,19]=0.510,X[25,19]=0.847,X[26,19]=0.675,X[27,19]=0.647,X[28,19]=0.514,X[29,19]=0.396,X[30,19]=0.431,X[31,19]=0.455,X[32,19]=0.439,X[33,19]=0.471,X[34,19]=0.475,X[35,19]=0.408,X[36,19]=0.459,X[37,19]=0.502,X[38,19]=0.549,X[39,19]=0.494,X[40,19]=0.490,X[41,19]=0.471,X[42,19]=0.475,X[43,19]=0.557,X[44,19]=0.588,X[45,19]=0.522,X[46,19]=0.310,X[47,19]=0.204,X[48,19]=0.282,X[49,19]=0.553,X[50,19]=0.769 X[51,19]=0.596,X[52,19]=0.439,X[53,19]=0.486,X[54,19]=0.573,X[55,19]=0.800,X[56,19]=0.647,X[57,19]=0.490,X[58,19]=0.369,X[59,19]=0.498,X[60,19]=0.541,X[61,19]=0.537,X[62,19]=0.439,X[63,19]=0.361,X[64,19]=0.541,X[65,19]=0.612,X[66,19]=0.604,X[67,19]=0.808,X[68,19]=0.639,X[69,19]=0.533,X[70,19]=0.522,X[71,19]=0.365,X[72,19]=0.443,X[73,19]=0.792,X[74,19]=0.804,X[75,19]=0.710,X[76,19]=0.667,X[77,19]=0.549,X[78,19]=0.565,X[79,19]=0.506,X[80,19]=0.439,X[81,19]=0.373,X[82,19]=0.298,X[83,19]=0.553,X[84,19]=0.639,X[85,19]=0.604,X[86,19]=0.545,X[87,19]=0.529,X[88,19]=0.592,X[89,19]=0.541,X[90,19]=0.612,X[91,19]=0.725,X[92,19]=0.675,X[93,19]=0.498,X[94,19]=0.376,X[95,19]=0.404,X[96,19]=0.486,X[97,19]=0.506,X[98,19]=0.569,X[99,19]=0.561,X[100,19]=0.475 X[1,20]=0.486,X[2,20]=0.718,X[3,20]=0.651,X[4,20]=0.455,X[5,20]=0.365,X[6,20]=0.333,X[7,20]=0.310,X[8,20]=0.502,X[9,20]=0.631,X[10,20]=0.639,X[11,20]=0.373,X[12,20]=0.180,X[13,20]=0.424,X[14,20]=0.804,X[15,20]=0.773,X[16,20]=0.522,X[17,20]=0.169,X[18,20]=0.133,X[19,20]=0.224,X[20,20]=0.329,X[21,20]=0.459,X[22,20]=0.396,X[23,20]=0.498,X[24,20]=0.349,X[25,20]=0.584,X[26,20]=0.855,X[27,20]=0.914,X[28,20]=0.722,X[29,20]=0.478,X[30,20]=0.400,X[31,20]=0.400,X[32,20]=0.467,X[33,20]=0.482,X[34,20]=0.459,X[35,20]=0.455,X[36,20]=0.533,X[37,20]=0.498,X[38,20]=0.596,X[39,20]=0.522,X[40,20]=0.416,X[41,20]=0.435,X[42,20]=0.467,X[43,20]=0.494,X[44,20]=0.490,X[45,20]=0.502,X[46,20]=0.329,X[47,20]=0.184,X[48,20]=0.224,X[49,20]=0.455,X[50,20]=0.682 X[51,20]=0.514,X[52,20]=0.443,X[53,20]=0.510,X[54,20]=0.584,X[55,20]=0.831,X[56,20]=0.671,X[57,20]=0.502,X[58,20]=0.490,X[59,20]=0.463,X[60,20]=0.573,X[61,20]=0.678,X[62,20]=0.631,X[63,20]=0.459,X[64,20]=0.478,X[65,20]=0.631,X[66,20]=0.698,X[67,20]=0.573,X[68,20]=0.518,X[69,20]=0.408,X[70,20]=0.329,X[71,20]=0.204,X[72,20]=0.290,X[73,20]=0.608,X[74,20]=0.627,X[75,20]=0.549,X[76,20]=0.490,X[77,20]=0.482,X[78,20]=0.541,X[79,20]=0.533,X[80,20]=0.522,X[81,20]=0.439,X[82,20]=0.235,X[83,20]=0.447,X[84,20]=0.573,X[85,20]=0.498,X[86,20]=0.376,X[87,20]=0.369,X[88,20]=0.376,X[89,20]=0.427,X[90,20]=0.525,X[91,20]=0.675,X[92,20]=0.788,X[93,20]=0.643,X[94,20]=0.471,X[95,20]=0.443,X[96,20]=0.490,X[97,20]=0.506,X[98,20]=0.529,X[99,20]=0.525,X[100,20]=0.502 X[1,21]=0.667,X[2,21]=0.839,X[3,21]=0.808,X[4,21]=0.737,X[5,21]=0.490,X[6,21]=0.478,X[7,21]=0.451,X[8,21]=0.604,X[9,21]=0.722,X[10,21]=0.776,X[11,21]=0.592,X[12,21]=0.235,X[13,21]=0.208,X[14,21]=0.694,X[15,21]=0.800,X[16,21]=0.831,X[17,21]=0.506,X[18,21]=0.271,X[19,21]=0.180,X[20,21]=0.341,X[21,21]=0.424,X[22,21]=0.522,X[23,21]=0.365,X[24,21]=0.380,X[25,21]=0.341,X[26,21]=0.706,X[27,21]=0.886,X[28,21]=0.820,X[29,21]=0.584,X[30,21]=0.424,X[31,21]=0.478,X[32,21]=0.647,X[33,21]=0.655,X[34,21]=0.447,X[35,21]=0.682,X[36,21]=0.616,X[37,21]=0.569,X[38,21]=0.824,X[39,21]=0.635,X[40,21]=0.557,X[41,21]=0.502,X[42,21]=0.463,X[43,21]=0.471,X[44,21]=0.502,X[45,21]=0.596,X[46,21]=0.482,X[47,21]=0.243,X[48,21]=0.180,X[49,21]=0.435,X[50,21]=0.600 X[51,21]=0.455,X[52,21]=0.459,X[53,21]=0.502,X[54,21]=0.690,X[55,21]=0.761,X[56,21]=0.525,X[57,21]=0.506,X[58,21]=0.522,X[59,21]=0.463,X[60,21]=0.369,X[61,21]=0.384,X[62,21]=0.525,X[63,21]=0.247,X[64,21]=0.420,X[65,21]=0.369,X[66,21]=0.741,X[67,21]=0.659,X[68,21]=0.494,X[69,21]=0.471,X[70,21]=0.384,X[71,21]=0.165,X[72,21]=0.220,X[73,21]=0.353,X[74,21]=0.353,X[75,21]=0.635,X[76,21]=0.506,X[77,21]=0.443,X[78,21]=0.510,X[79,21]=0.502,X[80,21]=0.475,X[81,21]=0.216,X[82,21]=0.133,X[83,21]=0.192,X[84,21]=0.322,X[85,21]=0.384,X[86,21]=0.361,X[87,21]=0.353,X[88,21]=0.353,X[89,21]=0.404,X[90,21]=0.463,X[91,21]=0.616,X[92,21]=0.737,X[93,21]=0.620,X[94,21]=0.549,X[95,21]=0.498,X[96,21]=0.455,X[97,21]=0.486,X[98,21]=0.502,X[99,21]=0.502,X[100,21]=0.514 X[1,22]=0.596,X[2,22]=0.745,X[3,22]=0.816,X[4,22]=0.792,X[5,22]=0.659,X[6,22]=0.573,X[7,22]=0.616,X[8,22]=0.537,X[9,22]=0.565,X[10,22]=0.761,X[11,22]=0.671,X[12,22]=0.361,X[13,22]=0.133,X[14,22]=0.396,X[15,22]=0.773,X[16,22]=0.878,X[17,22]=0.745,X[18,22]=0.380,X[19,22]=0.247,X[20,22]=0.286,X[21,22]=0.447,X[22,22]=0.745,X[23,22]=0.573,X[24,22]=0.227,X[25,22]=0.243,X[26,22]=0.588,X[27,22]=0.816,X[28,22]=0.855,X[29,22]=0.592,X[30,22]=0.502,X[31,22]=0.784,X[32,22]=0.851,X[33,22]=0.776,X[34,22]=0.537,X[35,22]=0.867,X[36,22]=0.788,X[37,22]=0.725,X[38,22]=0.820,X[39,22]=0.863,X[40,22]=0.745,X[41,22]=0.506,X[42,22]=0.467,X[43,22]=0.525,X[44,22]=0.714,X[45,22]=0.831,X[46,22]=0.761,X[47,22]=0.569,X[48,22]=0.376,X[49,22]=0.463,X[50,22]=0.678 X[51,22]=0.490,X[52,22]=0.471,X[53,22]=0.494,X[54,22]=0.635,X[55,22]=0.592,X[56,22]=0.486,X[57,22]=0.580,X[58,22]=0.502,X[59,22]=0.427,X[60,22]=0.129,X[61,22]=0.220,X[62,22]=0.400,X[63,22]=0.353,X[64,22]=0.475,X[65,22]=0.549,X[66,22]=0.588,X[67,22]=0.612,X[68,22]=0.502,X[69,22]=0.518,X[70,22]=0.463,X[71,22]=0.220,X[72,22]=0.239,X[73,22]=0.337,X[74,22]=0.439,X[75,22]=0.525,X[76,22]=0.569,X[77,22]=0.541,X[78,22]=0.549,X[79,22]=0.600,X[80,22]=0.600,X[81,22]=0.310,X[82,22]=0.294,X[83,22]=0.282,X[84,22]=0.325,X[85,22]=0.420,X[86,22]=0.471,X[87,22]=0.486,X[88,22]=0.482,X[89,22]=0.412,X[90,22]=0.298,X[91,22]=0.525,X[92,22]=0.604,X[93,22]=0.549,X[94,22]=0.580,X[95,22]=0.514,X[96,22]=0.482,X[97,22]=0.490,X[98,22]=0.478,X[99,22]=0.463,X[100,22]=0.416 X[1,23]=0.522,X[2,23]=0.576,X[3,23]=0.706,X[4,23]=0.584,X[5,23]=0.722,X[6,23]=0.702,X[7,23]=0.608,X[8,23]=0.349,X[9,23]=0.325,X[10,23]=0.671,X[11,23]=0.820,X[12,23]=0.580,X[13,23]=0.271,X[14,23]=0.231,X[15,23]=0.631,X[16,23]=0.827,X[17,23]=0.769,X[18,23]=0.435,X[19,23]=0.294,X[20,23]=0.318,X[21,23]=0.514,X[22,23]=0.804,X[23,23]=0.788,X[24,23]=0.380,X[25,23]=0.427,X[26,23]=0.494,X[27,23]=0.729,X[28,23]=0.804,X[29,23]=0.506,X[30,23]=0.471,X[31,23]=0.686,X[32,23]=0.843,X[33,23]=0.631,X[34,23]=0.510,X[35,23]=0.647,X[36,23]=0.608,X[37,23]=0.753,X[38,23]=0.776,X[39,23]=0.792,X[40,23]=0.596,X[41,23]=0.475,X[42,23]=0.525,X[43,23]=0.510,X[44,23]=0.596,X[45,23]=0.749,X[46,23]=0.788,X[47,23]=0.604,X[48,23]=0.471,X[49,23]=0.502,X[50,23]=0.596 X[51,23]=0.537,X[52,23]=0.494,X[53,23]=0.482,X[54,23]=0.486,X[55,23]=0.502,X[56,23]=0.471,X[57,23]=0.525,X[58,23]=0.580,X[59,23]=0.525,X[60,23]=0.341,X[61,23]=0.573,X[62,23]=0.561,X[63,23]=0.643,X[64,23]=0.416,X[65,23]=0.616,X[66,23]=0.678,X[67,23]=0.494,X[68,23]=0.455,X[69,23]=0.478,X[70,23]=0.439,X[71,23]=0.337,X[72,23]=0.392,X[73,23]=0.294,X[74,23]=0.455,X[75,23]=0.545,X[76,23]=0.471,X[77,23]=0.525,X[78,23]=0.600,X[79,23]=0.588,X[80,23]=0.573,X[81,23]=0.502,X[82,23]=0.369,X[83,23]=0.325,X[84,23]=0.306,X[85,23]=0.388,X[86,23]=0.420,X[87,23]=0.388,X[88,23]=0.365,X[89,23]=0.231,X[90,23]=0.212,X[91,23]=0.510,X[92,23]=0.525,X[93,23]=0.475,X[94,23]=0.549,X[95,23]=0.482,X[96,23]=0.506,X[97,23]=0.467,X[98,23]=0.498,X[99,23]=0.498,X[100,23]=0.365 X[1,24]=0.435,X[2,24]=0.373,X[3,24]=0.522,X[4,24]=0.549,X[5,24]=0.435,X[6,24]=0.549,X[7,24]=0.686,X[8,24]=0.518,X[9,24]=0.318,X[10,24]=0.482,X[11,24]=0.839,X[12,24]=0.784,X[13,24]=0.373,X[14,24]=0.373,X[15,24]=0.506,X[16,24]=0.757,X[17,24]=0.714,X[18,24]=0.443,X[19,24]=0.373,X[20,24]=0.439,X[21,24]=0.529,X[22,24]=0.784,X[23,24]=0.702,X[24,24]=0.404,X[25,24]=0.506,X[26,24]=0.498,X[27,24]=0.788,X[28,24]=0.737,X[29,24]=0.376,X[30,24]=0.431,X[31,24]=0.486,X[32,24]=0.741,X[33,24]=0.494,X[34,24]=0.545,X[35,24]=0.576,X[36,24]=0.525,X[37,24]=0.518,X[38,24]=0.663,X[39,24]=0.737,X[40,24]=0.784,X[41,24]=0.725,X[42,24]=0.416,X[43,24]=0.282,X[44,24]=0.345,X[45,24]=0.455,X[46,24]=0.592,X[47,24]=0.549,X[48,24]=0.349,X[49,24]=0.427,X[50,24]=0.486 X[51,24]=0.506,X[52,24]=0.455,X[53,24]=0.416,X[54,24]=0.408,X[55,24]=0.420,X[56,24]=0.459,X[57,24]=0.580,X[58,24]=0.835,X[59,24]=0.725,X[60,24]=0.537,X[61,24]=0.541,X[62,24]=0.494,X[63,24]=0.608,X[64,24]=0.675,X[65,24]=0.722,X[66,24]=0.675,X[67,24]=0.522,X[68,24]=0.533,X[69,24]=0.529,X[70,24]=0.569,X[71,24]=0.545,X[72,24]=0.569,X[73,24]=0.553,X[74,24]=0.478,X[75,24]=0.475,X[76,24]=0.447,X[77,24]=0.439,X[78,24]=0.447,X[79,24]=0.514,X[80,24]=0.502,X[81,24]=0.510,X[82,24]=0.459,X[83,24]=0.380,X[84,24]=0.329,X[85,24]=0.271,X[86,24]=0.231,X[87,24]=0.278,X[88,24]=0.373,X[89,24]=0.220,X[90,24]=0.314,X[91,24]=0.475,X[92,24]=0.431,X[93,24]=0.424,X[94,24]=0.510,X[95,24]=0.478,X[96,24]=0.502,X[97,24]=0.427,X[98,24]=0.490,X[99,24]=0.529,X[100,24]=0.537 X[1,25]=0.173,X[2,25]=0.141,X[3,25]=0.357,X[4,25]=0.412,X[5,25]=0.271,X[6,25]=0.596,X[7,25]=0.745,X[8,25]=0.561,X[9,25]=0.345,X[10,25]=0.365,X[11,25]=0.694,X[12,25]=0.714,X[13,25]=0.408,X[14,25]=0.498,X[15,25]=0.498,X[16,25]=0.745,X[17,25]=0.698,X[18,25]=0.506,X[19,25]=0.451,X[20,25]=0.467,X[21,25]=0.537,X[22,25]=0.757,X[23,25]=0.545,X[24,25]=0.427,X[25,25]=0.510,X[26,25]=0.569,X[27,25]=0.820,X[28,25]=0.635,X[29,25]=0.451,X[30,25]=0.482,X[31,25]=0.459,X[32,25]=0.549,X[33,25]=0.376,X[34,25]=0.306,X[35,25]=0.502,X[36,25]=0.322,X[37,25]=0.333,X[38,25]=0.792,X[39,25]=0.878,X[40,25]=0.725,X[41,25]=0.569,X[42,25]=0.396,X[43,25]=0.310,X[44,25]=0.298,X[45,25]=0.357,X[46,25]=0.376,X[47,25]=0.439,X[48,25]=0.380,X[49,25]=0.369,X[50,25]=0.471 X[51,25]=0.510,X[52,25]=0.569,X[53,25]=0.322,X[54,25]=0.267,X[55,25]=0.341,X[56,25]=0.510,X[57,25]=0.639,X[58,25]=0.631,X[59,25]=0.529,X[60,25]=0.482,X[61,25]=0.471,X[62,25]=0.506,X[63,25]=0.569,X[64,25]=0.694,X[65,25]=0.655,X[66,25]=0.525,X[67,25]=0.510,X[68,25]=0.467,X[69,25]=0.565,X[70,25]=0.616,X[71,25]=0.635,X[72,25]=0.573,X[73,25]=0.514,X[74,25]=0.510,X[75,25]=0.439,X[76,25]=0.396,X[77,25]=0.427,X[78,25]=0.482,X[79,25]=0.455,X[80,25]=0.522,X[81,25]=0.506,X[82,25]=0.502,X[83,25]=0.427,X[84,25]=0.337,X[85,25]=0.318,X[86,25]=0.357,X[87,25]=0.424,X[88,25]=0.404,X[89,25]=0.278,X[90,25]=0.361,X[91,25]=0.494,X[92,25]=0.435,X[93,25]=0.306,X[94,25]=0.427,X[95,25]=0.537,X[96,25]=0.522,X[97,25]=0.396,X[98,25]=0.459,X[99,25]=0.557,X[100,25]=0.678 X[1,26]=0.447,X[2,26]=0.522,X[3,26]=0.612,X[4,26]=0.455,X[5,26]=0.447,X[6,26]=0.608,X[7,26]=0.745,X[8,26]=0.549,X[9,26]=0.490,X[10,26]=0.384,X[11,26]=0.647,X[12,26]=0.573,X[13,26]=0.408,X[14,26]=0.498,X[15,26]=0.553,X[16,26]=0.784,X[17,26]=0.682,X[18,26]=0.506,X[19,26]=0.502,X[20,26]=0.471,X[21,26]=0.518,X[22,26]=0.753,X[23,26]=0.518,X[24,26]=0.467,X[25,26]=0.486,X[26,26]=0.592,X[27,26]=0.694,X[28,26]=0.525,X[29,26]=0.537,X[30,26]=0.522,X[31,26]=0.380,X[32,26]=0.188,X[33,26]=0.278,X[34,26]=0.420,X[35,26]=0.502,X[36,26]=0.365,X[37,26]=0.451,X[38,26]=0.624,X[39,26]=0.592,X[40,26]=0.718,X[41,26]=0.608,X[42,26]=0.341,X[43,26]=0.290,X[44,26]=0.239,X[45,26]=0.235,X[46,26]=0.192,X[47,26]=0.310,X[48,26]=0.576,X[49,26]=0.569,X[50,26]=0.635 X[51,26]=0.639,X[52,26]=0.541,X[53,26]=0.384,X[54,26]=0.286,X[55,26]=0.357,X[56,26]=0.471,X[57,26]=0.502,X[58,26]=0.533,X[59,26]=0.506,X[60,26]=0.467,X[61,26]=0.482,X[62,26]=0.455,X[63,26]=0.380,X[64,26]=0.388,X[65,26]=0.471,X[66,26]=0.420,X[67,26]=0.471,X[68,26]=0.451,X[69,26]=0.502,X[70,26]=0.522,X[71,26]=0.522,X[72,26]=0.475,X[73,26]=0.471,X[74,26]=0.490,X[75,26]=0.471,X[76,26]=0.443,X[77,26]=0.471,X[78,26]=0.506,X[79,26]=0.447,X[80,26]=0.427,X[81,26]=0.424,X[82,26]=0.439,X[83,26]=0.486,X[84,26]=0.533,X[85,26]=0.490,X[86,26]=0.467,X[87,26]=0.412,X[88,26]=0.337,X[89,26]=0.380,X[90,26]=0.431,X[91,26]=0.612,X[92,26]=0.455,X[93,26]=0.188,X[94,26]=0.384,X[95,26]=0.592,X[96,26]=0.620,X[97,26]=0.529,X[98,26]=0.365,X[99,26]=0.478,X[100,26]=0.616 X[1,27]=0.510,X[2,27]=0.498,X[3,27]=0.620,X[4,27]=0.596,X[5,27]=0.420,X[6,27]=0.525,X[7,27]=0.741,X[8,27]=0.592,X[9,27]=0.322,X[10,27]=0.310,X[11,27]=0.706,X[12,27]=0.522,X[13,27]=0.455,X[14,27]=0.494,X[15,27]=0.584,X[16,27]=0.698,X[17,27]=0.549,X[18,27]=0.514,X[19,27]=0.545,X[20,27]=0.451,X[21,27]=0.502,X[22,27]=0.639,X[23,27]=0.561,X[24,27]=0.498,X[25,27]=0.467,X[26,27]=0.522,X[27,27]=0.522,X[28,27]=0.494,X[29,27]=0.549,X[30,27]=0.569,X[31,27]=0.545,X[32,27]=0.475,X[33,27]=0.447,X[34,27]=0.682,X[35,27]=0.659,X[36,27]=0.400,X[37,27]=0.392,X[38,27]=0.616,X[39,27]=0.694,X[40,27]=0.573,X[41,27]=0.569,X[42,27]=0.424,X[43,27]=0.306,X[44,27]=0.298,X[45,27]=0.302,X[46,27]=0.278,X[47,27]=0.376,X[48,27]=0.549,X[49,27]=0.549,X[50,27]=0.553 X[51,27]=0.722,X[52,27]=0.729,X[53,27]=0.584,X[54,27]=0.443,X[55,27]=0.408,X[56,27]=0.478,X[57,27]=0.502,X[58,27]=0.557,X[59,27]=0.576,X[60,27]=0.475,X[61,27]=0.345,X[62,27]=0.267,X[63,27]=0.322,X[64,27]=0.459,X[65,27]=0.498,X[66,27]=0.510,X[67,27]=0.471,X[68,27]=0.439,X[69,27]=0.416,X[70,27]=0.486,X[71,27]=0.514,X[72,27]=0.533,X[73,27]=0.529,X[74,27]=0.482,X[75,27]=0.490,X[76,27]=0.447,X[77,27]=0.502,X[78,27]=0.475,X[79,27]=0.451,X[80,27]=0.431,X[81,27]=0.392,X[82,27]=0.494,X[83,27]=0.498,X[84,27]=0.490,X[85,27]=0.541,X[86,27]=0.486,X[87,27]=0.341,X[88,27]=0.267,X[89,27]=0.376,X[90,27]=0.490,X[91,27]=0.690,X[92,27]=0.337,X[93,27]=0.161,X[94,27]=0.322,X[95,27]=0.561,X[96,27]=0.694,X[97,27]=0.510,X[98,27]=0.353,X[99,27]=0.541,X[100,27]=0.333 X[1,28]=0.200,X[2,28]=0.188,X[3,28]=0.322,X[4,28]=0.404,X[5,28]=0.290,X[6,28]=0.478,X[7,28]=0.494,X[8,28]=0.627,X[9,28]=0.518,X[10,28]=0.427,X[11,28]=0.655,X[12,28]=0.569,X[13,28]=0.494,X[14,28]=0.478,X[15,28]=0.510,X[16,28]=0.537,X[17,28]=0.482,X[18,28]=0.557,X[19,28]=0.518,X[20,28]=0.384,X[21,28]=0.435,X[22,28]=0.514,X[23,28]=0.529,X[24,28]=0.490,X[25,28]=0.431,X[26,28]=0.467,X[27,28]=0.447,X[28,28]=0.459,X[29,28]=0.576,X[30,28]=0.718,X[31,28]=0.698,X[32,28]=0.537,X[33,28]=0.435,X[34,28]=0.529,X[35,28]=0.592,X[36,28]=0.435,X[37,28]=0.443,X[38,28]=0.451,X[39,28]=0.745,X[40,28]=0.729,X[41,28]=0.459,X[42,28]=0.529,X[43,28]=0.514,X[44,28]=0.588,X[45,28]=0.596,X[46,28]=0.388,X[47,28]=0.353,X[48,28]=0.365,X[49,28]=0.388,X[50,28]=0.518 X[51,28]=0.608,X[52,28]=0.784,X[53,28]=0.694,X[54,28]=0.537,X[55,28]=0.459,X[56,28]=0.471,X[57,28]=0.514,X[58,28]=0.514,X[59,28]=0.545,X[60,28]=0.525,X[61,28]=0.553,X[62,28]=0.733,X[63,28]=0.749,X[64,28]=0.643,X[65,28]=0.514,X[66,28]=0.502,X[67,28]=0.471,X[68,28]=0.392,X[69,28]=0.427,X[70,28]=0.478,X[71,28]=0.463,X[72,28]=0.518,X[73,28]=0.522,X[74,28]=0.482,X[75,28]=0.475,X[76,28]=0.455,X[77,28]=0.502,X[78,28]=0.506,X[79,28]=0.490,X[80,28]=0.443,X[81,28]=0.412,X[82,28]=0.459,X[83,28]=0.502,X[84,28]=0.478,X[85,28]=0.576,X[86,28]=0.467,X[87,28]=0.310,X[88,28]=0.271,X[89,28]=0.298,X[90,28]=0.529,X[91,28]=0.620,X[92,28]=0.443,X[93,28]=0.376,X[94,28]=0.282,X[95,28]=0.396,X[96,28]=0.675,X[97,28]=0.671,X[98,28]=0.569,X[99,28]=0.490,X[100,28]=0.298 X[1,29]=0.267,X[2,29]=0.098,X[3,29]=0.235,X[4,29]=0.294,X[5,29]=0.227,X[6,29]=0.435,X[7,29]=0.655,X[8,29]=0.667,X[9,29]=0.408,X[10,29]=0.443,X[11,29]=0.529,X[12,29]=0.525,X[13,29]=0.502,X[14,29]=0.467,X[15,29]=0.471,X[16,29]=0.467,X[17,29]=0.451,X[18,29]=0.475,X[19,29]=0.494,X[20,29]=0.455,X[21,29]=0.384,X[22,29]=0.447,X[23,29]=0.518,X[24,29]=0.569,X[25,29]=0.427,X[26,29]=0.333,X[27,29]=0.318,X[28,29]=0.494,X[29,29]=0.675,X[30,29]=0.643,X[31,29]=0.518,X[32,29]=0.459,X[33,29]=0.467,X[34,29]=0.502,X[35,29]=0.584,X[36,29]=0.514,X[37,29]=0.471,X[38,29]=0.490,X[39,29]=0.502,X[40,29]=0.694,X[41,29]=0.557,X[42,29]=0.549,X[43,29]=0.518,X[44,29]=0.584,X[45,29]=0.537,X[46,29]=0.400,X[47,29]=0.365,X[48,29]=0.365,X[49,29]=0.396,X[50,29]=0.443 X[51,29]=0.545,X[52,29]=0.678,X[53,29]=0.635,X[54,29]=0.576,X[55,29]=0.529,X[56,29]=0.451,X[57,29]=0.490,X[58,29]=0.490,X[59,29]=0.529,X[60,29]=0.651,X[61,29]=0.827,X[62,29]=0.851,X[63,29]=0.867,X[64,29]=0.827,X[65,29]=0.647,X[66,29]=0.506,X[67,29]=0.471,X[68,29]=0.439,X[69,29]=0.490,X[70,29]=0.502,X[71,29]=0.514,X[72,29]=0.588,X[73,29]=0.549,X[74,29]=0.502,X[75,29]=0.549,X[76,29]=0.506,X[77,29]=0.529,X[78,29]=0.549,X[79,29]=0.541,X[80,29]=0.482,X[81,29]=0.569,X[82,29]=0.573,X[83,29]=0.502,X[84,29]=0.525,X[85,29]=0.584,X[86,29]=0.569,X[87,29]=0.420,X[88,29]=0.259,X[89,29]=0.278,X[90,29]=0.557,X[91,29]=0.600,X[92,29]=0.580,X[93,29]=0.663,X[94,29]=0.506,X[95,29]=0.439,X[96,29]=0.596,X[97,29]=0.596,X[98,29]=0.733,X[99,29]=0.675,X[100,29]=0.745 X[1,30]=0.443,X[2,30]=0.294,X[3,30]=0.412,X[4,30]=0.314,X[5,30]=0.302,X[6,30]=0.373,X[7,30]=0.455,X[8,30]=0.533,X[9,30]=0.400,X[10,30]=0.341,X[11,30]=0.424,X[12,30]=0.467,X[13,30]=0.537,X[14,30]=0.420,X[15,30]=0.349,X[16,30]=0.337,X[17,30]=0.455,X[18,30]=0.482,X[19,30]=0.545,X[20,30]=0.561,X[21,30]=0.510,X[22,30]=0.569,X[23,30]=0.631,X[24,30]=0.573,X[25,30]=0.459,X[26,30]=0.271,X[27,30]=0.294,X[28,30]=0.427,X[29,30]=0.510,X[30,30]=0.537,X[31,30]=0.490,X[32,30]=0.478,X[33,30]=0.502,X[34,30]=0.529,X[35,30]=0.545,X[36,30]=0.431,X[37,30]=0.302,X[38,30]=0.345,X[39,30]=0.541,X[40,30]=0.522,X[41,30]=0.529,X[42,30]=0.486,X[43,30]=0.353,X[44,30]=0.341,X[45,30]=0.408,X[46,30]=0.463,X[47,30]=0.494,X[48,30]=0.490,X[49,30]=0.443,X[50,30]=0.294 X[51,30]=0.471,X[52,30]=0.584,X[53,30]=0.537,X[54,30]=0.569,X[55,30]=0.522,X[56,30]=0.494,X[57,30]=0.486,X[58,30]=0.486,X[59,30]=0.475,X[60,30]=0.416,X[61,30]=0.514,X[62,30]=0.694,X[63,30]=0.824,X[64,30]=0.886,X[65,30]=0.882,X[66,30]=0.675,X[67,30]=0.475,X[68,30]=0.502,X[69,30]=0.533,X[70,30]=0.510,X[71,30]=0.561,X[72,30]=0.580,X[73,30]=0.588,X[74,30]=0.635,X[75,30]=0.624,X[76,30]=0.592,X[77,30]=0.612,X[78,30]=0.616,X[79,30]=0.549,X[80,30]=0.537,X[81,30]=0.596,X[82,30]=0.569,X[83,30]=0.416,X[84,30]=0.514,X[85,30]=0.580,X[86,30]=0.569,X[87,30]=0.384,X[88,30]=0.227,X[89,30]=0.388,X[90,30]=0.400,X[91,30]=0.431,X[92,30]=0.475,X[93,30]=0.388,X[94,30]=0.486,X[95,30]=0.412,X[96,30]=0.318,X[97,30]=0.576,X[98,30]=0.835,X[99,30]=0.784,X[100,30]=0.706 X[1,31]=0.518,X[2,31]=0.447,X[3,31]=0.388,X[4,31]=0.243,X[5,31]=0.231,X[6,31]=0.263,X[7,31]=0.278,X[8,31]=0.318,X[9,31]=0.431,X[10,31]=0.463,X[11,31]=0.522,X[12,31]=0.576,X[13,31]=0.576,X[14,31]=0.443,X[15,31]=0.275,X[16,31]=0.302,X[17,31]=0.412,X[18,31]=0.486,X[19,31]=0.510,X[20,31]=0.557,X[21,31]=0.549,X[22,31]=0.541,X[23,31]=0.682,X[24,31]=0.690,X[25,31]=0.584,X[26,31]=0.392,X[27,31]=0.345,X[28,31]=0.431,X[29,31]=0.490,X[30,31]=0.549,X[31,31]=0.545,X[32,31]=0.447,X[33,31]=0.333,X[34,31]=0.235,X[35,31]=0.278,X[36,31]=0.420,X[37,31]=0.514,X[38,31]=0.427,X[39,31]=0.498,X[40,31]=0.463,X[41,31]=0.482,X[42,31]=0.365,X[43,31]=0.286,X[44,31]=0.298,X[45,31]=0.302,X[46,31]=0.373,X[47,31]=0.380,X[48,31]=0.345,X[49,31]=0.275,X[50,31]=0.216 X[51,31]=0.455,X[52,31]=0.518,X[53,31]=0.451,X[54,31]=0.533,X[55,31]=0.478,X[56,31]=0.498,X[57,31]=0.471,X[58,31]=0.471,X[59,31]=0.498,X[60,31]=0.431,X[61,31]=0.247,X[62,31]=0.247,X[63,31]=0.498,X[64,31]=0.698,X[65,31]=0.667,X[66,31]=0.514,X[67,31]=0.427,X[68,31]=0.439,X[69,31]=0.455,X[70,31]=0.435,X[71,31]=0.482,X[72,31]=0.565,X[73,31]=0.533,X[74,31]=0.549,X[75,31]=0.573,X[76,31]=0.557,X[77,31]=0.533,X[78,31]=0.502,X[79,31]=0.412,X[80,31]=0.443,X[81,31]=0.435,X[82,31]=0.439,X[83,31]=0.435,X[84,31]=0.431,X[85,31]=0.482,X[86,31]=0.506,X[87,31]=0.392,X[88,31]=0.380,X[89,31]=0.463,X[90,31]=0.310,X[91,31]=0.141,X[92,31]=0.231,X[93,31]=0.431,X[94,31]=0.475,X[95,31]=0.400,X[96,31]=0.361,X[97,31]=0.588,X[98,31]=0.588,X[99,31]=0.647,X[100,31]=0.557 X[1,32]=0.416,X[2,32]=0.467,X[3,32]=0.439,X[4,32]=0.314,X[5,32]=0.267,X[6,32]=0.165,X[7,32]=0.302,X[8,32]=0.365,X[9,32]=0.502,X[10,32]=0.639,X[11,32]=0.569,X[12,32]=0.678,X[13,32]=0.655,X[14,32]=0.541,X[15,32]=0.349,X[16,32]=0.325,X[17,32]=0.412,X[18,32]=0.459,X[19,32]=0.459,X[20,32]=0.463,X[21,32]=0.420,X[22,32]=0.455,X[23,32]=0.584,X[24,32]=0.769,X[25,32]=0.745,X[26,32]=0.576,X[27,32]=0.475,X[28,32]=0.459,X[29,32]=0.518,X[30,32]=0.514,X[31,32]=0.545,X[32,32]=0.439,X[33,32]=0.392,X[34,32]=0.486,X[35,32]=0.380,X[36,32]=0.498,X[37,32]=0.533,X[38,32]=0.424,X[39,32]=0.388,X[40,32]=0.424,X[41,32]=0.451,X[42,32]=0.365,X[43,32]=0.278,X[44,32]=0.243,X[45,32]=0.180,X[46,32]=0.204,X[47,32]=0.282,X[48,32]=0.365,X[49,32]=0.263,X[50,32]=0.267 X[51,32]=0.443,X[52,32]=0.435,X[53,32]=0.400,X[54,32]=0.471,X[55,32]=0.490,X[56,32]=0.482,X[57,32]=0.420,X[58,32]=0.416,X[59,32]=0.549,X[60,32]=0.537,X[61,32]=0.337,X[62,32]=0.035,X[63,32]=0.063,X[64,32]=0.353,X[65,32]=0.502,X[66,32]=0.447,X[67,32]=0.455,X[68,32]=0.443,X[69,32]=0.408,X[70,32]=0.447,X[71,32]=0.435,X[72,32]=0.435,X[73,32]=0.455,X[74,32]=0.467,X[75,32]=0.427,X[76,32]=0.475,X[77,32]=0.498,X[78,32]=0.439,X[79,32]=0.369,X[80,32]=0.408,X[81,32]=0.494,X[82,32]=0.471,X[83,32]=0.435,X[84,32]=0.416,X[85,32]=0.494,X[86,32]=0.475,X[87,32]=0.486,X[88,32]=0.494,X[89,32]=0.412,X[90,32]=0.447,X[91,32]=0.369,X[92,32]=0.239,X[93,32]=0.616,X[94,32]=0.600,X[95,32]=0.502,X[96,32]=0.447,X[97,32]=0.525,X[98,32]=0.647,X[99,32]=0.592,X[100,32]=0.525 X[1,33]=0.459,X[2,33]=0.525,X[3,33]=0.502,X[4,33]=0.463,X[5,33]=0.467,X[6,33]=0.435,X[7,33]=0.486,X[8,33]=0.416,X[9,33]=0.404,X[10,33]=0.443,X[11,33]=0.478,X[12,33]=0.592,X[13,33]=0.753,X[14,33]=0.710,X[15,33]=0.537,X[16,33]=0.439,X[17,33]=0.463,X[18,33]=0.478,X[19,33]=0.420,X[20,33]=0.443,X[21,33]=0.439,X[22,33]=0.451,X[23,33]=0.518,X[24,33]=0.702,X[25,33]=0.733,X[26,33]=0.584,X[27,33]=0.537,X[28,33]=0.443,X[29,33]=0.506,X[30,33]=0.549,X[31,33]=0.573,X[32,33]=0.667,X[33,33]=0.702,X[34,33]=0.769,X[35,33]=0.678,X[36,33]=0.596,X[37,33]=0.561,X[38,33]=0.498,X[39,33]=0.427,X[40,33]=0.510,X[41,33]=0.494,X[42,33]=0.435,X[43,33]=0.427,X[44,33]=0.349,X[45,33]=0.322,X[46,33]=0.380,X[47,33]=0.408,X[48,33]=0.412,X[49,33]=0.294,X[50,33]=0.337 X[51,33]=0.486,X[52,33]=0.490,X[53,33]=0.322,X[54,33]=0.373,X[55,33]=0.529,X[56,33]=0.557,X[57,33]=0.412,X[58,33]=0.282,X[59,33]=0.627,X[60,33]=0.800,X[61,33]=0.698,X[62,33]=0.310,X[63,33]=0.294,X[64,33]=0.478,X[65,33]=0.522,X[66,33]=0.518,X[67,33]=0.510,X[68,33]=0.514,X[69,33]=0.459,X[70,33]=0.427,X[71,33]=0.420,X[72,33]=0.455,X[73,33]=0.373,X[74,33]=0.420,X[75,33]=0.463,X[76,33]=0.478,X[77,33]=0.545,X[78,33]=0.514,X[79,33]=0.502,X[80,33]=0.498,X[81,33]=0.482,X[82,33]=0.471,X[83,33]=0.443,X[84,33]=0.439,X[85,33]=0.482,X[86,33]=0.463,X[87,33]=0.467,X[88,33]=0.463,X[89,33]=0.420,X[90,33]=0.431,X[91,33]=0.325,X[92,33]=0.165,X[93,33]=0.298,X[94,33]=0.533,X[95,33]=0.471,X[96,33]=0.341,X[97,33]=0.435,X[98,33]=0.576,X[99,33]=0.824,X[100,33]=0.435 X[1,34]=0.455,X[2,34]=0.475,X[3,34]=0.490,X[4,34]=0.557,X[5,34]=0.561,X[6,34]=0.573,X[7,34]=0.475,X[8,34]=0.322,X[9,34]=0.345,X[10,34]=0.349,X[11,34]=0.447,X[12,34]=0.525,X[13,34]=0.710,X[14,34]=0.765,X[15,34]=0.592,X[16,34]=0.514,X[17,34]=0.451,X[18,34]=0.498,X[19,34]=0.486,X[20,34]=0.486,X[21,34]=0.482,X[22,34]=0.451,X[23,34]=0.502,X[24,34]=0.620,X[25,34]=0.588,X[26,34]=0.576,X[27,34]=0.569,X[28,34]=0.494,X[29,34]=0.463,X[30,34]=0.529,X[31,34]=0.494,X[32,34]=0.533,X[33,34]=0.682,X[34,34]=0.753,X[35,34]=0.804,X[36,34]=0.914,X[37,34]=0.824,X[38,34]=0.604,X[39,34]=0.514,X[40,34]=0.522,X[41,34]=0.502,X[42,34]=0.510,X[43,34]=0.525,X[44,34]=0.525,X[45,34]=0.463,X[46,34]=0.471,X[47,34]=0.388,X[48,34]=0.325,X[49,34]=0.349,X[50,34]=0.431 X[51,34]=0.584,X[52,34]=0.553,X[53,34]=0.310,X[54,34]=0.384,X[55,34]=0.561,X[56,34]=0.682,X[57,34]=0.498,X[58,34]=0.227,X[59,34]=0.416,X[60,34]=0.816,X[61,34]=0.863,X[62,34]=0.600,X[63,34]=0.533,X[64,34]=0.608,X[65,34]=0.545,X[66,34]=0.537,X[67,34]=0.525,X[68,34]=0.498,X[69,34]=0.424,X[70,34]=0.443,X[71,34]=0.431,X[72,34]=0.455,X[73,34]=0.416,X[74,34]=0.435,X[75,34]=0.541,X[76,34]=0.514,X[77,34]=0.490,X[78,34]=0.518,X[79,34]=0.506,X[80,34]=0.486,X[81,34]=0.455,X[82,34]=0.475,X[83,34]=0.459,X[84,34]=0.510,X[85,34]=0.482,X[86,34]=0.478,X[87,34]=0.518,X[88,34]=0.435,X[89,34]=0.486,X[90,34]=0.439,X[91,34]=0.118,X[92,34]=0.173,X[93,34]=0.110,X[94,34]=0.255,X[95,34]=0.251,X[96,34]=0.243,X[97,34]=0.510,X[98,34]=0.380,X[99,34]=0.671,X[100,34]=0.502 X[1,35]=0.506,X[2,35]=0.498,X[3,35]=0.482,X[4,35]=0.439,X[5,35]=0.341,X[6,35]=0.396,X[7,35]=0.443,X[8,35]=0.427,X[9,35]=0.431,X[10,35]=0.447,X[11,35]=0.412,X[12,35]=0.447,X[13,35]=0.635,X[14,35]=0.624,X[15,35]=0.584,X[16,35]=0.561,X[17,35]=0.494,X[18,35]=0.490,X[19,35]=0.490,X[20,35]=0.490,X[21,35]=0.471,X[22,35]=0.388,X[23,35]=0.427,X[24,35]=0.573,X[25,35]=0.525,X[26,35]=0.573,X[27,35]=0.529,X[28,35]=0.482,X[29,35]=0.475,X[30,35]=0.451,X[31,35]=0.478,X[32,35]=0.314,X[33,35]=0.286,X[34,35]=0.482,X[35,35]=0.698,X[36,35]=0.824,X[37,35]=0.761,X[38,35]=0.537,X[39,35]=0.541,X[40,35]=0.533,X[41,35]=0.627,X[42,35]=0.729,X[43,35]=0.545,X[44,35]=0.459,X[45,35]=0.455,X[46,35]=0.447,X[47,35]=0.373,X[48,35]=0.294,X[49,35]=0.341,X[50,35]=0.435 X[51,35]=0.686,X[52,35]=0.427,X[53,35]=0.267,X[54,35]=0.329,X[55,35]=0.522,X[56,35]=0.776,X[57,35]=0.616,X[58,35]=0.337,X[59,35]=0.271,X[60,35]=0.667,X[61,35]=0.620,X[62,35]=0.522,X[63,35]=0.522,X[64,35]=0.541,X[65,35]=0.482,X[66,35]=0.490,X[67,35]=0.486,X[68,35]=0.459,X[69,35]=0.459,X[70,35]=0.498,X[71,35]=0.525,X[72,35]=0.494,X[73,35]=0.522,X[74,35]=0.569,X[75,35]=0.561,X[76,35]=0.486,X[77,35]=0.502,X[78,35]=0.518,X[79,35]=0.553,X[80,35]=0.529,X[81,35]=0.494,X[82,35]=0.502,X[83,35]=0.490,X[84,35]=0.514,X[85,35]=0.482,X[86,35]=0.510,X[87,35]=0.557,X[88,35]=0.525,X[89,35]=0.545,X[90,35]=0.545,X[91,35]=0.373,X[92,35]=0.294,X[93,35]=0.196,X[94,35]=0.216,X[95,35]=0.227,X[96,35]=0.239,X[97,35]=0.184,X[98,35]=0.427,X[99,35]=0.475,X[100,35]=0.549 X[1,36]=0.549,X[2,36]=0.561,X[3,36]=0.424,X[4,36]=0.376,X[5,36]=0.357,X[6,36]=0.388,X[7,36]=0.447,X[8,36]=0.482,X[9,36]=0.494,X[10,36]=0.380,X[11,36]=0.220,X[12,36]=0.278,X[13,36]=0.580,X[14,36]=0.502,X[15,36]=0.529,X[16,36]=0.522,X[17,36]=0.486,X[18,36]=0.494,X[19,36]=0.494,X[20,36]=0.502,X[21,36]=0.412,X[22,36]=0.247,X[23,36]=0.384,X[24,36]=0.478,X[25,36]=0.475,X[26,36]=0.557,X[27,36]=0.533,X[28,36]=0.463,X[29,36]=0.510,X[30,36]=0.439,X[31,36]=0.518,X[32,36]=0.467,X[33,36]=0.176,X[34,36]=0.094,X[35,36]=0.263,X[36,36]=0.463,X[37,36]=0.510,X[38,36]=0.502,X[39,36]=0.502,X[40,36]=0.565,X[41,36]=0.749,X[42,36]=0.882,X[43,36]=0.788,X[44,36]=0.580,X[45,36]=0.576,X[46,36]=0.529,X[47,36]=0.514,X[48,36]=0.549,X[49,36]=0.349,X[50,36]=0.447 X[51,36]=0.482,X[52,36]=0.271,X[53,36]=0.235,X[54,36]=0.243,X[55,36]=0.435,X[56,36]=0.769,X[57,36]=0.765,X[58,36]=0.412,X[59,36]=0.467,X[60,36]=0.651,X[61,36]=0.663,X[62,36]=0.553,X[63,36]=0.514,X[64,36]=0.514,X[65,36]=0.471,X[66,36]=0.533,X[67,36]=0.557,X[68,36]=0.471,X[69,36]=0.455,X[70,36]=0.514,X[71,36]=0.553,X[72,36]=0.463,X[73,36]=0.467,X[74,36]=0.576,X[75,36]=0.616,X[76,36]=0.608,X[77,36]=0.600,X[78,36]=0.557,X[79,36]=0.561,X[80,36]=0.482,X[81,36]=0.502,X[82,36]=0.514,X[83,36]=0.584,X[84,36]=0.490,X[85,36]=0.482,X[86,36]=0.565,X[87,36]=0.518,X[88,36]=0.498,X[89,36]=0.584,X[90,36]=0.596,X[91,36]=0.592,X[92,36]=0.471,X[93,36]=0.451,X[94,36]=0.322,X[95,36]=0.216,X[96,36]=0.463,X[97,36]=0.231,X[98,36]=0.431,X[99,36]=0.502,X[100,36]=0.533 X[1,37]=0.533,X[2,37]=0.573,X[3,37]=0.537,X[4,37]=0.424,X[5,37]=0.310,X[6,37]=0.341,X[7,37]=0.337,X[8,37]=0.271,X[9,37]=0.384,X[10,37]=0.322,X[11,37]=0.169,X[12,37]=0.349,X[13,37]=0.486,X[14,37]=0.427,X[15,37]=0.475,X[16,37]=0.502,X[17,37]=0.459,X[18,37]=0.506,X[19,37]=0.439,X[20,37]=0.506,X[21,37]=0.494,X[22,37]=0.353,X[23,37]=0.376,X[24,37]=0.427,X[25,37]=0.396,X[26,37]=0.369,X[27,37]=0.494,X[28,37]=0.537,X[29,37]=0.498,X[30,37]=0.514,X[31,37]=0.682,X[32,37]=0.686,X[33,37]=0.455,X[34,37]=0.224,X[35,37]=0.314,X[36,37]=0.475,X[37,37]=0.502,X[38,37]=0.502,X[39,37]=0.373,X[40,37]=0.333,X[41,37]=0.694,X[42,37]=0.851,X[43,37]=0.906,X[44,37]=0.714,X[45,37]=0.506,X[46,37]=0.490,X[47,37]=0.616,X[48,37]=0.592,X[49,37]=0.400,X[50,37]=0.529 X[51,37]=0.447,X[52,37]=0.361,X[53,37]=0.310,X[54,37]=0.365,X[55,37]=0.373,X[56,37]=0.573,X[57,37]=0.729,X[58,37]=0.557,X[59,37]=0.745,X[60,37]=0.796,X[61,37]=0.886,X[62,37]=0.616,X[63,37]=0.588,X[64,37]=0.569,X[65,37]=0.573,X[66,37]=0.627,X[67,37]=0.588,X[68,37]=0.506,X[69,37]=0.541,X[70,37]=0.545,X[71,37]=0.486,X[72,37]=0.439,X[73,37]=0.420,X[74,37]=0.553,X[75,37]=0.596,X[76,37]=0.573,X[77,37]=0.478,X[78,37]=0.475,X[79,37]=0.525,X[80,37]=0.518,X[81,37]=0.561,X[82,37]=0.584,X[83,37]=0.639,X[84,37]=0.584,X[85,37]=0.490,X[86,37]=0.486,X[87,37]=0.475,X[88,37]=0.478,X[89,37]=0.549,X[90,37]=0.545,X[91,37]=0.557,X[92,37]=0.545,X[93,37]=0.486,X[94,37]=0.482,X[95,37]=0.443,X[96,37]=0.608,X[97,37]=0.580,X[98,37]=0.573,X[99,37]=0.533,X[100,37]=0.478 X[1,38]=0.502,X[2,38]=0.482,X[3,38]=0.502,X[4,38]=0.396,X[5,38]=0.251,X[6,38]=0.235,X[7,38]=0.204,X[8,38]=0.298,X[9,38]=0.427,X[10,38]=0.388,X[11,38]=0.239,X[12,38]=0.427,X[13,38]=0.463,X[14,38]=0.392,X[15,38]=0.373,X[16,38]=0.498,X[17,38]=0.498,X[18,38]=0.482,X[19,38]=0.369,X[20,38]=0.525,X[21,38]=0.565,X[22,38]=0.533,X[23,38]=0.439,X[24,38]=0.490,X[25,38]=0.318,X[26,38]=0.290,X[27,38]=0.475,X[28,38]=0.616,X[29,38]=0.502,X[30,38]=0.365,X[31,38]=0.655,X[32,38]=0.863,X[33,38]=0.757,X[34,38]=0.529,X[35,38]=0.529,X[36,38]=0.549,X[37,38]=0.580,X[38,38]=0.494,X[39,38]=0.282,X[40,38]=0.161,X[41,38]=0.412,X[42,38]=0.686,X[43,38]=0.788,X[44,38]=0.718,X[45,38]=0.353,X[46,38]=0.278,X[47,38]=0.600,X[48,38]=0.573,X[49,38]=0.671,X[50,38]=0.608 X[51,38]=0.565,X[52,38]=0.573,X[53,38]=0.537,X[54,38]=0.498,X[55,38]=0.431,X[56,38]=0.624,X[57,38]=0.584,X[58,38]=0.659,X[59,38]=0.757,X[60,38]=0.745,X[61,38]=0.678,X[62,38]=0.627,X[63,38]=0.651,X[64,38]=0.553,X[65,38]=0.588,X[66,38]=0.576,X[67,38]=0.529,X[68,38]=0.529,X[69,38]=0.569,X[70,38]=0.604,X[71,38]=0.557,X[72,38]=0.506,X[73,38]=0.490,X[74,38]=0.455,X[75,38]=0.471,X[76,38]=0.510,X[77,38]=0.506,X[78,38]=0.553,X[79,38]=0.471,X[80,38]=0.506,X[81,38]=0.494,X[82,38]=0.592,X[83,38]=0.573,X[84,38]=0.498,X[85,38]=0.475,X[86,38]=0.459,X[87,38]=0.447,X[88,38]=0.455,X[89,38]=0.451,X[90,38]=0.447,X[91,38]=0.482,X[92,38]=0.525,X[93,38]=0.514,X[94,38]=0.502,X[95,38]=0.584,X[96,38]=0.576,X[97,38]=0.612,X[98,38]=0.565,X[99,38]=0.447,X[100,38]=0.427 X[1,39]=0.439,X[2,39]=0.455,X[3,39]=0.498,X[4,39]=0.420,X[5,39]=0.400,X[6,39]=0.494,X[7,39]=0.353,X[8,39]=0.396,X[9,39]=0.416,X[10,39]=0.322,X[11,39]=0.361,X[12,39]=0.467,X[13,39]=0.569,X[14,39]=0.322,X[15,39]=0.263,X[16,39]=0.471,X[17,39]=0.604,X[18,39]=0.545,X[19,39]=0.267,X[20,39]=0.267,X[21,39]=0.518,X[22,39]=0.573,X[23,39]=0.584,X[24,39]=0.639,X[25,39]=0.310,X[26,39]=0.282,X[27,39]=0.424,X[28,39]=0.620,X[29,39]=0.541,X[30,39]=0.259,X[31,39]=0.318,X[32,39]=0.588,X[33,39]=0.573,X[34,39]=0.553,X[35,39]=0.549,X[36,39]=0.573,X[37,39]=0.616,X[38,39]=0.545,X[39,39]=0.310,X[40,39]=0.184,X[41,39]=0.251,X[42,39]=0.557,X[43,39]=0.831,X[44,39]=0.788,X[45,39]=0.349,X[46,39]=0.333,X[47,39]=0.537,X[48,39]=0.710,X[49,39]=0.784,X[50,39]=0.573 X[51,39]=0.557,X[52,39]=0.576,X[53,39]=0.639,X[54,39]=0.561,X[55,39]=0.435,X[56,39]=0.592,X[57,39]=0.514,X[58,39]=0.420,X[59,39]=0.482,X[60,39]=0.737,X[61,39]=0.749,X[62,39]=0.812,X[63,39]=0.702,X[64,39]=0.502,X[65,39]=0.502,X[66,39]=0.475,X[67,39]=0.447,X[68,39]=0.439,X[69,39]=0.529,X[70,39]=0.588,X[71,39]=0.635,X[72,39]=0.537,X[73,39]=0.424,X[74,39]=0.416,X[75,39]=0.502,X[76,39]=0.486,X[77,39]=0.494,X[78,39]=0.463,X[79,39]=0.431,X[80,39]=0.459,X[81,39]=0.455,X[82,39]=0.482,X[83,39]=0.447,X[84,39]=0.502,X[85,39]=0.553,X[86,39]=0.498,X[87,39]=0.451,X[88,39]=0.424,X[89,39]=0.435,X[90,39]=0.463,X[91,39]=0.475,X[92,39]=0.463,X[93,39]=0.498,X[94,39]=0.455,X[95,39]=0.490,X[96,39]=0.463,X[97,39]=0.494,X[98,39]=0.478,X[99,39]=0.475,X[100,39]=0.471 X[1,40]=0.427,X[2,40]=0.471,X[3,40]=0.506,X[4,40]=0.482,X[5,40]=0.545,X[6,40]=0.604,X[7,40]=0.514,X[8,40]=0.427,X[9,40]=0.310,X[10,40]=0.286,X[11,40]=0.412,X[12,40]=0.553,X[13,40]=0.682,X[14,40]=0.235,X[15,40]=0.227,X[16,40]=0.435,X[17,40]=0.671,X[18,40]=0.647,X[19,40]=0.294,X[20,40]=0.118,X[21,40]=0.290,X[22,40]=0.404,X[23,40]=0.616,X[24,40]=0.478,X[25,40]=0.275,X[26,40]=0.282,X[27,40]=0.365,X[28,40]=0.631,X[29,40]=0.682,X[30,40]=0.302,X[31,40]=0.224,X[32,40]=0.439,X[33,40]=0.490,X[34,40]=0.506,X[35,40]=0.510,X[36,40]=0.506,X[37,40]=0.502,X[38,40]=0.541,X[39,40]=0.361,X[40,40]=0.196,X[41,40]=0.278,X[42,40]=0.459,X[43,40]=0.808,X[44,40]=0.733,X[45,40]=0.439,X[46,40]=0.502,X[47,40]=0.510,X[48,40]=0.780,X[49,40]=0.667,X[50,40]=0.482 X[51,40]=0.494,X[52,40]=0.490,X[53,40]=0.549,X[54,40]=0.565,X[55,40]=0.329,X[56,40]=0.341,X[57,40]=0.380,X[58,40]=0.278,X[59,40]=0.553,X[60,40]=0.776,X[61,40]=0.725,X[62,40]=0.635,X[63,40]=0.490,X[64,40]=0.490,X[65,40]=0.549,X[66,40]=0.459,X[67,40]=0.412,X[68,40]=0.447,X[69,40]=0.459,X[70,40]=0.486,X[71,40]=0.537,X[72,40]=0.502,X[73,40]=0.431,X[74,40]=0.435,X[75,40]=0.463,X[76,40]=0.435,X[77,40]=0.529,X[78,40]=0.467,X[79,40]=0.396,X[80,40]=0.420,X[81,40]=0.486,X[82,40]=0.518,X[83,40]=0.576,X[84,40]=0.573,X[85,40]=0.541,X[86,40]=0.498,X[87,40]=0.427,X[88,40]=0.420,X[89,40]=0.443,X[90,40]=0.463,X[91,40]=0.459,X[92,40]=0.447,X[93,40]=0.447,X[94,40]=0.400,X[95,40]=0.408,X[96,40]=0.463,X[97,40]=0.506,X[98,40]=0.514,X[99,40]=0.553,X[100,40]=0.502 X[1,41]=0.506,X[2,41]=0.510,X[3,41]=0.494,X[4,41]=0.427,X[5,41]=0.490,X[6,41]=0.502,X[7,41]=0.506,X[8,41]=0.455,X[9,41]=0.314,X[10,41]=0.271,X[11,41]=0.384,X[12,41]=0.647,X[13,41]=0.553,X[14,41]=0.286,X[15,41]=0.255,X[16,41]=0.357,X[17,41]=0.702,X[18,41]=0.831,X[19,41]=0.400,X[20,41]=0.125,X[21,41]=0.141,X[22,41]=0.333,X[23,41]=0.545,X[24,41]=0.424,X[25,41]=0.325,X[26,41]=0.239,X[27,41]=0.251,X[28,41]=0.596,X[29,41]=0.824,X[30,41]=0.537,X[31,41]=0.447,X[32,41]=0.427,X[33,41]=0.431,X[34,41]=0.404,X[35,41]=0.447,X[36,41]=0.467,X[37,41]=0.510,X[38,41]=0.541,X[39,41]=0.525,X[40,41]=0.373,X[41,41]=0.416,X[42,41]=0.404,X[43,41]=0.686,X[44,41]=0.596,X[45,41]=0.416,X[46,41]=0.502,X[47,41]=0.541,X[48,41]=0.776,X[49,41]=0.655,X[50,41]=0.502 X[51,41]=0.482,X[52,41]=0.463,X[53,41]=0.522,X[54,41]=0.412,X[55,41]=0.447,X[56,41]=0.631,X[57,41]=0.486,X[58,41]=0.451,X[59,41]=0.580,X[60,41]=0.576,X[61,41]=0.498,X[62,41]=0.718,X[63,41]=0.596,X[64,41]=0.502,X[65,41]=0.502,X[66,41]=0.549,X[67,41]=0.471,X[68,41]=0.404,X[69,41]=0.376,X[70,41]=0.459,X[71,41]=0.525,X[72,41]=0.529,X[73,41]=0.455,X[74,41]=0.502,X[75,41]=0.533,X[76,41]=0.518,X[77,41]=0.569,X[78,41]=0.557,X[79,41]=0.498,X[80,41]=0.510,X[81,41]=0.600,X[82,41]=0.502,X[83,41]=0.455,X[84,41]=0.522,X[85,41]=0.522,X[86,41]=0.482,X[87,41]=0.482,X[88,41]=0.522,X[89,41]=0.549,X[90,41]=0.498,X[91,41]=0.463,X[92,41]=0.514,X[93,41]=0.490,X[94,41]=0.482,X[95,41]=0.482,X[96,41]=0.569,X[97,41]=0.506,X[98,41]=0.529,X[99,41]=0.576,X[100,41]=0.553 X[1,42]=0.510,X[2,42]=0.525,X[3,42]=0.490,X[4,42]=0.467,X[5,42]=0.455,X[6,42]=0.490,X[7,42]=0.502,X[8,42]=0.427,X[9,42]=0.275,X[10,42]=0.161,X[11,42]=0.325,X[12,42]=0.608,X[13,42]=0.416,X[14,42]=0.282,X[15,42]=0.275,X[16,42]=0.275,X[17,42]=0.647,X[18,42]=0.925,X[19,42]=0.557,X[20,42]=0.224,X[21,42]=0.204,X[22,42]=0.447,X[23,42]=0.471,X[24,42]=0.388,X[25,42]=0.322,X[26,42]=0.192,X[27,42]=0.090,X[28,42]=0.514,X[29,42]=0.761,X[30,42]=0.710,X[31,42]=0.667,X[32,42]=0.549,X[33,42]=0.439,X[34,42]=0.424,X[35,42]=0.537,X[36,42]=0.420,X[37,42]=0.529,X[38,42]=0.675,X[39,42]=0.635,X[40,42]=0.584,X[41,42]=0.557,X[42,42]=0.494,X[43,42]=0.631,X[44,42]=0.475,X[45,42]=0.439,X[46,42]=0.494,X[47,42]=0.600,X[48,42]=0.741,X[49,42]=0.561,X[50,42]=0.502 X[51,42]=0.533,X[52,42]=0.486,X[53,42]=0.514,X[54,42]=0.318,X[55,42]=0.439,X[56,42]=0.580,X[57,42]=0.600,X[58,42]=0.404,X[59,42]=0.490,X[60,42]=0.647,X[61,42]=0.776,X[62,42]=0.569,X[63,42]=0.494,X[64,42]=0.455,X[65,42]=0.494,X[66,42]=0.502,X[67,42]=0.498,X[68,42]=0.439,X[69,42]=0.451,X[70,42]=0.518,X[71,42]=0.506,X[72,42]=0.490,X[73,42]=0.533,X[74,42]=0.557,X[75,42]=0.518,X[76,42]=0.659,X[77,42]=0.737,X[78,42]=0.588,X[79,42]=0.722,X[80,42]=0.573,X[81,42]=0.498,X[82,42]=0.490,X[83,42]=0.467,X[84,42]=0.537,X[85,42]=0.592,X[86,42]=0.561,X[87,42]=0.533,X[88,42]=0.541,X[89,42]=0.600,X[90,42]=0.549,X[91,42]=0.475,X[92,42]=0.537,X[93,42]=0.478,X[94,42]=0.443,X[95,42]=0.514,X[96,42]=0.533,X[97,42]=0.533,X[98,42]=0.596,X[99,42]=0.608,X[100,42]=0.584 X[1,43]=0.455,X[2,43]=0.490,X[3,43]=0.502,X[4,43]=0.525,X[5,43]=0.435,X[6,43]=0.471,X[7,43]=0.478,X[8,43]=0.447,X[9,43]=0.224,X[10,43]=0.125,X[11,43]=0.384,X[12,43]=0.471,X[13,43]=0.471,X[14,43]=0.357,X[15,43]=0.251,X[16,43]=0.212,X[17,43]=0.510,X[18,43]=0.796,X[19,43]=0.584,X[20,43]=0.357,X[21,43]=0.361,X[22,43]=0.506,X[23,43]=0.408,X[24,43]=0.459,X[25,43]=0.431,X[26,43]=0.259,X[27,43]=0.078,X[28,43]=0.541,X[29,43]=0.816,X[30,43]=0.671,X[31,43]=0.796,X[32,43]=0.878,X[33,43]=0.573,X[34,43]=0.514,X[35,43]=0.518,X[36,43]=0.514,X[37,43]=0.549,X[38,43]=0.655,X[39,43]=0.580,X[40,43]=0.620,X[41,43]=0.580,X[42,43]=0.514,X[43,43]=0.694,X[44,43]=0.537,X[45,43]=0.482,X[46,43]=0.478,X[47,43]=0.565,X[48,43]=0.580,X[49,43]=0.494,X[50,43]=0.565 X[51,43]=0.529,X[52,43]=0.502,X[53,43]=0.282,X[54,43]=0.192,X[55,43]=0.349,X[56,43]=0.435,X[57,43]=0.463,X[58,43]=0.365,X[59,43]=0.533,X[60,43]=0.337,X[61,43]=0.702,X[62,43]=0.698,X[63,43]=0.537,X[64,43]=0.447,X[65,43]=0.447,X[66,43]=0.478,X[67,43]=0.475,X[68,43]=0.459,X[69,43]=0.553,X[70,43]=0.545,X[71,43]=0.612,X[72,43]=0.627,X[73,43]=0.498,X[74,43]=0.486,X[75,43]=0.443,X[76,43]=0.686,X[77,43]=0.867,X[78,43]=0.592,X[79,43]=0.733,X[80,43]=0.667,X[81,43]=0.722,X[82,43]=0.573,X[83,43]=0.553,X[84,43]=0.612,X[85,43]=0.600,X[86,43]=0.545,X[87,43]=0.498,X[88,43]=0.447,X[89,43]=0.498,X[90,43]=0.537,X[91,43]=0.518,X[92,43]=0.490,X[93,43]=0.494,X[94,43]=0.502,X[95,43]=0.545,X[96,43]=0.549,X[97,43]=0.557,X[98,43]=0.494,X[99,43]=0.435,X[100,43]=0.447 X[1,44]=0.478,X[2,44]=0.459,X[3,44]=0.529,X[4,44]=0.529,X[5,44]=0.478,X[6,44]=0.518,X[7,44]=0.514,X[8,44]=0.518,X[9,44]=0.353,X[10,44]=0.408,X[11,44]=0.561,X[12,44]=0.522,X[13,44]=0.604,X[14,44]=0.698,X[15,44]=0.376,X[16,44]=0.114,X[17,44]=0.431,X[18,44]=0.588,X[19,44]=0.506,X[20,44]=0.616,X[21,44]=0.565,X[22,44]=0.580,X[23,44]=0.549,X[24,44]=0.612,X[25,44]=0.612,X[26,44]=0.561,X[27,44]=0.490,X[28,44]=0.459,X[29,44]=0.694,X[30,44]=0.710,X[31,44]=0.839,X[32,44]=0.757,X[33,44]=0.569,X[34,44]=0.596,X[35,44]=0.471,X[36,44]=0.416,X[37,44]=0.420,X[38,44]=0.424,X[39,44]=0.416,X[40,44]=0.502,X[41,44]=0.447,X[42,44]=0.486,X[43,44]=0.592,X[44,44]=0.553,X[45,44]=0.502,X[46,44]=0.475,X[47,44]=0.482,X[48,44]=0.498,X[49,44]=0.455,X[50,44]=0.502 X[51,44]=0.596,X[52,44]=0.667,X[53,44]=0.490,X[54,44]=0.584,X[55,44]=0.478,X[56,44]=0.514,X[57,44]=0.494,X[58,44]=0.482,X[59,44]=0.416,X[60,44]=0.467,X[61,44]=0.525,X[62,44]=0.627,X[63,44]=0.545,X[64,44]=0.522,X[65,44]=0.490,X[66,44]=0.486,X[67,44]=0.459,X[68,44]=0.427,X[69,44]=0.529,X[70,44]=0.584,X[71,44]=0.573,X[72,44]=0.537,X[73,44]=0.529,X[74,44]=0.482,X[75,44]=0.404,X[76,44]=0.533,X[77,44]=0.612,X[78,44]=0.722,X[79,44]=0.761,X[80,44]=0.831,X[81,44]=0.725,X[82,44]=0.463,X[83,44]=0.506,X[84,44]=0.557,X[85,44]=0.494,X[86,44]=0.459,X[87,44]=0.416,X[88,44]=0.455,X[89,44]=0.478,X[90,44]=0.459,X[91,44]=0.565,X[92,44]=0.592,X[93,44]=0.525,X[94,44]=0.502,X[95,44]=0.451,X[96,44]=0.443,X[97,44]=0.506,X[98,44]=0.490,X[99,44]=0.494,X[100,44]=0.502 X[1,45]=0.576,X[2,45]=0.553,X[3,45]=0.612,X[4,45]=0.584,X[5,45]=0.576,X[6,45]=0.592,X[7,45]=0.588,X[8,45]=0.541,X[9,45]=0.471,X[10,45]=0.529,X[11,45]=0.541,X[12,45]=0.565,X[13,45]=0.698,X[14,45]=0.784,X[15,45]=0.647,X[16,45]=0.278,X[17,45]=0.392,X[18,45]=0.482,X[19,45]=0.655,X[20,45]=0.839,X[21,45]=0.718,X[22,45]=0.588,X[23,45]=0.565,X[24,45]=0.518,X[25,45]=0.522,X[26,45]=0.420,X[27,45]=0.533,X[28,45]=0.710,X[29,45]=0.514,X[30,45]=0.471,X[31,45]=0.714,X[32,45]=0.694,X[33,45]=0.804,X[34,45]=0.655,X[35,45]=0.306,X[36,45]=0.227,X[37,45]=0.306,X[38,45]=0.392,X[39,45]=0.408,X[40,45]=0.463,X[41,45]=0.369,X[42,45]=0.384,X[43,45]=0.459,X[44,45]=0.486,X[45,45]=0.494,X[46,45]=0.424,X[47,45]=0.408,X[48,45]=0.384,X[49,45]=0.455,X[50,45]=0.518 X[51,45]=0.765,X[52,45]=0.800,X[53,45]=0.620,X[54,45]=0.529,X[55,45]=0.475,X[56,45]=0.522,X[57,45]=0.592,X[58,45]=0.765,X[59,45]=0.392,X[60,45]=0.353,X[61,45]=0.533,X[62,45]=0.573,X[63,45]=0.620,X[64,45]=0.643,X[65,45]=0.584,X[66,45]=0.537,X[67,45]=0.443,X[68,45]=0.439,X[69,45]=0.424,X[70,45]=0.443,X[71,45]=0.522,X[72,45]=0.537,X[73,45]=0.541,X[74,45]=0.475,X[75,45]=0.518,X[76,45]=0.596,X[77,45]=0.522,X[78,45]=0.698,X[79,45]=0.702,X[80,45]=0.702,X[81,45]=0.631,X[82,45]=0.612,X[83,45]=0.498,X[84,45]=0.463,X[85,45]=0.545,X[86,45]=0.529,X[87,45]=0.502,X[88,45]=0.447,X[89,45]=0.435,X[90,45]=0.518,X[91,45]=0.529,X[92,45]=0.506,X[93,45]=0.502,X[94,45]=0.420,X[95,45]=0.427,X[96,45]=0.498,X[97,45]=0.510,X[98,45]=0.529,X[99,45]=0.569,X[100,45]=0.518 X[1,46]=0.529,X[2,46]=0.533,X[3,46]=0.616,X[4,46]=0.604,X[5,46]=0.573,X[6,46]=0.502,X[7,46]=0.459,X[8,46]=0.467,X[9,46]=0.463,X[10,46]=0.459,X[11,46]=0.384,X[12,46]=0.290,X[13,46]=0.565,X[14,46]=0.761,X[15,46]=0.769,X[16,46]=0.647,X[17,46]=0.486,X[18,46]=0.361,X[19,46]=0.682,X[20,46]=0.816,X[21,46]=0.714,X[22,46]=0.494,X[23,46]=0.471,X[24,46]=0.247,X[25,46]=0.231,X[26,46]=0.439,X[27,46]=0.271,X[28,46]=0.533,X[29,46]=0.357,X[30,46]=0.451,X[31,46]=0.792,X[32,46]=0.741,X[33,46]=0.651,X[34,46]=0.522,X[35,46]=0.337,X[36,46]=0.267,X[37,46]=0.259,X[38,46]=0.325,X[39,46]=0.361,X[40,46]=0.400,X[41,46]=0.400,X[42,46]=0.376,X[43,46]=0.478,X[44,46]=0.525,X[45,46]=0.592,X[46,46]=0.416,X[47,46]=0.271,X[48,46]=0.306,X[49,46]=0.475,X[50,46]=0.596 X[51,46]=0.600,X[52,46]=0.529,X[53,46]=0.486,X[54,46]=0.471,X[55,46]=0.502,X[56,46]=0.549,X[57,46]=0.616,X[58,46]=0.635,X[59,46]=0.475,X[60,46]=0.412,X[61,46]=0.514,X[62,46]=0.553,X[63,46]=0.557,X[64,46]=0.514,X[65,46]=0.482,X[66,46]=0.518,X[67,46]=0.467,X[68,46]=0.408,X[69,46]=0.388,X[70,46]=0.498,X[71,46]=0.447,X[72,46]=0.357,X[73,46]=0.380,X[74,46]=0.345,X[75,46]=0.290,X[76,46]=0.549,X[77,46]=0.435,X[78,46]=0.294,X[79,46]=0.639,X[80,46]=0.882,X[81,46]=0.769,X[82,46]=0.698,X[83,46]=0.565,X[84,46]=0.459,X[85,46]=0.529,X[86,46]=0.529,X[87,46]=0.541,X[88,46]=0.490,X[89,46]=0.459,X[90,46]=0.671,X[91,46]=0.561,X[92,46]=0.471,X[93,46]=0.490,X[94,46]=0.478,X[95,46]=0.427,X[96,46]=0.455,X[97,46]=0.486,X[98,46]=0.498,X[99,46]=0.427,X[100,46]=0.451 X[1,47]=0.471,X[2,47]=0.463,X[3,47]=0.482,X[4,47]=0.510,X[5,47]=0.486,X[6,47]=0.502,X[7,47]=0.502,X[8,47]=0.439,X[9,47]=0.431,X[10,47]=0.416,X[11,47]=0.298,X[12,47]=0.188,X[13,47]=0.333,X[14,47]=0.686,X[15,47]=0.835,X[16,47]=0.800,X[17,47]=0.369,X[18,47]=0.239,X[19,47]=0.624,X[20,47]=0.757,X[21,47]=0.722,X[22,47]=0.514,X[23,47]=0.510,X[24,47]=0.490,X[25,47]=0.392,X[26,47]=0.478,X[27,47]=0.486,X[28,47]=0.482,X[29,47]=0.471,X[30,47]=0.541,X[31,47]=0.553,X[32,47]=0.608,X[33,47]=0.804,X[34,47]=0.514,X[35,47]=0.357,X[36,47]=0.271,X[37,47]=0.200,X[38,47]=0.192,X[39,47]=0.192,X[40,47]=0.204,X[41,47]=0.498,X[42,47]=0.620,X[43,47]=0.608,X[44,47]=0.663,X[45,47]=0.580,X[46,47]=0.478,X[47,47]=0.306,X[48,47]=0.325,X[49,47]=0.420,X[50,47]=0.478 X[51,47]=0.525,X[52,47]=0.541,X[53,47]=0.482,X[54,47]=0.471,X[55,47]=0.424,X[56,47]=0.341,X[57,47]=0.345,X[58,47]=0.404,X[59,47]=0.435,X[60,47]=0.451,X[61,47]=0.427,X[62,47]=0.463,X[63,47]=0.522,X[64,47]=0.475,X[65,47]=0.475,X[66,47]=0.494,X[67,47]=0.471,X[68,47]=0.439,X[69,47]=0.408,X[70,47]=0.475,X[71,47]=0.467,X[72,47]=0.267,X[73,47]=0.016,X[74,47]=0.184,X[75,47]=0.286,X[76,47]=0.459,X[77,47]=0.353,X[78,47]=0.353,X[79,47]=0.655,X[80,47]=0.710,X[81,47]=0.737,X[82,47]=0.655,X[83,47]=0.467,X[84,47]=0.482,X[85,47]=0.506,X[86,47]=0.482,X[87,47]=0.537,X[88,47]=0.576,X[89,47]=0.600,X[90,47]=0.722,X[91,47]=0.635,X[92,47]=0.620,X[93,47]=0.486,X[94,47]=0.486,X[95,47]=0.498,X[96,47]=0.482,X[97,47]=0.510,X[98,47]=0.600,X[99,47]=0.463,X[100,47]=0.424 X[1,48]=0.435,X[2,48]=0.404,X[3,48]=0.490,X[4,48]=0.518,X[5,48]=0.545,X[6,48]=0.537,X[7,48]=0.525,X[8,48]=0.502,X[9,48]=0.463,X[10,48]=0.424,X[11,48]=0.333,X[12,48]=0.239,X[13,48]=0.271,X[14,48]=0.514,X[15,48]=0.804,X[16,48]=0.800,X[17,48]=0.408,X[18,48]=0.400,X[19,48]=0.533,X[20,48]=0.773,X[21,48]=0.718,X[22,48]=0.541,X[23,48]=0.592,X[24,48]=0.690,X[25,48]=0.690,X[26,48]=0.518,X[27,48]=0.600,X[28,48]=0.553,X[29,48]=0.471,X[30,48]=0.475,X[31,48]=0.737,X[32,48]=0.694,X[33,48]=0.592,X[34,48]=0.518,X[35,48]=0.502,X[36,48]=0.384,X[37,48]=0.294,X[38,48]=0.298,X[39,48]=0.322,X[40,48]=0.325,X[41,48]=0.463,X[42,48]=0.522,X[43,48]=0.502,X[44,48]=0.643,X[45,48]=0.753,X[46,48]=0.647,X[47,48]=0.467,X[48,48]=0.384,X[49,48]=0.443,X[50,48]=0.506 X[51,48]=0.537,X[52,48]=0.584,X[53,48]=0.529,X[54,48]=0.357,X[55,48]=0.275,X[56,48]=0.361,X[57,48]=0.451,X[58,48]=0.490,X[59,48]=0.494,X[60,48]=0.392,X[61,48]=0.392,X[62,48]=0.518,X[63,48]=0.549,X[64,48]=0.565,X[65,48]=0.561,X[66,48]=0.580,X[67,48]=0.565,X[68,48]=0.514,X[69,48]=0.522,X[70,48]=0.514,X[71,48]=0.514,X[72,48]=0.502,X[73,48]=0.259,X[74,48]=0.192,X[75,48]=0.627,X[76,48]=0.655,X[77,48]=0.490,X[78,48]=0.451,X[79,48]=0.561,X[80,48]=0.627,X[81,48]=0.616,X[82,48]=0.753,X[83,48]=0.537,X[84,48]=0.471,X[85,48]=0.490,X[86,48]=0.541,X[87,48]=0.518,X[88,48]=0.376,X[89,48]=0.608,X[90,48]=0.827,X[91,48]=0.796,X[92,48]=0.780,X[93,48]=0.624,X[94,48]=0.549,X[95,48]=0.565,X[96,48]=0.557,X[97,48]=0.553,X[98,48]=0.502,X[99,48]=0.494,X[100,48]=0.502 X[1,49]=0.459,X[2,49]=0.416,X[3,49]=0.506,X[4,49]=0.569,X[5,49]=0.549,X[6,49]=0.573,X[7,49]=0.561,X[8,49]=0.549,X[9,49]=0.518,X[10,49]=0.486,X[11,49]=0.337,X[12,49]=0.224,X[13,49]=0.227,X[14,49]=0.412,X[15,49]=0.784,X[16,49]=0.706,X[17,49]=0.384,X[18,49]=0.498,X[19,49]=0.514,X[20,49]=0.831,X[21,49]=0.737,X[22,49]=0.502,X[23,49]=0.502,X[24,49]=0.478,X[25,49]=0.537,X[26,49]=0.529,X[27,49]=0.388,X[28,49]=0.478,X[29,49]=0.404,X[30,49]=0.337,X[31,49]=0.435,X[32,49]=0.906,X[33,49]=0.620,X[34,49]=0.502,X[35,49]=0.573,X[36,49]=0.498,X[37,49]=0.525,X[38,49]=0.675,X[39,49]=0.482,X[40,49]=0.333,X[41,49]=0.349,X[42,49]=0.357,X[43,49]=0.467,X[44,49]=0.545,X[45,49]=0.737,X[46,49]=0.765,X[47,49]=0.596,X[48,49]=0.494,X[49,49]=0.439,X[50,49]=0.502 X[51,49]=0.502,X[52,49]=0.529,X[53,49]=0.549,X[54,49]=0.573,X[55,49]=0.741,X[56,49]=0.855,X[57,49]=0.678,X[58,49]=0.518,X[59,49]=0.459,X[60,49]=0.392,X[61,49]=0.416,X[62,49]=0.604,X[63,49]=0.576,X[64,49]=0.553,X[65,49]=0.769,X[66,49]=0.659,X[67,49]=0.733,X[68,49]=0.639,X[69,49]=0.514,X[70,49]=0.514,X[71,49]=0.553,X[72,49]=0.561,X[73,49]=0.376,X[74,49]=0.220,X[75,49]=0.373,X[76,49]=0.600,X[77,49]=0.478,X[78,49]=0.380,X[79,49]=0.424,X[80,49]=0.698,X[81,49]=0.800,X[82,49]=0.557,X[83,49]=0.494,X[84,49]=0.482,X[85,49]=0.490,X[86,49]=0.357,X[87,49]=0.290,X[88,49]=0.176,X[89,49]=0.471,X[90,49]=0.706,X[91,49]=0.710,X[92,49]=0.651,X[93,49]=0.678,X[94,49]=0.592,X[95,49]=0.498,X[96,49]=0.471,X[97,49]=0.471,X[98,49]=0.486,X[99,49]=0.518,X[100,49]=0.502 X[1,50]=0.416,X[2,50]=0.435,X[3,50]=0.439,X[4,50]=0.459,X[5,50]=0.553,X[6,50]=0.592,X[7,50]=0.561,X[8,50]=0.494,X[9,50]=0.475,X[10,50]=0.506,X[11,50]=0.376,X[12,50]=0.243,X[13,50]=0.137,X[14,50]=0.322,X[15,50]=0.647,X[16,50]=0.533,X[17,50]=0.400,X[18,50]=0.498,X[19,50]=0.565,X[20,50]=0.835,X[21,50]=0.694,X[22,50]=0.494,X[23,50]=0.502,X[24,50]=0.459,X[25,50]=0.518,X[26,50]=0.451,X[27,50]=0.157,X[28,50]=0.310,X[29,50]=0.141,X[30,50]=0.275,X[31,50]=0.424,X[32,50]=0.659,X[33,50]=0.616,X[34,50]=0.525,X[35,50]=0.569,X[36,50]=0.529,X[37,50]=0.518,X[38,50]=0.561,X[39,50]=0.451,X[40,50]=0.380,X[41,50]=0.388,X[42,50]=0.400,X[43,50]=0.427,X[44,50]=0.506,X[45,50]=0.671,X[46,50]=0.675,X[47,50]=0.600,X[48,50]=0.549,X[49,50]=0.463,X[50,50]=0.475 X[51,50]=0.471,X[52,50]=0.518,X[53,50]=0.612,X[54,50]=0.757,X[55,50]=0.843,X[56,50]=0.843,X[57,50]=0.812,X[58,50]=0.792,X[59,50]=0.655,X[60,50]=0.498,X[61,50]=0.455,X[62,50]=0.757,X[63,50]=0.788,X[64,50]=0.612,X[65,50]=0.796,X[66,50]=0.694,X[67,50]=0.800,X[68,50]=0.659,X[69,50]=0.584,X[70,50]=0.624,X[71,50]=0.596,X[72,50]=0.447,X[73,50]=0.216,X[74,50]=0.216,X[75,50]=0.169,X[76,50]=0.380,X[77,50]=0.322,X[78,50]=0.318,X[79,50]=0.510,X[80,50]=0.388,X[81,50]=0.765,X[82,50]=0.651,X[83,50]=0.569,X[84,50]=0.518,X[85,50]=0.502,X[86,50]=0.380,X[87,50]=0.220,X[88,50]=0.184,X[89,50]=0.388,X[90,50]=0.353,X[91,50]=0.561,X[92,50]=0.643,X[93,50]=0.518,X[94,50]=0.471,X[95,50]=0.478,X[96,50]=0.576,X[97,50]=0.522,X[98,50]=0.514,X[99,50]=0.647,X[100,50]=0.569 X[1,51]=0.431,X[2,51]=0.400,X[3,51]=0.455,X[4,51]=0.463,X[5,51]=0.482,X[6,51]=0.518,X[7,51]=0.498,X[8,51]=0.471,X[9,51]=0.616,X[10,51]=0.718,X[11,51]=0.678,X[12,51]=0.478,X[13,51]=0.247,X[14,51]=0.314,X[15,51]=0.729,X[16,51]=0.510,X[17,51]=0.455,X[18,51]=0.490,X[19,51]=0.612,X[20,51]=0.725,X[21,51]=0.529,X[22,51]=0.518,X[23,51]=0.549,X[24,51]=0.478,X[25,51]=0.498,X[26,51]=0.290,X[27,51]=0.243,X[28,51]=0.420,X[29,51]=0.349,X[30,51]=0.114,X[31,51]=0.373,X[32,51]=0.529,X[33,51]=0.518,X[34,51]=0.600,X[35,51]=0.600,X[36,51]=0.478,X[37,51]=0.353,X[38,51]=0.365,X[39,51]=0.447,X[40,51]=0.494,X[41,51]=0.486,X[42,51]=0.459,X[43,51]=0.286,X[44,51]=0.325,X[45,51]=0.592,X[46,51]=0.529,X[47,51]=0.569,X[48,51]=0.533,X[49,51]=0.498,X[50,51]=0.494 X[51,51]=0.510,X[52,51]=0.490,X[53,51]=0.404,X[54,51]=0.392,X[55,51]=0.604,X[56,51]=0.792,X[57,51]=0.910,X[58,51]=0.953,X[59,51]=0.780,X[60,51]=0.545,X[61,51]=0.455,X[62,51]=0.659,X[63,51]=0.675,X[64,51]=0.667,X[65,51]=0.612,X[66,51]=0.714,X[67,51]=0.867,X[68,51]=0.800,X[69,51]=0.769,X[70,51]=0.573,X[71,51]=0.471,X[72,51]=0.408,X[73,51]=0.384,X[74,51]=0.306,X[75,51]=0.255,X[76,51]=0.290,X[77,51]=0.286,X[78,51]=0.176,X[79,51]=0.275,X[80,51]=0.455,X[81,51]=0.549,X[82,51]=0.522,X[83,51]=0.525,X[84,51]=0.557,X[85,51]=0.604,X[86,51]=0.616,X[87,51]=0.463,X[88,51]=0.400,X[89,51]=0.431,X[90,51]=0.341,X[91,51]=0.380,X[92,51]=0.518,X[93,51]=0.537,X[94,51]=0.514,X[95,51]=0.584,X[96,51]=0.624,X[97,51]=0.573,X[98,51]=0.596,X[99,51]=0.588,X[100,51]=0.541 X[1,52]=0.525,X[2,52]=0.506,X[3,52]=0.451,X[4,52]=0.416,X[5,52]=0.471,X[6,52]=0.502,X[7,52]=0.506,X[8,52]=0.525,X[9,52]=0.706,X[10,52]=0.784,X[11,52]=0.863,X[12,52]=0.702,X[13,52]=0.510,X[14,52]=0.455,X[15,52]=0.675,X[16,52]=0.557,X[17,52]=0.494,X[18,52]=0.478,X[19,52]=0.537,X[20,52]=0.541,X[21,52]=0.478,X[22,52]=0.561,X[23,52]=0.522,X[24,52]=0.506,X[25,52]=0.561,X[26,52]=0.561,X[27,52]=0.702,X[28,52]=0.765,X[29,52]=0.824,X[30,52]=0.600,X[31,52]=0.439,X[32,52]=0.529,X[33,52]=0.553,X[34,52]=0.588,X[35,52]=0.545,X[36,52]=0.400,X[37,52]=0.286,X[38,52]=0.259,X[39,52]=0.329,X[40,52]=0.322,X[41,52]=0.275,X[42,52]=0.251,X[43,52]=0.145,X[44,52]=0.345,X[45,52]=0.510,X[46,52]=0.443,X[47,52]=0.502,X[48,52]=0.506,X[49,52]=0.478,X[50,52]=0.498 X[51,52]=0.451,X[52,52]=0.494,X[53,52]=0.475,X[54,52]=0.310,X[55,52]=0.243,X[56,52]=0.447,X[57,52]=0.706,X[58,52]=0.808,X[59,52]=0.824,X[60,52]=0.596,X[61,52]=0.545,X[62,52]=0.600,X[63,52]=0.537,X[64,52]=0.651,X[65,52]=0.576,X[66,52]=0.573,X[67,52]=0.753,X[68,52]=0.714,X[69,52]=0.812,X[70,52]=0.776,X[71,52]=0.459,X[72,52]=0.482,X[73,52]=0.478,X[74,52]=0.318,X[75,52]=0.451,X[76,52]=0.373,X[77,52]=0.224,X[78,52]=0.400,X[79,52]=0.169,X[80,52]=0.361,X[81,52]=0.420,X[82,52]=0.463,X[83,52]=0.498,X[84,52]=0.522,X[85,52]=0.584,X[86,52]=0.533,X[87,52]=0.439,X[88,52]=0.686,X[89,52]=0.659,X[90,52]=0.388,X[91,52]=0.443,X[92,52]=0.498,X[93,52]=0.588,X[94,52]=0.663,X[95,52]=0.678,X[96,52]=0.553,X[97,52]=0.420,X[98,52]=0.447,X[99,52]=0.506,X[100,52]=0.455 X[1,53]=0.494,X[2,53]=0.471,X[3,53]=0.424,X[4,53]=0.376,X[5,53]=0.451,X[6,53]=0.463,X[7,53]=0.388,X[8,53]=0.353,X[9,53]=0.412,X[10,53]=0.537,X[11,53]=0.722,X[12,53]=0.667,X[13,53]=0.396,X[14,53]=0.455,X[15,53]=0.529,X[16,53]=0.533,X[17,53]=0.498,X[18,53]=0.467,X[19,53]=0.482,X[20,53]=0.471,X[21,53]=0.443,X[22,53]=0.482,X[23,53]=0.604,X[24,53]=0.690,X[25,53]=0.706,X[26,53]=0.722,X[27,53]=0.753,X[28,53]=0.792,X[29,53]=0.875,X[30,53]=0.816,X[31,53]=0.573,X[32,53]=0.490,X[33,53]=0.490,X[34,53]=0.427,X[35,53]=0.420,X[36,53]=0.373,X[37,53]=0.282,X[38,53]=0.282,X[39,53]=0.251,X[40,53]=0.212,X[41,53]=0.365,X[42,53]=0.345,X[43,53]=0.208,X[44,53]=0.420,X[45,53]=0.447,X[46,53]=0.408,X[47,53]=0.431,X[48,53]=0.494,X[49,53]=0.463,X[50,53]=0.463 X[51,53]=0.373,X[52,53]=0.549,X[53,53]=0.565,X[54,53]=0.490,X[55,53]=0.192,X[56,53]=0.137,X[57,53]=0.373,X[58,53]=0.651,X[59,53]=0.804,X[60,53]=0.506,X[61,53]=0.384,X[62,53]=0.549,X[63,53]=0.384,X[64,53]=0.337,X[65,53]=0.522,X[66,53]=0.510,X[67,53]=0.525,X[68,53]=0.608,X[69,53]=0.804,X[70,53]=0.910,X[71,53]=0.714,X[72,53]=0.455,X[73,53]=0.420,X[74,53]=0.490,X[75,53]=0.776,X[76,53]=0.757,X[77,53]=0.478,X[78,53]=0.502,X[79,53]=0.435,X[80,53]=0.514,X[81,53]=0.463,X[82,53]=0.459,X[83,53]=0.427,X[84,53]=0.420,X[85,53]=0.412,X[86,53]=0.322,X[87,53]=0.510,X[88,53]=0.784,X[89,53]=0.824,X[90,53]=0.667,X[91,53]=0.482,X[92,53]=0.439,X[93,53]=0.545,X[94,53]=0.780,X[95,53]=0.733,X[96,53]=0.522,X[97,53]=0.486,X[98,53]=0.502,X[99,53]=0.510,X[100,53]=0.506 X[1,54]=0.541,X[2,54]=0.545,X[3,54]=0.404,X[4,54]=0.435,X[5,54]=0.482,X[6,54]=0.427,X[7,54]=0.294,X[8,54]=0.231,X[9,54]=0.290,X[10,54]=0.365,X[11,54]=0.427,X[12,54]=0.502,X[13,54]=0.384,X[14,54]=0.345,X[15,54]=0.431,X[16,54]=0.475,X[17,54]=0.529,X[18,54]=0.412,X[19,54]=0.357,X[20,54]=0.341,X[21,54]=0.463,X[22,54]=0.592,X[23,54]=0.722,X[24,54]=0.647,X[25,54]=0.545,X[26,54]=0.494,X[27,54]=0.475,X[28,54]=0.561,X[29,54]=0.831,X[30,54]=0.765,X[31,54]=0.478,X[32,54]=0.427,X[33,54]=0.443,X[34,54]=0.471,X[35,54]=0.443,X[36,54]=0.435,X[37,54]=0.490,X[38,54]=0.498,X[39,54]=0.486,X[40,54]=0.431,X[41,54]=0.431,X[42,54]=0.325,X[43,54]=0.329,X[44,54]=0.459,X[45,54]=0.533,X[46,54]=0.365,X[47,54]=0.322,X[48,54]=0.490,X[49,54]=0.576,X[50,54]=0.498 X[51,54]=0.247,X[52,54]=0.482,X[53,54]=0.749,X[54,54]=0.702,X[55,54]=0.353,X[56,54]=0.157,X[57,54]=0.278,X[58,54]=0.369,X[59,54]=0.345,X[60,54]=0.365,X[61,54]=0.263,X[62,54]=0.447,X[63,54]=0.337,X[64,54]=0.412,X[65,54]=0.557,X[66,54]=0.565,X[67,54]=0.475,X[68,54]=0.420,X[69,54]=0.698,X[70,54]=0.804,X[71,54]=0.808,X[72,54]=0.545,X[73,54]=0.302,X[74,54]=0.514,X[75,54]=0.886,X[76,54]=0.878,X[77,54]=0.682,X[78,54]=0.502,X[79,54]=0.490,X[80,54]=0.502,X[81,54]=0.612,X[82,54]=0.635,X[83,54]=0.439,X[84,54]=0.412,X[85,54]=0.369,X[86,54]=0.118,X[87,54]=0.271,X[88,54]=0.682,X[89,54]=0.816,X[90,54]=0.827,X[91,54]=0.553,X[92,54]=0.267,X[93,54]=0.506,X[94,54]=0.753,X[95,54]=0.800,X[96,54]=0.659,X[97,54]=0.490,X[98,54]=0.541,X[99,54]=0.588,X[100,54]=0.773 X[1,55]=0.671,X[2,55]=0.667,X[3,55]=0.502,X[4,55]=0.533,X[5,55]=0.522,X[6,55]=0.463,X[7,55]=0.349,X[8,55]=0.275,X[9,55]=0.263,X[10,55]=0.373,X[11,55]=0.518,X[12,55]=0.475,X[13,55]=0.467,X[14,55]=0.463,X[15,55]=0.529,X[16,55]=0.573,X[17,55]=0.569,X[18,55]=0.424,X[19,55]=0.271,X[20,55]=0.302,X[21,55]=0.443,X[22,55]=0.537,X[23,55]=0.541,X[24,55]=0.514,X[25,55]=0.475,X[26,55]=0.482,X[27,55]=0.510,X[28,55]=0.561,X[29,55]=0.698,X[30,55]=0.545,X[31,55]=0.439,X[32,55]=0.455,X[33,55]=0.471,X[34,55]=0.510,X[35,55]=0.494,X[36,55]=0.431,X[37,55]=0.502,X[38,55]=0.584,X[39,55]=0.525,X[40,55]=0.486,X[41,55]=0.353,X[42,55]=0.325,X[43,55]=0.416,X[44,55]=0.525,X[45,55]=0.639,X[46,55]=0.278,X[47,55]=0.278,X[48,55]=0.482,X[49,55]=0.702,X[50,55]=0.573 X[51,55]=0.278,X[52,55]=0.290,X[53,55]=0.608,X[54,55]=0.702,X[55,55]=0.498,X[56,55]=0.176,X[57,55]=0.255,X[58,55]=0.443,X[59,55]=0.247,X[60,55]=0.365,X[61,55]=0.651,X[62,55]=0.635,X[63,55]=0.490,X[64,55]=0.510,X[65,55]=0.608,X[66,55]=0.667,X[67,55]=0.467,X[68,55]=0.322,X[69,55]=0.467,X[70,55]=0.780,X[71,55]=0.843,X[72,55]=0.620,X[73,55]=0.227,X[74,55]=0.404,X[75,55]=0.757,X[76,55]=0.878,X[77,55]=0.722,X[78,55]=0.502,X[79,55]=0.573,X[80,55]=0.698,X[81,55]=0.851,X[82,55]=0.851,X[83,55]=0.643,X[84,55]=0.494,X[85,55]=0.365,X[86,55]=0.251,X[87,55]=0.216,X[88,55]=0.447,X[89,55]=0.753,X[90,55]=0.859,X[91,55]=0.573,X[92,55]=0.243,X[93,55]=0.451,X[94,55]=0.698,X[95,55]=0.784,X[96,55]=0.616,X[97,55]=0.502,X[98,55]=0.624,X[99,55]=0.776,X[100,55]=0.835 X[1,56]=0.631,X[2,56]=0.620,X[3,56]=0.518,X[4,56]=0.510,X[5,56]=0.482,X[6,56]=0.486,X[7,56]=0.376,X[8,56]=0.298,X[9,56]=0.275,X[10,56]=0.400,X[11,56]=0.690,X[12,56]=0.612,X[13,56]=0.576,X[14,56]=0.627,X[15,56]=0.573,X[16,56]=0.686,X[17,56]=0.647,X[18,56]=0.533,X[19,56]=0.345,X[20,56]=0.329,X[21,56]=0.420,X[22,56]=0.482,X[23,56]=0.537,X[24,56]=0.561,X[25,56]=0.502,X[26,56]=0.420,X[27,56]=0.286,X[28,56]=0.267,X[29,56]=0.475,X[30,56]=0.518,X[31,56]=0.494,X[32,56]=0.510,X[33,56]=0.620,X[34,56]=0.580,X[35,56]=0.451,X[36,56]=0.427,X[37,56]=0.471,X[38,56]=0.576,X[39,56]=0.502,X[40,56]=0.463,X[41,56]=0.345,X[42,56]=0.322,X[43,56]=0.392,X[44,56]=0.620,X[45,56]=0.541,X[46,56]=0.263,X[47,56]=0.251,X[48,56]=0.408,X[49,56]=0.753,X[50,56]=0.718 X[51,56]=0.337,X[52,56]=0.102,X[53,56]=0.306,X[54,56]=0.522,X[55,56]=0.439,X[56,56]=0.200,X[57,56]=0.310,X[58,56]=0.376,X[59,56]=0.290,X[60,56]=0.220,X[61,56]=0.494,X[62,56]=0.675,X[63,56]=0.451,X[64,56]=0.435,X[65,56]=0.435,X[66,56]=0.710,X[67,56]=0.510,X[68,56]=0.196,X[69,56]=0.337,X[70,56]=0.686,X[71,56]=0.875,X[72,56]=0.631,X[73,56]=0.408,X[74,56]=0.455,X[75,56]=0.678,X[76,56]=0.863,X[77,56]=0.710,X[78,56]=0.604,X[79,56]=0.600,X[80,56]=0.671,X[81,56]=0.847,X[82,56]=0.847,X[83,56]=0.663,X[84,56]=0.596,X[85,56]=0.392,X[86,56]=0.224,X[87,56]=0.180,X[88,56]=0.322,X[89,56]=0.647,X[90,56]=0.843,X[91,56]=0.494,X[92,56]=0.400,X[93,56]=0.471,X[94,56]=0.671,X[95,56]=0.831,X[96,56]=0.584,X[97,56]=0.533,X[98,56]=0.545,X[99,56]=0.569,X[100,56]=0.592 X[1,57]=0.490,X[2,57]=0.486,X[3,57]=0.475,X[4,57]=0.478,X[5,57]=0.518,X[6,57]=0.561,X[7,57]=0.482,X[8,57]=0.408,X[9,57]=0.349,X[10,57]=0.357,X[11,57]=0.502,X[12,57]=0.459,X[13,57]=0.424,X[14,57]=0.447,X[15,57]=0.482,X[16,57]=0.604,X[17,57]=0.757,X[18,57]=0.710,X[19,57]=0.529,X[20,57]=0.439,X[21,57]=0.463,X[22,57]=0.514,X[23,57]=0.522,X[24,57]=0.561,X[25,57]=0.518,X[26,57]=0.380,X[27,57]=0.384,X[28,57]=0.506,X[29,57]=0.494,X[30,57]=0.537,X[31,57]=0.616,X[32,57]=0.549,X[33,57]=0.522,X[34,57]=0.478,X[35,57]=0.482,X[36,57]=0.510,X[37,57]=0.510,X[38,57]=0.522,X[39,57]=0.518,X[40,57]=0.455,X[41,57]=0.365,X[42,57]=0.278,X[43,57]=0.376,X[44,57]=0.600,X[45,57]=0.388,X[46,57]=0.278,X[47,57]=0.224,X[48,57]=0.318,X[49,57]=0.690,X[50,57]=0.796 X[51,57]=0.494,X[52,57]=0.243,X[53,57]=0.337,X[54,57]=0.506,X[55,57]=0.471,X[56,57]=0.361,X[57,57]=0.486,X[58,57]=0.298,X[59,57]=0.184,X[60,57]=0.196,X[61,57]=0.173,X[62,57]=0.451,X[63,57]=0.310,X[64,57]=0.420,X[65,57]=0.439,X[66,57]=0.451,X[67,57]=0.584,X[68,57]=0.247,X[69,57]=0.251,X[70,57]=0.549,X[71,57]=0.769,X[72,57]=0.522,X[73,57]=0.431,X[74,57]=0.502,X[75,57]=0.643,X[76,57]=0.839,X[77,57]=0.596,X[78,57]=0.529,X[79,57]=0.482,X[80,57]=0.455,X[81,57]=0.678,X[82,57]=0.733,X[83,57]=0.494,X[84,57]=0.463,X[85,57]=0.380,X[86,57]=0.231,X[87,57]=0.173,X[88,57]=0.235,X[89,57]=0.557,X[90,57]=0.714,X[91,57]=0.427,X[92,57]=0.424,X[93,57]=0.502,X[94,57]=0.702,X[95,57]=0.839,X[96,57]=0.604,X[97,57]=0.498,X[98,57]=0.475,X[99,57]=0.467,X[100,57]=0.482 X[1,58]=0.514,X[2,58]=0.541,X[3,58]=0.580,X[4,58]=0.588,X[5,58]=0.624,X[6,58]=0.576,X[7,58]=0.506,X[8,58]=0.420,X[9,58]=0.325,X[10,58]=0.353,X[11,58]=0.384,X[12,58]=0.322,X[13,58]=0.345,X[14,58]=0.341,X[15,58]=0.439,X[16,58]=0.522,X[17,58]=0.718,X[18,58]=0.757,X[19,58]=0.592,X[20,58]=0.510,X[21,58]=0.439,X[22,58]=0.498,X[23,58]=0.490,X[24,58]=0.541,X[25,58]=0.627,X[26,58]=0.729,X[27,58]=0.808,X[28,58]=0.780,X[29,58]=0.706,X[30,58]=0.545,X[31,58]=0.502,X[32,58]=0.518,X[33,58]=0.435,X[34,58]=0.439,X[35,58]=0.471,X[36,58]=0.451,X[37,58]=0.569,X[38,58]=0.561,X[39,58]=0.545,X[40,58]=0.490,X[41,58]=0.302,X[42,58]=0.192,X[43,58]=0.459,X[44,58]=0.506,X[45,58]=0.400,X[46,58]=0.306,X[47,58]=0.192,X[48,58]=0.145,X[49,58]=0.541,X[50,58]=0.835 X[51,58]=0.604,X[52,58]=0.506,X[53,58]=0.502,X[54,58]=0.490,X[55,58]=0.459,X[56,58]=0.557,X[57,58]=0.643,X[58,58]=0.522,X[59,58]=0.361,X[60,58]=0.239,X[61,58]=0.165,X[62,58]=0.231,X[63,58]=0.263,X[64,58]=0.196,X[65,58]=0.341,X[66,58]=0.451,X[67,58]=0.376,X[68,58]=0.231,X[69,58]=0.188,X[70,58]=0.486,X[71,58]=0.584,X[72,58]=0.443,X[73,58]=0.427,X[74,58]=0.525,X[75,58]=0.663,X[76,58]=0.749,X[77,58]=0.529,X[78,58]=0.494,X[79,58]=0.502,X[80,58]=0.467,X[81,58]=0.553,X[82,58]=0.475,X[83,58]=0.510,X[84,58]=0.576,X[85,58]=0.588,X[86,58]=0.404,X[87,58]=0.224,X[88,58]=0.192,X[89,58]=0.608,X[90,58]=0.624,X[91,58]=0.443,X[92,58]=0.475,X[93,58]=0.529,X[94,58]=0.753,X[95,58]=0.741,X[96,58]=0.502,X[97,58]=0.522,X[98,58]=0.498,X[99,58]=0.490,X[100,58]=0.302 X[1,59]=0.671,X[2,59]=0.675,X[3,59]=0.725,X[4,59]=0.710,X[5,59]=0.655,X[6,59]=0.424,X[7,59]=0.290,X[8,59]=0.380,X[9,59]=0.282,X[10,59]=0.333,X[11,59]=0.427,X[12,59]=0.416,X[13,59]=0.424,X[14,59]=0.443,X[15,59]=0.431,X[16,59]=0.486,X[17,59]=0.639,X[18,59]=0.620,X[19,59]=0.588,X[20,59]=0.557,X[21,59]=0.482,X[22,59]=0.486,X[23,59]=0.486,X[24,59]=0.502,X[25,59]=0.553,X[26,59]=0.671,X[27,59]=0.792,X[28,59]=0.788,X[29,59]=0.788,X[30,59]=0.710,X[31,59]=0.522,X[32,59]=0.584,X[33,59]=0.514,X[34,59]=0.431,X[35,59]=0.451,X[36,59]=0.455,X[37,59]=0.514,X[38,59]=0.525,X[39,59]=0.490,X[40,59]=0.396,X[41,59]=0.239,X[42,59]=0.325,X[43,59]=0.518,X[44,59]=0.514,X[45,59]=0.478,X[46,59]=0.341,X[47,59]=0.259,X[48,59]=0.192,X[49,59]=0.522,X[50,59]=0.757 X[51,59]=0.608,X[52,59]=0.506,X[53,59]=0.443,X[54,59]=0.482,X[55,59]=0.459,X[56,59]=0.502,X[57,59]=0.529,X[58,59]=0.510,X[59,59]=0.427,X[60,59]=0.247,X[61,59]=0.267,X[62,59]=0.173,X[63,59]=0.275,X[64,59]=0.392,X[65,59]=0.361,X[66,59]=0.702,X[67,59]=0.631,X[68,59]=0.408,X[69,59]=0.224,X[70,59]=0.537,X[71,59]=0.667,X[72,59]=0.451,X[73,59]=0.475,X[74,59]=0.525,X[75,59]=0.671,X[76,59]=0.604,X[77,59]=0.502,X[78,59]=0.573,X[79,59]=0.502,X[80,59]=0.502,X[81,59]=0.525,X[82,59]=0.537,X[83,59]=0.694,X[84,59]=0.827,X[85,59]=0.867,X[86,59]=0.729,X[87,59]=0.502,X[88,59]=0.463,X[89,59]=0.725,X[90,59]=0.675,X[91,59]=0.478,X[92,59]=0.475,X[93,59]=0.525,X[94,59]=0.612,X[95,59]=0.537,X[96,59]=0.502,X[97,59]=0.580,X[98,59]=0.506,X[99,59]=0.533,X[100,59]=0.396 X[1,60]=0.784,X[2,60]=0.765,X[3,60]=0.749,X[4,60]=0.776,X[5,60]=0.812,X[6,60]=0.553,X[7,60]=0.243,X[8,60]=0.263,X[9,60]=0.322,X[10,60]=0.455,X[11,60]=0.447,X[12,60]=0.502,X[13,60]=0.525,X[14,60]=0.596,X[15,60]=0.506,X[16,60]=0.439,X[17,60]=0.569,X[18,60]=0.502,X[19,60]=0.541,X[20,60]=0.518,X[21,60]=0.498,X[22,60]=0.490,X[23,60]=0.498,X[24,60]=0.494,X[25,60]=0.424,X[26,60]=0.318,X[27,60]=0.447,X[28,60]=0.675,X[29,60]=0.780,X[30,60]=0.753,X[31,60]=0.553,X[32,60]=0.506,X[33,60]=0.494,X[34,60]=0.506,X[35,60]=0.471,X[36,60]=0.424,X[37,60]=0.404,X[38,60]=0.467,X[39,60]=0.514,X[40,60]=0.482,X[41,60]=0.341,X[42,60]=0.439,X[43,60]=0.514,X[44,60]=0.553,X[45,60]=0.537,X[46,60]=0.510,X[47,60]=0.373,X[48,60]=0.384,X[49,60]=0.741,X[50,60]=0.827 X[51,60]=0.784,X[52,60]=0.714,X[53,60]=0.494,X[54,60]=0.412,X[55,60]=0.420,X[56,60]=0.447,X[57,60]=0.435,X[58,60]=0.443,X[59,60]=0.514,X[60,60]=0.455,X[61,60]=0.486,X[62,60]=0.345,X[63,60]=0.392,X[64,60]=0.659,X[65,60]=0.690,X[66,60]=0.776,X[67,60]=0.792,X[68,60]=0.584,X[69,60]=0.447,X[70,60]=0.541,X[71,60]=0.671,X[72,60]=0.510,X[73,60]=0.486,X[74,60]=0.498,X[75,60]=0.529,X[76,60]=0.498,X[77,60]=0.498,X[78,60]=0.549,X[79,60]=0.608,X[80,60]=0.776,X[81,60]=0.639,X[82,60]=0.722,X[83,60]=0.753,X[84,60]=0.780,X[85,60]=0.835,X[86,60]=0.796,X[87,60]=0.506,X[88,60]=0.478,X[89,60]=0.565,X[90,60]=0.596,X[91,60]=0.514,X[92,60]=0.478,X[93,60]=0.478,X[94,60]=0.490,X[95,60]=0.475,X[96,60]=0.478,X[97,60]=0.529,X[98,60]=0.651,X[99,60]=0.694,X[100,60]=0.729 X[1,61]=0.580,X[2,61]=0.561,X[3,61]=0.678,X[4,61]=0.914,X[5,61]=0.894,X[6,61]=0.631,X[7,61]=0.490,X[8,61]=0.357,X[9,61]=0.498,X[10,61]=0.604,X[11,61]=0.502,X[12,61]=0.584,X[13,61]=0.588,X[14,61]=0.631,X[15,61]=0.404,X[16,61]=0.380,X[17,61]=0.478,X[18,61]=0.427,X[19,61]=0.482,X[20,61]=0.502,X[21,61]=0.459,X[22,61]=0.486,X[23,61]=0.427,X[24,61]=0.502,X[25,61]=0.510,X[26,61]=0.373,X[27,61]=0.149,X[28,61]=0.255,X[29,61]=0.561,X[30,61]=0.549,X[31,61]=0.596,X[32,61]=0.741,X[33,61]=0.573,X[34,61]=0.706,X[35,61]=0.643,X[36,61]=0.459,X[37,61]=0.427,X[38,61]=0.518,X[39,61]=0.502,X[40,61]=0.463,X[41,61]=0.486,X[42,61]=0.451,X[43,61]=0.498,X[44,61]=0.525,X[45,61]=0.431,X[46,61]=0.412,X[47,61]=0.294,X[48,61]=0.329,X[49,61]=0.722,X[50,61]=0.808 X[51,61]=0.690,X[52,61]=0.608,X[53,61]=0.553,X[54,61]=0.478,X[55,61]=0.494,X[56,61]=0.553,X[57,61]=0.545,X[58,61]=0.451,X[59,61]=0.522,X[60,61]=0.620,X[61,61]=0.765,X[62,61]=0.549,X[63,61]=0.349,X[64,61]=0.349,X[65,61]=0.455,X[66,61]=0.584,X[67,61]=0.737,X[68,61]=0.510,X[69,61]=0.384,X[70,61]=0.494,X[71,61]=0.529,X[72,61]=0.522,X[73,61]=0.455,X[74,61]=0.463,X[75,61]=0.455,X[76,61]=0.455,X[77,61]=0.455,X[78,61]=0.518,X[79,61]=0.788,X[80,61]=0.831,X[81,61]=0.647,X[82,61]=0.537,X[83,61]=0.502,X[84,61]=0.518,X[85,61]=0.608,X[86,61]=0.576,X[87,61]=0.357,X[88,61]=0.357,X[89,61]=0.443,X[90,61]=0.486,X[91,61]=0.498,X[92,61]=0.439,X[93,61]=0.427,X[94,61]=0.404,X[95,61]=0.431,X[96,61]=0.467,X[97,61]=0.624,X[98,61]=0.796,X[99,61]=0.757,X[100,61]=0.722 X[1,62]=0.506,X[2,62]=0.510,X[3,62]=0.592,X[4,62]=0.725,X[5,62]=0.643,X[6,62]=0.557,X[7,62]=0.486,X[8,62]=0.294,X[9,62]=0.392,X[10,62]=0.384,X[11,62]=0.553,X[12,62]=0.424,X[13,62]=0.447,X[14,62]=0.424,X[15,62]=0.337,X[16,62]=0.416,X[17,62]=0.459,X[18,62]=0.408,X[19,62]=0.392,X[20,62]=0.502,X[21,62]=0.494,X[22,62]=0.475,X[23,62]=0.361,X[24,62]=0.569,X[25,62]=0.620,X[26,62]=0.565,X[27,62]=0.231,X[28,62]=0.165,X[29,62]=0.455,X[30,62]=0.541,X[31,62]=0.765,X[32,62]=0.973,X[33,62]=0.694,X[34,62]=0.788,X[35,62]=0.702,X[36,62]=0.729,X[37,62]=0.502,X[38,62]=0.431,X[39,62]=0.502,X[40,62]=0.502,X[41,62]=0.545,X[42,62]=0.451,X[43,62]=0.455,X[44,62]=0.459,X[45,62]=0.412,X[46,62]=0.247,X[47,62]=0.153,X[48,62]=0.255,X[49,62]=0.439,X[50,62]=0.502 X[51,62]=0.710,X[52,62]=0.612,X[53,62]=0.592,X[54,62]=0.510,X[55,62]=0.502,X[56,62]=0.537,X[57,62]=0.486,X[58,62]=0.486,X[59,62]=0.537,X[60,62]=0.710,X[61,62]=0.882,X[62,62]=0.706,X[63,62]=0.369,X[64,62]=0.275,X[65,62]=0.361,X[66,62]=0.400,X[67,62]=0.475,X[68,62]=0.471,X[69,62]=0.337,X[70,62]=0.380,X[71,62]=0.455,X[72,62]=0.510,X[73,62]=0.506,X[74,62]=0.361,X[75,62]=0.318,X[76,62]=0.404,X[77,62]=0.467,X[78,62]=0.518,X[79,62]=0.682,X[80,62]=0.553,X[81,62]=0.482,X[82,62]=0.467,X[83,62]=0.490,X[84,62]=0.549,X[85,62]=0.592,X[86,62]=0.478,X[87,62]=0.427,X[88,62]=0.373,X[89,62]=0.420,X[90,62]=0.502,X[91,62]=0.557,X[92,62]=0.529,X[93,62]=0.306,X[94,62]=0.282,X[95,62]=0.380,X[96,62]=0.529,X[97,62]=0.643,X[98,62]=0.604,X[99,62]=0.506,X[100,62]=0.506 X[1,63]=0.478,X[2,63]=0.420,X[3,63]=0.376,X[4,63]=0.384,X[5,63]=0.447,X[6,63]=0.478,X[7,63]=0.251,X[8,63]=0.165,X[9,63]=0.259,X[10,63]=0.176,X[11,63]=0.400,X[12,63]=0.224,X[13,63]=0.478,X[14,63]=0.431,X[15,63]=0.353,X[16,63]=0.475,X[17,63]=0.565,X[18,63]=0.337,X[19,63]=0.290,X[20,63]=0.490,X[21,63]=0.616,X[22,63]=0.529,X[23,63]=0.314,X[24,63]=0.443,X[25,63]=0.757,X[26,63]=0.855,X[27,63]=0.576,X[28,63]=0.376,X[29,63]=0.412,X[30,63]=0.412,X[31,63]=0.604,X[32,63]=0.714,X[33,63]=0.675,X[34,63]=0.808,X[35,63]=0.878,X[36,63]=0.792,X[37,63]=0.553,X[38,63]=0.557,X[39,63]=0.561,X[40,63]=0.533,X[41,63]=0.557,X[42,63]=0.537,X[43,63]=0.486,X[44,63]=0.510,X[45,63]=0.525,X[46,63]=0.431,X[47,63]=0.180,X[48,63]=0.204,X[49,63]=0.380,X[50,63]=0.447 X[51,63]=0.588,X[52,63]=0.588,X[53,63]=0.427,X[54,63]=0.365,X[55,63]=0.463,X[56,63]=0.533,X[57,63]=0.459,X[58,63]=0.384,X[59,63]=0.310,X[60,63]=0.604,X[61,63]=0.773,X[62,63]=0.765,X[63,63]=0.592,X[64,63]=0.373,X[65,63]=0.325,X[66,63]=0.408,X[67,63]=0.494,X[68,63]=0.506,X[69,63]=0.494,X[70,63]=0.482,X[71,63]=0.612,X[72,63]=0.584,X[73,63]=0.549,X[74,63]=0.333,X[75,63]=0.267,X[76,63]=0.376,X[77,63]=0.471,X[78,63]=0.475,X[79,63]=0.522,X[80,63]=0.498,X[81,63]=0.471,X[82,63]=0.502,X[83,63]=0.533,X[84,63]=0.612,X[85,63]=0.651,X[86,63]=0.412,X[87,63]=0.459,X[88,63]=0.608,X[89,63]=0.576,X[90,63]=0.663,X[91,63]=0.612,X[92,63]=0.525,X[93,63]=0.333,X[94,63]=0.286,X[95,63]=0.380,X[96,63]=0.463,X[97,63]=0.490,X[98,63]=0.529,X[99,63]=0.506,X[100,63]=0.486 X[1,64]=0.157,X[2,64]=0.224,X[3,64]=0.333,X[4,64]=0.463,X[5,64]=0.486,X[6,64]=0.498,X[7,64]=0.380,X[8,64]=0.322,X[9,64]=0.184,X[10,64]=0.271,X[11,64]=0.282,X[12,64]=0.337,X[13,64]=0.349,X[14,64]=0.388,X[15,64]=0.412,X[16,64]=0.537,X[17,64]=0.725,X[18,64]=0.408,X[19,64]=0.278,X[20,64]=0.447,X[21,64]=0.675,X[22,64]=0.612,X[23,64]=0.404,X[24,64]=0.200,X[25,64]=0.514,X[26,64]=0.671,X[27,64]=0.553,X[28,64]=0.459,X[29,64]=0.263,X[30,64]=0.271,X[31,64]=0.647,X[32,64]=0.569,X[33,64]=0.667,X[34,64]=0.671,X[35,64]=0.796,X[36,64]=0.780,X[37,64]=0.843,X[38,64]=0.698,X[39,64]=0.482,X[40,64]=0.455,X[41,64]=0.506,X[42,64]=0.580,X[43,64]=0.522,X[44,64]=0.541,X[45,64]=0.549,X[46,64]=0.502,X[47,64]=0.318,X[48,64]=0.325,X[49,64]=0.318,X[50,64]=0.439 X[51,64]=0.435,X[52,64]=0.514,X[53,64]=0.529,X[54,64]=0.420,X[55,64]=0.494,X[56,64]=0.529,X[57,64]=0.463,X[58,64]=0.310,X[59,64]=0.157,X[60,64]=0.318,X[61,64]=0.655,X[62,64]=0.757,X[63,64]=0.663,X[64,64]=0.416,X[65,64]=0.259,X[66,64]=0.478,X[67,64]=0.569,X[68,64]=0.580,X[69,64]=0.631,X[70,64]=0.576,X[71,64]=0.624,X[72,64]=0.702,X[73,64]=0.635,X[74,64]=0.459,X[75,64]=0.325,X[76,64]=0.380,X[77,64]=0.459,X[78,64]=0.506,X[79,64]=0.561,X[80,64]=0.553,X[81,64]=0.467,X[82,64]=0.439,X[83,64]=0.482,X[84,64]=0.529,X[85,64]=0.459,X[86,64]=0.424,X[87,64]=0.467,X[88,64]=0.553,X[89,64]=0.522,X[90,64]=0.588,X[91,64]=0.737,X[92,64]=0.690,X[93,64]=0.529,X[94,64]=0.396,X[95,64]=0.427,X[96,64]=0.494,X[97,64]=0.506,X[98,64]=0.573,X[99,64]=0.565,X[100,64]=0.471 X[1,65]=0.569,X[2,65]=0.776,X[3,65]=0.749,X[4,65]=0.620,X[5,65]=0.514,X[6,65]=0.431,X[7,65]=0.447,X[8,65]=0.486,X[9,65]=0.259,X[10,65]=0.392,X[11,65]=0.290,X[12,65]=0.333,X[13,65]=0.255,X[14,65]=0.267,X[15,65]=0.392,X[16,65]=0.659,X[17,65]=0.749,X[18,65]=0.553,X[19,65]=0.345,X[20,65]=0.365,X[21,65]=0.655,X[22,65]=0.718,X[23,65]=0.537,X[24,65]=0.173,X[25,65]=0.314,X[26,65]=0.514,X[27,65]=0.486,X[28,65]=0.510,X[29,65]=0.455,X[30,65]=0.169,X[31,65]=0.498,X[32,65]=0.435,X[33,65]=0.263,X[34,65]=0.537,X[35,65]=0.875,X[36,65]=0.816,X[37,65]=0.733,X[38,65]=0.565,X[39,65]=0.412,X[40,65]=0.431,X[41,65]=0.506,X[42,65]=0.482,X[43,65]=0.529,X[44,65]=0.557,X[45,65]=0.600,X[46,65]=0.596,X[47,65]=0.482,X[48,65]=0.424,X[49,65]=0.325,X[50,65]=0.396 X[51,65]=0.510,X[52,65]=0.588,X[53,65]=0.576,X[54,65]=0.529,X[55,65]=0.584,X[56,65]=0.612,X[57,65]=0.588,X[58,65]=0.380,X[59,65]=0.231,X[60,65]=0.212,X[61,65]=0.459,X[62,65]=0.690,X[63,65]=0.741,X[64,65]=0.486,X[65,65]=0.376,X[66,65]=0.471,X[67,65]=0.463,X[68,65]=0.431,X[69,65]=0.400,X[70,65]=0.439,X[71,65]=0.502,X[72,65]=0.667,X[73,65]=0.765,X[74,65]=0.639,X[75,65]=0.467,X[76,65]=0.435,X[77,65]=0.498,X[78,65]=0.506,X[79,65]=0.533,X[80,65]=0.553,X[81,65]=0.463,X[82,65]=0.333,X[83,65]=0.420,X[84,65]=0.620,X[85,65]=0.471,X[86,65]=0.337,X[87,65]=0.349,X[88,65]=0.353,X[89,65]=0.420,X[90,65]=0.522,X[91,65]=0.667,X[92,65]=0.796,X[93,65]=0.651,X[94,65]=0.514,X[95,65]=0.463,X[96,65]=0.490,X[97,65]=0.506,X[98,65]=0.525,X[99,65]=0.541,X[100,65]=0.522 X[1,66]=0.839,X[2,66]=0.835,X[3,66]=0.843,X[4,66]=0.792,X[5,66]=0.635,X[6,66]=0.529,X[7,66]=0.471,X[8,66]=0.455,X[9,66]=0.427,X[10,66]=0.463,X[11,66]=0.424,X[12,66]=0.412,X[13,66]=0.310,X[14,66]=0.188,X[15,66]=0.290,X[16,66]=0.588,X[17,66]=0.698,X[18,66]=0.612,X[19,66]=0.353,X[20,66]=0.243,X[21,66]=0.549,X[22,66]=0.863,X[23,66]=0.749,X[24,66]=0.478,X[25,66]=0.416,X[26,66]=0.561,X[27,66]=0.745,X[28,66]=0.612,X[29,66]=0.459,X[30,66]=0.341,X[31,66]=0.435,X[32,66]=0.373,X[33,66]=0.341,X[34,66]=0.584,X[35,66]=0.604,X[36,66]=0.671,X[37,66]=0.753,X[38,66]=0.588,X[39,66]=0.475,X[40,66]=0.431,X[41,66]=0.478,X[42,66]=0.482,X[43,66]=0.502,X[44,66]=0.463,X[45,66]=0.522,X[46,66]=0.502,X[47,66]=0.471,X[48,66]=0.439,X[49,66]=0.478,X[50,66]=0.443 X[51,66]=0.443,X[52,66]=0.576,X[53,66]=0.518,X[54,66]=0.506,X[55,66]=0.565,X[56,66]=0.612,X[57,66]=0.529,X[58,66]=0.349,X[59,66]=0.212,X[60,66]=0.192,X[61,66]=0.349,X[62,66]=0.643,X[63,66]=0.820,X[64,66]=0.455,X[65,66]=0.459,X[66,66]=0.416,X[67,66]=0.400,X[68,66]=0.404,X[69,66]=0.322,X[70,66]=0.380,X[71,66]=0.463,X[72,66]=0.596,X[73,66]=0.780,X[74,66]=0.663,X[75,66]=0.549,X[76,66]=0.486,X[77,66]=0.459,X[78,66]=0.498,X[79,66]=0.502,X[80,66]=0.498,X[81,66]=0.431,X[82,66]=0.482,X[83,66]=0.620,X[84,66]=0.635,X[85,66]=0.529,X[86,66]=0.384,X[87,66]=0.365,X[88,66]=0.365,X[89,66]=0.396,X[90,66]=0.467,X[91,66]=0.608,X[92,66]=0.725,X[93,66]=0.604,X[94,66]=0.557,X[95,66]=0.502,X[96,66]=0.451,X[97,66]=0.482,X[98,66]=0.494,X[99,66]=0.592,X[100,66]=0.600 X[1,67]=0.569,X[2,67]=0.710,X[3,67]=0.871,X[4,67]=0.973,X[5,67]=0.859,X[6,67]=0.635,X[7,67]=0.525,X[8,67]=0.451,X[9,67]=0.408,X[10,67]=0.486,X[11,67]=0.518,X[12,67]=0.478,X[13,67]=0.259,X[14,67]=0.129,X[15,67]=0.196,X[16,67]=0.388,X[17,67]=0.631,X[18,67]=0.655,X[19,67]=0.376,X[20,67]=0.310,X[21,67]=0.447,X[22,67]=0.784,X[23,67]=0.827,X[24,67]=0.565,X[25,67]=0.506,X[26,67]=0.596,X[27,67]=0.718,X[28,67]=0.757,X[29,67]=0.475,X[30,67]=0.490,X[31,67]=0.663,X[32,67]=0.533,X[33,67]=0.471,X[34,67]=0.541,X[35,67]=0.655,X[36,67]=0.643,X[37,67]=0.686,X[38,67]=0.588,X[39,67]=0.510,X[40,67]=0.490,X[41,67]=0.471,X[42,67]=0.443,X[43,67]=0.392,X[44,67]=0.424,X[45,67]=0.506,X[46,67]=0.557,X[47,67]=0.533,X[48,67]=0.502,X[49,67]=0.518,X[50,67]=0.475 X[51,67]=0.416,X[52,67]=0.467,X[53,67]=0.447,X[54,67]=0.416,X[55,67]=0.424,X[56,67]=0.490,X[57,67]=0.522,X[58,67]=0.404,X[59,67]=0.224,X[60,67]=0.176,X[61,67]=0.267,X[62,67]=0.576,X[63,67]=0.643,X[64,67]=0.463,X[65,67]=0.494,X[66,67]=0.494,X[67,67]=0.510,X[68,67]=0.510,X[69,67]=0.439,X[70,67]=0.463,X[71,67]=0.471,X[72,67]=0.561,X[73,67]=0.639,X[74,67]=0.576,X[75,67]=0.576,X[76,67]=0.522,X[77,67]=0.482,X[78,67]=0.502,X[79,67]=0.475,X[80,67]=0.486,X[81,67]=0.408,X[82,67]=0.502,X[83,67]=0.627,X[84,67]=0.600,X[85,67]=0.600,X[86,67]=0.561,X[87,67]=0.490,X[88,67]=0.494,X[89,67]=0.475,X[90,67]=0.435,X[91,67]=0.561,X[92,67]=0.569,X[93,67]=0.529,X[94,67]=0.573,X[95,67]=0.494,X[96,67]=0.478,X[97,67]=0.502,X[98,67]=0.486,X[99,67]=0.498,X[100,67]=0.502 X[1,68]=0.282,X[2,68]=0.337,X[3,68]=0.557,X[4,68]=0.698,X[5,68]=0.624,X[6,68]=0.722,X[7,68]=0.592,X[8,68]=0.431,X[9,68]=0.478,X[10,68]=0.490,X[11,68]=0.518,X[12,68]=0.502,X[13,68]=0.275,X[14,68]=0.220,X[15,68]=0.227,X[16,68]=0.282,X[17,68]=0.608,X[18,68]=0.733,X[19,68]=0.420,X[20,68]=0.357,X[21,68]=0.478,X[22,68]=0.706,X[23,68]=0.863,X[24,68]=0.592,X[25,68]=0.502,X[26,68]=0.463,X[27,68]=0.490,X[28,68]=0.659,X[29,68]=0.388,X[30,68]=0.220,X[31,68]=0.514,X[32,68]=0.510,X[33,68]=0.341,X[34,68]=0.420,X[35,68]=0.545,X[36,68]=0.812,X[37,68]=0.557,X[38,68]=0.518,X[39,68]=0.557,X[40,68]=0.549,X[41,68]=0.514,X[42,68]=0.455,X[43,68]=0.420,X[44,68]=0.545,X[45,68]=0.533,X[46,68]=0.529,X[47,68]=0.541,X[48,68]=0.486,X[49,68]=0.482,X[50,68]=0.475 X[51,68]=0.478,X[52,68]=0.451,X[53,68]=0.408,X[54,68]=0.380,X[55,68]=0.475,X[56,68]=0.529,X[57,68]=0.667,X[58,68]=0.643,X[59,68]=0.435,X[60,68]=0.224,X[61,68]=0.196,X[62,68]=0.643,X[63,68]=0.565,X[64,68]=0.498,X[65,68]=0.506,X[66,68]=0.490,X[67,68]=0.557,X[68,68]=0.569,X[69,68]=0.537,X[70,68]=0.545,X[71,68]=0.412,X[72,68]=0.498,X[73,68]=0.545,X[74,68]=0.490,X[75,68]=0.545,X[76,68]=0.478,X[77,68]=0.502,X[78,68]=0.482,X[79,68]=0.502,X[80,68]=0.486,X[81,68]=0.427,X[82,68]=0.420,X[83,68]=0.416,X[84,68]=0.514,X[85,68]=0.573,X[86,68]=0.486,X[87,68]=0.373,X[88,68]=0.431,X[89,68]=0.424,X[90,68]=0.365,X[91,68]=0.502,X[92,68]=0.510,X[93,68]=0.471,X[94,68]=0.506,X[95,68]=0.455,X[96,68]=0.514,X[97,68]=0.506,X[98,68]=0.502,X[99,68]=0.490,X[100,68]=0.518 X[1,69]=0.114,X[2,69]=0.043,X[3,69]=0.157,X[4,69]=0.435,X[5,69]=0.580,X[6,69]=0.776,X[7,69]=0.682,X[8,69]=0.576,X[9,69]=0.514,X[10,69]=0.518,X[11,69]=0.553,X[12,69]=0.580,X[13,69]=0.553,X[14,69]=0.396,X[15,69]=0.220,X[16,69]=0.204,X[17,69]=0.588,X[18,69]=0.651,X[19,69]=0.455,X[20,69]=0.424,X[21,69]=0.525,X[22,69]=0.788,X[23,69]=0.824,X[24,69]=0.541,X[25,69]=0.494,X[26,69]=0.490,X[27,69]=0.490,X[28,69]=0.455,X[29,69]=0.243,X[30,69]=0.125,X[31,69]=0.247,X[32,69]=0.271,X[33,69]=0.227,X[34,69]=0.529,X[35,69]=0.376,X[36,69]=0.675,X[37,69]=0.639,X[38,69]=0.522,X[39,69]=0.475,X[40,69]=0.529,X[41,69]=0.584,X[42,69]=0.561,X[43,69]=0.533,X[44,69]=0.498,X[45,69]=0.478,X[46,69]=0.502,X[47,69]=0.490,X[48,69]=0.455,X[49,69]=0.518,X[50,69]=0.490 X[51,69]=0.510,X[52,69]=0.467,X[53,69]=0.427,X[54,69]=0.420,X[55,69]=0.482,X[56,69]=0.663,X[57,69]=0.812,X[58,69]=0.839,X[59,69]=0.718,X[60,69]=0.525,X[61,69]=0.365,X[62,69]=0.620,X[63,69]=0.635,X[64,69]=0.522,X[65,69]=0.514,X[66,69]=0.502,X[67,69]=0.573,X[68,69]=0.533,X[69,69]=0.549,X[70,69]=0.498,X[71,69]=0.349,X[72,69]=0.447,X[73,69]=0.443,X[74,69]=0.439,X[75,69]=0.506,X[76,69]=0.463,X[77,69]=0.494,X[78,69]=0.451,X[79,69]=0.463,X[80,69]=0.498,X[81,69]=0.506,X[82,69]=0.306,X[83,69]=0.122,X[84,69]=0.224,X[85,69]=0.302,X[86,69]=0.235,X[87,69]=0.224,X[88,69]=0.329,X[89,69]=0.384,X[90,69]=0.365,X[91,69]=0.475,X[92,69]=0.486,X[93,69]=0.478,X[94,69]=0.545,X[95,69]=0.471,X[96,69]=0.490,X[97,69]=0.541,X[98,69]=0.486,X[99,69]=0.475,X[100,69]=0.545 X[1,70]=0.404,X[2,70]=0.388,X[3,70]=0.502,X[4,70]=0.443,X[5,70]=0.639,X[6,70]=0.886,X[7,70]=0.843,X[8,70]=0.776,X[9,70]=0.588,X[10,70]=0.478,X[11,70]=0.608,X[12,70]=0.706,X[13,70]=0.757,X[14,70]=0.604,X[15,70]=0.369,X[16,70]=0.247,X[17,70]=0.631,X[18,70]=0.639,X[19,70]=0.455,X[20,70]=0.486,X[21,70]=0.549,X[22,70]=0.718,X[23,70]=0.600,X[24,70]=0.502,X[25,70]=0.565,X[26,70]=0.490,X[27,70]=0.588,X[28,70]=0.651,X[29,70]=0.435,X[30,70]=0.314,X[31,70]=0.416,X[32,70]=0.314,X[33,70]=0.224,X[34,70]=0.243,X[35,70]=0.502,X[36,70]=0.486,X[37,70]=0.459,X[38,70]=0.471,X[39,70]=0.525,X[40,70]=0.580,X[41,70]=0.549,X[42,70]=0.518,X[43,70]=0.475,X[44,70]=0.482,X[45,70]=0.427,X[46,70]=0.486,X[47,70]=0.569,X[48,70]=0.506,X[49,70]=0.486,X[50,70]=0.557 X[51,70]=0.525,X[52,70]=0.498,X[53,70]=0.443,X[54,70]=0.451,X[55,70]=0.388,X[56,70]=0.490,X[57,70]=0.604,X[58,70]=0.761,X[59,70]=0.776,X[60,70]=0.490,X[61,70]=0.459,X[62,70]=0.545,X[63,70]=0.588,X[64,70]=0.549,X[65,70]=0.506,X[66,70]=0.478,X[67,70]=0.510,X[68,70]=0.486,X[69,70]=0.514,X[70,70]=0.427,X[71,70]=0.376,X[72,70]=0.486,X[73,70]=0.412,X[74,70]=0.455,X[75,70]=0.463,X[76,70]=0.510,X[77,70]=0.502,X[78,70]=0.514,X[79,70]=0.459,X[80,70]=0.537,X[81,70]=0.631,X[82,70]=0.482,X[83,70]=0.267,X[84,70]=0.435,X[85,70]=0.596,X[86,70]=0.486,X[87,70]=0.322,X[88,70]=0.376,X[89,70]=0.557,X[90,70]=0.459,X[91,70]=0.490,X[92,70]=0.529,X[93,70]=0.490,X[94,70]=0.533,X[95,70]=0.510,X[96,70]=0.537,X[97,70]=0.580,X[98,70]=0.463,X[99,70]=0.600,X[100,70]=0.725 X[1,71]=0.824,X[2,71]=0.722,X[3,71]=0.706,X[4,71]=0.549,X[5,71]=0.596,X[6,71]=0.631,X[7,71]=0.718,X[8,71]=0.631,X[9,71]=0.486,X[10,71]=0.416,X[11,71]=0.506,X[12,71]=0.631,X[13,71]=0.773,X[14,71]=0.769,X[15,71]=0.561,X[16,71]=0.447,X[17,71]=0.565,X[18,71]=0.608,X[19,71]=0.502,X[20,71]=0.455,X[21,71]=0.502,X[22,71]=0.525,X[23,71]=0.498,X[24,71]=0.494,X[25,71]=0.522,X[26,71]=0.596,X[27,71]=0.749,X[28,71]=0.776,X[29,71]=0.671,X[30,71]=0.663,X[31,71]=0.678,X[32,71]=0.549,X[33,71]=0.620,X[34,71]=0.286,X[35,71]=0.392,X[36,71]=0.514,X[37,71]=0.553,X[38,71]=0.580,X[39,71]=0.694,X[40,71]=0.714,X[41,71]=0.518,X[42,71]=0.482,X[43,71]=0.518,X[44,71]=0.494,X[45,71]=0.565,X[46,71]=0.604,X[47,71]=0.490,X[48,71]=0.514,X[49,71]=0.525,X[50,71]=0.600 X[51,71]=0.616,X[52,71]=0.580,X[53,71]=0.490,X[54,71]=0.369,X[55,71]=0.251,X[56,71]=0.220,X[57,71]=0.302,X[58,71]=0.420,X[59,71]=0.565,X[60,71]=0.404,X[61,71]=0.357,X[62,71]=0.478,X[63,71]=0.529,X[64,71]=0.537,X[65,71]=0.467,X[66,71]=0.345,X[67,71]=0.302,X[68,71]=0.404,X[69,71]=0.561,X[70,71]=0.498,X[71,71]=0.459,X[72,71]=0.588,X[73,71]=0.518,X[74,71]=0.451,X[75,71]=0.416,X[76,71]=0.529,X[77,71]=0.604,X[78,71]=0.486,X[79,71]=0.255,X[80,71]=0.573,X[81,71]=0.820,X[82,71]=0.608,X[83,71]=0.580,X[84,71]=0.710,X[85,71]=0.761,X[86,71]=0.659,X[87,71]=0.510,X[88,71]=0.494,X[89,71]=0.490,X[90,71]=0.518,X[91,71]=0.525,X[92,71]=0.498,X[93,71]=0.478,X[94,71]=0.510,X[95,71]=0.490,X[96,71]=0.545,X[97,71]=0.573,X[98,71]=0.463,X[99,71]=0.647,X[100,71]=0.675 X[1,72]=0.722,X[2,72]=0.667,X[3,72]=0.631,X[4,72]=0.529,X[5,72]=0.384,X[6,72]=0.259,X[7,72]=0.408,X[8,72]=0.565,X[9,72]=0.408,X[10,72]=0.286,X[11,72]=0.290,X[12,72]=0.443,X[13,72]=0.612,X[14,72]=0.702,X[15,72]=0.439,X[16,72]=0.369,X[17,72]=0.478,X[18,72]=0.471,X[19,72]=0.502,X[20,72]=0.435,X[21,72]=0.361,X[22,72]=0.373,X[23,72]=0.416,X[24,72]=0.451,X[25,72]=0.529,X[26,72]=0.651,X[27,72]=0.686,X[28,72]=0.647,X[29,72]=0.635,X[30,72]=0.776,X[31,72]=0.890,X[32,72]=0.718,X[33,72]=0.616,X[34,72]=0.553,X[35,72]=0.490,X[36,72]=0.510,X[37,72]=0.494,X[38,72]=0.557,X[39,72]=0.706,X[40,72]=0.776,X[41,72]=0.780,X[42,72]=0.541,X[43,72]=0.498,X[44,72]=0.549,X[45,72]=0.761,X[46,72]=0.784,X[47,72]=0.573,X[48,72]=0.467,X[49,72]=0.541,X[50,72]=0.604 X[51,72]=0.643,X[52,72]=0.553,X[53,72]=0.463,X[54,72]=0.357,X[55,72]=0.306,X[56,72]=0.239,X[57,72]=0.220,X[58,72]=0.231,X[59,72]=0.267,X[60,72]=0.396,X[61,72]=0.506,X[62,72]=0.549,X[63,72]=0.596,X[64,72]=0.545,X[65,72]=0.443,X[66,72]=0.278,X[67,72]=0.243,X[68,72]=0.408,X[69,72]=0.537,X[70,72]=0.537,X[71,72]=0.533,X[72,72]=0.549,X[73,72]=0.561,X[74,72]=0.549,X[75,72]=0.404,X[76,72]=0.424,X[77,72]=0.627,X[78,72]=0.502,X[79,72]=0.176,X[80,72]=0.278,X[81,72]=0.510,X[82,72]=0.337,X[83,72]=0.361,X[84,72]=0.522,X[85,72]=0.651,X[86,72]=0.612,X[87,72]=0.361,X[88,72]=0.400,X[89,72]=0.408,X[90,72]=0.459,X[91,72]=0.533,X[92,72]=0.408,X[93,72]=0.396,X[94,72]=0.380,X[95,72]=0.427,X[96,72]=0.510,X[97,72]=0.569,X[98,72]=0.455,X[99,72]=0.525,X[100,72]=0.502 X[1,73]=0.553,X[2,73]=0.569,X[3,73]=0.592,X[4,73]=0.447,X[5,73]=0.341,X[6,73]=0.361,X[7,73]=0.431,X[8,73]=0.475,X[9,73]=0.373,X[10,73]=0.259,X[11,73]=0.239,X[12,73]=0.235,X[13,73]=0.275,X[14,73]=0.369,X[15,73]=0.412,X[16,73]=0.420,X[17,73]=0.482,X[18,73]=0.569,X[19,73]=0.549,X[20,73]=0.506,X[21,73]=0.294,X[22,73]=0.259,X[23,73]=0.392,X[24,73]=0.518,X[25,73]=0.533,X[26,73]=0.529,X[27,73]=0.506,X[28,73]=0.486,X[29,73]=0.490,X[30,73]=0.561,X[31,73]=0.627,X[32,73]=0.514,X[33,73]=0.475,X[34,73]=0.510,X[35,73]=0.467,X[36,73]=0.388,X[37,73]=0.298,X[38,73]=0.318,X[39,73]=0.624,X[40,73]=0.796,X[41,73]=0.863,X[42,73]=0.643,X[43,73]=0.376,X[44,73]=0.506,X[45,73]=0.839,X[46,73]=0.835,X[47,73]=0.655,X[48,73]=0.463,X[49,73]=0.443,X[50,73]=0.510 X[51,73]=0.686,X[52,73]=0.675,X[53,73]=0.541,X[54,73]=0.490,X[55,73]=0.388,X[56,73]=0.290,X[57,73]=0.290,X[58,73]=0.310,X[59,73]=0.271,X[60,73]=0.424,X[61,73]=0.549,X[62,73]=0.529,X[63,73]=0.608,X[64,73]=0.698,X[65,73]=0.627,X[66,73]=0.471,X[67,73]=0.384,X[68,73]=0.475,X[69,73]=0.514,X[70,73]=0.471,X[71,73]=0.541,X[72,73]=0.576,X[73,73]=0.557,X[74,73]=0.608,X[75,73]=0.451,X[76,73]=0.412,X[77,73]=0.788,X[78,73]=0.596,X[79,73]=0.227,X[80,73]=0.314,X[81,73]=0.306,X[82,73]=0.263,X[83,73]=0.227,X[84,73]=0.282,X[85,73]=0.353,X[86,73]=0.400,X[87,73]=0.447,X[88,73]=0.424,X[89,73]=0.518,X[90,73]=0.553,X[91,73]=0.576,X[92,73]=0.431,X[93,73]=0.259,X[94,73]=0.275,X[95,73]=0.427,X[96,73]=0.537,X[97,73]=0.541,X[98,73]=0.506,X[99,73]=0.471,X[100,73]=0.482 X[1,74]=0.259,X[2,74]=0.259,X[3,74]=0.306,X[4,74]=0.396,X[5,74]=0.471,X[6,74]=0.427,X[7,74]=0.478,X[8,74]=0.478,X[9,74]=0.388,X[10,74]=0.322,X[11,74]=0.251,X[12,74]=0.200,X[13,74]=0.204,X[14,74]=0.200,X[15,74]=0.400,X[16,74]=0.651,X[17,74]=0.573,X[18,74]=0.663,X[19,74]=0.659,X[20,74]=0.565,X[21,74]=0.380,X[22,74]=0.314,X[23,74]=0.380,X[24,74]=0.467,X[25,74]=0.514,X[26,74]=0.557,X[27,74]=0.522,X[28,74]=0.427,X[29,74]=0.349,X[30,74]=0.318,X[31,74]=0.380,X[32,74]=0.412,X[33,74]=0.478,X[34,74]=0.439,X[35,74]=0.396,X[36,74]=0.306,X[37,74]=0.255,X[38,74]=0.180,X[39,74]=0.431,X[40,74]=0.773,X[41,74]=0.875,X[42,74]=0.682,X[43,74]=0.212,X[44,74]=0.396,X[45,74]=0.753,X[46,74]=0.847,X[47,74]=0.675,X[48,74]=0.443,X[49,74]=0.475,X[50,74]=0.702 X[51,74]=0.867,X[52,74]=0.867,X[53,74]=0.682,X[54,74]=0.518,X[55,74]=0.537,X[56,74]=0.459,X[57,74]=0.525,X[58,74]=0.518,X[59,74]=0.349,X[60,74]=0.357,X[61,74]=0.373,X[62,74]=0.435,X[63,74]=0.541,X[64,74]=0.706,X[65,74]=0.792,X[66,74]=0.647,X[67,74]=0.518,X[68,74]=0.463,X[69,74]=0.514,X[70,74]=0.463,X[71,74]=0.510,X[72,74]=0.514,X[73,74]=0.604,X[74,74]=0.584,X[75,74]=0.486,X[76,74]=0.431,X[77,74]=0.765,X[78,74]=0.694,X[79,74]=0.408,X[80,74]=0.463,X[81,74]=0.392,X[82,74]=0.294,X[83,74]=0.235,X[84,74]=0.212,X[85,74]=0.243,X[86,74]=0.259,X[87,74]=0.573,X[88,74]=0.604,X[89,74]=0.592,X[90,74]=0.686,X[91,74]=0.616,X[92,74]=0.529,X[93,74]=0.333,X[94,74]=0.322,X[95,74]=0.408,X[96,74]=0.478,X[97,74]=0.533,X[98,74]=0.569,X[99,74]=0.494,X[100,74]=0.463 X[1,75]=0.224,X[2,75]=0.435,X[3,75]=0.447,X[4,75]=0.447,X[5,75]=0.529,X[6,75]=0.494,X[7,75]=0.525,X[8,75]=0.549,X[9,75]=0.498,X[10,75]=0.486,X[11,75]=0.408,X[12,75]=0.400,X[13,75]=0.388,X[14,75]=0.349,X[15,75]=0.408,X[16,75]=0.475,X[17,75]=0.475,X[18,75]=0.549,X[19,75]=0.718,X[20,75]=0.733,X[21,75]=0.561,X[22,75]=0.420,X[23,75]=0.435,X[24,75]=0.502,X[25,75]=0.506,X[26,75]=0.557,X[27,75]=0.561,X[28,75]=0.439,X[29,75]=0.443,X[30,75]=0.553,X[31,75]=0.506,X[32,75]=0.443,X[33,75]=0.459,X[34,75]=0.486,X[35,75]=0.435,X[36,75]=0.337,X[37,75]=0.263,X[38,75]=0.224,X[39,75]=0.322,X[40,75]=0.635,X[41,75]=0.867,X[42,75]=0.678,X[43,75]=0.427,X[44,75]=0.471,X[45,75]=0.620,X[46,75]=0.831,X[47,75]=0.608,X[48,75]=0.459,X[49,75]=0.533,X[50,75]=0.659 X[51,75]=0.792,X[52,75]=0.831,X[53,75]=0.620,X[54,75]=0.471,X[55,75]=0.482,X[56,75]=0.514,X[57,75]=0.604,X[58,75]=0.502,X[59,75]=0.353,X[60,75]=0.365,X[61,75]=0.365,X[62,75]=0.412,X[63,75]=0.478,X[64,75]=0.624,X[65,75]=0.702,X[66,75]=0.604,X[67,75]=0.573,X[68,75]=0.494,X[69,75]=0.471,X[70,75]=0.486,X[71,75]=0.506,X[72,75]=0.424,X[73,75]=0.533,X[74,75]=0.620,X[75,75]=0.463,X[76,75]=0.506,X[77,75]=0.741,X[78,75]=0.639,X[79,75]=0.533,X[80,75]=0.498,X[81,75]=0.490,X[82,75]=0.467,X[83,75]=0.408,X[84,75]=0.420,X[85,75]=0.420,X[86,75]=0.369,X[87,75]=0.443,X[88,75]=0.459,X[89,75]=0.482,X[90,75]=0.604,X[91,75]=0.761,X[92,75]=0.698,X[93,75]=0.506,X[94,75]=0.431,X[95,75]=0.463,X[96,75]=0.502,X[97,75]=0.514,X[98,75]=0.565,X[99,75]=0.537,X[100,75]=0.435 X[1,76]=0.792,X[2,76]=0.863,X[3,76]=0.737,X[4,76]=0.596,X[5,76]=0.553,X[6,76]=0.561,X[7,76]=0.616,X[8,76]=0.576,X[9,76]=0.608,X[10,76]=0.612,X[11,76]=0.600,X[12,76]=0.671,X[13,76]=0.565,X[14,76]=0.337,X[15,76]=0.341,X[16,76]=0.333,X[17,76]=0.412,X[18,76]=0.502,X[19,76]=0.647,X[20,76]=0.792,X[21,76]=0.659,X[22,76]=0.525,X[23,76]=0.459,X[24,76]=0.478,X[25,76]=0.502,X[26,76]=0.522,X[27,76]=0.557,X[28,76]=0.675,X[29,76]=0.820,X[30,76]=0.886,X[31,76]=0.702,X[32,76]=0.537,X[33,76]=0.510,X[34,76]=0.553,X[35,76]=0.549,X[36,76]=0.482,X[37,76]=0.329,X[38,76]=0.267,X[39,76]=0.310,X[40,76]=0.522,X[41,76]=0.784,X[42,76]=0.608,X[43,76]=0.545,X[44,76]=0.502,X[45,76]=0.612,X[46,76]=0.831,X[47,76]=0.584,X[48,76]=0.486,X[49,76]=0.475,X[50,76]=0.451 X[51,76]=0.643,X[52,76]=0.698,X[53,76]=0.435,X[54,76]=0.463,X[55,76]=0.412,X[56,76]=0.337,X[57,76]=0.376,X[58,76]=0.439,X[59,76]=0.475,X[60,76]=0.482,X[61,76]=0.463,X[62,76]=0.388,X[63,76]=0.322,X[64,76]=0.549,X[65,76]=0.565,X[66,76]=0.541,X[67,76]=0.549,X[68,76]=0.514,X[69,76]=0.486,X[70,76]=0.502,X[71,76]=0.486,X[72,76]=0.431,X[73,76]=0.380,X[74,76]=0.557,X[75,76]=0.529,X[76,76]=0.635,X[77,76]=0.878,X[78,76]=0.812,X[79,76]=0.624,X[80,76]=0.533,X[81,76]=0.533,X[82,76]=0.518,X[83,76]=0.533,X[84,76]=0.678,X[85,76]=0.486,X[86,76]=0.337,X[87,76]=0.341,X[88,76]=0.345,X[89,76]=0.447,X[90,76]=0.518,X[91,76]=0.722,X[92,76]=0.761,X[93,76]=0.604,X[94,76]=0.522,X[95,76]=0.451,X[96,76]=0.498,X[97,76]=0.498,X[98,76]=0.529,X[99,76]=0.576,X[100,76]=0.561 X[1,77]=0.847,X[2,77]=0.859,X[3,77]=0.855,X[4,77]=0.875,X[5,77]=0.678,X[6,77]=0.584,X[7,77]=0.545,X[8,77]=0.455,X[9,77]=0.533,X[10,77]=0.533,X[11,77]=0.514,X[12,77]=0.486,X[13,77]=0.463,X[14,77]=0.412,X[15,77]=0.408,X[16,77]=0.416,X[17,77]=0.435,X[18,77]=0.447,X[19,77]=0.588,X[20,77]=0.667,X[21,77]=0.588,X[22,77]=0.569,X[23,77]=0.510,X[24,77]=0.478,X[25,77]=0.475,X[26,77]=0.475,X[27,77]=0.573,X[28,77]=0.702,X[29,77]=0.788,X[30,77]=0.859,X[31,77]=0.894,X[32,77]=0.769,X[33,77]=0.608,X[34,77]=0.553,X[35,77]=0.522,X[36,77]=0.549,X[37,77]=0.420,X[38,77]=0.329,X[39,77]=0.259,X[40,77]=0.459,X[41,77]=0.569,X[42,77]=0.459,X[43,77]=0.482,X[44,77]=0.514,X[45,77]=0.702,X[46,77]=0.827,X[47,77]=0.549,X[48,77]=0.494,X[49,77]=0.498,X[50,77]=0.459 X[51,77]=0.647,X[52,77]=0.569,X[53,77]=0.478,X[54,77]=0.431,X[55,77]=0.349,X[56,77]=0.267,X[57,77]=0.282,X[58,77]=0.333,X[59,77]=0.396,X[60,77]=0.404,X[61,77]=0.447,X[62,77]=0.231,X[63,77]=0.243,X[64,77]=0.518,X[65,77]=0.490,X[66,77]=0.475,X[67,77]=0.522,X[68,77]=0.471,X[69,77]=0.498,X[70,77]=0.455,X[71,77]=0.494,X[72,77]=0.490,X[73,77]=0.349,X[74,77]=0.278,X[75,77]=0.376,X[76,77]=0.604,X[77,77]=0.773,X[78,77]=0.682,X[79,77]=0.537,X[80,77]=0.451,X[81,77]=0.467,X[82,77]=0.459,X[83,77]=0.424,X[84,77]=0.482,X[85,77]=0.443,X[86,77]=0.412,X[87,77]=0.420,X[88,77]=0.431,X[89,77]=0.420,X[90,77]=0.467,X[91,77]=0.639,X[92,77]=0.612,X[93,77]=0.576,X[94,77]=0.565,X[95,77]=0.498,X[96,77]=0.482,X[97,77]=0.467,X[98,77]=0.502,X[99,77]=0.561,X[100,77]=0.588 X[1,78]=0.557,X[2,78]=0.706,X[3,78]=0.835,X[4,78]=0.859,X[5,78]=0.678,X[6,78]=0.478,X[7,78]=0.376,X[8,78]=0.424,X[9,78]=0.463,X[10,78]=0.427,X[11,78]=0.361,X[12,78]=0.337,X[13,78]=0.408,X[14,78]=0.478,X[15,78]=0.506,X[16,78]=0.475,X[17,78]=0.431,X[18,78]=0.286,X[19,78]=0.518,X[20,78]=0.565,X[21,78]=0.514,X[22,78]=0.545,X[23,78]=0.486,X[24,78]=0.502,X[25,78]=0.514,X[26,78]=0.506,X[27,78]=0.478,X[28,78]=0.463,X[29,78]=0.616,X[30,78]=0.808,X[31,78]=0.914,X[32,78]=0.816,X[33,78]=0.596,X[34,78]=0.608,X[35,78]=0.643,X[36,78]=0.718,X[37,78]=0.639,X[38,78]=0.475,X[39,78]=0.329,X[40,78]=0.498,X[41,78]=0.565,X[42,78]=0.463,X[43,78]=0.475,X[44,78]=0.518,X[45,78]=0.667,X[46,78]=0.635,X[47,78]=0.494,X[48,78]=0.569,X[49,78]=0.506,X[50,78]=0.549 X[51,78]=0.569,X[52,78]=0.529,X[53,78]=0.541,X[54,78]=0.533,X[55,78]=0.490,X[56,78]=0.373,X[57,78]=0.224,X[58,78]=0.188,X[59,78]=0.235,X[60,78]=0.447,X[61,78]=0.667,X[62,78]=0.380,X[63,78]=0.325,X[64,78]=0.467,X[65,78]=0.412,X[66,78]=0.412,X[67,78]=0.502,X[68,78]=0.455,X[69,78]=0.498,X[70,78]=0.420,X[71,78]=0.525,X[72,78]=0.541,X[73,78]=0.502,X[74,78]=0.212,X[75,78]=0.078,X[76,78]=0.216,X[77,78]=0.459,X[78,78]=0.533,X[79,78]=0.475,X[80,78]=0.463,X[81,78]=0.443,X[82,78]=0.314,X[83,78]=0.259,X[84,78]=0.349,X[85,78]=0.439,X[86,78]=0.486,X[87,78]=0.482,X[88,78]=0.424,X[89,78]=0.196,X[90,78]=0.282,X[91,78]=0.592,X[92,78]=0.510,X[93,78]=0.533,X[94,78]=0.522,X[95,78]=0.502,X[96,78]=0.486,X[97,78]=0.502,X[98,78]=0.490,X[99,78]=0.416,X[100,78]=0.310 X[1,79]=0.239,X[2,79]=0.267,X[3,79]=0.408,X[4,79]=0.510,X[5,79]=0.510,X[6,79]=0.549,X[7,79]=0.471,X[8,79]=0.427,X[9,79]=0.420,X[10,79]=0.400,X[11,79]=0.298,X[12,79]=0.275,X[13,79]=0.302,X[14,79]=0.482,X[15,79]=0.514,X[16,79]=0.424,X[17,79]=0.231,X[18,79]=0.259,X[19,79]=0.486,X[20,79]=0.467,X[21,79]=0.447,X[22,79]=0.510,X[23,79]=0.467,X[24,79]=0.522,X[25,79]=0.506,X[26,79]=0.490,X[27,79]=0.506,X[28,79]=0.486,X[29,79]=0.478,X[30,79]=0.549,X[31,79]=0.651,X[32,79]=0.682,X[33,79]=0.647,X[34,79]=0.647,X[35,79]=0.635,X[36,79]=0.675,X[37,79]=0.729,X[38,79]=0.592,X[39,79]=0.478,X[40,79]=0.522,X[41,79]=0.604,X[42,79]=0.514,X[43,79]=0.486,X[44,79]=0.486,X[45,79]=0.525,X[46,79]=0.510,X[47,79]=0.494,X[48,79]=0.553,X[49,79]=0.522,X[50,79]=0.631 X[51,79]=0.631,X[52,79]=0.733,X[53,79]=0.804,X[54,79]=0.851,X[55,79]=0.808,X[56,79]=0.706,X[57,79]=0.455,X[58,79]=0.314,X[59,79]=0.325,X[60,79]=0.596,X[61,79]=0.631,X[62,79]=0.373,X[63,79]=0.388,X[64,79]=0.506,X[65,79]=0.439,X[66,79]=0.353,X[67,79]=0.459,X[68,79]=0.549,X[69,79]=0.525,X[70,79]=0.369,X[71,79]=0.451,X[72,79]=0.675,X[73,79]=0.729,X[74,79]=0.494,X[75,79]=0.184,X[76,79]=0.337,X[77,79]=0.522,X[78,79]=0.522,X[79,79]=0.506,X[80,79]=0.471,X[81,79]=0.412,X[82,79]=0.337,X[83,79]=0.267,X[84,79]=0.263,X[85,79]=0.271,X[86,79]=0.267,X[87,79]=0.255,X[88,79]=0.224,X[89,79]=0.094,X[90,79]=0.341,X[91,79]=0.502,X[92,79]=0.424,X[93,79]=0.475,X[94,79]=0.518,X[95,79]=0.475,X[96,79]=0.486,X[97,79]=0.412,X[98,79]=0.498,X[99,79]=0.502,X[100,79]=0.333 X[1,80]=0.137,X[2,80]=0.110,X[3,80]=0.235,X[4,80]=0.478,X[5,80]=0.545,X[6,80]=0.533,X[7,80]=0.486,X[8,80]=0.435,X[9,80]=0.384,X[10,80]=0.396,X[11,80]=0.278,X[12,80]=0.208,X[13,80]=0.247,X[14,80]=0.471,X[15,80]=0.349,X[16,80]=0.463,X[17,80]=0.263,X[18,80]=0.333,X[19,80]=0.467,X[20,80]=0.424,X[21,80]=0.384,X[22,80]=0.459,X[23,80]=0.475,X[24,80]=0.490,X[25,80]=0.420,X[26,80]=0.404,X[27,80]=0.494,X[28,80]=0.533,X[29,80]=0.447,X[30,80]=0.486,X[31,80]=0.643,X[32,80]=0.686,X[33,80]=0.608,X[34,80]=0.388,X[35,80]=0.365,X[36,80]=0.529,X[37,80]=0.647,X[38,80]=0.471,X[39,80]=0.369,X[40,80]=0.471,X[41,80]=0.506,X[42,80]=0.510,X[43,80]=0.463,X[44,80]=0.459,X[45,80]=0.443,X[46,80]=0.443,X[47,80]=0.447,X[48,80]=0.518,X[49,80]=0.753,X[50,80]=0.808 X[51,80]=0.737,X[52,80]=0.729,X[53,80]=0.718,X[54,80]=0.745,X[55,80]=0.867,X[56,80]=0.914,X[57,80]=0.714,X[58,80]=0.325,X[59,80]=0.157,X[60,80]=0.384,X[61,80]=0.510,X[62,80]=0.404,X[63,80]=0.463,X[64,80]=0.639,X[65,80]=0.443,X[66,80]=0.361,X[67,80]=0.424,X[68,80]=0.612,X[69,80]=0.604,X[70,80]=0.384,X[71,80]=0.251,X[72,80]=0.635,X[73,80]=0.855,X[74,80]=0.792,X[75,80]=0.471,X[76,80]=0.435,X[77,80]=0.545,X[78,80]=0.545,X[79,80]=0.549,X[80,80]=0.514,X[81,80]=0.475,X[82,80]=0.416,X[83,80]=0.275,X[84,80]=0.208,X[85,80]=0.239,X[86,80]=0.302,X[87,80]=0.416,X[88,80]=0.298,X[89,80]=0.192,X[90,80]=0.412,X[91,80]=0.451,X[92,80]=0.424,X[93,80]=0.408,X[94,80]=0.506,X[95,80]=0.475,X[96,80]=0.478,X[97,80]=0.357,X[98,80]=0.580,X[99,80]=0.612,X[100,80]=0.616 X[1,81]=0.459,X[2,81]=0.424,X[3,81]=0.510,X[4,81]=0.514,X[5,81]=0.514,X[6,81]=0.510,X[7,81]=0.443,X[8,81]=0.471,X[9,81]=0.502,X[10,81]=0.486,X[11,81]=0.420,X[12,81]=0.231,X[13,81]=0.208,X[14,81]=0.314,X[15,81]=0.353,X[16,81]=0.369,X[17,81]=0.345,X[18,81]=0.408,X[19,81]=0.549,X[20,81]=0.467,X[21,81]=0.275,X[22,81]=0.404,X[23,81]=0.490,X[24,81]=0.545,X[25,81]=0.412,X[26,81]=0.345,X[27,81]=0.435,X[28,81]=0.561,X[29,81]=0.604,X[30,81]=0.616,X[31,81]=0.643,X[32,81]=0.475,X[33,81]=0.549,X[34,81]=0.490,X[35,81]=0.396,X[36,81]=0.384,X[37,81]=0.435,X[38,81]=0.451,X[39,81]=0.349,X[40,81]=0.373,X[41,81]=0.459,X[42,81]=0.518,X[43,81]=0.525,X[44,81]=0.353,X[45,81]=0.302,X[46,81]=0.365,X[47,81]=0.506,X[48,81]=0.655,X[49,81]=0.714,X[50,81]=0.588 X[51,81]=0.514,X[52,81]=0.478,X[53,81]=0.486,X[54,81]=0.576,X[55,81]=0.796,X[56,81]=0.773,X[57,81]=0.537,X[58,81]=0.294,X[59,81]=0.200,X[60,81]=0.337,X[61,81]=0.447,X[62,81]=0.400,X[63,81]=0.510,X[64,81]=0.647,X[65,81]=0.467,X[66,81]=0.459,X[67,81]=0.396,X[68,81]=0.612,X[69,81]=0.710,X[70,81]=0.435,X[71,81]=0.271,X[72,81]=0.573,X[73,81]=0.863,X[74,81]=0.820,X[75,81]=0.537,X[76,81]=0.439,X[77,81]=0.435,X[78,81]=0.506,X[79,81]=0.612,X[80,81]=0.502,X[81,81]=0.475,X[82,81]=0.506,X[83,81]=0.427,X[84,81]=0.420,X[85,81]=0.533,X[86,81]=0.545,X[87,81]=0.502,X[88,81]=0.302,X[89,81]=0.349,X[90,81]=0.467,X[91,81]=0.561,X[92,81]=0.506,X[93,81]=0.376,X[94,81]=0.486,X[95,81]=0.624,X[96,81]=0.529,X[97,81]=0.255,X[98,81]=0.431,X[99,81]=0.773,X[100,81]=0.890 X[1,82]=0.620,X[2,82]=0.576,X[3,82]=0.537,X[4,82]=0.482,X[5,82]=0.443,X[6,82]=0.482,X[7,82]=0.518,X[8,82]=0.502,X[9,82]=0.553,X[10,82]=0.525,X[11,82]=0.451,X[12,82]=0.282,X[13,82]=0.400,X[14,82]=0.365,X[15,82]=0.353,X[16,82]=0.333,X[17,82]=0.392,X[18,82]=0.471,X[19,82]=0.675,X[20,82]=0.416,X[21,82]=0.239,X[22,82]=0.380,X[23,82]=0.549,X[24,82]=0.631,X[25,82]=0.525,X[26,82]=0.494,X[27,82]=0.451,X[28,82]=0.455,X[29,82]=0.463,X[30,82]=0.486,X[31,82]=0.541,X[32,82]=0.698,X[33,82]=0.647,X[34,82]=0.612,X[35,82]=0.522,X[36,82]=0.302,X[37,82]=0.337,X[38,82]=0.506,X[39,82]=0.549,X[40,82]=0.514,X[41,82]=0.608,X[42,82]=0.588,X[43,82]=0.549,X[44,82]=0.353,X[45,82]=0.275,X[46,82]=0.357,X[47,82]=0.478,X[48,82]=0.518,X[49,82]=0.525,X[50,82]=0.494 X[51,82]=0.463,X[52,82]=0.494,X[53,82]=0.502,X[54,82]=0.471,X[55,82]=0.447,X[56,82]=0.506,X[57,82]=0.498,X[58,82]=0.318,X[59,82]=0.220,X[60,82]=0.333,X[61,82]=0.412,X[62,82]=0.353,X[63,82]=0.576,X[64,82]=0.553,X[65,82]=0.565,X[66,82]=0.525,X[67,82]=0.467,X[68,82]=0.627,X[69,82]=0.788,X[70,82]=0.592,X[71,82]=0.459,X[72,82]=0.522,X[73,82]=0.827,X[74,82]=0.792,X[75,82]=0.537,X[76,82]=0.506,X[77,82]=0.475,X[78,82]=0.529,X[79,82]=0.584,X[80,82]=0.525,X[81,82]=0.545,X[82,82]=0.592,X[83,82]=0.541,X[84,82]=0.671,X[85,82]=0.741,X[86,82]=0.557,X[87,82]=0.400,X[88,82]=0.318,X[89,82]=0.424,X[90,82]=0.506,X[91,82]=0.725,X[92,82]=0.541,X[93,82]=0.384,X[94,82]=0.451,X[95,82]=0.694,X[96,82]=0.616,X[97,82]=0.267,X[98,82]=0.125,X[99,82]=0.486,X[100,82]=0.596 X[1,83]=0.518,X[2,83]=0.549,X[3,83]=0.525,X[4,83]=0.494,X[5,83]=0.533,X[6,83]=0.522,X[7,83]=0.486,X[8,83]=0.463,X[9,83]=0.537,X[10,83]=0.514,X[11,83]=0.478,X[12,83]=0.482,X[13,83]=0.529,X[14,83]=0.482,X[15,83]=0.384,X[16,83]=0.322,X[17,83]=0.349,X[18,83]=0.518,X[19,83]=0.616,X[20,83]=0.302,X[21,83]=0.235,X[22,83]=0.310,X[23,83]=0.549,X[24,83]=0.690,X[25,83]=0.557,X[26,83]=0.345,X[27,83]=0.439,X[28,83]=0.447,X[29,83]=0.365,X[30,83]=0.584,X[31,83]=0.522,X[32,83]=0.592,X[33,83]=0.620,X[34,83]=0.651,X[35,83]=0.561,X[36,83]=0.404,X[37,83]=0.506,X[38,83]=0.565,X[39,83]=0.612,X[40,83]=0.569,X[41,83]=0.592,X[42,83]=0.702,X[43,83]=0.659,X[44,83]=0.506,X[45,83]=0.349,X[46,83]=0.373,X[47,83]=0.459,X[48,83]=0.502,X[49,83]=0.565,X[50,83]=0.565 X[51,83]=0.471,X[52,83]=0.341,X[53,83]=0.220,X[54,83]=0.251,X[55,83]=0.447,X[56,83]=0.518,X[57,83]=0.545,X[58,83]=0.443,X[59,83]=0.361,X[60,83]=0.353,X[61,83]=0.306,X[62,83]=0.416,X[63,83]=0.596,X[64,83]=0.533,X[65,83]=0.631,X[66,83]=0.545,X[67,83]=0.518,X[68,83]=0.620,X[69,83]=0.682,X[70,83]=0.537,X[71,83]=0.494,X[72,83]=0.490,X[73,83]=0.737,X[74,83]=0.718,X[75,83]=0.588,X[76,83]=0.502,X[77,83]=0.478,X[78,83]=0.573,X[79,83]=0.600,X[80,83]=0.557,X[81,83]=0.643,X[82,83]=0.694,X[83,83]=0.608,X[84,83]=0.694,X[85,83]=0.698,X[86,83]=0.541,X[87,83]=0.553,X[88,83]=0.502,X[89,83]=0.365,X[90,83]=0.478,X[91,83]=0.733,X[92,83]=0.631,X[93,83]=0.482,X[94,83]=0.373,X[95,83]=0.710,X[96,83]=0.780,X[97,83]=0.404,X[98,83]=0.173,X[99,83]=0.337,X[100,83]=0.298 X[1,84]=0.451,X[2,84]=0.490,X[3,84]=0.549,X[4,84]=0.514,X[5,84]=0.502,X[6,84]=0.529,X[7,84]=0.518,X[8,84]=0.514,X[9,84]=0.569,X[10,84]=0.541,X[11,84]=0.514,X[12,84]=0.486,X[13,84]=0.541,X[14,84]=0.467,X[15,84]=0.376,X[16,84]=0.286,X[17,84]=0.290,X[18,84]=0.518,X[19,84]=0.459,X[20,84]=0.310,X[21,84]=0.216,X[22,84]=0.239,X[23,84]=0.424,X[24,84]=0.533,X[25,84]=0.561,X[26,84]=0.514,X[27,84]=0.569,X[28,84]=0.345,X[29,84]=0.325,X[30,84]=0.451,X[31,84]=0.533,X[32,84]=0.525,X[33,84]=0.545,X[34,84]=0.765,X[35,84]=0.682,X[36,84]=0.463,X[37,84]=0.455,X[38,84]=0.412,X[39,84]=0.365,X[40,84]=0.420,X[41,84]=0.506,X[42,84]=0.643,X[43,84]=0.776,X[44,84]=0.678,X[45,84]=0.514,X[46,84]=0.447,X[47,84]=0.482,X[48,84]=0.514,X[49,84]=0.529,X[50,84]=0.549 X[51,84]=0.494,X[52,84]=0.435,X[53,84]=0.604,X[54,84]=0.655,X[55,84]=0.522,X[56,84]=0.576,X[57,84]=0.659,X[58,84]=0.631,X[59,84]=0.471,X[60,84]=0.310,X[61,84]=0.196,X[62,84]=0.592,X[63,84]=0.537,X[64,84]=0.502,X[65,84]=0.561,X[66,84]=0.514,X[67,84]=0.494,X[68,84]=0.518,X[69,84]=0.490,X[70,84]=0.525,X[71,84]=0.478,X[72,84]=0.502,X[73,84]=0.565,X[74,84]=0.478,X[75,84]=0.431,X[76,84]=0.420,X[77,84]=0.459,X[78,84]=0.478,X[79,84]=0.537,X[80,84]=0.514,X[81,84]=0.522,X[82,84]=0.455,X[83,84]=0.533,X[84,84]=0.796,X[85,84]=0.812,X[86,84]=0.729,X[87,84]=0.631,X[88,84]=0.502,X[89,84]=0.318,X[90,84]=0.439,X[91,84]=0.600,X[92,84]=0.694,X[93,84]=0.537,X[94,84]=0.373,X[95,84]=0.675,X[96,84]=0.945,X[97,84]=0.588,X[98,84]=0.337,X[99,84]=0.404,X[100,84]=0.353 X[1,85]=0.463,X[2,85]=0.506,X[3,85]=0.529,X[4,85]=0.475,X[5,85]=0.482,X[6,85]=0.545,X[7,85]=0.518,X[8,85]=0.529,X[9,85]=0.592,X[10,85]=0.616,X[11,85]=0.608,X[12,85]=0.514,X[13,85]=0.467,X[14,85]=0.451,X[15,85]=0.361,X[16,85]=0.208,X[17,85]=0.353,X[18,85]=0.518,X[19,85]=0.475,X[20,85]=0.369,X[21,85]=0.239,X[22,85]=0.180,X[23,85]=0.271,X[24,85]=0.596,X[25,85]=0.557,X[26,85]=0.616,X[27,85]=0.667,X[28,85]=0.318,X[29,85]=0.361,X[30,85]=0.533,X[31,85]=0.467,X[32,85]=0.486,X[33,85]=0.557,X[34,85]=0.690,X[35,85]=0.502,X[36,85]=0.424,X[37,85]=0.482,X[38,85]=0.369,X[39,85]=0.333,X[40,85]=0.376,X[41,85]=0.463,X[42,85]=0.573,X[43,85]=0.749,X[44,85]=0.682,X[45,85]=0.573,X[46,85]=0.502,X[47,85]=0.451,X[48,85]=0.490,X[49,85]=0.494,X[50,85]=0.565 X[51,85]=0.675,X[52,85]=0.804,X[53,85]=0.816,X[54,85]=0.839,X[55,85]=0.690,X[56,85]=0.639,X[57,85]=0.694,X[58,85]=0.757,X[59,85]=0.651,X[60,85]=0.482,X[61,85]=0.329,X[62,85]=0.573,X[63,85]=0.553,X[64,85]=0.478,X[65,85]=0.471,X[66,85]=0.514,X[67,85]=0.494,X[68,85]=0.490,X[69,85]=0.533,X[70,85]=0.561,X[71,85]=0.498,X[72,85]=0.502,X[73,85]=0.506,X[74,85]=0.631,X[75,85]=0.604,X[76,85]=0.635,X[77,85]=0.655,X[78,85]=0.545,X[79,85]=0.443,X[80,85]=0.396,X[81,85]=0.369,X[82,85]=0.259,X[83,85]=0.404,X[84,85]=0.745,X[85,85]=0.557,X[86,85]=0.420,X[87,85]=0.380,X[88,85]=0.224,X[89,85]=0.333,X[90,85]=0.318,X[91,85]=0.329,X[92,85]=0.671,X[93,85]=0.647,X[94,85]=0.416,X[95,85]=0.498,X[96,85]=0.733,X[97,85]=0.576,X[98,85]=0.502,X[99,85]=0.435,X[100,85]=0.404 X[1,86]=0.522,X[2,86]=0.541,X[3,86]=0.549,X[4,86]=0.447,X[5,86]=0.447,X[6,86]=0.522,X[7,86]=0.471,X[8,86]=0.514,X[9,86]=0.569,X[10,86]=0.596,X[11,86]=0.498,X[12,86]=0.463,X[13,86]=0.451,X[14,86]=0.404,X[15,86]=0.325,X[16,86]=0.396,X[17,86]=0.573,X[18,86]=0.545,X[19,86]=0.525,X[20,86]=0.443,X[21,86]=0.251,X[22,86]=0.102,X[23,86]=0.192,X[24,86]=0.420,X[25,86]=0.416,X[26,86]=0.639,X[27,86]=0.663,X[28,86]=0.494,X[29,86]=0.412,X[30,86]=0.490,X[31,86]=0.510,X[32,86]=0.478,X[33,86]=0.514,X[34,86]=0.565,X[35,86]=0.451,X[36,86]=0.502,X[37,86]=0.549,X[38,86]=0.459,X[39,86]=0.471,X[40,86]=0.455,X[41,86]=0.435,X[42,86]=0.557,X[43,86]=0.616,X[44,86]=0.565,X[45,86]=0.588,X[46,86]=0.522,X[47,86]=0.478,X[48,86]=0.498,X[49,86]=0.482,X[50,86]=0.502 X[51,86]=0.482,X[52,86]=0.627,X[53,86]=0.776,X[54,86]=0.800,X[55,86]=0.788,X[56,86]=0.702,X[57,86]=0.612,X[58,86]=0.729,X[59,86]=0.769,X[60,86]=0.498,X[61,86]=0.475,X[62,86]=0.506,X[63,86]=0.545,X[64,86]=0.522,X[65,86]=0.475,X[66,86]=0.498,X[67,86]=0.522,X[68,86]=0.486,X[69,86]=0.506,X[70,86]=0.525,X[71,86]=0.612,X[72,86]=0.698,X[73,86]=0.769,X[74,86]=0.871,X[75,86]=0.835,X[76,86]=0.812,X[77,86]=0.773,X[78,86]=0.737,X[79,86]=0.557,X[80,86]=0.392,X[81,86]=0.294,X[82,86]=0.204,X[83,86]=0.282,X[84,86]=0.424,X[85,86]=0.322,X[86,86]=0.341,X[87,86]=0.306,X[88,86]=0.451,X[89,86]=0.541,X[90,86]=0.400,X[91,86]=0.431,X[92,86]=0.702,X[93,86]=0.639,X[94,86]=0.376,X[95,86]=0.596,X[96,86]=0.576,X[97,86]=0.455,X[98,86]=0.545,X[99,86]=0.498,X[100,86]=0.447 X[1,87]=0.502,X[2,87]=0.533,X[3,87]=0.529,X[4,87]=0.451,X[5,87]=0.471,X[6,87]=0.478,X[7,87]=0.455,X[8,87]=0.427,X[9,87]=0.475,X[10,87]=0.525,X[11,87]=0.498,X[12,87]=0.482,X[13,87]=0.451,X[14,87]=0.439,X[15,87]=0.443,X[16,87]=0.502,X[17,87]=0.518,X[18,87]=0.506,X[19,87]=0.482,X[20,87]=0.451,X[21,87]=0.361,X[22,87]=0.149,X[23,87]=0.188,X[24,87]=0.263,X[25,87]=0.369,X[26,87]=0.655,X[27,87]=0.624,X[28,87]=0.408,X[29,87]=0.502,X[30,87]=0.490,X[31,87]=0.506,X[32,87]=0.451,X[33,87]=0.522,X[34,87]=0.533,X[35,87]=0.459,X[36,87]=0.498,X[37,87]=0.518,X[38,87]=0.561,X[39,87]=0.545,X[40,87]=0.459,X[41,87]=0.396,X[42,87]=0.498,X[43,87]=0.529,X[44,87]=0.475,X[45,87]=0.541,X[46,87]=0.486,X[47,87]=0.502,X[48,87]=0.478,X[49,87]=0.502,X[50,87]=0.490 X[51,87]=0.380,X[52,87]=0.271,X[53,87]=0.463,X[54,87]=0.596,X[55,87]=0.573,X[56,87]=0.482,X[57,87]=0.439,X[58,87]=0.522,X[59,87]=0.647,X[60,87]=0.420,X[61,87]=0.365,X[62,87]=0.455,X[63,87]=0.494,X[64,87]=0.494,X[65,87]=0.420,X[66,87]=0.424,X[67,87]=0.396,X[68,87]=0.451,X[69,87]=0.467,X[70,87]=0.627,X[71,87]=0.773,X[72,87]=0.702,X[73,87]=0.631,X[74,87]=0.604,X[75,87]=0.608,X[76,87]=0.710,X[77,87]=0.835,X[78,87]=0.757,X[79,87]=0.553,X[80,87]=0.533,X[81,87]=0.447,X[82,87]=0.239,X[83,87]=0.247,X[84,87]=0.435,X[85,87]=0.478,X[86,87]=0.490,X[87,87]=0.408,X[88,87]=0.624,X[89,87]=0.678,X[90,87]=0.533,X[91,87]=0.471,X[92,87]=0.588,X[93,87]=0.725,X[94,87]=0.380,X[95,87]=0.439,X[96,87]=0.502,X[97,87]=0.494,X[98,87]=0.569,X[99,87]=0.529,X[100,87]=0.541 X[1,88]=0.533,X[2,88]=0.588,X[3,88]=0.596,X[4,88]=0.592,X[5,88]=0.537,X[6,88]=0.447,X[7,88]=0.408,X[8,88]=0.400,X[9,88]=0.494,X[10,88]=0.502,X[11,88]=0.541,X[12,88]=0.533,X[13,88]=0.471,X[14,88]=0.380,X[15,88]=0.396,X[16,88]=0.455,X[17,88]=0.463,X[18,88]=0.459,X[19,88]=0.494,X[20,88]=0.494,X[21,88]=0.490,X[22,88]=0.318,X[23,88]=0.239,X[24,88]=0.302,X[25,88]=0.376,X[26,88]=0.431,X[27,88]=0.514,X[28,88]=0.392,X[29,88]=0.396,X[30,88]=0.463,X[31,88]=0.541,X[32,88]=0.447,X[33,88]=0.396,X[34,88]=0.357,X[35,88]=0.459,X[36,88]=0.529,X[37,88]=0.545,X[38,88]=0.557,X[39,88]=0.525,X[40,88]=0.424,X[41,88]=0.333,X[42,88]=0.439,X[43,88]=0.431,X[44,88]=0.424,X[45,88]=0.502,X[46,88]=0.471,X[47,88]=0.486,X[48,88]=0.451,X[49,88]=0.475,X[50,88]=0.522 X[51,88]=0.510,X[52,88]=0.302,X[53,88]=0.161,X[54,88]=0.180,X[55,88]=0.290,X[56,88]=0.278,X[57,88]=0.325,X[58,88]=0.353,X[59,88]=0.400,X[60,88]=0.424,X[61,88]=0.380,X[62,88]=0.427,X[63,88]=0.494,X[64,88]=0.557,X[65,88]=0.494,X[66,88]=0.282,X[67,88]=0.271,X[68,88]=0.420,X[69,88]=0.569,X[70,88]=0.635,X[71,88]=0.596,X[72,88]=0.490,X[73,88]=0.463,X[74,88]=0.471,X[75,88]=0.518,X[76,88]=0.616,X[77,88]=0.671,X[78,88]=0.541,X[79,88]=0.463,X[80,88]=0.486,X[81,88]=0.420,X[82,88]=0.333,X[83,88]=0.424,X[84,88]=0.439,X[85,88]=0.478,X[86,88]=0.239,X[87,88]=0.145,X[88,88]=0.212,X[89,88]=0.486,X[90,88]=0.361,X[91,88]=0.365,X[92,88]=0.475,X[93,88]=0.502,X[94,88]=0.780,X[95,88]=0.545,X[96,88]=0.431,X[97,88]=0.494,X[98,88]=0.529,X[99,88]=0.502,X[100,88]=0.541 X[1,89]=0.576,X[2,89]=0.612,X[3,89]=0.573,X[4,89]=0.525,X[5,89]=0.502,X[6,89]=0.471,X[7,89]=0.424,X[8,89]=0.451,X[9,89]=0.459,X[10,89]=0.451,X[11,89]=0.506,X[12,89]=0.529,X[13,89]=0.486,X[14,89]=0.412,X[15,89]=0.455,X[16,89]=0.525,X[17,89]=0.498,X[18,89]=0.490,X[19,89]=0.514,X[20,89]=0.518,X[21,89]=0.443,X[22,89]=0.408,X[23,89]=0.329,X[24,89]=0.286,X[25,89]=0.306,X[26,89]=0.329,X[27,89]=0.373,X[28,89]=0.431,X[29,89]=0.506,X[30,89]=0.596,X[31,89]=0.569,X[32,89]=0.475,X[33,89]=0.278,X[34,89]=0.298,X[35,89]=0.447,X[36,89]=0.482,X[37,89]=0.514,X[38,89]=0.537,X[39,89]=0.502,X[40,89]=0.396,X[41,89]=0.337,X[42,89]=0.467,X[43,89]=0.459,X[44,89]=0.373,X[45,89]=0.420,X[46,89]=0.514,X[47,89]=0.510,X[48,89]=0.416,X[49,89]=0.376,X[50,89]=0.643 X[51,89]=0.690,X[52,89]=0.553,X[53,89]=0.212,X[54,89]=0.157,X[55,89]=0.243,X[56,89]=0.298,X[57,89]=0.275,X[58,89]=0.231,X[59,89]=0.286,X[60,89]=0.529,X[61,89]=0.616,X[62,89]=0.576,X[63,89]=0.663,X[64,89]=0.600,X[65,89]=0.518,X[66,89]=0.322,X[67,89]=0.302,X[68,89]=0.404,X[69,89]=0.502,X[70,89]=0.510,X[71,89]=0.537,X[72,89]=0.490,X[73,89]=0.471,X[74,89]=0.478,X[75,89]=0.408,X[76,89]=0.361,X[77,89]=0.451,X[78,89]=0.451,X[79,89]=0.451,X[80,89]=0.490,X[81,89]=0.620,X[82,89]=0.616,X[83,89]=0.522,X[84,89]=0.439,X[85,89]=0.314,X[86,89]=0.161,X[87,89]=0.188,X[88,89]=0.090,X[89,89]=0.180,X[90,89]=0.204,X[91,89]=0.216,X[92,89]=0.494,X[93,89]=0.439,X[94,89]=0.616,X[95,89]=0.604,X[96,89]=0.514,X[97,89]=0.529,X[98,89]=0.510,X[99,89]=0.600,X[100,89]=0.584 X[1,90]=0.490,X[2,90]=0.455,X[3,90]=0.514,X[4,90]=0.533,X[5,90]=0.478,X[6,90]=0.475,X[7,90]=0.451,X[8,90]=0.482,X[9,90]=0.494,X[10,90]=0.522,X[11,90]=0.565,X[12,90]=0.561,X[13,90]=0.600,X[14,90]=0.553,X[15,90]=0.569,X[16,90]=0.620,X[17,90]=0.545,X[18,90]=0.561,X[19,90]=0.522,X[20,90]=0.494,X[21,90]=0.486,X[22,90]=0.412,X[23,90]=0.353,X[24,90]=0.341,X[25,90]=0.329,X[26,90]=0.333,X[27,90]=0.333,X[28,90]=0.510,X[29,90]=0.565,X[30,90]=0.671,X[31,90]=0.682,X[32,90]=0.604,X[33,90]=0.424,X[34,90]=0.337,X[35,90]=0.420,X[36,90]=0.490,X[37,90]=0.533,X[38,90]=0.576,X[39,90]=0.584,X[40,90]=0.459,X[41,90]=0.404,X[42,90]=0.549,X[43,90]=0.518,X[44,90]=0.259,X[45,90]=0.373,X[46,90]=0.545,X[47,90]=0.620,X[48,90]=0.463,X[49,90]=0.204,X[50,90]=0.490 X[51,90]=0.757,X[52,90]=0.796,X[53,90]=0.502,X[54,90]=0.416,X[55,90]=0.373,X[56,90]=0.306,X[57,90]=0.341,X[58,90]=0.325,X[59,90]=0.361,X[60,90]=0.514,X[61,90]=0.569,X[62,90]=0.522,X[63,90]=0.604,X[64,90]=0.741,X[65,90]=0.694,X[66,90]=0.510,X[67,90]=0.384,X[68,90]=0.412,X[69,90]=0.494,X[70,90]=0.525,X[71,90]=0.580,X[72,90]=0.557,X[73,90]=0.420,X[74,90]=0.278,X[75,90]=0.294,X[76,90]=0.404,X[77,90]=0.467,X[78,90]=0.545,X[79,90]=0.522,X[80,90]=0.557,X[81,90]=0.698,X[82,90]=0.796,X[83,90]=0.706,X[84,90]=0.576,X[85,90]=0.498,X[86,90]=0.482,X[87,90]=0.459,X[88,90]=0.498,X[89,90]=0.278,X[90,90]=0.255,X[91,90]=0.208,X[92,90]=0.125,X[93,90]=0.451,X[94,90]=0.459,X[95,90]=0.467,X[96,90]=0.533,X[97,90]=0.580,X[98,90]=0.565,X[99,90]=0.533,X[100,90]=0.502 X[1,91]=0.471,X[2,91]=0.514,X[3,91]=0.467,X[4,91]=0.510,X[5,91]=0.557,X[6,91]=0.596,X[7,91]=0.529,X[8,91]=0.686,X[9,91]=0.620,X[10,91]=0.510,X[11,91]=0.561,X[12,91]=0.647,X[13,91]=0.631,X[14,91]=0.529,X[15,91]=0.588,X[16,91]=0.624,X[17,91]=0.631,X[18,91]=0.573,X[19,91]=0.522,X[20,91]=0.447,X[21,91]=0.455,X[22,91]=0.463,X[23,91]=0.435,X[24,91]=0.447,X[25,91]=0.459,X[26,91]=0.408,X[27,91]=0.361,X[28,91]=0.396,X[29,91]=0.467,X[30,91]=0.569,X[31,91]=0.741,X[32,91]=0.765,X[33,91]=0.596,X[34,91]=0.471,X[35,91]=0.443,X[36,91]=0.510,X[37,91]=0.502,X[38,91]=0.604,X[39,91]=0.635,X[40,91]=0.494,X[41,91]=0.424,X[42,91]=0.671,X[43,91]=0.510,X[44,91]=0.247,X[45,91]=0.322,X[46,91]=0.525,X[47,91]=0.729,X[48,91]=0.529,X[49,91]=0.145,X[50,91]=0.212 X[51,91]=0.525,X[52,91]=0.647,X[53,91]=0.545,X[54,91]=0.467,X[55,91]=0.467,X[56,91]=0.498,X[57,91]=0.545,X[58,91]=0.427,X[59,91]=0.341,X[60,91]=0.361,X[61,91]=0.361,X[62,91]=0.427,X[63,91]=0.514,X[64,91]=0.682,X[65,91]=0.784,X[66,91]=0.639,X[67,91]=0.502,X[68,91]=0.451,X[69,91]=0.502,X[70,91]=0.502,X[71,91]=0.529,X[72,91]=0.541,X[73,91]=0.525,X[74,91]=0.635,X[75,91]=0.753,X[76,91]=0.678,X[77,91]=0.525,X[78,91]=0.475,X[79,91]=0.373,X[80,91]=0.412,X[81,91]=0.639,X[82,91]=0.796,X[83,91]=0.855,X[84,91]=0.624,X[85,91]=0.510,X[86,91]=0.565,X[87,91]=0.718,X[88,91]=0.808,X[89,91]=0.573,X[90,91]=0.361,X[91,91]=0.518,X[92,91]=0.404,X[93,91]=0.478,X[94,91]=0.549,X[95,91]=0.525,X[96,91]=0.478,X[97,91]=0.435,X[98,91]=0.490,X[99,91]=0.471,X[100,91]=0.435 X[1,92]=0.451,X[2,92]=0.494,X[3,92]=0.506,X[4,92]=0.486,X[5,92]=0.710,X[6,92]=0.949,X[7,92]=0.553,X[8,92]=0.765,X[9,92]=0.663,X[10,92]=0.655,X[11,92]=0.537,X[12,92]=0.522,X[13,92]=0.459,X[14,92]=0.424,X[15,92]=0.525,X[16,92]=0.549,X[17,92]=0.494,X[18,92]=0.486,X[19,92]=0.522,X[20,92]=0.514,X[21,92]=0.467,X[22,92]=0.408,X[23,92]=0.380,X[24,92]=0.514,X[25,92]=0.604,X[26,92]=0.443,X[27,92]=0.333,X[28,92]=0.349,X[29,92]=0.431,X[30,92]=0.494,X[31,92]=0.659,X[32,92]=0.761,X[33,92]=0.616,X[34,92]=0.533,X[35,92]=0.455,X[36,92]=0.471,X[37,92]=0.494,X[38,92]=0.557,X[39,92]=0.588,X[40,92]=0.408,X[41,92]=0.463,X[42,92]=0.769,X[43,92]=0.612,X[44,92]=0.427,X[45,92]=0.392,X[46,92]=0.475,X[47,92]=0.812,X[48,92]=0.678,X[49,92]=0.259,X[50,92]=0.192 X[51,92]=0.431,X[52,92]=0.525,X[53,92]=0.475,X[54,92]=0.486,X[55,92]=0.443,X[56,92]=0.478,X[57,92]=0.502,X[58,92]=0.404,X[59,92]=0.369,X[60,92]=0.365,X[61,92]=0.373,X[62,92]=0.416,X[63,92]=0.471,X[64,92]=0.612,X[65,92]=0.694,X[66,92]=0.616,X[67,92]=0.569,X[68,92]=0.494,X[69,92]=0.463,X[70,92]=0.475,X[71,92]=0.498,X[72,92]=0.580,X[73,92]=0.729,X[74,92]=0.863,X[75,92]=0.867,X[76,92]=0.792,X[77,92]=0.714,X[78,92]=0.494,X[79,92]=0.263,X[80,92]=0.192,X[81,92]=0.467,X[82,92]=0.741,X[83,92]=0.863,X[84,92]=0.675,X[85,92]=0.259,X[86,92]=0.361,X[87,92]=0.757,X[88,92]=0.835,X[89,92]=0.773,X[90,92]=0.565,X[91,92]=0.608,X[92,92]=0.698,X[93,92]=0.792,X[94,92]=0.792,X[95,92]=0.616,X[96,92]=0.404,X[97,92]=0.439,X[98,92]=0.490,X[99,92]=0.522,X[100,92]=0.482 X[1,93]=0.482,X[2,93]=0.471,X[3,93]=0.494,X[4,93]=0.416,X[5,93]=0.580,X[6,93]=0.769,X[7,93]=0.643,X[8,93]=0.718,X[9,93]=0.749,X[10,93]=0.729,X[11,93]=0.490,X[12,93]=0.467,X[13,93]=0.471,X[14,93]=0.439,X[15,93]=0.420,X[16,93]=0.467,X[17,93]=0.549,X[18,93]=0.510,X[19,93]=0.482,X[20,93]=0.518,X[21,93]=0.529,X[22,93]=0.439,X[23,93]=0.380,X[24,93]=0.420,X[25,93]=0.439,X[26,93]=0.447,X[27,93]=0.443,X[28,93]=0.459,X[29,93]=0.431,X[30,93]=0.420,X[31,93]=0.576,X[32,93]=0.604,X[33,93]=0.588,X[34,93]=0.573,X[35,93]=0.502,X[36,93]=0.471,X[37,93]=0.502,X[38,93]=0.537,X[39,93]=0.522,X[40,93]=0.341,X[41,93]=0.561,X[42,93]=0.784,X[43,93]=0.698,X[44,93]=0.616,X[45,93]=0.510,X[46,93]=0.447,X[47,93]=0.804,X[48,93]=0.847,X[49,93]=0.792,X[50,93]=0.529 X[51,93]=0.482,X[52,93]=0.502,X[53,93]=0.455,X[54,93]=0.475,X[55,93]=0.412,X[56,93]=0.302,X[57,93]=0.345,X[58,93]=0.427,X[59,93]=0.478,X[60,93]=0.498,X[61,93]=0.482,X[62,93]=0.369,X[63,93]=0.357,X[64,93]=0.565,X[65,93]=0.557,X[66,93]=0.541,X[67,93]=0.553,X[68,93]=0.506,X[69,93]=0.486,X[70,93]=0.494,X[71,93]=0.482,X[72,93]=0.459,X[73,93]=0.427,X[74,93]=0.596,X[75,93]=0.784,X[76,93]=0.851,X[77,93]=0.855,X[78,93]=0.651,X[79,93]=0.337,X[80,93]=0.165,X[81,93]=0.314,X[82,93]=0.663,X[83,93]=0.839,X[84,93]=0.694,X[85,93]=0.314,X[86,93]=0.388,X[87,93]=0.600,X[88,93]=0.792,X[89,93]=0.694,X[90,93]=0.537,X[91,93]=0.576,X[92,93]=0.698,X[93,93]=0.788,X[94,93]=0.851,X[95,93]=0.702,X[96,93]=0.455,X[97,93]=0.482,X[98,93]=0.482,X[99,93]=0.463,X[100,93]=0.494 X[1,94]=0.518,X[2,94]=0.545,X[3,94]=0.545,X[4,94]=0.490,X[5,94]=0.635,X[6,94]=0.549,X[7,94]=0.722,X[8,94]=0.710,X[9,94]=0.722,X[10,94]=0.584,X[11,94]=0.643,X[12,94]=0.518,X[13,94]=0.447,X[14,94]=0.455,X[15,94]=0.514,X[16,94]=0.502,X[17,94]=0.510,X[18,94]=0.514,X[19,94]=0.498,X[20,94]=0.580,X[21,94]=0.588,X[22,94]=0.396,X[23,94]=0.333,X[24,94]=0.282,X[25,94]=0.314,X[26,94]=0.404,X[27,94]=0.463,X[28,94]=0.447,X[29,94]=0.247,X[30,94]=0.239,X[31,94]=0.541,X[32,94]=0.502,X[33,94]=0.502,X[34,94]=0.533,X[35,94]=0.486,X[36,94]=0.498,X[37,94]=0.482,X[38,94]=0.588,X[39,94]=0.502,X[40,94]=0.314,X[41,94]=0.380,X[42,94]=0.561,X[43,94]=0.635,X[44,94]=0.635,X[45,94]=0.490,X[46,94]=0.514,X[47,94]=0.718,X[48,94]=0.839,X[49,94]=0.816,X[50,94]=0.612 X[51,94]=0.588,X[52,94]=0.537,X[53,94]=0.498,X[54,94]=0.459,X[55,94]=0.369,X[56,94]=0.251,X[57,94]=0.302,X[58,94]=0.365,X[59,94]=0.384,X[60,94]=0.325,X[61,94]=0.275,X[62,94]=0.133,X[63,94]=0.239,X[64,94]=0.522,X[65,94]=0.478,X[66,94]=0.467,X[67,94]=0.525,X[68,94]=0.475,X[69,94]=0.502,X[70,94]=0.455,X[71,94]=0.494,X[72,94]=0.490,X[73,94]=0.361,X[74,94]=0.255,X[75,94]=0.384,X[76,94]=0.612,X[77,94]=0.686,X[78,94]=0.514,X[79,94]=0.314,X[80,94]=0.220,X[81,94]=0.259,X[82,94]=0.541,X[83,94]=0.851,X[84,94]=0.627,X[85,94]=0.416,X[86,94]=0.502,X[87,94]=0.549,X[88,94]=0.773,X[89,94]=0.596,X[90,94]=0.506,X[91,94]=0.510,X[92,94]=0.494,X[93,94]=0.667,X[94,94]=0.851,X[95,94]=0.592,X[96,94]=0.435,X[97,94]=0.420,X[98,94]=0.455,X[99,94]=0.498,X[100,94]=0.490 X[1,95]=0.478,X[2,95]=0.494,X[3,95]=0.447,X[4,95]=0.314,X[5,95]=0.624,X[6,95]=0.592,X[7,95]=0.506,X[8,95]=0.565,X[9,95]=0.788,X[10,95]=0.796,X[11,95]=0.784,X[12,95]=0.592,X[13,95]=0.459,X[14,95]=0.490,X[15,95]=0.459,X[16,95]=0.498,X[17,95]=0.522,X[18,95]=0.443,X[19,95]=0.431,X[20,95]=0.529,X[21,95]=0.565,X[22,95]=0.447,X[23,95]=0.373,X[24,95]=0.271,X[25,95]=0.263,X[26,95]=0.275,X[27,95]=0.275,X[28,95]=0.282,X[29,95]=0.098,X[30,95]=0.212,X[31,95]=0.482,X[32,95]=0.424,X[33,95]=0.455,X[34,95]=0.506,X[35,95]=0.455,X[36,95]=0.486,X[37,95]=0.376,X[38,95]=0.525,X[39,95]=0.537,X[40,95]=0.435,X[41,95]=0.369,X[42,95]=0.290,X[43,95]=0.412,X[44,95]=0.659,X[45,95]=0.518,X[46,95]=0.412,X[47,95]=0.494,X[48,95]=0.784,X[49,95]=0.788,X[50,95]=0.847 X[51,95]=0.800,X[52,95]=0.514,X[53,95]=0.502,X[54,95]=0.482,X[55,95]=0.431,X[56,95]=0.361,X[57,95]=0.302,X[58,95]=0.298,X[59,95]=0.322,X[60,95]=0.373,X[61,95]=0.310,X[62,95]=0.184,X[63,95]=0.341,X[64,95]=0.459,X[65,95]=0.412,X[66,95]=0.416,X[67,95]=0.502,X[68,95]=0.467,X[69,95]=0.498,X[70,95]=0.380,X[71,95]=0.498,X[72,95]=0.549,X[73,95]=0.514,X[74,95]=0.290,X[75,95]=0.122,X[76,95]=0.212,X[77,95]=0.424,X[78,95]=0.455,X[79,95]=0.314,X[80,95]=0.235,X[81,95]=0.216,X[82,95]=0.443,X[83,95]=0.686,X[84,95]=0.510,X[85,95]=0.424,X[86,95]=0.514,X[87,95]=0.596,X[88,95]=0.780,X[89,95]=0.620,X[90,95]=0.498,X[91,95]=0.482,X[92,95]=0.451,X[93,95]=0.569,X[94,95]=0.604,X[95,95]=0.475,X[96,95]=0.518,X[97,95]=0.537,X[98,95]=0.502,X[99,95]=0.545,X[100,95]=0.557 X[1,96]=0.227,X[2,96]=0.043,X[3,96]=0.212,X[4,96]=0.220,X[5,96]=0.392,X[6,96]=0.467,X[7,96]=0.435,X[8,96]=0.663,X[9,96]=0.761,X[10,96]=0.824,X[11,96]=0.702,X[12,96]=0.510,X[13,96]=0.490,X[14,96]=0.529,X[15,96]=0.459,X[16,96]=0.463,X[17,96]=0.565,X[18,96]=0.482,X[19,96]=0.447,X[20,96]=0.529,X[21,96]=0.510,X[22,96]=0.569,X[23,96]=0.502,X[24,96]=0.404,X[25,96]=0.369,X[26,96]=0.325,X[27,96]=0.380,X[28,96]=0.341,X[29,96]=0.075,X[30,96]=0.322,X[31,96]=0.494,X[32,96]=0.420,X[33,96]=0.357,X[34,96]=0.471,X[35,96]=0.514,X[36,96]=0.502,X[37,96]=0.306,X[38,96]=0.463,X[39,96]=0.635,X[40,96]=0.616,X[41,96]=0.467,X[42,96]=0.282,X[43,96]=0.298,X[44,96]=0.404,X[45,96]=0.549,X[46,96]=0.247,X[47,96]=0.427,X[48,96]=0.851,X[49,96]=0.847,X[50,96]=0.784 X[51,96]=0.671,X[52,96]=0.576,X[53,96]=0.580,X[54,96]=0.573,X[55,96]=0.424,X[56,96]=0.408,X[57,96]=0.408,X[58,96]=0.482,X[59,96]=0.514,X[60,96]=0.573,X[61,96]=0.388,X[62,96]=0.290,X[63,96]=0.404,X[64,96]=0.506,X[65,96]=0.439,X[66,96]=0.333,X[67,96]=0.455,X[68,96]=0.557,X[69,96]=0.525,X[70,96]=0.318,X[71,96]=0.412,X[72,96]=0.690,X[73,96]=0.757,X[74,96]=0.518,X[75,96]=0.216,X[76,96]=0.400,X[77,96]=0.549,X[78,96]=0.600,X[79,96]=0.502,X[80,96]=0.329,X[81,96]=0.161,X[82,96]=0.431,X[83,96]=0.659,X[84,96]=0.451,X[85,96]=0.463,X[86,96]=0.506,X[87,96]=0.635,X[88,96]=0.733,X[89,96]=0.510,X[90,96]=0.518,X[91,96]=0.514,X[92,96]=0.471,X[93,96]=0.518,X[94,96]=0.502,X[95,96]=0.502,X[96,96]=0.592,X[97,96]=0.584,X[98,96]=0.533,X[99,96]=0.490,X[100,96]=0.502 X[1,97]=0.510,X[2,97]=0.325,X[3,97]=0.180,X[4,97]=0.447,X[5,97]=0.510,X[6,97]=0.459,X[7,97]=0.498,X[8,97]=0.569,X[9,97]=0.576,X[10,97]=0.678,X[11,97]=0.827,X[12,97]=0.592,X[13,97]=0.459,X[14,97]=0.463,X[15,97]=0.471,X[16,97]=0.525,X[17,97]=0.518,X[18,97]=0.514,X[19,97]=0.502,X[20,97]=0.537,X[21,97]=0.565,X[22,97]=0.592,X[23,97]=0.561,X[24,97]=0.502,X[25,97]=0.455,X[26,97]=0.412,X[27,97]=0.557,X[28,97]=0.427,X[29,97]=0.227,X[30,97]=0.420,X[31,97]=0.592,X[32,97]=0.384,X[33,97]=0.255,X[34,97]=0.455,X[35,97]=0.639,X[36,97]=0.569,X[37,97]=0.337,X[38,97]=0.294,X[39,97]=0.518,X[40,97]=0.714,X[41,97]=0.620,X[42,97]=0.439,X[43,97]=0.502,X[44,97]=0.541,X[45,97]=0.506,X[46,97]=0.369,X[47,97]=0.498,X[48,97]=0.580,X[49,97]=0.576,X[50,97]=0.847 X[51,97]=0.675,X[52,97]=0.580,X[53,97]=0.486,X[54,97]=0.412,X[55,97]=0.447,X[56,97]=0.447,X[57,97]=0.471,X[58,97]=0.506,X[59,97]=0.510,X[60,97]=0.443,X[61,97]=0.298,X[62,97]=0.392,X[63,97]=0.471,X[64,97]=0.647,X[65,97]=0.404,X[66,97]=0.227,X[67,97]=0.420,X[68,97]=0.639,X[69,97]=0.620,X[70,97]=0.353,X[71,97]=0.196,X[72,97]=0.502,X[73,97]=0.753,X[74,97]=0.706,X[75,97]=0.522,X[76,97]=0.655,X[77,97]=0.769,X[78,97]=0.788,X[79,97]=0.773,X[80,97]=0.620,X[81,97]=0.431,X[82,97]=0.475,X[83,97]=0.694,X[84,97]=0.502,X[85,97]=0.478,X[86,97]=0.498,X[87,97]=0.569,X[88,97]=0.557,X[89,97]=0.486,X[90,97]=0.576,X[91,97]=0.525,X[92,97]=0.592,X[93,97]=0.557,X[94,97]=0.604,X[95,97]=0.698,X[96,97]=0.780,X[97,97]=0.800,X[98,97]=0.698,X[99,97]=0.561,X[100,97]=0.510 X[1,98]=0.584,X[2,98]=0.459,X[3,98]=0.322,X[4,98]=0.380,X[5,98]=0.435,X[6,98]=0.482,X[7,98]=0.471,X[8,98]=0.439,X[9,98]=0.675,X[10,98]=0.788,X[11,98]=0.502,X[12,98]=0.557,X[13,98]=0.616,X[14,98]=0.494,X[15,98]=0.459,X[16,98]=0.439,X[17,98]=0.455,X[18,98]=0.478,X[19,98]=0.529,X[20,98]=0.494,X[21,98]=0.443,X[22,98]=0.431,X[23,98]=0.431,X[24,98]=0.510,X[25,98]=0.557,X[26,98]=0.506,X[27,98]=0.506,X[28,98]=0.275,X[29,98]=0.259,X[30,98]=0.467,X[31,98]=0.702,X[32,98]=0.388,X[33,98]=0.294,X[34,98]=0.392,X[35,98]=0.682,X[36,98]=0.698,X[37,98]=0.361,X[38,98]=0.157,X[39,98]=0.267,X[40,98]=0.533,X[41,98]=0.694,X[42,98]=0.518,X[43,98]=0.455,X[44,98]=0.671,X[45,98]=0.627,X[46,98]=0.431,X[47,98]=0.463,X[48,98]=0.588,X[49,98]=0.698,X[50,98]=0.557 X[51,98]=0.525,X[52,98]=0.518,X[53,98]=0.525,X[54,98]=0.467,X[55,98]=0.451,X[56,98]=0.463,X[57,98]=0.471,X[58,98]=0.427,X[59,98]=0.510,X[60,98]=0.365,X[61,98]=0.294,X[62,98]=0.388,X[63,98]=0.514,X[64,98]=0.663,X[65,98]=0.349,X[66,98]=0.227,X[67,98]=0.345,X[68,98]=0.647,X[69,98]=0.745,X[70,98]=0.412,X[71,98]=0.078,X[72,98]=0.255,X[73,98]=0.565,X[74,98]=0.525,X[75,98]=0.494,X[76,98]=0.490,X[77,98]=0.569,X[78,98]=0.667,X[79,98]=0.796,X[80,98]=0.612,X[81,98]=0.431,X[82,98]=0.502,X[83,98]=0.580,X[84,98]=0.537,X[85,98]=0.498,X[86,98]=0.490,X[87,98]=0.482,X[88,98]=0.486,X[89,98]=0.463,X[90,98]=0.510,X[91,98]=0.639,X[92,98]=0.769,X[93,98]=0.765,X[94,98]=0.729,X[95,98]=0.784,X[96,98]=0.847,X[97,98]=0.886,X[98,98]=0.875,X[99,98]=0.788,X[100,98]=0.584 X[1,99]=0.392,X[2,99]=0.161,X[3,99]=0.200,X[4,99]=0.231,X[5,99]=0.278,X[6,99]=0.384,X[7,99]=0.478,X[8,99]=0.455,X[9,99]=0.373,X[10,99]=0.776,X[11,99]=0.686,X[12,99]=0.800,X[13,99]=0.808,X[14,99]=0.514,X[15,99]=0.471,X[16,99]=0.431,X[17,99]=0.435,X[18,99]=0.431,X[19,99]=0.424,X[20,99]=0.467,X[21,99]=0.443,X[22,99]=0.427,X[23,99]=0.502,X[24,99]=0.533,X[25,99]=0.482,X[26,99]=0.498,X[27,99]=0.392,X[28,99]=0.204,X[29,99]=0.169,X[30,99]=0.525,X[31,99]=0.616,X[32,99]=0.302,X[33,99]=0.224,X[34,99]=0.310,X[35,99]=0.616,X[36,99]=0.816,X[37,99]=0.475,X[38,99]=0.149,X[39,99]=0.212,X[40,99]=0.388,X[41,99]=0.365,X[42,99]=0.353,X[43,99]=0.329,X[44,99]=0.341,X[45,99]=0.557,X[46,99]=0.290,X[47,99]=0.463,X[48,99]=0.337,X[49,99]=0.729,X[50,99]=0.635 X[51,99]=0.471,X[52,99]=0.573,X[53,99]=0.529,X[54,99]=0.459,X[55,99]=0.408,X[56,99]=0.404,X[57,99]=0.443,X[58,99]=0.412,X[59,99]=0.447,X[60,99]=0.325,X[61,99]=0.239,X[62,99]=0.318,X[63,99]=0.565,X[64,99]=0.510,X[65,99]=0.290,X[66,99]=0.235,X[67,99]=0.267,X[68,99]=0.600,X[69,99]=0.867,X[70,99]=0.573,X[71,99]=0.192,X[72,99]=0.267,X[73,99]=0.522,X[74,99]=0.431,X[75,99]=0.298,X[76,99]=0.271,X[77,99]=0.337,X[78,99]=0.404,X[79,99]=0.522,X[80,99]=0.525,X[81,99]=0.345,X[82,99]=0.412,X[83,99]=0.471,X[84,99]=0.498,X[85,99]=0.475,X[86,99]=0.416,X[87,99]=0.412,X[88,99]=0.404,X[89,99]=0.459,X[90,99]=0.549,X[91,99]=0.800,X[92,99]=0.741,X[93,99]=0.604,X[94,99]=0.522,X[95,99]=0.518,X[96,99]=0.616,X[97,99]=0.808,X[98,99]=0.863,X[99,99]=0.639,X[100,99]=0.435 X[1,100]=0.325,X[2,100]=0.212,X[3,100]=0.329,X[4,100]=0.271,X[5,100]=0.271,X[6,100]=0.502,X[7,100]=0.502,X[8,100]=0.412,X[9,100]=0.631,X[10,100]=0.788,X[11,100]=0.565,X[12,100]=0.780,X[13,100]=0.749,X[14,100]=0.529,X[15,100]=0.510,X[16,100]=0.482,X[17,100]=0.439,X[18,100]=0.416,X[19,100]=0.502,X[20,100]=0.545,X[21,100]=0.502,X[22,100]=0.439,X[23,100]=0.463,X[24,100]=0.510,X[25,100]=0.541,X[26,100]=0.565,X[27,100]=0.392,X[28,100]=0.165,X[29,100]=0.157,X[30,100]=0.612,X[31,100]=0.592,X[32,100]=0.333,X[33,100]=0.235,X[34,100]=0.298,X[35,100]=0.600,X[36,100]=0.827,X[37,100]=0.620,X[38,100]=0.333,X[39,100]=0.255,X[40,100]=0.463,X[41,100]=0.412,X[42,100]=0.392,X[43,100]=0.333,X[44,100]=0.247,X[45,100]=0.475,X[46,100]=0.349,X[47,100]=0.459,X[48,100]=0.537,X[49,100]=0.796,X[50,100]=0.659 X[51,100]=0.498,X[52,100]=0.549,X[53,100]=0.525,X[54,100]=0.435,X[55,100]=0.416,X[56,100]=0.475,X[57,100]=0.455,X[58,100]=0.416,X[59,100]=0.424,X[60,100]=0.314,X[61,100]=0.173,X[62,100]=0.376,X[63,100]=0.694,X[64,100]=0.533,X[65,100]=0.345,X[66,100]=0.251,X[67,100]=0.255,X[68,100]=0.565,X[69,100]=0.894,X[70,100]=0.722,X[71,100]=0.463,X[72,100]=0.459,X[73,100]=0.478,X[74,100]=0.424,X[75,100]=0.353,X[76,100]=0.329,X[77,100]=0.384,X[78,100]=0.420,X[79,100]=0.439,X[80,100]=0.482,X[81,100]=0.420,X[82,100]=0.361,X[83,100]=0.447,X[84,100]=0.502,X[85,100]=0.518,X[86,100]=0.427,X[87,100]=0.404,X[88,100]=0.463,X[89,100]=0.514,X[90,100]=0.529,X[91,100]=0.596,X[92,100]=0.545,X[93,100]=0.467,X[94,100]=0.455,X[95,100]=0.482,X[96,100]=0.486,X[97,100]=0.620,X[98,100]=0.827,X[99,100]=0.686,X[100,100]=0.482 init: float res = 0.0 float lowtrap=abs(round(real(@itrap)*#maxiter)) float hightrap=abs(round(imag(@itrap)*#maxiter)) IF lowtrap>hightrap res=lowtrap lowtrap=hightrap hightrap=res ENDIF float iterexp = 0 float scale = @colors*#pi/128 complex zold = (0,0) complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 float rotx = #x float roty = #y int irotx int iroty int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p = xx + flip(yy) loop: complex z1 = #z*(1-@weight) + p*@weight IF (@converge > 0) iterexp = iterexp + exp(-cabs(z1)) ELSE iterexp = iterexp + exp(-1/(cabs(zold - z1))) ENDIF zold = #z final: rotx = rotx/#width roty = roty/#height float xx = rotx rotx = #width+0.5*#width+(rotx-0.5)*cos(@angle*#pi/180)*#width - (roty-0.5)*sin(@angle*#pi/180)*#height roty = #height+0.5*#height+(roty-0.5)*cos(@angle*#pi/180)*#height + (xx-0.5)*sin(@angle*#pi/180)*#width irotx = abs(round(rotx)) iroty = abs(round(roty)) float smooth = iterexp*scale ez = cos(smooth)+flip(sin(smooth)) float angle = atan2(ez) IF (angle < 0) angle = angle + #pi * 2 ENDIF IF (@trap == true) IF (#numiter>=lowtrap)&&(#numiter<=hightrap) ; Is pixel in trap? #index = angle*(@palrange/(#pi*512)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+ @wate*\ X[1+(round((@hite*smooth+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*smooth+1)*(sum*@fbms+1)*iroty/@scale) % 100)]) ELSE #solid = true ENDIF ELSE #index = angle*(@palrange/(#pi*512)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+ @wate*\ X[1+(round((@hite*smooth+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*smooth+1)*(sum*@fbms+1)*iroty/@scale) % 100)]) ENDIF if @solidb && cabs(#z) == 0 #solid = true endif default: title = "Exp Flower2a Texture" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param solidb caption = "Solid background" default = false endparam param colors caption = "Color Spread" default = 2.0 hint = "2.0 approximates the iteration count. \ Use 10.0 for convergent fractals." endparam param trap caption = "Use Iteration Trap" default = false endparam param itrap caption="Trap Limits" default=(0.0,1.0) hint="Between 0.0 and 1.0" endparam param palrange caption = "Palette Range" default = 256.0 hint = "256 means use the whole palette." endparam param scale caption = "texture scale" default = 1.0 endparam param wate caption = "texture weight" default = 0.05 endparam param hite caption = "texture warp" default = 0.01 endparam param fbms caption = "texture fBm Weight" default = 0.01 endparam param angle caption = "texture rotation" default = 0.0 endparam param converge caption = "Fractal Type" default = 1 enum = "Convergent" "Divergent" hint = "Mandelbrot is Divergent, Newton is Convergent." endparam param weight caption = "fBm Weight" default = 0.5 min = 0.0 max = 1.0 endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Transfer Weight" default = 1.0 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam param fbmf caption = "fBm Final Weight" default = 10.0 endparam } Polartraps_Enhanced {; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; June 2006: added dual traps based upon code by Damien Jones, and additional ; trap options to be in more conformance to SimpleTraps ; iteration options expanded to include 'iterations to skip' and ; 'pattern repeat'. The last option determines how many times the trap/skip ; pattern is repeated ; Toby's Morph and Texture parameters added, more merge options added, ; more polar functions added, trap and distance modulator paramters added ; Some of the textures Toby used were originally developed by Michèle ; Dessureault (popgnarl and decimal). ; September 2006 init: float pd = 0 complex tz = 0 complex z1 = 0 float texture_dec = 0 float texture_gna = 0 float texture_tr = 0 float texture = 0 float d = 0 float distance = 0 float distances[2] complex mf_p[2] float oldd = 0 complex oldf_p = 0 complex i = (0,1) ; convenient variable for imaginary number float pa[2] pa[0] = @aA pa[1] = @aB float pb[2] pb[0] = @bA pb[1] = @bB complex rot[2] rot[0] = i^(@angA/90) rot[1] = i^(@angB/90) complex skew[2] skew[0] = i^(@skewA/90) skew[1] = i^(@skewB/90) complex startoffset[2] startoffset[0] = @startA startoffset[1] = @startB complex trapoffset[2] trapoffset[0] = @offsetA trapoffset[1] = @offsetB int types[2] types[0] = @typeA types[1] = @typeB bool move[2] move[0] = @moveA move[1] = @moveB complex moveamt[2] moveamt[0] = @moveamtA moveamt[1] = @moveamtB float astep[2] astep[0] = @aAstep astep[1] = @aBstep float bstep[2] bstep[0] = @bAstep bstep[1] = @bBstep complex rotstep[2] rotstep[0] = i^(@rotAstep/90) rotstep[1] = i^(@rotBstep/90) complex skewstep[2] skewstep[0] = i^(@skewAstep/90) skewstep[1] = i^(@skewBstep/90) complex startstep[2] startstep[0] = @startAstep startstep[1] = @startBstep complex trapstep[2] trapstep[0] = @trapAstep trapstep[1] = @trapBstep float min_dist = 1e+318 if @trap_mode == 5 || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 \ || @trap_mode == 9 min_dist = 0 endif bool trapped = false float rr = 0 float theta = 0 float x = 0 float y = 0 complex r = 1 complex r2 = i ^ 0.411111111111 complex w = 0 complex ww = 0 float t = 0 float sum = 0.0 float freq = 1.0 float exptrap_p = 0 float exptrap_z = 1 complex f_p = 0 float distsum = 0 float distave = 0 complex trap_z = 0 complex trap_p = 0 int trap_iter = 0 int max_iter = 0 int iter = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @version == "0" trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif float fx = 0 float fy = 0 float trapangle = 0 int skip = 0 int patnum = 0 if @version == "0" skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF p = xx + flip(yy) ; Toby's Morph code complex z2m = (0,0) complex z3 = (0,0) complex z4 = (0,0) complex z1tp = (0,0) complex z1tq = (0,0) complex qw = (0,0) complex er = (0,0) complex ty = (0,0) complex nuvar = (0,0) loop: ; Toby's Morph code complex z1t = #z if @showm if @tha2 == false qw = @nufunc(z1t-@tw)^@exp3 er = @nufunc2((z1t-@tw2)^@exp1) ty = @nufunc3((z1t-@tw3)^@exp2) if @change == "1" z1t = @nufunc(z1t-@tw)^@exp1 elseif @change == "2" z1t = qw+er elseif @change == "3" z1t = qw-er elseif @change == "4" z1t = qw*er elseif @change == "5" z1t = qw/er elseif @change == "6" z1t = qw^er elseif @change == "7" if @op == "+" z1t = qw+(er+ty) elseif @op == "-" z1t = qw+(er-ty) elseif @op == "*" z1t = qw+(er*ty) elseif @op == "/" z1t = qw+(er/ty) elseif @op == "^" z1t = qw+(er^ty) endif elseif @change == "8" if @op == "+" z1t = qw-(er+ty) elseif @op == "-" z1t = qw-(er-ty) elseif @op == "*" z1t = qw-(er*ty) elseif @op == "/" z1t = qw-(er/ty) elseif @op == "^" z1t = qw-(er^ty) endif elseif @change == "9" if @op == "+" z1t = qw*(er+ty) elseif @op == "-" z1t = qw*(er-ty) elseif @op == "*" z1t = qw*(er*ty) elseif @op == "/" z1t = qw*(er/ty) elseif @op == "^" z1t = qw*(er^ty) endif elseif @change == "10" if @op == "+" z1t = qw/(er+ty) elseif @op == "-" z1t = qw/(er-ty) elseif @op == "*" z1t = qw/(er*ty) elseif @op == "/" z1t = qw/(er/ty) elseif @op == "^" z1t = qw/(er^ty) endif elseif @change == "11" if @op == "+" z1t = qw^(er+ty) elseif @op == "-" z1t = qw^(er-ty) elseif @op == "*" z1t = qw^(er*ty) elseif @op == "/" z1t = qw^(er/ty) elseif @op == "^" z1t = qw^(er^ty) endif endif else if @zchange1 == "|z|" z2m = |z1t| elseif @zchange1 == "atan2(z)" z2m = atan2(z1t) elseif @zchange1 == "real(z)" z2m = real(z1t) elseif @zchange1 == "imag(z)" z2m = imag(z1t) endif if @zchange2 == "|z|" z3 = |z1t| elseif @zchange2 == "atan2(z)" z3 = atan2(z1t) elseif @zchange2 == "real(z)" z3 = real(z1t) elseif @zchange2 == "imag(z)" z3 = imag(z1t) endif if @zchange3 == "|z|" z4 = |z1t| elseif @zchange3 == "atan2(z)" z4 = atan2(z1t) elseif @zchange3 == "real(z)" z4 = real(z1t) elseif @zchange3 == "imag(z)" z4 = imag(z1t) endif aa = @nufunc((z1t-@tw)+@nufunc4(z2m-@tw4)^@exp4) bb = @nufunc((z1t-@tw)-@nufunc4(z2m-@tw4)^@exp4) cc = @nufunc4((z2m-@tw4)^@exp4-@nufunc(z1t-@tw)) ff = real((z3-@tw5)^@exp5) dd = @nufunc5(ff) jj = (z4-@tw6) kk = (z1t-@tw2) oo = (z1t-@tw3) gg = @nufunc2(kk) hh = @nufunc6(jj)^@exp6 ppp = @nufunc3(oo) if @mmode == "z+|z|" nuvar = aa elseif @mmode == "z-|z|" nuvar = bb elseif @mmode == "|z|-z" nuvar = cc endif if @change == "1" z1t = nuvar^@exp1 elseif @change == "2" if @mmode2 == "z+|z|" z1t = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif elseif @change == "3" if @mmode2 == "z+|z|" z1t = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif elseif @change == "4" if @mmode2 == "z+|z|" z1t = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif elseif @change == "5" if @mmode2 == "z+|z|" z1t = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif elseif @change == "6" if @mmode2 == "z+|z|" z1t = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif elseif @change == "7" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "8" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "9" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "10" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "11" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif endif endif endif int j = 0 exptrap_z = exptrap_z + exp(-cabs(#z)) while j <= @trapnum if move[j]&&iter == 0 trapoffset[j] = trapoffset[j] + #pixel*moveamt[j] endif ; increment parameters pa[j] = pa[j]+astep[j] pb[j] = pb[j]+bstep[j] rot[j] = rot[j]*rotstep[j] skew[j] = skew[j]*skewstep[j] startoffset[j] = startoffset[j] + startstep[j] trapoffset[j] = trapoffset[j] + trapstep[j] ; complex z1 = #z*(1-@weight) + p*@weight z1 = z1t*(1-@weight) + p*@weight if @version == "0" trapangle = @ang*180/(2*#pi); fx = real(z1)*cos(trapangle) - imag(z1)*sin(trapangle) fy = imag(z1)*cos(trapangle) + real(z1)*sin(trapangle) z1 = fx + flip(fy) else z1 = z1*rot[j] endif z1 = real(z1*skew[j]) + flip(imag(z1)) x = real(z1) + real(trapoffset[j]) y = imag(z1)*@mod + imag(trapoffset[j]) ; rr = cabs(z1) theta = atan2(y/x) IF types[j] == 16 ; lemniscate rr = pa[j]*sqrt(cos(2*theta)) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*10*abs((x-rr*cos(theta)) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEIF types[j] == 2 ; cardiod rr = pa[j]*(1-cos(theta)) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*5*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEIF types[j] == 6 ; conchoid if @version == "1.5" if cos(theta) == 0 rr = 1 else rr = (pa[j] + pb[j]*cos(theta))/cos(theta) endif else rr = (pa[j] + pb[j]*cos(theta))/cos(theta) endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEIF types[j] == 8 ; cycloid rr = cabs(z1) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*(theta-sin(theta))+y-rr*(1-cos(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*(theta-sin(theta)))+abs(y-rr*(1-cos(theta)))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEIF types[j] == 0 ; archimedes rr = pa[j]*theta f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEIF types[j] == 19 ; log spiral rr = exp(pa[j]*theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 24 ; rose rr = pa[j]*cos(theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 1 ; bifolium rr = 2e30*pa[j]*sin(theta)*sin(theta)*cos(theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 3 ; Cayley's sextic rr = pa[j]*cos(theta)^3 f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 5 ; cissoid of Dicoles rr = 5e31*pa[j]*sin(theta)*tan(theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 9 ; cycloid of Seva rr = pa[j]*(1+2*cos(2*theta)) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 11 ; eight curve rr = pa[j]*cos(theta)^(-2)*cos(2*theta)^0.5 f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 12 ; folium of Descartes if cos(theta)*(1+tan(theta)^3) == 0 rr = 1 else rr = 1e15*pa[j]*tan(theta)/(cos(theta)*(1+tan(theta)^3)) endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 15 ; kamyple of Eudoxus if cos(theta) == 0 rr = 1 else rr = pa[j]/cos(theta)^2 endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 17 ; limacon of Pascal rr = 0.05*pb[j] + pa[j]*cos(theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 18 ; lituus if theta == 0 rr = 1e10 else rr = pa[j]/theta^0.5 endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 20 ; maltese cross if (cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2)) == 0 rr = 1e10 else rr = 1e-8*pa[j]/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 endif if rr > 1 rr = 1 endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 4 ; circle rr = pa[j]*sin(theta)^2 + 0.2*pb[j]*cos(theta)^2 f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 7 ; Cotes' spiral if cosh(pb[j]*theta) == 0 rr = 1 else rr = pa[j]/cosh(pb[j]*theta) endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 10 ; dipole curve rr = pa[j]*(cos(theta))^0.5 f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 13 ; hyperbola if cos(2*theta) == 0 rr = 1 else rr = pa[j]*(1/cos(2*theta))^0.5 endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 14 ; kappa curve rr = 1e16*pa[j]*tan(theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 21 ; ophiuride rr = (1e30*pb[j]*sin(theta)-1e16*pa[j]*cos(theta))*tan(theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 22 ; quadratrix of Hippias if sin(theta) == 0 rr = 1 else rr = 1e-16*pa[j]*theta/sin(theta) endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 23 ; quadrifolium rr = 1e16*pa[j]*sin(2*theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 25 ; scarabaeus rr = 0.5*pb[j]*cos(2*theta)-pa[j]*cos(theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 26 ; semicubical parabola if cos(theta) == 0 rr = 1 else rr = 1e32*pa[j]*tan(theta)^2/cos(theta) endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 27 ; swastika curve if (sin(theta)^4-cos(theta)^4) == 0 rr = 1 else rr = 1e8*pa[j]*(sin(theta)*cos(theta)/(sin(theta)^4-cos(theta)^4))^0.5 endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 28 ; trifolium rr = -pa[j]*cos(3*theta) f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 29 ; Tschirnhausen cubic if cos(theta/3) == 0 rr = 1 else rr = pa[j]/cos(theta/3)^3 endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ELSEif types[j] == 30 ; trisectrix of Maclaurin ; Trisectrix of Maclaurinrr = 0.5*pa[j]*sin(3*theta)/sin(2*theta) if sin(2*theta) == 0 rr = 1 else rr = pa[j]*sin(3*theta)/sin(2*theta) endif f_p = x-rr*cos(theta) + flip(y-rr*sin(theta))+startoffset[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @disttype == 0 d = @dmod*abs(x-rr*cos(theta) + y-rr*sin(theta)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ELSE d = @dmod*(abs(x-rr*cos(theta)) + abs(y-rr*sin(theta))) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d/10-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/10-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum distave = distsum/exptrap_z ENDIF ENDIF distances[j] = d mf_p[j] = f_p oldd = d oldf_p = f_p if (@trapnum == 1) if (@trapAweight == "A") ; elseif (@trapAweight == "-A") distances[0] = -distances[0] mf_p[0] = -mf_p[0] elseif (@trapAweight == "|A|") distances[0] = abs(distances[0]) mf_p[0] = abs(mf_p[0]) elseif (@trapAweight == "A*A") distances[0] = sqr(distances[0]) mf_p[0] = sqr(mf_p[0]) elseif (@trapAweight == "-A*A") distances[0] = -sqr(distances[0]) mf_p[0] = -sqr(mf_p[0]) elseif (@trapAweight == "A*A*A") distances[0] = sqr(distances[0])*distances[0] mf_p[0] = sqr(mf_p[0])*mf_p[0] elseif (@trapAweight == "-A*A*A") distances[0] = -sqr(distances[0])*distances[0] mf_p[0] = -sqr(mf_p[0])*mf_p[0] elseif (@trapAweight == "|A*A*A|") distances[0] = abs(sqr(distances[0])*distances[0]) mf_p[0] = abs(sqr(mf_p[0])*mf_p[0]) elseif (@trapAweight == "log(A)") distances[0] = log(distances[0]) mf_p[0] = log(mf_p[0]) elseif (@trapAweight == "exp(A)") distances[0] = exp(distances[0]) mf_p[0] = exp(mf_p[0]) elseif (@trapAweight == "sqrt(A)") distances[0] = sqrt(distances[0]) mf_p[0] = sqrt(mf_p[0]) elseif (@trapAweight == "A^(1/3)") distances[0] = (distances[0])^(1/3) mf_p[0] = (mf_p[0])^(1/3) endif if (@trapBweight == "B") ; elseif (@trapBweight == "-B") distances[1] = -distances[1] mf_p[1] = -mf_p[1] elseif (@trapBweight == "|B|") distances[1] = abs(distances[1]) mf_p[1] = abs(mf_p[1]) elseif (@trapBweight == "B*B") distances[1] = sqr(distances[1]) mf_p[1] = sqr(mf_p[1]) elseif (@trapBweight == "-B*B") distances[1] = -sqr(distances[1]) mf_p[1] = -sqr(mf_p[1]) elseif (@trapBweight == "B*B*B") distances[1] = sqr(distances[1])*distances[1] mf_p[1] = sqr(mf_p[1])*mf_p[1] elseif (@trapBweight == "-B*B*B") distances[1] = -sqr(distances[1])*distances[1] mf_p[1] = -sqr(mf_p[1])*mf_p[1] elseif (@trapBweight == "|B*B*B|") distances[1] = abs(sqr(distances[1])*distances[1]) mf_p[1] = abs(sqr(mf_p[1])*mf_p[1]) elseif (@trapBweight == "log(B)") distances[1] = log(distances[1]) mf_p[1] = log(mf_p[1]) elseif (@trapBweight == "exp(B)") distances[1] = exp(distances[1]) mf_p[1] = exp(mf_p[1]) elseif (@trapBweight == "sqrt(B)") distances[1] = sqrt(distances[1]) mf_p[1] = sqrt(mf_p[1]) elseif (@trapBweight == "B^(1/3)") distances[1] = (distances[1])^(1/3) mf_p[1] = (mf_p[1])^(1/3) endif endif if (@trapnum == 0) d = distances[0] f_p = mf_p[0] elseif (@trapnum == 1) if (@trapmerge == "min(A,B)") if (distances[0] < distances[1]) d = distances[0] else d = distances[1] endif if (cabs(mf_p[0]) < cabs(mf_p[1])) f_p = mf_p[0] else f_p = mf_p[1] endif elseif (@trapmerge == "max(A,B)") if (distances[0] > distances[1]) d = distances[0] else d = distances[1] endif if (cabs(mf_p[0]) > cabs(mf_p[1])) f_p = mf_p[0] else f_p = mf_p[1] endif elseif (@trapmerge == "A+B") d = distances[0] + distances[1] f_p = mf_p[0] + mf_p[1] elseif (@trapmerge == "A*B") d = distances[0] * distances[1] f_p = mf_p[0] * mf_p[1] elseif (@trapmerge == "A/B") d = distances[0] / distances[1] f_p = mf_p[0] / mf_p[1] elseif (@trapmerge == "B/A") d = distances[1] / distances[0] f_p = mf_p[1] / mf_p[0] elseif (@trapmerge == "1/(A*B)") d = 1 / (distances[0] * distances[1]) f_p = 1 / (mf_p[0] * mf_p[1]) elseif (@trapmerge == "A^B") d = distances[0] ^ distances[1] f_p = mf_p[0] ^ mf_p[1] elseif (@trapmerge == "B^A") d = distances[1] ^ distances[0] f_p = mf_p[1] ^ mf_p[0] elseif (@trapmerge == "A") d = distances[0] f_p = mf_p[0] elseif (@trapmerge == "B") d = distances[1] f_p = mf_p[1] elseif (@trapmerge == "|A-B|") d = abs(distances[0] - distances[1]) elseif (@trapmerge == "Func(A) op Func(B)") if @mop == "+" d = real(@mfuncA(distances[0])) + real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) + @mfuncB(mf_p[1]) elseif @mop == "-" d = real(@mfuncA(distances[0])) - real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) - @mfuncB(mf_p[1]) elseif @mop == "*" d = real(@mfuncA(distances[0])) * real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) * @mfuncB(mf_p[1]) elseif @mop == "/" d = real(@mfuncA(distances[0])) / real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) / @mfuncB(mf_p[1]) elseif @mop == "^" d = real(@mfuncA(distances[0])) ^ real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) ^ @mfuncB(mf_p[1]) endif elseif (@trapmerge == "A AND B") if (distances[0] < @width && distances[1] < @width) d = distances[0] else d = @width endif elseif (@trapmerge == "B AND A") if (distances[1] < @width && distances[0] < @width) d = distances[1] else d = @width endif elseif (@trapmerge == "A OR B") if (distances[0] < @width) d = distances[0] elseif (distances[1] < @width) d = distances[1] else d = @width endif elseif (@trapmerge == "B OR A") if (distances[1] < @width) d = distances[1] elseif (distances[0] < @width) d = distances[0] else d = @width endif elseif (@trapmerge == "A NOT B") if (distances[0] < @width && distances[1] >= @width) d = distances[0] else d = @width endif elseif (@trapmerge == "B NOT A") if (distances[1] < @width && distances[0] >= @width) d = distances[1] else d = @width endif endif if (@trapmergeabs) d = abs(d) endif endif j = j + 1 endwhile if !@distmerge d = oldd endif if !@f_pmerge f_p = oldf_p endif IF @trap_mode == 0 IF (iter >= skip && iter < max_iter) \ && d < min_dist min_dist = d + @edge distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 1 IF (iter >= skip && iter < max_iter) \ && !trapped && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 2 IF (iter >= skip && iter < max_iter) \ && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 3 d = cabs(f_p) IF (iter >= skip && iter < max_iter) \ && d < min_dist min_dist = d+@edge distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p ENDIF endif if @version == "0" if @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif else IF @trap_mode == 4 IF (iter >= skip && iter < max_iter) \ && d < @width trapped = true min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p ENDIF endif endif IF @trap_mode == 5 IF (iter >= skip && iter < max_iter) \ && d > min_dist && d < @width trapped = true min_dist = d distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 \ || @trap_mode ==9 IF (iter >= skip && iter < max_iter) \ && d < @width trapped = true distance = distance + d trap_iter = iter trap_z = trap_z + #z trap_p = trap_p + f_p ENDIF ELSEIF @trap_mode == 10 || @trap_mode == 11 || @trap_mode == 12 \ || @trap_mode ==13 IF (iter >= skip && iter < max_iter) \ && !trapped && d < @width trapped = true distance = distance + d trap_iter = iter trap_z = trap_z + #z trap_p = trap_p + f_p ENDIF ENDIF iter = iter + 1 if @version == "1.4" || @version == "1.5" if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: float zrzr = 0 float zizi = 0 float rzrz = 0 float iziz = 0 float r0r0 = 0 float i0i0 = 0 float r1r1 = 0 float i1i1 = 0 float azaz = 0 float bzbz = 0 float czcz = 0 float dzdz = 0 int iii = 0 float avav = 1 float xbxb = 1 float frfr = 0 float fifi = 0 float zaza = 0 float zzzz = 0 complex ptr = 0 if @version == "0" w = fn2(fn1((trap_z)*10^@pwr))*@ts ww = fn2(fn1((w - round(w)))) + @toffset else if @addfbm == true w = fn2(fn1((trap_z+@tfbm*(xx+flip(yy)))*10^@pwr))*@ts else w = fn2(fn1((trap_z)*10^@pwr))*@ts endif ww = fn2(fn1((w - @fn6(w)))) + @toffset endif t = cabs(ww)*@tc if @version == "0" t = (t - trunc(t))*@tweight else t = (t - round(t))*@tweight endif ;decimal texture if @dectxt > 0 && @advd if @ztyp2 == "#z" tz = ((#z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Morph z" tz = ((f_p-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap z" tz = ((trap_p-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap #z" tz = ((trap_z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap dist" tz = ((distance-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Raw dist" tz = ((d-@txia2)*@txib2)^@txic2 endif if @dec_init == 0 pd = real(@fntx5(@fntx4(tz))^@exad4) elseif @dec_init == 1 pd = real(@fntx4(real(tz))^@exad4+@fntx5(imag(tz))^@exad5) elseif @dec_init == 2 pd = real(@fntx4(real(tz))^@exad4-@fntx5(imag(tz))^@exad5) elseif @dec_init == 3 pd = real(@fntx4(real(tz))^@exad4*@fntx5(imag(tz))^@exad5) elseif @dec_init == 4 pd = real(@fntx4(imag(tz))^@exad4-@fntx5(real(tz))^@exad5) elseif @dec_init == 5 pd = real(@fntx5(@fntx4(x))^@exad4) elseif @dec_init == 6 pd = real(@fntx5(@fntx4(y))^@exad4) elseif @dec_init == 7 pd = real(@fntx4(x)^@exad4+@fntx5(y)^@exad5) elseif @dec_init == 8 pd = real(@fntx4(x)^@exad4-@fntx5(y)^@exad5) elseif @dec_init == 9 pd = real(@fntx5(y)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 10 pd = real(@fntx4(x)^@exad4*@fntx5(y)^@exad5) elseif @dec_init == 11 pd = real(@fntx4(x)^@exad4/@fntx5(y)^@exad5) elseif @dec_init == 12 pd = real(@fntx5(y)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 13 pd = real(@fntx4(x)^@exad4^@fntx5(y)^@exad5) elseif @dec_init == 14 pd = real(@fntx5(y)^@exad4^@fntx4(x)^@exad5) elseif @dec_init == 15 pd = real(@fntx4(x)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 16 pd = real(@fntx4(x)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 17 pd = real(@fntx5(tz)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 18 pd = real(@fntx4(x)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 19 pd = real(@fntx4(x)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 20 pd = real(@fntx5(tz)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 21 pd = real(@fntx4(y)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 22 pd = real(@fntx4(y)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 23 pd = real(@fntx5(tz)^@exad4-@fntx4(y)^@exad5) elseif @dec_init == 24 pd = real(@fntx4(y)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 25 pd = real(@fntx4(y)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 26 pd = real(@fntx5(tz)^@exad4/@fntx4(y)^@exad5) endif if @dec_type == 0 pd = pd-ceil(pd*@dec_scale)/@dec_scale elseif @dec_type == 1 pd = pd-floor(pd*@dec_scale)/@dec_scale elseif @dec_type == 2 pd = pd-trunc(pd*@dec_scale)/@dec_scale elseif @dec_type == 3 pd = pd-round(pd*@dec_scale)/@dec_scale elseif @dec_type == 4 pd = pd-real(@fndec(pd*@dec_scale))/@dec_scale elseif @dec_type == 5 pd = pd-round(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 6 pd = pd-round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 7 pd = pd+round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 8 pd = pd-round(pd*@dec_scale)/@dec_scale-trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 9 pd = pd-round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 10 pd = pd+round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 11 pd = pd-trunc(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 12 pd = pd-trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 13 pd = pd+trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 14 pd = pd-trunc(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 15 pd = pd-trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 16 pd = pd+trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 17 pd = pd-ceil(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 18 pd = pd-ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 19 pd = pd+ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale)/@dec_scale2 endif if @dec_size != 0 pd = pd/@dec_size endif texture_dec = @dectxt*pd if @dec_limit !=0 texture_dec= texture_dec%@dec_limit endif if @dec_sgn == true texture_dec = abs(texture_dec) endif texture_dec = 10 * texture_dec * @decamt endif ; popgnarl texture if (@gnarl_amt != 0)&& @advpg if @ztyp3 == "#z" tz = ((#z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Morph z" tz = ((f_p-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap z" tz = ((trap_p-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap #z" tz = ((trap_z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap dist" tz = ((distance-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Raw dist" tz = ((d-@txia3)*@txib3)^@txic3 endif if @gnarl_init == 0 p = @fntx7(@fntx6(tz))^@exad6 elseif @gnarl_init == 1 p = @fntx6(real(tz))^@exad6+@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 2 p = @fntx6(real(tz))^@exad6-@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 3 p = @fntx6(real(tz))^@exad6*@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 4 p = @fntx6(imag(tz))^@exad6-@fntx7(real(tz))^@exad7 elseif @gnarl_init == 5 p = @fntx7(@fntx6(x))^@exad6 elseif @gnarl_init == 6 p = @fntx7(@fntx6(y))^@exad6 elseif @gnarl_init == 7 p = @fntx6(x)^@exad6+@fntx7(y)^@exad7 elseif @gnarl_init == 8 p = @fntx6(x)^@exad6-@fntx7(y)^@exad7 elseif @gnarl_init == 9 p = @fntx7(y)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 10 p = @fntx6(x)^@exad6*@fntx7(y)^@exad7 elseif @gnarl_init == 11 p = @fntx6(x)^@exad6/@fntx7(y)^@exad7 elseif @gnarl_init == 12 p = @fntx7(y)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 13 p = @fntx6(x)^@exad6^@fntx7(y)^@exad7 elseif @gnarl_init == 14 p = @fntx7(y)^@exad6^@fntx6(x)^@exad7 elseif @gnarl_init == 15 p = @fntx6(x)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 16 p = @fntx6(x)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 17 p = @fntx7(tz)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 18 p = @fntx6(x)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 19 p = @fntx6(x)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 20 p = @fntx7(tz)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 21 p = @fntx6(y)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 22 p = @fntx6(y)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 23 p = @fntx7(tz)^@exad6-@fntx6(y)^@exad7 elseif @gnarl_init == 24 p = @fntx6(y)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 25 p = @fntx6(y)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 26 p = @fntx7(tz)^@exad6/@fntx6(y)^@exad7 elseif @gnarl_init == 27 p = @fntx7(@fntx6(#pixel))^@exad6 endif if @gnarl_scaling == 0 p = p-ceil(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 1 p = p-floor(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 2 p = p-trunc(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 3 p = p-round(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 4 p = p-real(@fngnarl(p*@gnarl_scale))/@gnarl_scale elseif @gnarl_scaling == 5 p = p-round(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 6 p = p-round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 7 p = p+round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 8 p = p-round(p*@gnarl_scale)/@gnarl_scale-trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 9 p = p-round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 10 p = p+round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 11 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 12 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 13 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 14 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 15 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 16 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 17 p = p-ceil(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 18 p = p-ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 19 p = p+ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale)/@gnarl_scale2 endif if @gnarl_size != 0 p = p/@gnarl_size endif xx = real(p) yy = imag(p) float xOld = 0 int iter3 = @gnarl_octaves while (iter3 > 0) iter3 = iter3-1 xOld = xx if @gnarl_form == 0 xx = xx - sin(yy + sin(yy)) yy = yy - sin(xOld + sin(xOld)) elseif @gnarl_form == 1 xx = xx - sin(yy + log(yy + cos(yy))) yy = yy - sin(xOld + log(xOld + cos(xOld))) elseif @gnarl_form == 2 xx = xx - sin(yy + cos(yy)) yy = yy - sin(xOld + cos(xOld)) elseif @gnarl_form == 3 xx = xx - sin(yy + log(yy + tan(yy))) yy = yy - sin(xOld + log(xOld + tan(xOld))) elseif @gnarl_form == 4 xx = xx - sin(yy + log(yy + sin(yy))) yy = yy - sin(xOld + log(xOld + sin(xOld))) endif endwhile if (@gnarl_type == 0) texture_gna = real(@fng(xx)) elseif (@gnarl_type == 1) texture_gna = real(@fng(yy)) elseif (@gnarl_type == 2) texture_gna = real(@fng(xx+yy)) elseif (@gnarl_type == 3) texture_gna = real(@fng(xx*yy)) elseif (@gnarl_type == 4) texture_gna = real(@fng(xx-yy)) elseif (@gnarl_type == 5) texture_gna = real(@fng(xx/yy)) elseif (@gnarl_type == 6) texture_gna = real(@fng(yy/xx)) elseif (@gnarl_type == 7) texture_gna = real(@fng(xx^yy)) elseif (@gnarl_type == 8) texture_gna = real(@fng(yy^xx)) elseif (@gnarl_type == 9) texture_gna = real(@fng(1/xx)) elseif (@gnarl_type == 10) texture_gna = real(@fng(1/yy)) elseif (@gnarl_type == 11) texture_gna = atan2(xx+i*yy)/(2*#pi) if (texture_gna < 0) texture_gna = texture_gna + 1 endif elseif (@gnarl_type == 12) texture_gna = |xx+i*yy| elseif (@gnarl_type == 13) texture_gna = (xx+yy+|xx+i*yy|)/3 elseif (@gnarl_type == 14) texture_gna = (xx*yy*|xx+i*yy|)^(1/3) endif if @gnarl_limit !=0 texture_gna= 10 * (texture_gna%@gnarl_limit) * @gnarl_amt endif endif ;geometrix texture if (@trtxt != 0) && @advtr if @ztyp5 == "#z" tz = ((#z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Morph z" tz = ((f_p-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap z" tz = ((trap_p-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap #z" tz = ((trap_z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap dist" tz = ((distance-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Raw dist" tz = ((d-@trxia)*@trxib)^@trxic endif if @trinit == 0 ptr = (@fntx11(@fntx10(tz))^@exad10) elseif @trinit == 1 ptr = (@fntx10(real(tz))^@exad10+@fntx11(imag(tz))^@exad11) elseif @trinit == 2 ptr = (@fntx10(real(tz))^@exad10-@fntx11(imag(tz))^@exad11) elseif @trinit == 3 ptr = (@fntx10(real(tz))^@exad10*@fntx11(imag(tz))^@exad11) elseif @trinit == 4 ptr = (@fntx10(imag(tz))^@exad10-@fntx11(real(tz))^@exad11) elseif @trinit == 5 ptr = (@fntx11(@fntx10(x))^@exad10) elseif @trinit == 6 ptr = (@fntx11(@fntx10(y))^@exad10) elseif @trinit == 7 ptr = (@fntx10(x)^@exad10+@fntx11(y)^@exad11) elseif @trinit == 8 ptr = (@fntx10(x)^@exad10-@fntx11(y)^@exad11) elseif @trinit == 9 ptr = (@fntx11(y)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 10 ptr = (@fntx10(x)^@exad10*@fntx11(y)^@exad11) elseif @trinit == 11 ptr = (@fntx10(x)^@exad10/@fntx11(y)^@exad11) elseif @trinit == 12 ptr = (@fntx11(y)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 13 ptr = (@fntx10(x)^@exad10^@fntx11(y)^@exad11) elseif @trinit == 14 ptr = (@fntx11(y)^@exad11^@fntx10(x)^@exad10) elseif @trinit == 15 ptr = (@fntx10(x)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 16 ptr = (@fntx10(x)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 17 ptr = (@fntx11(tz)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 18 ptr = (@fntx10(x)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 19 ptr = (@fntx10(x)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 20 ptr = (@fntx11(tz)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 21 ptr = (@fntx10(y)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 22 ptr = (@fntx10(y)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 23 ptr = (@fntx11(tz)^@exad11-@fntx10(y)^@exad10) elseif @trinit == 24 ptr = (@fntx10(y)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 25 ptr = (@fntx10(y)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 26 ptr = (@fntx11(tz)^@exad11/@fntx10(y)^@exad10) endif endif if @advtr zrzr = real(@fnzr(ptr))*@scc zizi = imag(@fnzi(ptr))*@scc rzrz = floor(zrzr) iziz = floor(zizi) r0r0 = rzrz - 1 i0i0 = iziz - 1 r1r1 = rzrz + 1 i1i1 = iziz + 1 azaz = cabs(@fn1tx(r0r0) + @fn2tx(i0i0)) azaz = cabs(@fn3tx(azaz)) azaz = (azaz % @shad1 * 2) bzbz = cabs(@fn1tx(r1r1) + @fn2tx(i0i0)) bzbz = cabs(@fn3tx(bzbz)) bzbz = (bzbz % @shad2 * 2) czcz = cabs(@fn1tx(r1r1) + @fn2tx(i1i1)) czcz = cabs(@fn3tx(czcz)) czcz = (czcz % @shad3 * 2) dzdz = cabs(@fn1tx(r0r0) + @fn2tx(i1i1)) dzdz = cabs(@fn3tx(dzdz)) dzdz = (dzdz % @shad4 * 2) iii = 1 repeat avav = avav / (@trp1 * 2) xbxb = xbxb / (@trp2 * 2) frfr = rzrz + avav fifi = iziz + avav zaza = (azaz + bzbz + czcz + dzdz) / (@trp3 * 4) zzzz = zzzz * xbxb + zaza if (zrzr > frfr) if (zizi > fifi) rzrz = frfr iziz = fifi azaz = zzzz else rzrz = frfr dzdz = zzzz endif else if (zizi > fifi) iziz = fifi bzbz = zzzz else czcz = zzzz endif endif iii = iii + 1 until iii >= @freq texture_tr = (zaza-trunc(zaza*2)^@exp)*@trtxt if @geo_limit != 0 texture_tr = ((zaza-trunc(zaza)^@exp*2)% @geo_limit)*@trtxt endif if @geo_sgn == true texture_tr = abs(texture_tr) endif endif texture = (texture_dec+texture_gna+texture_tr)*@txamt/6000 if @trap_mode == 7 || @trap_mode == 11 distance = distance + cabs(trap_p) endif if @trap_mode == 8 || @trap_mode == 12 distance = distance + cabs(trap_z) endif if @trap_mode == 9 || @trap_mode == 13 distance = distance + (cabs(trap_z) + cabs(trap_p))/2 endif IF (@trap_mode == 1 || @trap_mode == 2 || @trap_mode == 5 \ || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 || \ @trap_mode == 9 || @trap_mode == 10 || @trap_mode == 11 \ || @trap_mode == 12 || @trap_mode == 13) \ || ((@version == "1.4" || @version == "1.5") && @trap_mode == 4) IF !trapped && @back == true #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2 && @trap_mode != 5 \ && @trap_mode != 6 && @trap_mode != 7 && @trap_mode != 8 \ && @trap_mode != 9 && @trap_mode != 10 && @trap_mode != 11 \ && @trap_mode != 12 && @trap_mode != 13 \ || ((@version == "1.4" || @version == "1.5") && @trap_mode==4)) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ENDIF ENDIF default: title = "Polar Traps Enhanced" heading caption = "Polar Traps Enhanced" endheading $ifdef VER40 heading text = "This is a general coloring formula with 31 trap types and 9 trap \ variants for each type." endheading heading text = "Some of the code is based upon appoaches of Mark Townsend and Damien Jones. \ The Morph code and the code for Decimal texturing, Popgnarl texturing \ and Geometrix texturing is from Toby Marshall. Some of the textures \ Toby used were originally developed by Michèle Dessureault \ (popgnarl and decimal)." endheading $endif param version caption = "Version number" enum = "0" "1.4" "1.5" default = 2 hint = "This is for backwards compatibility with old versions \ of the formula. If your old upr does perform correctly, change the default 'Version \ number' to '0'. DO NOT CHANGE THE DEFAULT VALUE FOR NEW UPRS!" endparam $ifdef VER40 heading text = "If your old upr does perform correctly, change the default 'Version \ number' to '0'. DO NOT CHANGE THE DEFAULT VALUE FOR NEW UPRS!" endheading $else heading caption = "If your old upr does perform correctly," endheading heading caption = "change the default 'Version number'" endheading heading caption = "to '0'. DO NOT CHANGE THE DEFAULT VALUE FOR NEW UPRS!" endheading $endif bool param expert caption = "Expert mode" default = false visible = @version == "1.4" || @version == "1.5" endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" "Farthest" \ "Sum" "Weighted Sum" "Weighted Sum 2" "Weighted Sum 3" \ "Sum 2" "Weighted Sum 4" "Weighted Sum 5" "Weighted Sum 6" endparam float param edge caption = "Edge effects" default = 0.0 visible = @trap_mode == 0 || @trap_mode == 3 endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" "6" "7" "8" "9" endparam float param mod caption = "Trap modulator" default = 1.0 endparam func fn3 caption = "Trap var function" default = cos() visible=@trapvar == 5||@trapvar == 7||@trapvar == 8||@trapvar == 9 endfunc param width caption = "Trap width" default = 0.1 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3) && (@version == "1.4" ||\ @version == "1.5") endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible = @version == "0" endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible = @version == "0" endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible = @version == "0" endparam param back caption = "Solid Background" default = true visible=(@trap_mode == 1 || @trap_mode == 2 || @trap_mode == 5 \ || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 || \ @trap_mode == 9 || @trap_mode == 10 || @trap_mode == 11 \ || @trap_mode == 12 || @trap_mode == 13) || ((@version == "1.4" ||\ @version == "1.5") && @trap_mode == 4) endparam param disttype caption = "Distance type" default = 0 enum = "Abs total" "Abs parts" hint = "The distance function must be positive. \ The absolute value can be taken of the \ whole function or of its individual parts." endparam float param dmod caption = "Distance modulator" default = 1.0 min = 0.0 endparam param trapnum caption = "Number of Traps" default = 0 enum = "1" "2" hint = "This is the number of traps to use." visible = @expert&& (@version == "1.4" || @version == "1.5") endparam bool param alliter caption = "Use all iterations" default = true visible = @expert&& (@version == "1.4" || @version == "1.5") endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter && @expert)|| @version == "0" endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter && @expert|| @version == "0" endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter && @expert&& (@version == "1.4" || @version == "1.5") endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && @expert && (@version == "1.4" || @version == "1.5") endparam heading caption = "Trap Merging" visible = @trapnum == 1 && @expert&& (@version == "1.4" || @version == "1.5") endheading param trapAweight caption = "Trap A Weight" default = 0 enum = "A" "-A" "|A|" "A*A" "-A*A" "A*A*A" "-A*A*A" "|A*A*A|" "log(A)" \ "exp(A)" "sqrt(A)" "A^(1/3)" hint = "Sets the weight for this trap." visible = @trapnum == 1 && @expert&& (@version == "1.4" || @version == "1.5") endparam param trapBweight caption = "Trap B Weight" default = 0 enum = "B" "-B" "|B|" "B*B" "-B*B" "B*B*B" "-B*B*B" "|B*B*B|" "log(B)" \ "exp(B)" "sqrt(B)" "B^(1/3)" hint = "Sets the weight for this trap." visible = @trapnum == 1 && @expert&& (@version == "1.4" || @version == "1.5") endparam param trapmerge caption = "Merge Mode" default = 0 enum = "min(A,B)" "max(A,B)" "A+B" "A*B" "A/B" "B/A" "1/(A*B)" "A^B" "B^A" \ "|A-B|" "Func(A) op Func(B)" "A" "B" "A AND B" "B AND A" "A OR B" \ "B OR A" "A NOT B" "B NOT A" hint = "Sets the merge method for the traps" visible = @trapnum == 1 && @expert&& (@version == "1.4" || @version == "1.5") endparam func mfuncA caption = "Merge func A" default = ident() visible = @trapnum == 1 && @expert && @trapmerge == "Func(A) op Func(B)" \ && (@version == "1.4" || @version == "1.5") endfunc func mfuncB caption = "Merge func B" default = atan() visible = @trapnum == 1 && @expert && @trapmerge == "Func(A) op Func(B)"\ && (@version == "1.4" || @version == "1.5") endfunc param mop caption = "Merge operator" default = 2 enum = "+" "-" "*" "/" "^" visible = @trapnum == 1 && @expert && @trapmerge == "Func(A) op Func(B)"\ && (@version == "1.4" || @version == "1.5") endparam param trapmergeabs caption = "No Negative Distances" default = false hint = "If set, converts negative combined trap distances to positive." visible = @trapnum == 1 && @expert&& (@version == "1.4" || @version == "1.5") endparam bool param distmerge caption = "Merge distance" default = true visible = @trapnum == 1 && @expert endparam bool param f_pmerge caption = "Merge trap metric" default = false visible = @trapnum == 1 && @expert && (@color_mode == 6 || \ @color_mode == 7 || @color_mode == 8 || @color_mode == 9 \ || @color_mode == 10) hint = "This affects only certain color modes. It can be used with \ interesting results with 'Merge distance' turned off." endparam heading caption = "Trap Parameters" visible = @trapnum == 0 endheading heading caption = "Trap A Parameters" visible = @trapnum == 1 && @expert && (@version == "1.4" || @version == "1.5") endheading param typeA caption = "Trap Type" default = 0 enum = "Archimedes" "bifolium" "cardiod" "Cayley's sextic" "circle" \ "cissoid of Diocles" "conchoid" "Cotes' spiral" "cycloid" \ "cycloid of Seva" "dipole curve""eight curve" \ "folium of Descartes" "hyperbola" "kappa curve" \ "kampyle of Eudoxus" "lemniscate" "limacon of Pascal" \ "lituus" "log spiral" "maltese cross" "ophiuride" \ "quadratrix of Hippias" "quadrifolium" "rose" "scarabaeus" \ "semicubical parabola" "swastika curve" "trifolium" \ "Tschirnhausen cubic" "trisectrix of Maclaurin" endparam param aA caption = "Polar parameter" default = 0.2 hint = "Affects spread and scale of trap" visible = @typeA != "cycloid" endparam param bA caption = "Polar parameter #2" default = 1.0 visible=@typeA == "Conchoid" || @typeA == "limacon of Pascal" \ || @typeA == "circle" || @typeA == "Cotes' spiral" || \ @typeA == "ophiuride" || @typeA == "scarabaeus" endparam param angA caption = "Trap rotation" default = 0.0 endparam param skewA caption = "Trap Skew" default = 0.0 endparam param startA caption = "Start offset" default = (0.0,0.0) visible = (@trapvar >= 4 || @color_mode >= 6) endparam param offsetA caption = "Trap offset" default = (0.0,0.0) endparam param moveA caption = "Move trap offset" default = false endparam complex param moveamtA caption = "Move amount" default = (1,0) visible = @moveA endparam heading caption = "Progressive Parameters" visible = (@trapnum == 0 && @expert) || @version == "0" endheading heading caption = "Progressive A Parameters" visible = @trapnum == 1 && @expert&& (@version == "1.4" || @version == "1.5") endheading float param aAstep caption = "Inc polar param" default = 0 visible = @expert || @version == "0" endparam float param bAstep caption = "Inc polar param #2" default = 0 visible=(@typeA == "Conchoid" || @typeA == "limacon of Pascal" \ || @typeA == "circle" || @typeA == "Cotes' spiral" || \ @typeA == "ophiuride" || @typeA == "scarabaeus") \ && @expert || @version == "0" endparam float param rotAstep caption = "Inc rotation" default = 0 visible = @expert || @version == "0" endparam float param skewAstep caption = "Inc skew" default = 0 visible = @expert || @version == "0" endparam complex param startAstep caption = "Inc start" default = (0,0) visible = (@trapvar >= 4 || @color_mode >= 6) && (@expert || @version == "0") endparam complex param trapAstep caption = "Inc trap offset" default = (0,0) visible = @expert || @version == "0" endparam heading caption = "Trap B Parameters" visible = @trapnum == 1 && @expert endheading param typeB caption = "Trap Type B" default = 0 enum = "Archimedes" "bifolium" "cardiod" "Cayley's sextic" "circle" \ "cissoid of Diocles" "conchoid" "Cotes' spiral" "cycloid" \ "cycloid of Seva" "dipole curve""eight curve" \ "folium of Descartes" "hyperbola" "kappa curve" \ "kampyle of Eudoxus" "lemniscate" "limacon of Pascal" \ "lituus" "log spiral" "maltese cross" "ophiuride" \ "quadratrix of Hippias" "quadrifolium" "rose" "scarabaeus" \ "semicubical parabola" "swastika curve" "trifolium" \ "Tschirnhausen cubic" "trisectrix of Maclaurin" visible = @trapnum == 1 && @expert endparam param ang caption = "Trap rotation" default = 0.0 visible = @version == "0" endparam param aB caption = "Polar parameter" default = 0.2 hint = "Affects spread and scale of trap" visible = @trapnum == 1 && @expert && @typeB != "cycloid" endparam param bB caption = "Polar parameter #2" default = 1.0 visible=(@typeB == "Conchoid" || @typeB == "limacon of Pascal" \ || @typeB == "circle" || @typeB == "Cotes' spiral" ||\ @typeB == "ophiuride" || @typeB == "scarabaeus" )&& \ @trapnum == 1 && @expert endparam param angB caption = "Trap rotation" default = 0.0 visible = @trapnum == 1 && @expert endparam param skewB caption = "Trap Skew" default = 0.0 visible = @trapnum == 1 && @expert endparam param startB caption = "Start offset" default = (0.0,0.0) visible = @trapnum == 1 && (@trapvar >= 4 || @color_mode >= 6) && @expert endparam param offsetB caption = "Trap offset" default = (0.0,0.0) visible = @trapnum == 1 && @expert endparam param moveB caption = "Move trap offset" default = false visible = @trapnum == 1 && @expert endparam complex param moveamtB caption = "Move amount" default = (1,0) visible = @moveB && @trapnum == 1 && @expert endparam heading caption = "Progressive B Parameters" visible = @trapnum == 1 && @expert endheading float param aBstep caption = "Inc polar param" default = 0 visible = @trapnum == 1 && @expert endparam float param bBstep caption = "Inc polar param #2" default = 0 visible=(@typeB == "Conchoid" || @typeB == "limacon of Pascal" \ || @typeB == "circle" || @typeB == "Cotes' spiral" ||\ @typeB == "ophiuride" || @typeB == "scarabaeus") endparam float param rotBstep caption = "Inc rotation" default = 0 visible = @trapnum == 1 && @expert endparam float param skewBstep caption = "Inc skew" default = 0 visible = @trapnum == 1 && @expert endparam complex param startBstep caption = "Inc start" default = (0,0) visible = @trapnum == 1 && (@trapvar >= 4 || @color_mode >= 6) && @expert endparam complex param trapBstep caption = "Inc trap offset" default = (0,0) visible = @trapnum == 1 && @expert endparam heading caption = "fBm Parameters" visible = @expert || @version == "0" endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @expert || @version == "0" endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @expert || @version == "0" endparam param fbm caption = "fBm Transfer Weight" default = 0.0 min = 0.0 visible = @expert || @version == "0" endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @expert || @version == "0" endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @expert || @version == "0" endparam param fbmf caption = "fBm Final Weight" default = 10.0 visible = @expert || @version == "0" endparam heading caption = "Texture Parameters" visible = @expert || @version == "0" endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @expert || @version == "0" endparam param tweight caption = "Texture weight" default = 0.0 visible = @expert || @version == "0" endparam param ts caption = "Texture scale" default = 20.0 visible = @expert || @version == "0" endparam param tc caption = "Texture modifier" default = 5.0 visible = @expert || @version == "0" endparam param pwr caption = "Texture power" default = 1.0 visible = @expert || @version == "0" endparam param addfbm caption = "Add fBm" default = false visible=(@version == "1.4" || @version == "1.5") && @expert endparam param tfbm caption = "fBm Amount" default = 1.0 visible=(@version == "1.4" || @version == "1.5")&&@addfbm==true && @expert endparam func fn1 caption = "Texture Function 1" default = sqr() visible = @expert || @version == "0" endfunc func fn2 caption = "Texture Function 2" default = acos() visible = @expert || @version == "0" endfunc func fn6 caption = "Texture Function 3" default = round() visible=(@version == "1.4" || @version == "1.5") && @expert endfunc heading caption = "Morph Parameters" visible = (@change == 0 && @exp1 == (1,0) && @exp2 == (1,0) \ && @exp3 == (1,0) && @tw == (0,0) && @tw2 == (0,0) && @tw3 == \ (0,0) && @tha2 == false)&& @expert endheading heading caption = "Morph Parameters [active]" visible = (@change != 0 || @exp1 != (1,0) || @exp2 != (1,0) || \ @exp3 != (1,0) || @tw != (0,0) || @tw2 != (0,0) || \ @tw3 != (0,0) || @tha2 == true)&& @expert endheading param showm caption = "Morph Parameters" hint = "Additional shaping parameters and functions." default = false visible = @expert endparam param tha2 caption = "Morph -> Morph II" default = false visible = @showm&& @expert endparam param change caption = "Morph" enum = "1""2""3""4""5""6""7""8""9""10""11" default = 0 visible = @showm && @expert endparam param mmode caption = "Z1 Mode" enum = "z+|z|""z-|z|""|z|-z" default = 0 hint = "Defines relationship of z1 to z in 1st z block" visible = @showm && @tha2 && @expert endparam param zchange1 caption = "Z1 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z1 variable " visible = @showm && @tha2 && @expert endparam param mmode2 caption = "Z2 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z2 to z in 2nd z block" visible = @showm && @tha2 && @change > 0 && @expert endparam param zchange2 caption = "Z2 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z2 variable " visible = @showm && @tha2 && @change > 0 && @expert endparam param mmode3 caption = "Z3 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z3 to z in 3rd z block" visible = @showm && @tha2 && @change > 5 && @expert endparam param zchange3 caption = "Z3 type" enum = "|z|""atan2(z)""real(z)""imag(z)" hint = "Determines the character of z3 variable " default = 0 visible = @showm && @tha2 && @change > 5 && @expert endparam complex param exp1 caption = "Bias 1" default = (1,0) visible = @showm && @expert endparam complex param exp3 caption = "Bias 2" default = (1,0) visible = @showm && @change > 0 && @expert endparam complex param exp2 caption = "Bias 3" default = (1,0) visible = @showm && @change > 5&& @expert endparam complex param exp4 caption = "Bias Z1" default = (1,0) visible = @tha2 && @showm && @expert endparam complex param exp5 caption = "Bias Z2" default = (1,0) visible = @tha2 && @showm && @change > 0 && @expert endparam complex param exp6 caption = "Bias Z3" default = (1,0) visible = @tha2 && @showm && @change > 5 && @expert endparam complex param tw caption = "Twist 1" default = (0,0) visible = @showm && @expert endparam complex param tw2 caption = "Twist 2" default = (0,0) visible = @showm && @change > 0 && @expert endparam complex param tw3 caption = "Twist 3" default = (0,0) visible = @showm && @change > 5 && @expert endparam complex param tw4 caption = "Twist Z1" default = (0,0) visible = @tha2 && @showm && @expert endparam complex param tw5 caption = "Twist Z2" default = (0,0) visible = @tha2 && @showm && @change > 0 && @expert endparam complex param tw6 caption = "Twist Z3" default = (0,0) visible = @tha2 && @showm && @change > 5 && @expert endparam param op caption = "Operator" enum = "+""-""*""/""^" default = 0 visible = @showm && @change > 5&& @expert endparam func nufunc caption = "Morph function 1" default = ident() visible = @showm&& @expert endfunc func nufunc2 caption = "Morph function 2" default = ident () visible = @showm && @change > 0&& @expert endfunc func nufunc3 caption = "Morph function 3" default = ident () visible = @showm && @change > 5 && @expert endfunc func nufunc4 caption = "Morph function Z1" default = ident () visible = @tha2 && @showm && @expert endfunc func nufunc5 caption = "Morph function Z2" default = zero () visible = @tha2 && @showm && @change > 0 && @expert endfunc func nufunc6 caption = "Morph function Z3" default = zero () visible = @tha2 && @showm && @change > 5 && @expert endfunc heading caption = "Toby's Texture Parameters" visible = @expert endheading param advt caption = "Texture Parameters" default = true visible = false endparam float param txamt caption = "Overall Tx Percent" default = 100.0 hint = "Controls the amount of \ Random, fBm, Decimal, Popgnarl and Additional \ texture applied cumulatively." visible = @advt && @expert endparam heading caption = "Decimal" visible = @advt && @decamt == 0 && @expert endheading heading caption = "Decimal [active]" visible = @advt && @decamt != 0 && @expert endheading param advd caption = "Decimal Texturing" default = false visible = @advt && @expert endparam float param decamt caption = "Decimal Tx Amount" default = 0.0 visible = @advt && @advd && @expert endparam param dec_init caption = "Decimal Initialisation" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advd && @expert endparam param ztyp2 caption = "Init z type" enum = "#z""Morph z""Trap z""Trap #z""Trap dist" "Raw dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Decimal Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && \ @expert endparam func fntx4 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Decimal Initialization'" visible = @advt && @advd && @expert endfunc func fntx5 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Decimal Initialization'" visible = @advt && @advd && @expert endfunc param dec_type caption = "Decimal Type" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advd && @expert endparam func fndec caption = "Type Function" default = atanh () hint = "Active when 'Decimal Type' = 'All Functions'" visible = @advt && @advd && @dec_type == 4 && @expert endfunc complex param txia2 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && @expert endparam complex param txib2 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && @expert endparam complex param txic2 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && @expert endparam float param dec_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Decimal Type'" visible = @advt && @advd && @expert endparam float param dec_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present) defined in 'Decimal Type'" visible = @advt && @advd && @dec_type > 4 && @expert endparam float param dectxt caption = "Decimal Depth" default = 1.0 hint = "Changes the amount and to some extent \ the pattern of the texture." visible = @advt && @advd && @expert endparam float param dec_limit caption = "Decimal Limit" default = 2.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advd && @expert endparam complex param exad4 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 1st (or only) variable present defined in \ 'Decimal Initialization'" visible = @advt && @advd && @expert endparam complex param exad5 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 2nd variable (when present) defined in \ 'Decimal Initialization'" visible = @advt && @advd && !(@dec_init == 0 ||@dec_init == 5 || \ @dec_init == 6) && @expert endparam float param dec_size caption = "Decimal Size" default = 1.0 visible = @advt && @advd && @expert endparam param dec_sgn caption = "Apply Decimal Sign?" default = true visible = @advt && @advd && @expert endparam heading caption = "Popgnarl" visible = @advt && @gnarl_amt == 0 && @expert endheading heading caption = "Popgnarl [active]" visible = @advt && @gnarl_amt != 0 && @expert endheading param advpg caption = "Popgnarl Texturing" default = false visible = @advt && @expert endparam float param gnarl_amt caption = "Popgnarl Amount" default = 0.0 min = 0.0 visible = @advt && @advpg && @expert endparam param gnarl_init caption = "Popgnarl Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advpg && @expert endparam param ztyp3 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Trap dist" "Raw dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Popgnarl Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam func fntx6 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg && @expert endfunc func fntx7 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg && @expert endfunc complex param txia3 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam complex param txib3 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam complex param txic3 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam complex param exad6 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 1st (or only) variable defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && @expert endparam complex param exad7 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 2nd variable (when present) defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && !(@gnarl_init == 0 || @gnarl_init == 5 || \ @gnarl_init == 6 || @gnarl_init == 21) && @expert endparam param gnarl_type caption = "Popgnarl Mode" enum = "real" "imag" "real+imag" "real*imag" "real-imag" \ "real/imag" "imag/real" "real^imag" "imag^real" \ "1/real" "1/imag" "angle" "magnitude" "arith. mean" \ "geom. mean" visible = @advt && @advpg && @expert endparam func fng caption = "Mode Function" default = abs() hint = "Acts on the variables in 'Popgnarl Mode'" visible = @advt && @advpg && @gnarl_type < 11 && @expert endfunc param gnarl_scaling caption = "Popgnarl Scaling" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advpg && @expert endparam func fngnarl caption = "Scaling Function" default = atanh () visible = @advt && @advpg && @gnarl_scaling == 4 && @expert endfunc float param gnarl_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @expert endparam float param gnarl_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present)defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @gnarl_scaling > 4 && @expert endparam param gnarl_form caption = "Popgnarl Formula" enum = "gnarl" "popcorn" "popsicle" "tannous" "narlog" visible = @advt && @advpg && @expert endparam float param gnarl_limit caption = "Popgnarl Limit" default = 1.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advpg && @expert endparam float param gnarl_size caption = "Popgnarl Size" default = 1.0 visible = @advt && @advpg && @expert endparam int param gnarl_octaves caption = "Popgnarl Octaves" default = 5 min = 1 visible = @advt && @advpg && @expert endparam heading caption = "Geometrix" visible = @advt && @trtxt == 0&& @expert endheading heading caption = "Geometrix [active]" visible = @advt && @trtxt != 0 && @expert endheading param advtr caption = "Geometrix Texturing" default = false visible = @advt && @expert endparam float param trtxt caption = "Geometrix Tx Amt" default = 0.0 visible = @advt && @advtr&& @expert endparam param trinit caption = "Geometrix Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advtr&& @expert endparam param ztyp5 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Trap dist" "Raw dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Geometrix Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam func fntx10 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr && @expert endfunc func fntx11 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr && @expert endfunc complex param trxia caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam complex param trxib caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam complex param trxic caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam complex param exad10 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'Geometrix Initialization'" visible = @advt && @advtr&& @expert endparam complex param exad11 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'Geometrix Initialization'" visible = @advt && @advtr && !(@trinit == 0 ||@trinit == 5 || @trinit == 6 ||\ @trinit == 21)&& @expert endparam float param exp caption = "Contrast" default = 0.6 visible = @advt && @advtr && @expert hint = "Higher values intensify the contrast between texture sections. If \ you find burned-out areas of texture try lowering this value" endparam float param scc caption = "Density" default = 1.0 hint = "Higher values create finer detail in the texture" visible = @advt && @advtr && @expert endparam float param trp1 caption = "Scale" default = 1 visible = @advt && @advtr&& @expert hint = "Densest texture is at '1'. Try other values and increase the \ 'Density' value to achieve different texture patterns" endparam float param freq caption = "Definition 1" default = 10 visible = @advt && @advtr && @expert hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition and/or complexity" endparam float param trp2 caption = "Definition 2" default = .7 hint = "Works interactively with other 'Definition' params. Lower values \ yield more texture definition" visible = @advt && @advtr&& @expert endparam float param trp3 caption = "Definition 3" default = .7 hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition" visible = @advt && @advtr && @expert endparam float param shad1 caption = "Shading 1" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam float param shad2 caption = "Shading 2" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam float param shad3 caption = "Shading 3" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam float param shad4 caption = "Shading 4" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam func fnzr caption = "Z function 1" default = ident() visible = @advt && @advtr && @expert endfunc func fnzi caption = "Z function 2" default = ident() visible = @advt && @advtr && @expert endfunc func fn1tx caption = "Real function" default = sqrt() visible = @advt && @advtr && @expert endfunc func fn2tx caption = "Imag function" default = ident() visible = @advt && @advtr&& @expert endfunc func fn3tx caption = "Overall function" default = asin() visible = @advt && @advtr&& @expert endfunc float param geo_limit caption = "Geometrix Limit" default = 0.0 hint = "Low values limit texture contrast. Zero is 'off'" visible = @advt && @advtr&& @expert endparam bool param geo_sgn caption = "Soften Texture" default = false visible = @advt && @advtr&& @expert endparam } CosMartin_strange_attractor { ; Ron Barnett February 14, 2005 ; ; Use this as inside coloring with the "pixel" formula in the "mt" folder. ; The formula automatically adjusts the hit density so that the coloring ; will remain constant with image size and zooms. As a result, the time ; to generate the image can increase dramatically with zooms int the image. ; ; global: int w = 0 int h = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) complex hits[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] int count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float fx = 1.0 float frx = 1.0 float ffx = 0.0 float xx = 0.0 float fy = 1.0 float fry = 1.0 float ffy = 0.0 int iter = 0 int px = 0 int py = 0 float maxcount = 1 ; ; attractor magnification factor ; float magfactor = 0.2 float cx = 0 float cy = 0 if @oldver cy = imag(#center) cx = real(#center) else cy = imag(#center)/magfactor cx = real(#center)/magfactor endif float magn = 0 if @oldver magn = #magn else magn = #magn*magfactor endif float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float iterate = @density*1e7 complex at = 0 ; ; initialize hit array ; while(h < #height+wd) while(w < #width+ht) hits[w,h] = 0 count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; fill the hit array ; if @oldver iter = 0 while (iter < (iterate*sqr(#width*magn/400))) xx = fx fx = fy - cos(fx) fy = @a-xx ; ; translate values to pixels ; ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + (xx - 0.5)*sin(#angle)*#width) px = trunc(ffx)+wd2 py = trunc(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 endif iter = iter + 1 endwhile else iter = 0 while (iter < 3*@density*#width*#height*#magn^2) xx = fx fx = fy - cos(fx) fy = @a-xx at = (fx + flip(fy))*(cos(#angle)-flip(sin(#angle))) frx = real(at) fry = imag(at) ; ; translate values to pixels ; ffx = frx - xmin ffy = fry - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = ffx*#width ffy = ffy*#height px = trunc(ffx)+wd2 py = trunc(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd && py < #height+ht hits[px,py] = hits[px,py]+ffx+flip(ffy) count[px,py] = count[px,py] + 1 if count[px,py] > maxcount maxcount = count[px,py] endif endif iter = iter + 1 endwhile endif ; init: int nhit=0 float xhit=0 float yhit=0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y bool inside = true ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > @thresh if @filter == 0 nhit=count[xcrd,ycrd] xhit=real(hits[xcrd,ycrd]) yhit=imag(hits[xcrd,ycrd]) else ; apply the Gaussian filter nhit=0 xhit=0 yhit=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nhit = nhit + round(gauss[gx+@filter,gy+@filter]*count[xcrd+gx,ycrd+gy]) xhit = xhit + gauss[gx+@filter,gy+@filter]*real(hits[xcrd+gx,ycrd+gy]) yhit = yhit + gauss[gx+@filter,gy+@filter]*imag(hits[xcrd+gx,ycrd+gy]) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = round(nhit/gweight) xhit = xhit/gweight yhit = yhit/gweight endif else ; #solid=true endif if @oldver if @closeness > 0 if xcrd + @closeness < #width+wd2 nhit = nhit + count[xcrd+@closeness, ycrd] xhit = xhit + real(hits[xcrd+@closeness, ycrd]) yhit = yhit + imag(hits[xcrd+@closeness, ycrd]) endif if xcrd - @closeness > 0 nhit = nhit + count[xcrd-@closeness, ycrd] xhit = xhit + real(hits[xcrd-@closeness, ycrd]) yhit = yhit + imag(hits[xcrd-@closeness, ycrd]) endif if ycrd + @closeness < #height+ht2 nhit = nhit + count[xcrd, ycrd+@closeness] xhit = xhit + real(hits[xcrd, ycrd+@closeness]) yhit = yhit + imag(hits[xcrd, ycrd+@closeness]) endif if ycrd - @closeness > 0 nhit = nhit + count[xcrd, ycrd-@closeness] xhit = xhit + real(hits[xcrd, ycrd-@closeness]) yhit = yhit + imag(hits[xcrd, ycrd-@closeness]) endif endif endif if @oldver if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=((nhit+1)/log(iterate))^@scale elseif @method == 1 #index=((xhit+1)/log(iterate))^@scale elseif @method == 2 #index=((yhit+1)/log(iterate))^@scale elseif @method == 3 #index=((yhit+xhit+1)/log(iterate))^@scale elseif @method == 4 #index=((xhit-yhit+1)/log(iterate))^@scale elseif @method == 5 #index=((xhit*yhit+1)/log(iterate))^@scale elseif @method == 6 #index=((nhit+xhit+1)/log(iterate))^@scale elseif @method == 7 #index=((nhit+yhit+1)/log(iterate))^@scale elseif @method == 8 #index=((nhit+xhit+yhit+1)/log(iterate))^@scale endif else if((nhit==0)&&(@solid==true)) #solid=true elseif @method == 0 #index=nhit/maxcount elseif @method == 1 #index=xhit/(100*maxcount) elseif @method == 2 #index=yhit/(100*maxcount) elseif @method == 3 #index=(yhit+xhit)/(200*maxcount) elseif @method == 4 #index=abs(xhit-yhit)/(200*maxcount) elseif @method == 5 #index=(xhit*yhit)/(1e6*maxcount) elseif @method == 6 #index=(nhit+xhit)/(100*maxcount) elseif @method == 7 #index=(nhit+yhit)/(100*maxcount) elseif @method == 8 #index=(nhit+xhit+yhit)/(200*maxcount) endif endif default: heading caption="CosMartin Attractor" endheading $ifdef VER40 heading text="x -> y - cos(x)" endheading heading text="y -> a - x" endheading heading text="Use with Pixel formula in mt.ufm or reb.ufm" endheading $else heading caption="x -> y - cos(x)" endheading heading caption="y -> a - x" endheading heading caption="Use with Pixel formula in mt.ufm" endheading $endif title="CosMartin Attractor" render=false param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param oldver caption = "Use old version" default = false hint = "Set magnification to 0.2" endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param density caption = "Hit Density" default = 1.0 hint = "Coloring density for the strange attractor." endparam param filter caption = "Filter Width" default = 1 min = 0 endparam param closeness caption = "Orbit Closeness" default = 0 hint = "Increasing will broaden the orbit lines." visible = @oldver endparam param scale caption = "Color Scaling" default = 0.2 visible = @oldver endparam param method caption = "Coloring Method" enum = "Count" "FX" "FY" "FX+FY" "FX-FY" "FX*FY" "Count+FX" "Count+FY" "Count+FX+FY" default = 0 endparam param thresh caption = "Hit Threshold" default = 0.0 endparam param a caption = "parameter a" default = 0.314159 endparam } Apollonian_Gasket {; Ron Barnett April 24, 2005 ; Implements the mapping algorithm of Susan Chambless ; Implements fBm in the global section using a noise array ; and modification of Damien's fBm code ; circle perturbations added August 11, 2005 ; Circle perturbations added August 13, 2005 ; improved duplicate removal code, November 18, 2005 global: int h = 0 int w = 0 int MaxLevel = @level int level = MaxLevel complex cs[1000000] float rad[1000000] float clr[1000000] float agree = 100 float thresh = @scircle/agree int l = 0 int ir = 0 int si = 0 int sj = 0 bool continue = true complex rra = 0 float rrb = 0 float rrc = 0 float c = 0 float ang = 2*#pi/3 complex ipi = flip(#pi); float ar = 0 float br = 0 complex a = 0 complex b = 0 float temp = 0 int ii = 0 int i = 0 int j = 0 int k = 0 int ib = 0 int start = 0 int finish = 0 int ilev = 2 float ddx = 0 float ddy = 0 float ddr = 0 int pert = @pert pert = 11 - pert float scle2 = 0 float scle = 0 if (@ptype == "None") scle = 2 + sqrt(3) scle2 = 1 elseif (@ptype == "Outer Circles") scle = (2 + sqrt(3))*cos(#pi/(pert+6)) scle2 = (scle-sqrt(3)-1.5)/0.5 else ; distance to origin for base spheres scle = 2 + sqrt(3) if pert == 10 scle2 = 1.0041268407 elseif pert == 9 scle2 = 1.0049465720 elseif pert == 8 scle2 = 1.0060422243 elseif pert == 7 scle2 = 1.0075560883 elseif pert == 6 scle2 = 1.0097381547 elseif pert == 5 scle2 = 1.0130643119 elseif pert == 4 scle2 = 1.0185254 elseif pert == 3 scle2 = 1.0286754 elseif pert == 2 scle2 = 1.0515254 elseif pert == 1 scle2 = 1.1277437913 endif endif int pxx = 0 int pyy = 0 int rds = 0 int iii = 9 float fx = 0.0 float ffx = 0.0 float xx = 0.0 float fy = 0.0 float ffy = 0.0 int px = 0 int py = 0 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float rwidth = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) float count[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float lev[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float gsum[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] complex gr = (1,1) complex gr2 = (0,1) ^ 0.411111111111 float gfreq = 1.0 int gi = 0 complex gp = 0 float gbx0 = 0 float gby0 = 0 float gbx1 = 0 float gby1 = 0 float grx0 = 0 float gry0 = 0 float grx1 = 0 float gry1 = 0 float gb00 = 0 float gb10 = 0 float gb01 = 0 float gb11 = 0 float gg_b00_0 = 0 float gg_b10_0 = 0 float gg_b01_0 = 0 float gg_b11_0 = 0 float gg_b00_1 = 0 float gg_b10_1 = 0 float gg_b01_1 = 0 float gg_b11_1 = 0 float gd = 0.0 float gu1 = 0 float gv1 = 0 float gu2 = 0 float gv2 = 0 float gsx = 0 float gsy = 0 float ga = 0 float gb = 0 complex gpixel=0 complex gp = 0 float fsum = 0 ; while (h < #height+ht) while (w < #width+wd) gpixel = w/(#width+wd) + flip(h/(#height+ht)) gp = gpixel * @gnscale * gr + @gnoffset gi = @giter gfreq = @gfreq gsum[w,h] = 0 WHILE (gi > 0) gbx0 = floor(real(gp)) % 256 gby0 = floor(imag(gp)) % 256 IF (gbx0 < 0) gbx0 = gbx0 + 256 ENDIF IF (gby0 < 0) gby0 = gby0 + 256 ENDIF gbx1 = (gbx0 + 1) % 256 gby1 = (gby0 + 1) % 256 grx0 = real(gp) - floor(real(gp)) gry0 = imag(gp) - floor(imag(gp)) grx1 = grx0 - 1 gry1 = gry0 - 1 gb00 = (gbx0^2 % 65536 + gby0)^2 % 65536 gb10 = (gbx1^2 % 65536 + gby0)^2 % 65536 gb01 = (gbx0^2 % 65536 + gby1)^2 % 65536 gb11 = (gbx1^2 % 65536 + gby1)^2 % 65536 gg_b00_0 = (gb00)^2*0.25 % 512 - 256 gg_b10_0 = (gb10)^2*0.25 % 512 - 256 gg_b01_0 = (gb01)^2*0.25 % 512 - 256 gg_b11_0 = (gb11)^2*0.25 % 512 - 256 gg_b00_1 = (gb00+1)^2*0.25 % 512 - 256 gg_b10_1 = (gb10+1)^2*0.25 % 512 - 256 gg_b01_1 = (gb01+1)^2*0.25 % 512 - 256 gg_b11_1 = (gb11+1)^2*0.25 % 512 - 256 gd = 1 / sqrt(sqr(gg_b00_0) + sqr(gg_b00_1)) gg_b00_0 = gg_b00_0 * gd gg_b00_1 = gg_b00_1 * gd gd = 1 / sqrt(sqr(gg_b10_0) + sqr(gg_b10_1)) gg_b10_0 = gg_b10_0 * gd gg_b10_1 = gg_b10_1 * gd gd = 1 / sqrt(sqr(gg_b01_0) + sqr(gg_b01_1)) gg_b01_0 = gg_b01_0 * gd gg_b01_1 = gg_b01_1 * gd gd = 1 / sqrt(sqr(gg_b11_0) + sqr(gg_b11_1)) gg_b11_0 = gg_b11_0 * gd gg_b11_1 = gg_b11_1 * gd gu1 = grx0 * gg_b00_0 + gry0 * gg_b00_1 gv1 = grx1 * gg_b10_0 + gry0 * gg_b10_1 gu2 = grx0 * gg_b01_0 + gry1 * gg_b01_1 gv2 = grx1 * gg_b11_0 + gry1 * gg_b11_1 gsx = sqr(grx0) * (3 - grx0*2) gsy = sqr(gry0) * (3 - gry0*2) ga = gu1 + gsx*(gv1-gu1) gb = gu2 + gsx*(gv2-gu2) gsum[w,h] = gsum[w,h] + (ga + gsy*(gb-ga))*gfreq gfreq = gfreq / 2 gp = gp * gr2 * 2 gi = gi - 1 ENDWHILE w = w + 1 endwhile w = 0 h = h + 1 endwhile w = 0 h = 0 ; cs[1] = exp((0,0)*ang+ipi)*scle cs[2] = exp((0,1)*ang+ipi)*scle cs[3] = exp((0,2)*ang+ipi)*scle cs[4] = 0 rad[1] = sqrt(3)+1.5 rad[2] = rad[1] rad[3] = rad[1] if (@ptype == "None") rad[4] = 0.5 elseif (@ptype == "Outer Circles") rad[4] = scle-sqrt(3)-1.5 else ; inner inversion circle radius if pert == 10 rad[4] = 0.5151714074 elseif pert == 9 rad[4] = 0.5181320854 elseif pert == 8 rad[4] = 0.5220631074 elseif pert == 7 rad[4] = 0.5274464005 elseif pert == 6 rad[4] = 0.5351105381 elseif pert == 5 rad[4] = 0.5465863845 elseif pert == 4 rad[4] = 0.564987 elseif pert == 3 rad[4] = 0.597588 elseif pert == 2 rad[4] = 0.665053 elseif pert == 1 rad[4] = 0.8524941755 endif endif cs[5] = exp((0,0)*ang)*scle2 cs[6] = exp((0,1)*ang)*scle2 cs[7] = exp((0,2)*ang)*scle2 cs[8] = 0 if (@ptype == "None")||(@ptype == "Outer Circles") rad[5] = sqrt(3)/2*scle2 rad[6] = rad[5] rad[7] = rad[5] rad[8] = rad[5]+1*scle2 else ; base sphere radii if pert == 10 rad[5] = 0.8618985631 elseif pert == 9 rad[5] = 0.8610788318 elseif pert == 8 rad[5] = 0.8599831795 elseif pert == 7 rad[5] = 0.8584693155 elseif pert == 6 rad[5] = 0.8562872491 elseif pert == 5 rad[5] = 0.8529610919 elseif pert == 4 rad[5] = 0.8475 elseif pert == 3 rad[5] = 0.83735 elseif pert == 2 rad[5] = 0.8145 elseif pert == 1 rad[5] = 0.7382816125 endif rad[6] = rad[5] rad[7] = rad[5] rad[8] = rad[5]+1 endif ; Traverse the levels i = 4 ii = 9 ; level 1 while ib < 8 if ib >= 0 && ib < 4 i = ib + 5 j = i - 4 else i = ib + 1 j = i - 3 if i == 8 j = 1 endif endif ar = rad[j], br = rad[i], a = cs[j], b = cs[i] temp = ar^2/(|a-b|-br^2), rad[ii] = temp*br, cs[ii] = temp*(b-a) + a if @method == "level" clr[ii] = 0 elseif @method == "number" clr[ii] = ii endif ii = ii + 1 ib = ib + 1 endwhile start = 9 finish = 13 while ilev <= level if ilev == 2 || ilev == 3 iii = start endif k = 1 while iii < finish while k <=4 ar = rad[k], br = rad[iii], a = cs[k], b = cs[iii] temp = ar^2/(|a-b|-br^2), rad[ii] = (temp*br) if abs(rad[ii]) < abs(rad[iii]) cs[ii] = temp*(b-a) + a if abs(rad[ii]) < @scircle ii = ii - 1 endif if @method == "level" clr[ii] = ilev-1 elseif @method == "number" clr[ii] = ii endif ii = ii + 1 endif ; duplicate removal if ilev < 4 i = 5 while i < ii-1 ddx = real(cs[i])-real(cs[ii-1]) ddy = imag(cs[i])-imag(cs[ii-1]) ddr = rad[i]-rad[ii-1] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c == 0 ||((rad[ii-1]<0) && ilev > 2 && @lace) i = ii-1 ii = ii-1 endif i = i + 1 endwhile endif k = k + 1 endwhile k = 1 iii= iii + 1 endwhile if ilev == 2 start = ii-12 finish = ii else if finish == ii ilev = level+1 endif finish = ii endif ilev = ilev + 1 j = ii-finish if j > 0 l = round((j)/2) + 1 ir = j continue = true repeat if l > 1 l = l-1 rra = cs[l-1+finish] rrb = rad[l-1+finish] rrc = clr[l-1+finish] else rra = cs[ir-1+finish] rrb = rad[ir-1+finish] rrc = clr[ir-1+finish] cs[ir-1+finish] = cs[finish] rad[ir-1+finish] = rad[finish] clr[ir-1+finish] = clr[finish] ir = ir-1 if ir == 0 cs[finish] = rra rad[finish] = rrb clr[finish] = rrc continue = false endif endif if continue == true si = l sj = 2*l endif while (sj <= ir) && (continue == true) if sj < ir ddx = real(cs[sj-1+finish])-real(cs[sj+finish]) ddy = imag(cs[sj-1+finish])-imag(cs[sj+finish]) ddr = rad[sj-1+finish]-rad[sj+finish] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c < 0 sj = sj + 1 endif endif ddx = real(rra)-real(cs[sj-1+finish]) ddy = imag(rra)-imag(cs[sj-1+finish]) ddr = rrb-rad[sj-1+finish] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c < 0 cs[si-1+finish] = cs[sj-1+finish] rad[si-1+finish] = rad[sj-1+finish] clr[si-1+finish] = clr[sj-1+finish] si = sj sj = sj + sj else sj = ir + 1 endif endwhile if (continue == true) cs[si-1+finish] = rra rad[si-1+finish] = rrb clr[si-1+finish] = rrc endif until continue == false ; eliminate duplicates in place for index 'finish' to index 'ii' ir = finish l = finish while ir < ii ddx = real(cs[ir])-real(cs[ir-1]) ddy = imag(cs[ir])-imag(cs[ir-1]) ddr = rad[ir]-rad[ir-1] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c == 0 ir = ir + 1 else cs[l] = cs[ir] rad[l] = rad[ir] clr[l] = clr[ir] ir = ir +1 l = l + 1 endif endwhile ii = l endif finish = ii endwhile int maxi = ii-1 ; ; ; translate circles to pixels ; ; initialize arrays ; while(h < #height+ht) while(w < #width+wd) count[w,h] = 0 lev[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile iii = 9 float radius = 0 while iii <= maxi radius = abs((rad[iii])) if (radius > 0)&&((@ptype==0)&&((radius < (sqrt(3)/2*scle2-.0001))||@base)&& \ (radius < (sqrt(3)/2+1*scle2-.0001))) || \ ((@ptype==1)&&((radius < (sqrt(3)/2*scle2-.0001))||@base)&& \ (radius < (sqrt(3)/2+1*scle2-.0001)) && \ (radius < (sqrt(3)/2*scle2+.0001))) || \ ((@ptype==2)&&((radius < (rad[5]-.01))||@base)&& \ (radius < (sqrt(3)/2+1-.01)) && (radius < (rad[5]+.01))) ; radius = abs(rad[iii]) ; if ((radius < (sqrt(3)/2-.01))||@base)&&(radius < (sqrt(3)/2+1-.01)) fx = real(cs[iii]) fy = imag(cs[iii]) ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - \ (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + \ (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 rds = round(radius*#width/txmax) rwidth = @rwidth*round(radius*#width/txmax) pxx = px-rds while pxx < px+rds pyy = py-rds while pyy < py+rds if pxx > 0 && pyy > 0 && pxx < #width+wd && pyy < #height+ht fsum = gsum[pxx,pyy]/rds*100 if @fill == 0 if ((rds*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0 count[pxx,pyy] = sqrt((rwidth/2*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((rds-rwidth/2)*(1+@gfbmf*(1+fsum))/(1+@gfbmf)-sqrt((pxx-px)^2+(pyy-py)^2))^2) lev[pxx,pyy] = @rcolor-1 endif if ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2- \ ((pxx-px))^2- ((pyy-py))^2) >=0) && \ ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr- \ (@alpha*(pxx-px))^@pwr-(@beta*(pyy-py))^@pwr)/@gamma >= 0 \ || !@clip) count[pxx,pyy] = (((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^ \ @pwr-(@alpha*(pxx-px))^@pwr-(@beta*(pyy-py))^@pwr)^ \ (1/@pwr)/@gamma if @method == "size" lev[pxx,pyy] = trunc(radius^@adj*100) elseif @method == "number" lev[pxx,pyy] = trunc(clr[iii]^@adj) elseif @method == "position" lev[pxx,pyy] = trunc(cabs(cs[iii]^@adj)*200) elseif @method == "level" lev[pxx,pyy] = clr[iii] endif lev[pxx,pyy] = lev[pxx,pyy]%@ncolor endif elseif @fill == 1 if ((rds*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0 count[pxx,pyy] = sqrt((rwidth/2*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((rds-rwidth/2)*(1+@gfbmf*(1+fsum))/(1+@gfbmf)-sqrt((pxx-px)^2+(pyy-py)^2))^2) lev[pxx,pyy] = @rcolor-1 endif if ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0) && \ ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr+(@alpha*(pxx-px))^@pwr- \ (@beta*(pyy-py))^@pwr)/@gamma >=0 || !@clip) count[pxx,pyy] = (((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr+(@alpha*(pxx-px))^@pwr-(@beta*(pyy-py))^@pwr)^ \ (1/@pwr)/@gamma if @method == "size" lev[pxx,pyy] = trunc(radius^@adj*100) elseif @method == "number" lev[pxx,pyy] = trunc(clr[iii]^@adj) elseif @method == "position" lev[pxx,pyy] = trunc(cabs(cs[iii]^@adj)*200) elseif @method == "level" lev[pxx,pyy] = clr[iii] endif lev[pxx,pyy] = lev[pxx,pyy]%@ncolor endif elseif @fill == 2 if ((rds*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0 count[pxx,pyy] = sqrt((rwidth/2*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((rds-rwidth/2)*(1+@gfbmf*(1+fsum))/(1+@gfbmf)-sqrt((pxx-px)^2+(pyy-py)^2))^2) lev[pxx,pyy] = @rcolor-1 endif if ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0) && \ ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr+(@alpha*(pxx-px))^@pwr+ \ (@beta*(pyy-py))^@pwr)/@gamma >= 0 || !@clip) count[pxx,pyy] = (((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr+(@alpha*(pxx-px))^@pwr+(@beta*(pyy-py))^@pwr)^ \ (1/@pwr)/@gamma if @method == "size" lev[pxx,pyy] = trunc(radius^@adj*100) elseif @method == "number" lev[pxx,pyy] = trunc(clr[iii]^@adj) elseif @method == "position" lev[pxx,pyy] = trunc(cabs(cs[iii]^@adj)*200) elseif @method == "level" lev[pxx,pyy] = clr[iii] endif lev[pxx,pyy] = lev[pxx,pyy]%@ncolor endif elseif @fill == 3 if ((rds*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0 count[pxx,pyy] = sqrt((rwidth/2*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((rds-rwidth/2)*(1+@gfbmf*(1+fsum))/(1+@gfbmf)-sqrt((pxx-px)^2+(pyy-py)^2))^2) lev[pxx,pyy] = @rcolor-1 endif if ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0) && \ ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr-(@alpha*(pxx-px))^@pwr+ \ (@beta*(pyy-py))^@pwr)/@gamma >= 0 || !@clip) count[pxx,pyy] = (((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr-(@alpha*(pxx-px))^@pwr+(@beta*(pyy-py))^@pwr)^ \ (1/@pwr)/@gamma if @method == "size" lev[pxx,pyy] = trunc(radius^@adj*100) elseif @method == "number" lev[pxx,pyy] = trunc(clr[iii]^@adj) elseif @method == "position" lev[pxx,pyy] = trunc(cabs(cs[iii]^@adj)*200) elseif @method == "level" lev[pxx,pyy] = clr[iii] endif lev[pxx,pyy] = lev[pxx,pyy]%@ncolor endif endif endif pyy = pyy + 1 endwhile pxx = pxx + 1 endwhile endif iii = iii + 1 endwhile ; init: float nhit=0 float nlev = 0 float nhit=0 float nhitx=0 float nhity=0 float e1 = 0.0; potentials float e2 = 0.0 float e3 = 0.0 float vx = 0.0; normal vector float vy = 0.0 float vz = 0.0 float vd = 0.0 float cen = 0 float cenx = 0 float ceny = 0 complex t = 0 float tII = 0 complex z1 = 0 float t1x = 0 float t2x = 0 float t3x = 0 float t1y = 0 float t2y = 0 float t3y = 0 float e1 = 0 float e2 = 0 float e3 = 0 float tx = 0 float ty = 0 float tz = 0 float td = 0 complex ww = 0 complex www = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 int in = 7 complex pp = #pixel*@nscale*r + @noffset WHILE (in > 0) ; determine integer coordinate for corners of square ; surrounding pp float bx0 = floor(real(pp)) % 256 float by0 = floor(imag(pp)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(pp) - floor(real(pp)) float ry0 = imag(pp) - floor(imag(pp)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from pin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float aa = u1 + sx*(v1-u1) float bb = u2 + sx*(v2-u2) sum = sum + (aa + sy*(bb-aa))*freq freq = freq / 2 pp = pp * r2 * 2 in = in - 1 ENDWHILE loop: final: int xcrd = #x int ycrd = #y bool inside = true ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > 0 nhit=count[xcrd,ycrd] nhitx=count[xcrd+1,ycrd] nhity=count[xcrd,ycrd+1] nlev=lev[xcrd,ycrd] else #solid=true endif float x = 0.0 float y = 0.0 IF @transfer == 0 x = real(#pixel)*100+@fbm*(sum+1) y = imag(#pixel)*100+@fbm*(sum+1) ELSEIF @transfer == 1 x = real(#pixel)*200*(1+@fbm*(sum+1)*0.5) y = imag(#pixel)*200*(1+@fbm*(sum+1)*0.5) ELSEIF @transfer == 2 x = real(#pixel)*200/(1+@fbm*(sum+1)*0.5) y = imag(#pixel)*200/(1+@fbm*(sum+1)*0.5) ELSEIF @transfer == 3 x = real(#pixel)*200+10*log(@fbm*(sum+1)) y = imag(#pixel)*200+10*log(@fbm*(sum+1)) ELSEIF @transfer == 4 x = real(#pixel)*200+50*exp(@fbm*(sum+1)) y = imag(#pixel)*200+50*exp(@fbm*(sum+1)) ELSEIF @transfer == 5 x = real(#pixel)*200+50*(@fbm*(sum+1))*(@fbm*(sum+1)) y = imag(#pixel)*200+50*(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 x = real(#pixel)*200+50*sqrt(@fbm*(sum+1)) y = imag(#pixel)*200+50*sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 x = real(#pixel)*200+50*sin(@fbm*(sum+1)) y = imag(#pixel)*200+50*sin(@fbm*(sum+1)) ELSEIF @transfer == 8 x = real(#pixel)*200+50*asin(@fbm*(sum+1)) y = imag(#pixel)*200+50*asin(@fbm*(sum+1)) ELSEIF @transfer == 9 x = real(#pixel)*200+50*tan(@fbm*(sum+1)) y = imag(#pixel)*200+50*tan(@fbm*(sum+1)) ELSEIF @transfer == 10 x = real(#pixel)*200+50*atan(@fbm*(sum+1)) y = imag(#pixel)*200+50*atan(@fbm*(sum+1)) ENDIF cen = nhit*(1+@fbmf*(sum+0.1)*10)/(1+@fbmf) cenx = nhitx*(1+@fbmf*(sum+0.1)*10)/(1+@fbmf) ceny = nhity*(1+@fbmf*(sum+0.1)*10)/(1+@fbmf) e1 = cen*@zscale e2 = cenx*@zscale e3 = ceny*@zscale IF (@xfer == 1); log e1 = log(e1) e2 = log(e2) e3 = log(e3) ELSEIF (@xfer == 2); sqrt e1 = sqrt(e1) e2 = sqrt(e2) e3 = sqrt(e3) ELSEIF (@xfer == 3); cuberoot e1 = (e1)^(1/3) e2 = (e2)^(1/3) e3 = (e3)^(1/3) ELSEIF (@xfer == 4); exp e1 = exp(e1) e2 = exp(e2) e3 = exp(e3) ELSEIF (@xfer == 5); sqr e1 = sqr(e1) e2 = sqr(e2) e3 = sqr(e3) ELSEIF (@xfer == 6); cube e1 = (e1)^3 e2 = (e2)^3 e3 = (e3)^3 ELSEIF (@xfer == 7); sin e1 = sin(e1) e2 = sin(e2) e3 = sin(e3) ELSEIF (@xfer == 8); cos e1 = cos(e1) e2 = cos(e2) e3 = cos(e3) ELSEIF (@xfer == 9); tan e1 = tan(e1) e2 = tan(e2) e3 = tan(e3) ENDIF ; apply post-scale e1 = e1 * @zscale2 e2 = e2 * @zscale2 e3 = e3 * @zscale2 vx = e2-e1 vy = e3-e1 vz = -0.01 ; normalize vector vd = 1/sqrt(sqr(vx)+sqr(vy)+sqr(vz)) vx = vx*vd vy = vy*vd vz = vz*vd z1 = vx + flip(vy) float d2r = #pi/180; degrees to radians conversion factor ; create the texture float gridx = @gridx float gridy = @gridy x = x*(1+@blend*real(z1))/(1+@blend)+ real(#random)*@dx y = y*(1+@blend*imag(z1))/(1+@blend)+ imag(#random)*@dy IF @smooth == false IF @texture == 0 ;lattice t1x = sin(x/gridx)+@toffset t1y = cos(y/gridy)+@toffset t2x = t1x+0.00000001 t3x = t1x t2y = t1y t3y = t1y+0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 1 ;quilt t1x = tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cotan(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 2 ;circles and squares t1x = sin(x/gridx)+cos(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cos(y/gridy)+sin(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 3 ;triangles t1x = tan(x/gridx)+cotan(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cotan(y/gridy)+tan(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 4 ;X's and O's t1x = 1/sin(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cos(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 5 ;Dimples t1x = 1/tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cotan(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 6 ;Arrows t1x = 1/tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/sin(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 7 ; basketweave t1x = 1/sin(x/gridx)+1/cos(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cos(y/gridy)+1/sin(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 8 ; balls t1x = sin(x/gridx)^2 + cos(y/gridy)^2+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = sin(y/gridy)^2 + cos(x/gridx)^2+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 9 ;Net t1x = log(abs(sin(x/gridx)))+@toffset t2x = t1x+0.00000001 t3x = t1x t1y = log(abs(cos(y/gridy)))+@toffset t2y = t1y t3y = t1y+0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ENDIF ELSE IF @texture == 0 ;lattice t1x = sin(x/gridx)+1 t2x = sin((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = cos(y/gridy)+1 t2y = t1y t3y = cos((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 1 ;quilt t1x = tan(x/gridx)+1 t2x = tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = cotan(y/gridy)+1 t2y = t1y t3y = cotan((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 2 ;circles and squares t1x = sin(x/gridx)+cos(y/gridy)+@toffset t2x = sin((x+0.00000001)/gridx)+cos(y/gridy)+@toffset t3x = t1x t1y = cos(y/gridy)+sin(x/gridx)+@toffset t2y = t1y t3y = cos((y+0.00000001)/gridy)+sin(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 3 ;triangles t1x = tan(x/gridx)+cotan(y/gridy)+@toffset t2x = tan((x+0.00000001)/gridx)+cotan(y/gridy)+@toffset t3x = t1x t1y = cotan(y/gridy)+tan(x/gridx)+@toffset t2y = t1y t3y = cotan((y+0.00000001)/gridy)+tan(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 4 ;X's and O's t1x = 1/sin(x/gridx)+@toffset t2x = 1/sin((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/cos(y/gridy)+@toffset t2y = t1y t3y = 1/cos((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 5 ;Dimples t1x = 1/tan(x/gridx)+@toffset t2x = 1/tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/cotan(y/gridy)+@toffset t2y = t1y t3y = 1/cotan((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 6 ;Arrows t1x = 1/tan(x/gridx)+@toffset t2x = 1/tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/sin(y/gridy)+@toffset t2y = t1y t3y = 1/sin((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 7 ; basketweave t1x = 1/sin((x+0.00000001)/gridx)+1/cos(y/gridy)+@toffset t2x = 1/sin(x/gridx)+1/cos(y/gridy)+@toffset t3x = t1x t1y = 1/cos(y/gridy)+1/sin(x/gridx)+@toffset t2y = t1y t3y = 1/cos((y+0.00000001)/gridy)+1/sin(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 8 ; balls t1x = sin((x+0.00000001)/gridx)^2 + cos(y/gridy)^2+@toffset t2x = sin(x/gridx)^2 + cos(y/gridy)^2+@toffset t3x = t1x t1y = sin(y/gridy)^2 + cos(x/gridx)^2+@toffset t2y = t1y t3y = sin((y+0.00000001)/gridy)^2 + cos(x/gridx)^2+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 9 ;net t1x = log(abs(sin(x/gridx)))+1 t2x = log(abs(sin((x+0.00000001)/gridx)))+@toffset t3x = t1x t1y = log(abs(cos(y/gridy)))+1 t2y = t1y t3y = log(abs(cos((y+0.00000001)/gridy)))+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ENDIF ENDIF ; add the weighted texture z1 = z1*(1-@weight) + t*@weight ww = fn2(fn1((fn3(z1+@pmix*((real(#pixel))+flip(imag(#pixel)))))*10^@tpwr))*@ts www = fn2(fn1((ww - round(ww)))) + @toffsetII tII = cabs(www)*@tc tII = (tII - trunc(tII))*@tweight ; create vector for light direction float lx = cos(@angle*d2r) * cos(@elevation*d2r) float ly = sin(@angle*d2r) * cos(@elevation*d2r) float lz = -sin(@elevation*d2r) ; compute cosine of angle between these vectors ; (this is the amount of lighting on the surface) float ll = lx*real(z1) + ly*imag(z1) + lz*vz IF (ll < @ambient); light is below the ambient level ll = @ambient; set it to the ambient level ENDIF IF (@ambient < 0); the ambient level is negative ll = ll + 1; offset to prevent clipping at 0 ENDIF ; if((nhit==0)&&(@solid==true)) if(nhit==0) #solid=true else #index = ll*0.0275*@scale*(1+@fbmf*(1+sum))/(1+@fbmf) + (0.125*nlev%@ncolor+1) +tII endif default: param version caption = "Formula Version" default = 200 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam $ifdef VER40 heading text="Implements built-in lighting based upon \ Damien's lighting code. \ Implements fBm in the global section \ using arrays and a modification of Damien's code. \ Use with Pixel formula in mt.ufm" endheading $else heading caption="Implements built-in lighting based upon" endheading heading caption="Damien's lighting code." endheading heading caption="Implements fBm in the global section" endheading heading caption="using a modification of Damien's code." endheading heading caption="Use with Pixel formula in mt.ufm" endheading render=false $endif title="Apollonian Gasket" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam $ifdef VER40 heading text="The actual number of iterations may be less than \ 'Max Iters' if all new generations are smaller \ than the 'Smallest Circle' setting." endheading $endif param level caption = "Max Iters (1-100)" default = 100 min = 1 max = 100 endparam $ifdef VER40 heading text="Decreasing 'Smallest Circle' will increase the \ amount of detail, but rending speed will decrease. For \ the 'Inner Circle' perturb type, use caution when decreasing \ the value as artifacts can be generated." endheading $endif param scircle caption = "Smallest Circle" default = 0.01 max = 0.01 min = 0.0001 endparam bool param base caption = "Show Base Set" default = false endparam param lace caption = "Display as Lace" default = false visible = @ptype == "Inner Circle" && (@pert >=8) endparam $ifdef VER40 heading text = "Perturbation of Inversion Circles \ by overlap." endheading $else heading caption = "Perturbation of Inversion Circles" endheading heading caption = "by overlap." endheading $endif param ptype caption = "Perturb Type" default = 0 enum = "None" "Outer Circles" "Inner Circle" endparam param pert caption = "Perturb Level (1-10)" default = 1 min = 1 max = 10 visible = @ptype != "None" endparam heading caption = "Coloring" endheading float param scale caption = "color scale adj" default = 1.0 endparam int param ncolor caption = "# of colors" default = 8 min = 1 max = 8 endparam float param rwidth caption = "ring width" default = 0.1 endparam int param rcolor caption = "ring color" default = 1 min = 1 max = 8 endparam param clip caption = "Clip to formula" default = false endparam param method caption = "color method" enum = "level" "size" "number" "position" default = 0 endparam param adj caption = "color methd adj" default = 1.0 endparam param xfer caption = "Height Transfer" default = 0 enum = "linear" "log" "sqrt" "cuberoot" "exp" "sqr" "cube" "sin" "cos" "tan" hint = "This function will be applied to the height value \ before a slope is calculated." endparam param zscale caption = "Height Pre-Scale" default = 0.4 hint = "Specifies the ratio between height and distance. Higher \ values will exaggerate differences between high and low. \ In general, you will want to use smaller numbers here." endparam param zscale2 caption = "Height Post-Scale" default = 0.025 hint = "Specifies the ratio between height and distance; like \ Height Pre-Scale, except that this value is applied after \ the transfer function." endparam param @angle caption = "Light Rotation" default = 135 hint = "Gives the rotation of the light source, in degrees." endparam param @elevation caption = "Light Elevation" default = 60 hint = "Gives the elevation of the light source, in degrees." endparam float param @ambient caption = "Ambient Light" default = -1 min = -1.0 max = 1.0 hint = "Specifies the level of ambient light. Use -1.0 to \ color all surfaces." endparam param fill caption = "Fill Type" enum = "quartic 1" "quartic 2" "quartic 3" "quartic 4" default = 0 endparam float param pwr caption = "Power" default = 2.0 endparam float param alpha caption = "alpha" default = 1.0 endparam float param beta caption = "beta" default = 1.0 endparam float param gamma caption = "gamma" default = 1.0 endparam heading caption = "Lattice Textures" endheading param texture caption = "Texture" default = 0 enum = "Lattice" "Quilt" "Circles & Squares" "Triangles" \ "X's & O's" "Dimples" "Arrows" "Basketweave" "Balls" \ "Net" endparam param gridx caption = "Texture X distance" default = 1.0 endparam param gridy caption = "Texture Y distance" default = 1.0 endparam param dx caption = "Texture X randomizer" default = 0.0 endparam param dy caption = "Texture Y randomizer" default = 0.0 endparam param theight caption = "Texture Height" default = 1.0 endparam param weight caption = "Texture Weight" default = 0.0 min = 0.0 max = 1.0 endparam param blend caption = "Texture Blend" default = 0.0 endparam param toffset caption = "Texturizer Offset" default = 1.0 endparam param smooth caption = "Texture Smoothing" default = false hint = "Apply 3D smoothing to the texture" endparam heading caption = "fBm Textures" endheading param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Texture Weight" default = 0.0 endparam param fbmf caption = "fBm Final Weight" default = 0.5 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam param gnoffset caption = "global fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam float param gfbmf caption = "global fBm weight" default = 0.1 endparam float param gnscale caption = "global fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam float param gfreq caption = "global fBm freq" default = 1.0 endparam int param giter caption = "global fBm iter" default = 7 min = 1 endparam heading caption = "General Textures" endheading param toffsetII caption = "Texture II offset" default = (-1,-1) hint = "Changes the texture pattern." endparam param tweight caption = "Texture II weight" default = 0.0 endparam param ts caption = "Texture II scale" default = 3.0 endparam param tc caption = "Texture II modifier" default = 5.0 endparam param tpwr caption = "Texture II power" default = 1.0 endparam param pmix caption = "Pixel Strange Mix" default = 0.0 endparam func fn3 caption = "Texture II Adjustment" default = ident() endfunc func fn1 caption = "Texture II Function 1" default = sqr() endfunc func fn2 caption = "Texture II Function 2" default = acos() endfunc } Formula_Plotter {; Ron Barnett June 25, 2005 ; Implements the mapping algorithm of Susan Chambless ; Implements fBm in the global section using a noise array ; and modification of Damien's fBm code ; Implements Painter's algorithm for hidden surfaces together ; with HEAPSORT to paint spheres from back to front ; Thanks to Ken Childress for bug fixes and code improvements ; Direct coloring options added by Ken Childress global: int h = 0 int w = 0 float csx[300000] float csy[300000] float csz[300000] float clr[300000] int pxx = 0 int pyy = 0 int rds = 0 int i = 0 int j = 0 int iii = 9 float fx = 0.0 float ffx = 0.0 float xx = 0.0 float fy = 0.0 float ffy = 0.0 float yy = 0.0 float zz = 0.0 float ffz = 0.0 int px = 0 int py = 0 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float tzmax = sqrt(txmax^2+tymax^2) float zmin = sqrt(xmin^2 + ymin^2) float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) float count[round(#width*(1+@percentInc*0.01))+1,round(#height*(1+@percentInc*0.01))+1] float lev[round(#width*(1+@percentInc*0.01))+1,round(#height*(1+@percentInc*0.01))+1] float gsum[round(#width*(1+@percentInc*0.01))+1,round(#height*(1+@percentInc*0.01))+1] float radius = 0 float fscale = 0 ; Color range variables and initialization. color colorMap [24, 2] int ranges = 8 int colorsUsed = 0 if (@colorPreset == "Gradient") colorsUsed = @ncolor elseif (@colorPreset == "Generate") colorsUsed = @numRanges elseif (@colorPreset == "Custom") colorsUsed = @colorRanges else colorsUsed = @ncolor endif if (@colorPreset == "Gradient") ; Use the gradient for the color ranges. ranges = @totalColors elseif (@colorPreset == "Custom") ; User specified custom range. ; Initial values by Toby Marshall. colorMap [0,0] = @colorMax1, colorMap [0,1] = @colorMin1 colorMap [1,0] = @colorMax2, colorMap [1,1] = @colorMin2 colorMap [2,0] = @colorMax3, colorMap [2,1] = @colorMin3 colorMap [3,0] = @colorMax4, colorMap [3,1] = @colorMin4 colorMap [4,0] = @colorMax5, colorMap [4,1] = @colorMin5 colorMap [5,0] = @colorMax6, colorMap [5,1] = @colorMin6 colorMap [6,0] = @colorMax7, colorMap [6,1] = @colorMin7 colorMap [7,0] = @colorMax8, colorMap [7,1] = @colorMin8 colorMap [8,0] = @customMax9, colorMap [8,1] = @customMin9 colorMap [9,0] = @customMax10, colorMap [9,1] = @customMin10 colorMap [10,0] = @customMax11, colorMap [10,1] = @customMin11 colorMap [11,0] = @customMax12, colorMap [11,1] = @customMin12 colorMap [12,0] = @customMax13, colorMap [12,1] = @customMin13 colorMap [13,0] = @customMax14, colorMap [13,1] = @customMin14 colorMap [14,0] = @customMax15, colorMap [14,1] = @customMin15 colorMap [15,0] = @customMax16, colorMap [15,1] = @customMin16 colorMap [16,0] = @customMax17, colorMap [16,1] = @customMin17 colorMap [17,0] = @customMax18, colorMap [17,1] = @customMin18 colorMap [18,0] = @customMax19, colorMap [18,1] = @customMin19 colorMap [19,0] = @customMax20, colorMap [19,1] = @customMin20 colorMap [20,0] = @customMax21, colorMap [20,1] = @customMin21 colorMap [21,0] = @customMax22, colorMap [21,1] = @customMin22 colorMap [22,0] = @customMax23, colorMap [22,1] = @customMin23 colorMap [23,0] = @customMax24, colorMap [23,1] = @customMin24 ranges = @colorRanges elseif (@colorPreset == "Generate") ; Compute the color ranges using the gradient. ranges = 0 while ranges < @numRanges color gradientColor = gradient(ranges/@numRanges) colorMap [ranges,0] = hsl(hue(gradientColor), sat(gradientColor), @luminanceUpper) colorMap [ranges,1] = hsl(hue(gradientColor), sat(gradientColor), @luminanceLower) ranges = ranges + 1 endwhile elseif (@colorPreset == "Default") ; colorMap [0,0] = @defaultMax1, colorMap [0,1] = @defaultMin1 colorMap [1,0] = @defaultMax2, colorMap [1,1] = @defaultMin2 colorMap [2,0] = @defaultMax3, colorMap [2,1] = @defaultMin3 colorMap [3,0] = @defaultMax4, colorMap [3,1] = @defaultMin4 colorMap [4,0] = @defaultMax5, colorMap [4,1] = @defaultMin5 colorMap [5,0] = @defaultMax6, colorMap [5,1] = @defaultMin6 colorMap [6,0] = @defaultMax7, colorMap [6,1] = @defaultMin7 colorMap [7,0] = @defaultMax8, colorMap [7,1] = @defaultMin8 ranges = 8 elseif (@colorPreset == "Default 12") ; Created by Toby Marshall. colorMap [0,0] = @default12Max1, colorMap [0,1] = @default12Min1 colorMap [1,0] = @default12Max2, colorMap [1,1] = @default12Min2 colorMap [2,0] = @default12Max3, colorMap [2,1] = @default12Min3 colorMap [3,0] = @default12Max4, colorMap [3,1] = @default12Min4 colorMap [4,0] = @default12Max5, colorMap [4,1] = @default12Min5 colorMap [5,0] = @default12Max6, colorMap [5,1] = @default12Min6 colorMap [6,0] = @default12Max7, colorMap [6,1] = @default12Min7 colorMap [7,0] = @default12Max8, colorMap [7,1] = @default12Min8 colorMap [8,0] = @default12Max9, colorMap [8,1] = @default12Min9 colorMap [9,0] = @default12Max10, colorMap [9,1] = @default12Min10 colorMap [10,0] = @default12Max11, colorMap [10,1] = @default12Min11 colorMap [11,0] = @default12Max12, colorMap [11,1] = @default12Min12 ranges = 12 elseif (@colorPreset == "Default 16") ; Created by Toby Marshall. colorMap [0,0] = @default16Max1, colorMap [0,1] = @default16Min1 colorMap [1,0] = @default16Max2, colorMap [1,1] = @default16Min2 colorMap [2,0] = @default16Max3, colorMap [2,1] = @default16Min3 colorMap [3,0] = @default16Max4, colorMap [3,1] = @default16Min4 colorMap [4,0] = @default16Max5, colorMap [4,1] = @default16Min5 colorMap [5,0] = @default16Max6, colorMap [5,1] = @default16Min6 colorMap [6,0] = @default16Max7, colorMap [6,1] = @default16Min7 colorMap [7,0] = @default16Max8, colorMap [7,1] = @default16Min8 colorMap [8,0] = @default16Max9, colorMap [8,1] = @default16Min9 colorMap [9,0] = @default16Max10, colorMap [9,1] = @default16Min10 colorMap [10,0] = @default16Max11, colorMap [10,1] = @default16Min11 colorMap [11,0] = @default16Max12, colorMap [11,1] = @default16Min12 colorMap [12,0] = @default16Max13, colorMap [12,1] = @default16Min13 colorMap [13,0] = @default16Max14, colorMap [13,1] = @default16Min14 colorMap [14,0] = @default16Max15, colorMap [14,1] = @default16Min15 colorMap [15,0] = @default16Max16, colorMap [15,1] = @default16Min16 ranges = 16 elseif (@colorPreset == "Default 24") ; Created by Toby Marshall. colorMap [0,0] = @default24Max1, colorMap [0,1] = @default24Min1 colorMap [1,0] = @default24Max2, colorMap [1,1] = @default24Min2 colorMap [2,0] = @default24Max3, colorMap [2,1] = @default24Min3 colorMap [3,0] = @default24Max4, colorMap [3,1] = @default24Min4 colorMap [4,0] = @default24Max5, colorMap [4,1] = @default24Min5 colorMap [5,0] = @default24Max6, colorMap [5,1] = @default24Min6 colorMap [6,0] = @default24Max7, colorMap [6,1] = @default24Min7 colorMap [7,0] = @default24Max8, colorMap [7,1] = @default24Min8 colorMap [8,0] = @default24Max9, colorMap [8,1] = @default24Min9 colorMap [9,0] = @default24Max10, colorMap [9,1] = @default24Min10 colorMap [10,0] = @default24Max11, colorMap [10,1] = @default24Min11 colorMap [11,0] = @default24Max12, colorMap [11,1] = @default24Min12 colorMap [12,0] = @default24Max13, colorMap [12,1] = @default24Min13 colorMap [13,0] = @default24Max14, colorMap [13,1] = @default24Min14 colorMap [14,0] = @default24Max15, colorMap [14,1] = @default24Min15 colorMap [15,0] = @default24Max16, colorMap [15,1] = @default24Min16 colorMap [16,0] = @default24Max17, colorMap [16,1] = @default24Min17 colorMap [17,0] = @default24Max18, colorMap [17,1] = @default24Min18 colorMap [18,0] = @default24Max19, colorMap [18,1] = @default24Min19 colorMap [19,0] = @default24Max20, colorMap [19,1] = @default24Min20 colorMap [20,0] = @default24Max21, colorMap [20,1] = @default24Min21 colorMap [21,0] = @default24Max22, colorMap [21,1] = @default24Min22 colorMap [22,0] = @default24Max23, colorMap [22,1] = @default24Min23 colorMap [23,0] = @default24Max24, colorMap [23,1] = @default24Min24 ranges = 24 elseif (@colorPreset == "Color Wheel 12") ; Created by Toby Marshall. colorMap [0,0] = @colorWheel12Max1, colorMap [0,1] = @colorWheel12Min1 colorMap [1,0] = @colorWheel12Max2, colorMap [1,1] = @colorWheel12Min2 colorMap [2,0] = @colorWheel12Max3, colorMap [2,1] = @colorWheel12Min3 colorMap [3,0] = @colorWheel12Max4, colorMap [3,1] = @colorWheel12Min4 colorMap [4,0] = @colorWheel12Max5, colorMap [4,1] = @colorWheel12Min5 colorMap [5,0] = @colorWheel12Max6, colorMap [5,1] = @colorWheel12Min6 colorMap [6,0] = @colorWheel12Max7, colorMap [6,1] = @colorWheel12Min7 colorMap [7,0] = @colorWheel12Max8, colorMap [7,1] = @colorWheel12Min8 colorMap [8,0] = @colorWheel12Max9, colorMap [8,1] = @colorWheel12Min9 colorMap [9,0] = @colorWheel12Max10, colorMap [9,1] = @colorWheel12Min10 colorMap [10,0] = @colorWheel12Max11, colorMap [10,1] = @colorWheel12Min11 colorMap [11,0] = @colorWheel12Max12, colorMap [11,1] = @colorWheel12Min12 ranges = 12 elseif (@colorPreset == "Alhambra 8") ; Created by Toby Marshall. colorMap [0,0] = @alhambra8Max1, colorMap [0,1] = @alhambra8Min1 colorMap [1,0] = @alhambra8Max2, colorMap [1,1] = @alhambra8Min2 colorMap [2,0] = @alhambra8Max3, colorMap [2,1] = @alhambra8Min3 colorMap [3,0] = @alhambra8Max4, colorMap [3,1] = @alhambra8Min4 colorMap [4,0] = @alhambra8Max5, colorMap [4,1] = @alhambra8Min5 colorMap [5,0] = @alhambra8Max6, colorMap [5,1] = @alhambra8Min6 colorMap [6,0] = @alhambra8Max7, colorMap [6,1] = @alhambra8Min7 colorMap [7,0] = @alhambra8Max8, colorMap [7,1] = @alhambra8Min8 ranges = 8 elseif (@colorPreset == "Belvedere 8") ; Created by Toby Marshall. colorMap [0,0] = @belvedere8Max1, colorMap [0,1] = @belvedere8Min1 colorMap [1,0] = @belvedere8Max2, colorMap [1,1] = @belvedere8Min2 colorMap [2,0] = @belvedere8Max3, colorMap [2,1] = @belvedere8Min3 colorMap [3,0] = @belvedere8Max4, colorMap [3,1] = @belvedere8Min4 colorMap [4,0] = @belvedere8Max5, colorMap [4,1] = @belvedere8Min5 colorMap [5,0] = @belvedere8Max6, colorMap [5,1] = @belvedere8Min6 colorMap [6,0] = @belvedere8Max7, colorMap [6,1] = @belvedere8Min7 colorMap [7,0] = @belvedere8Max8, colorMap [7,1] = @belvedere8Min8 ranges = 8 elseif (@colorPreset == "Bouquet 8") ; Created by Toby Marshall. colorMap [0,0] = @bouquet8Max1, colorMap [0,1] = @bouquet8Min1 colorMap [1,0] = @bouquet8Max2, colorMap [1,1] = @bouquet8Min2 colorMap [2,0] = @bouquet8Max3, colorMap [2,1] = @bouquet8Min3 colorMap [3,0] = @bouquet8Max4, colorMap [3,1] = @bouquet8Min4 colorMap [4,0] = @bouquet8Max5, colorMap [4,1] = @bouquet8Min5 colorMap [5,0] = @bouquet8Max6, colorMap [5,1] = @bouquet8Min6 colorMap [6,0] = @bouquet8Max7, colorMap [6,1] = @bouquet8Min7 colorMap [7,0] = @bouquet8Max8, colorMap [7,1] = @bouquet8Min8 ranges = 8 elseif (@colorPreset == "Color Switch 8") ; Created by Toby Marshall. colorMap [0,0] = @colorSwitch8Max1, colorMap [0,1] = @colorSwitch8Min1 colorMap [1,0] = @colorSwitch8Max2, colorMap [1,1] = @colorSwitch8Min2 colorMap [2,0] = @colorSwitch8Max3, colorMap [2,1] = @colorSwitch8Min3 colorMap [3,0] = @colorSwitch8Max4, colorMap [3,1] = @colorSwitch8Min4 colorMap [4,0] = @colorSwitch8Max5, colorMap [4,1] = @colorSwitch8Min5 colorMap [5,0] = @colorSwitch8Max6, colorMap [5,1] = @colorSwitch8Min6 colorMap [6,0] = @colorSwitch8Max7, colorMap [6,1] = @colorSwitch8Min7 colorMap [7,0] = @colorSwitch8Max8, colorMap [7,1] = @colorSwitch8Min8 ranges = 8 elseif (@colorPreset == "Evening Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @eveningSky8Max1, colorMap [0,1] = @eveningSky8Min1 colorMap [1,0] = @eveningSky8Max2, colorMap [1,1] = @eveningSky8Min2 colorMap [2,0] = @eveningSky8Max3, colorMap [2,1] = @eveningSky8Min3 colorMap [3,0] = @eveningSky8Max4, colorMap [3,1] = @eveningSky8Min4 colorMap [4,0] = @eveningSky8Max5, colorMap [4,1] = @eveningSky8Min5 colorMap [5,0] = @eveningSky8Max6, colorMap [5,1] = @eveningSky8Min6 colorMap [6,0] = @eveningSky8Max7, colorMap [6,1] = @eveningSky8Min7 colorMap [7,0] = @eveningSky8Max8, colorMap [7,1] = @eveningSky8Min8 ranges = 8 elseif (@colorPreset == "Fantasia 8") ; Created by Toby Marshall. colorMap [0,0] = @fantasia8Max1, colorMap [0,1] = @fantasia8Min1 colorMap [1,0] = @fantasia8Max2, colorMap [1,1] = @fantasia8Min2 colorMap [2,0] = @fantasia8Max3, colorMap [2,1] = @fantasia8Min3 colorMap [3,0] = @fantasia8Max4, colorMap [3,1] = @fantasia8Min4 colorMap [4,0] = @fantasia8Max5, colorMap [4,1] = @fantasia8Min5 colorMap [5,0] = @fantasia8Max6, colorMap [5,1] = @fantasia8Min6 colorMap [6,0] = @fantasia8Max7, colorMap [6,1] = @fantasia8Min7 colorMap [7,0] = @fantasia8Max8, colorMap [7,1] = @fantasia8Min8 ranges = 8 elseif (@colorPreset == "Flowering Orchard 8") ; Created by Toby Marshall. colorMap [0,0] = @floweringOrchard8Max1, colorMap [0,1] = @floweringOrchard8Min1 colorMap [1,0] = @floweringOrchard8Max2, colorMap [1,1] = @floweringOrchard8Min2 colorMap [2,0] = @floweringOrchard8Max3, colorMap [2,1] = @floweringOrchard8Min3 colorMap [3,0] = @floweringOrchard8Max4, colorMap [3,1] = @floweringOrchard8Min4 colorMap [4,0] = @floweringOrchard8Max5, colorMap [4,1] = @floweringOrchard8Min5 colorMap [5,0] = @floweringOrchard8Max6, colorMap [5,1] = @floweringOrchard8Min6 colorMap [6,0] = @floweringOrchard8Max7, colorMap [6,1] = @floweringOrchard8Min7 colorMap [7,0] = @floweringOrchard8Max8, colorMap [7,1] = @floweringOrchard8Min8 ranges = 8 elseif (@colorPreset == "Morning Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @morningSky8Max1, colorMap [0,1] = @morningSky8Min1 colorMap [1,0] = @morningSky8Max2, colorMap [1,1] = @morningSky8Min2 colorMap [2,0] = @morningSky8Max3, colorMap [2,1] = @morningSky8Min3 colorMap [3,0] = @morningSky8Max4, colorMap [3,1] = @morningSky8Min4 colorMap [4,0] = @morningSky8Max5, colorMap [4,1] = @morningSky8Min5 colorMap [5,0] = @morningSky8Max6, colorMap [5,1] = @morningSky8Min6 colorMap [6,0] = @morningSky8Max7, colorMap [6,1] = @morningSky8Min7 colorMap [7,0] = @morningSky8Max8, colorMap [7,1] = @morningSky8Min8 ranges = 8 elseif (@colorPreset == "Pastel 8") ; colorMap [0,0] = @pastel8Max1, colorMap [0,1] = @pastel8Min1 colorMap [1,0] = @pastel8Max2, colorMap [1,1] = @pastel8Min2 colorMap [2,0] = @pastel8Max3, colorMap [2,1] = @pastel8Min3 colorMap [3,0] = @pastel8Max4, colorMap [3,1] = @pastel8Min4 colorMap [4,0] = @pastel8Max5, colorMap [4,1] = @pastel8Min5 colorMap [5,0] = @pastel8Max6, colorMap [5,1] = @pastel8Min6 colorMap [6,0] = @pastel8Max7, colorMap [6,1] = @pastel8Min7 colorMap [7,0] = @pastel8Max8, colorMap [7,1] = @pastel8Min8 ranges = 8 elseif (@colorPreset == "Pastel Rainbow 8") ; Created by Angela Wilczynski. colorMap [0,0] = @pastelRainbow8Max1, colorMap [0,1] = @pastelRainbow8Min1 colorMap [1,0] = @pastelRainbow8Max2, colorMap [1,1] = @pastelRainbow8Min2 colorMap [2,0] = @pastelRainbow8Max3, colorMap [2,1] = @pastelRainbow8Min3 colorMap [3,0] = @pastelRainbow8Max4, colorMap [3,1] = @pastelRainbow8Min4 colorMap [4,0] = @pastelRainbow8Max5, colorMap [4,1] = @pastelRainbow8Min5 colorMap [5,0] = @pastelRainbow8Max6, colorMap [5,1] = @pastelRainbow8Min6 colorMap [6,0] = @pastelRainbow8Max7, colorMap [6,1] = @pastelRainbow8Min7 colorMap [7,0] = @pastelRainbow8Max8, colorMap [7,1] = @pastelRainbow8Min8 ranges = 8 elseif (@colorPreset == "Showtime 8") ; Created by Toby Marshall. colorMap [0,0] = @showtime8Max1, colorMap [0,1] = @showtime8Min1 colorMap [1,0] = @showtime8Max2, colorMap [1,1] = @showtime8Min2 colorMap [2,0] = @showtime8Max3, colorMap [2,1] = @showtime8Min3 colorMap [3,0] = @showtime8Max4, colorMap [3,1] = @showtime8Min4 colorMap [4,0] = @showtime8Max5, colorMap [4,1] = @showtime8Min5 colorMap [5,0] = @showtime8Max6, colorMap [5,1] = @showtime8Min6 colorMap [6,0] = @showtime8Max7, colorMap [6,1] = @showtime8Min7 colorMap [7,0] = @showtime8Max8, colorMap [7,1] = @showtime8Min8 ranges = 8 elseif (@colorPreset == "Soleil 8") ; Created by Toby Marshall. colorMap [0,0] = @soleil8Max1, colorMap [0,1] = @soleil8Min1 colorMap [1,0] = @soleil8Max2, colorMap [1,1] = @soleil8Min2 colorMap [2,0] = @soleil8Max3, colorMap [2,1] = @soleil8Min3 colorMap [3,0] = @soleil8Max4, colorMap [3,1] = @soleil8Min4 colorMap [4,0] = @soleil8Max5, colorMap [4,1] = @soleil8Min5 colorMap [5,0] = @soleil8Max6, colorMap [5,1] = @soleil8Min6 colorMap [6,0] = @soleil8Max7, colorMap [6,1] = @soleil8Min7 colorMap [7,0] = @soleil8Max8, colorMap [7,1] = @soleil8Min8 ranges = 8 elseif (@colorPreset == "Chill 8") ; Created by Toby Marshall. colorMap [0,0] = @chillMax1, colorMap [0,1] = @chillMin1 colorMap [1,0] = @chillMax2, colorMap [1,1] = @chillMin2 colorMap [2,0] = @chillMax3, colorMap [2,1] = @chillMin3 colorMap [3,0] = @chillMax4, colorMap [3,1] = @chillMin4 colorMap [4,0] = @chillMax5, colorMap [4,1] = @chillMin5 colorMap [5,0] = @chillMax6, colorMap [5,1] = @chillMin6 colorMap [6,0] = @chillMax7, colorMap [6,1] = @chillMin7 colorMap [7,0] = @chillMax8, colorMap [7,1] = @chillMin8 ranges = 8 elseif (@colorPreset == "Cloud Nine 8") ; Created by Toby Marshall. colorMap [0,0] = @cloudNineMax1, colorMap [0,1] = @cloudNineMin1 colorMap [1,0] = @cloudNineMax2, colorMap [1,1] = @cloudNineMin2 colorMap [2,0] = @cloudNineMax3, colorMap [2,1] = @cloudNineMin3 colorMap [3,0] = @cloudNineMax4, colorMap [3,1] = @cloudNineMin4 colorMap [4,0] = @cloudNineMax5, colorMap [4,1] = @cloudNineMin5 colorMap [5,0] = @cloudNineMax6, colorMap [5,1] = @cloudNineMin6 colorMap [6,0] = @cloudNineMax7, colorMap [6,1] = @cloudNineMin7 colorMap [7,0] = @cloudNineMax8, colorMap [7,1] = @cloudNineMin8 ranges = 8 elseif (@colorPreset == "La Terra 8") ; Created by Toby Marshall. colorMap [0,0] = @laTerraMax1, colorMap [0,1] = @laTerraMin1 colorMap [1,0] = @laTerraMax2, colorMap [1,1] = @laTerraMin2 colorMap [2,0] = @laTerraMax3, colorMap [2,1] = @laTerraMin3 colorMap [3,0] = @laTerraMax4, colorMap [3,1] = @laTerraMin4 colorMap [4,0] = @laTerraMax5, colorMap [4,1] = @laTerraMin5 colorMap [5,0] = @laTerraMax6, colorMap [5,1] = @laTerraMin6 colorMap [6,0] = @laTerraMax7, colorMap [6,1] = @laTerraMin7 colorMap [7,0] = @laTerraMax8, colorMap [7,1] = @laTerraMin8 ranges = 8 elseif (@colorPreset == "Santa Fe 8") ; Created by Toby Marshall. colorMap [0,0] = @santaFe8Max1, colorMap [0,1] = @santaFe8Min1 colorMap [1,0] = @santaFe8Max2, colorMap [1,1] = @santaFe8Min2 colorMap [2,0] = @santaFe8Max3, colorMap [2,1] = @santaFe8Min3 colorMap [3,0] = @santaFe8Max4, colorMap [3,1] = @santaFe8Min4 colorMap [4,0] = @santaFe8Max5, colorMap [4,1] = @santaFe8Min5 colorMap [5,0] = @santaFe8Max6, colorMap [5,1] = @santaFe8Min6 colorMap [6,0] = @santaFe8Max7, colorMap [6,1] = @santaFe8Min7 colorMap [7,0] = @santaFe8Max8, colorMap [7,1] = @santaFe8Min8 ranges = 8 elseif (@colorPreset == "Spring 8") ; Created by Toby Marshall. colorMap [0,0] = @spring8Max1, colorMap [0,1] = @spring8Min1 colorMap [1,0] = @spring8Max2, colorMap [1,1] = @spring8Min2 colorMap [2,0] = @spring8Max3, colorMap [2,1] = @spring8Min3 colorMap [3,0] = @spring8Max4, colorMap [3,1] = @spring8Min4 colorMap [4,0] = @spring8Max5, colorMap [4,1] = @spring8Min5 colorMap [5,0] = @spring8Max6, colorMap [5,1] = @spring8Min6 colorMap [6,0] = @spring8Max7, colorMap [6,1] = @spring8Min7 colorMap [7,0] = @spring8Max8, colorMap [7,1] = @spring8Min8 ranges = 8 elseif (@colorPreset == "Summer 8") ; Created by Toby Marshall. colorMap [0,0] = @summer8Max1, colorMap [0,1] = @summer8Min1 colorMap [1,0] = @summer8Max2, colorMap [1,1] = @summer8Min2 colorMap [2,0] = @summer8Max3, colorMap [2,1] = @summer8Min3 colorMap [3,0] = @summer8Max4, colorMap [3,1] = @summer8Min4 colorMap [4,0] = @summer8Max5, colorMap [4,1] = @summer8Min5 colorMap [5,0] = @summer8Max6, colorMap [5,1] = @summer8Min6 colorMap [6,0] = @summer8Max7, colorMap [6,1] = @summer8Min7 colorMap [7,0] = @summer8Max8, colorMap [7,1] = @summer8Min8 ranges = 8 elseif (@colorPreset == "Fall 8") ; Created by Toby Marshall. colorMap [0,0] = @fall8Max1, colorMap [0,1] = @fall8Min1 colorMap [1,0] = @fall8Max2, colorMap [1,1] = @fall8Min2 colorMap [2,0] = @fall8Max3, colorMap [2,1] = @fall8Min3 colorMap [3,0] = @fall8Max4, colorMap [3,1] = @fall8Min4 colorMap [4,0] = @fall8Max5, colorMap [4,1] = @fall8Min5 colorMap [5,0] = @fall8Max6, colorMap [5,1] = @fall8Min6 colorMap [6,0] = @fall8Max7, colorMap [6,1] = @fall8Min7 colorMap [7,0] = @fall8Max8, colorMap [7,1] = @fall8Min8 ranges = 8 elseif (@colorPreset == "Winter 8") ; Created by Toby Marshall. colorMap [0,0] = @winter8Max1, colorMap [0,1] = @winter8Min1 colorMap [1,0] = @winter8Max2, colorMap [1,1] = @winter8Min2 colorMap [2,0] = @winter8Max3, colorMap [2,1] = @winter8Min3 colorMap [3,0] = @winter8Max4, colorMap [3,1] = @winter8Min4 colorMap [4,0] = @winter8Max5, colorMap [4,1] = @winter8Min5 colorMap [5,0] = @winter8Max6, colorMap [5,1] = @winter8Min6 colorMap [6,0] = @winter8Max7, colorMap [6,1] = @winter8Min7 colorMap [7,0] = @winter8Max8, colorMap [7,1] = @winter8Min8 ranges = 8 elseif (@colorPreset == "Mojave 8") ; Created by Toby Marshall. colorMap [0,0] = @mojave8Max1, colorMap [0,1] = @mojave8Min1 colorMap [1,0] = @mojave8Max2, colorMap [1,1] = @mojave8Min2 colorMap [2,0] = @mojave8Max3, colorMap [2,1] = @mojave8Min3 colorMap [3,0] = @mojave8Max4, colorMap [3,1] = @mojave8Min4 colorMap [4,0] = @mojave8Max5, colorMap [4,1] = @mojave8Min5 colorMap [5,0] = @mojave8Max6, colorMap [5,1] = @mojave8Min6 colorMap [6,0] = @mojave8Max7, colorMap [6,1] = @mojave8Min7 colorMap [7,0] = @mojave8Max8, colorMap [7,1] = @mojave8Min8 ranges = 8 elseif (@colorPreset == "Gold/Green 8") ; colorMap [0,0] = @goldGreen8Max1, colorMap [0,1] = @goldGreen8Min1 colorMap [1,0] = @goldGreen8Max2, colorMap [1,1] = @goldGreen8Min2 colorMap [2,0] = @goldGreen8Max3, colorMap [2,1] = @goldGreen8Min3 colorMap [3,0] = @goldGreen8Max4, colorMap [3,1] = @goldGreen8Min4 colorMap [4,0] = @goldGreen8Max5, colorMap [4,1] = @goldGreen8Min5 colorMap [5,0] = @goldGreen8Max6, colorMap [5,1] = @goldGreen8Min6 colorMap [6,0] = @goldGreen8Max7, colorMap [6,1] = @goldGreen8Min7 colorMap [7,0] = @goldGreen8Max8, colorMap [7,1] = @goldGreen8Min8 ranges = 8 elseif (@colorPreset == "Gold/Green Alt 8") ; colorMap [0,0] = @goldGreenAlt8Max1, colorMap [0,1] = @goldGreenAlt8Min1 colorMap [1,0] = @goldGreenAlt8Max2, colorMap [1,1] = @goldGreenAlt8Min2 colorMap [2,0] = @goldGreenAlt8Max3, colorMap [2,1] = @goldGreenAlt8Min3 colorMap [3,0] = @goldGreenAlt8Max4, colorMap [3,1] = @goldGreenAlt8Min4 colorMap [4,0] = @goldGreenAlt8Max5, colorMap [4,1] = @goldGreenAlt8Min5 colorMap [5,0] = @goldGreenAlt8Max6, colorMap [5,1] = @goldGreenAlt8Min6 colorMap [6,0] = @goldGreenAlt8Max7, colorMap [6,1] = @goldGreenAlt8Min7 colorMap [7,0] = @goldGreenAlt8Max8, colorMap [7,1] = @goldGreenAlt8Min8 ranges = 8 elseif (@colorPreset == "Gold/Silver 8") ; colorMap [0,0] = @goldSilver8Max1, colorMap [0,1] = @goldSilver8Min1 colorMap [1,0] = @goldSilver8Max2, colorMap [1,1] = @goldSilver8Min2 colorMap [2,0] = @goldSilver8Max3, colorMap [2,1] = @goldSilver8Min3 colorMap [3,0] = @goldSilver8Max4, colorMap [3,1] = @goldSilver8Min4 colorMap [4,0] = @goldSilver8Max5, colorMap [4,1] = @goldSilver8Min5 colorMap [5,0] = @goldSilver8Max6, colorMap [5,1] = @goldSilver8Min6 colorMap [6,0] = @goldSilver8Max7, colorMap [6,1] = @goldSilver8Min7 colorMap [7,0] = @goldSilver8Max8, colorMap [7,1] = @goldSilver8Min8 ranges = 8 elseif (@colorPreset == "Silver/Blue 8") ; colorMap [0,0] = @silverBlue8Max1, colorMap [0,1] = @silverBlue8Min1 colorMap [1,0] = @silverBlue8Max2, colorMap [1,1] = @silverBlue8Min2 colorMap [2,0] = @silverBlue8Max3, colorMap [2,1] = @silverBlue8Min3 colorMap [3,0] = @silverBlue8Max4, colorMap [3,1] = @silverBlue8Min4 colorMap [4,0] = @silverBlue8Max5, colorMap [4,1] = @silverBlue8Min5 colorMap [5,0] = @silverBlue8Max6, colorMap [5,1] = @silverBlue8Min6 colorMap [6,0] = @silverBlue8Max7, colorMap [6,1] = @silverBlue8Min7 colorMap [7,0] = @silverBlue8Max8, colorMap [7,1] = @silverBlue8Min8 ranges = 8 elseif (@colorPreset == "Silver/Blue Alt 8") ; colorMap [0,0] = @silverBlueAlt8Max1, colorMap [0,1] = @silverBlueAlt8Min1 colorMap [1,0] = @silverBlueAlt8Max2, colorMap [1,1] = @silverBlueAlt8Min2 colorMap [2,0] = @silverBlueAlt8Max3, colorMap [2,1] = @silverBlueAlt8Min3 colorMap [3,0] = @silverBlueAlt8Max4, colorMap [3,1] = @silverBlueAlt8Min4 colorMap [4,0] = @silverBlueAlt8Max5, colorMap [4,1] = @silverBlueAlt8Min5 colorMap [5,0] = @silverBlueAlt8Max6, colorMap [5,1] = @silverBlueAlt8Min6 colorMap [6,0] = @silverBlueAlt8Max7, colorMap [6,1] = @silverBlueAlt8Min7 colorMap [7,0] = @silverBlueAlt8Max8, colorMap [7,1] = @silverBlueAlt8Min8 ranges = 8 elseif (@colorPreset == "Gold/Silver Alt 8") ; colorMap [0,0] = @goldSilverAlt8Max1, colorMap [0,1] = @goldSilverAlt8Min1 colorMap [1,0] = @goldSilverAlt8Max2, colorMap [1,1] = @goldSilverAlt8Min2 colorMap [2,0] = @goldSilverAlt8Max3, colorMap [2,1] = @goldSilverAlt8Min3 colorMap [3,0] = @goldSilverAlt8Max4, colorMap [3,1] = @goldSilverAlt8Min4 colorMap [4,0] = @goldSilverAlt8Max5, colorMap [4,1] = @goldSilverAlt8Min5 colorMap [5,0] = @goldSilverAlt8Max6, colorMap [5,1] = @goldSilverAlt8Min6 colorMap [6,0] = @goldSilverAlt8Max7, colorMap [6,1] = @goldSilverAlt8Min7 colorMap [7,0] = @goldSilverAlt8Max8, colorMap [7,1] = @goldSilverAlt8Min8 ranges = 8 elseif (@colorPreset == "Purple/Yellow 8") ; colorMap [0,0] = @purpleYellow8Max1, colorMap [0,1] = @purpleYellow8Min1 colorMap [1,0] = @purpleYellow8Max2, colorMap [1,1] = @purpleYellow8Min2 colorMap [2,0] = @purpleYellow8Max3, colorMap [2,1] = @purpleYellow8Min3 colorMap [3,0] = @purpleYellow8Max4, colorMap [3,1] = @purpleYellow8Min4 colorMap [4,0] = @purpleYellow8Max5, colorMap [4,1] = @purpleYellow8Min5 colorMap [5,0] = @purpleYellow8Max6, colorMap [5,1] = @purpleYellow8Min6 colorMap [6,0] = @purpleYellow8Max7, colorMap [6,1] = @purpleYellow8Min7 colorMap [7,0] = @purpleYellow8Max8, colorMap [7,1] = @purpleYellow8Min8 ranges = 8 elseif (@colorPreset == "Purple/Yellow Alt 8") ; colorMap [0,0] = @purpleYellowAlt8Max1, colorMap [0,1] = @purpleYellowAlt8Min1 colorMap [1,0] = @purpleYellowAlt8Max2, colorMap [1,1] = @purpleYellowAlt8Min2 colorMap [2,0] = @purpleYellowAlt8Max3, colorMap [2,1] = @purpleYellowAlt8Min3 colorMap [3,0] = @purpleYellowAlt8Max4, colorMap [3,1] = @purpleYellowAlt8Min4 colorMap [4,0] = @purpleYellowAlt8Max5, colorMap [4,1] = @purpleYellowAlt8Min5 colorMap [5,0] = @purpleYellowAlt8Max6, colorMap [5,1] = @purpleYellowAlt8Min6 colorMap [6,0] = @purpleYellowAlt8Max7, colorMap [6,1] = @purpleYellowAlt8Min7 colorMap [7,0] = @purpleYellowAlt8Max8, colorMap [7,1] = @purpleYellowAlt8Min8 ranges = 8 elseif (@colorPreset == "Fourth of July 3") ; colorMap [0,0] = @fourthOfJuly3Max1, colorMap [0,1] = @fourthOfJuly3Min1 colorMap [1,0] = @fourthOfJuly3Max2, colorMap [1,1] = @fourthOfJuly3Min2 colorMap [2,0] = @fourthOfJuly3Max3, colorMap [2,1] = @fourthOfJuly3Min3 ranges = 3 elseif (@colorPreset == "Blue/Silver 2") ; colorMap [0,0] = @blueSilver2Max1, colorMap [0,1] = @blueSilver2Min1 colorMap [1,0] = @blueSilver2Max2, colorMap [1,1] = @blueSilver2Min2 ranges = 2 elseif (@colorPreset == "Blue/White 2") ; colorMap [0,0] = @blueWhite2Max1, colorMap [0,1] = @blueWhite2Min1 colorMap [1,0] = @blueWhite2Max2, colorMap [1,1] = @blueWhite2Min2 ranges = 2 elseif (@colorPreset == "Cyan/Magenta 2") ; colorMap [0,0] = @cyanMagenta2Max1, colorMap [0,1] = @cyanMagenta2Min1 colorMap [1,0] = @cyanMagenta2Max2, colorMap [1,1] = @cyanMagenta2Min2 ranges = 2 elseif (@colorPreset == "Cyan/Yellow 2") ; colorMap [0,0] = @cyanYellow2Max1, colorMap [0,1] = @cyanYellow2Min1 colorMap [1,0] = @cyanYellow2Max2, colorMap [1,1] = @cyanYellow2Min2 ranges = 2 elseif (@colorPreset == "Gold/Green 2") ; colorMap [0,0] = @goldGreen2Max1, colorMap [0,1] = @goldGreen2Min1 colorMap [1,0] = @goldGreen2Max2, colorMap [1,1] = @goldGreen2Min2 ranges = 2 elseif (@colorPreset == "Purple/Yellow 2") ; colorMap [0,0] = @purpleYellow2Max1, colorMap [0,1] = @purpleYellow2Min1 colorMap [1,0] = @purpleYellow2Max2, colorMap [1,1] = @purpleYellow2Min2 ranges = 2 elseif (@colorPreset == "Red/Tan 2") ; colorMap [0,0] = @redTan2Max1, colorMap [0,1] = @redTan2Min1 colorMap [1,0] = @redTan2Max2, colorMap [1,1] = @redTan2Min2 ranges = 2 endif if (@perturbRanges == "8 Range Custom" && ranges == 8) ; If we are using 8 ranges, then take into account ; the rangeOrdering parameter. int range[8] ; Convert range ordering from 12345678 to .12345678 float ordering = @rangeOrder / 100000000 ; Convert .12345678 to 1.2345678 ordering = ordering * 10 ; Get the first digit int range[0] = trunc (ordering) ; Subract the first digit, i.e. 1.2345678 becomes .2345678 ordering = ordering - range[0] ; Get the second digit ordering = ordering * 10 int range[1] = trunc (ordering) ordering = ordering - range[1] ; Get the third digit ordering = ordering * 10 int range[2] = trunc (ordering) ordering = ordering - range[2] ; Get the fourth digit ordering = ordering * 10 int range[3] = trunc (ordering) ordering = ordering - range[3] ; Get the fifth digit ordering = ordering * 10 int range[4] = trunc (ordering) ordering = ordering - range[4] ; Get the sixth digit ordering = ordering * 10 int range[5] = trunc (ordering) ordering = ordering - range[5] ; Get the seventh digit ordering = ordering * 10 int range[6] = trunc (ordering) ordering = ordering - range[6] ; Get the eighth digit ordering = ordering * 10 int range[7] = round (ordering) ordering = ordering - range[7] ; Save the original order of the maps. color tempMap[8,2] tempMap[0,0] = colorMap[0,0], tempMap[0,1] = colorMap[0,1] tempMap[1,0] = colorMap[1,0], tempMap[1,1] = colorMap[1,1] tempMap[2,0] = colorMap[2,0], tempMap[2,1] = colorMap[2,1] tempMap[3,0] = colorMap[3,0], tempMap[3,1] = colorMap[3,1] tempMap[4,0] = colorMap[4,0], tempMap[4,1] = colorMap[4,1] tempMap[5,0] = colorMap[5,0], tempMap[5,1] = colorMap[5,1] tempMap[6,0] = colorMap[6,0], tempMap[6,1] = colorMap[6,1] tempMap[7,0] = colorMap[7,0], tempMap[7,1] = colorMap[7,1] ; Reorder the maps according to the rangeOrder parameter. colorMap[0,0] = tempMap[range[0]-1,0], colorMap[0,1] = tempMap[range[0]-1,1] colorMap[1,0] = tempMap[range[1]-1,0], colorMap[1,1] = tempMap[range[1]-1,1] colorMap[2,0] = tempMap[range[2]-1,0], colorMap[2,1] = tempMap[range[2]-1,1] colorMap[3,0] = tempMap[range[3]-1,0], colorMap[3,1] = tempMap[range[3]-1,1] colorMap[4,0] = tempMap[range[4]-1,0], colorMap[4,1] = tempMap[range[4]-1,1] colorMap[5,0] = tempMap[range[5]-1,0], colorMap[5,1] = tempMap[range[5]-1,1] colorMap[6,0] = tempMap[range[6]-1,0], colorMap[6,1] = tempMap[range[6]-1,1] colorMap[7,0] = tempMap[range[7]-1,0], colorMap[7,1] = tempMap[range[7]-1,1] endif ; Initialize radius and scale based on curve type. if @function == "Mandala" radius = @m0radius fscale = @m0fscale elseif @function == "Wiwianka" radius = @m1radius fscale = @m1fscale elseif @function == "Banchoff Klein Bottle" radius = @m2radius fscale = @m2fscale elseif @function == "Seashell" radius = @m3radius fscale = @m3fscale elseif @function == "Mobius Band" radius = @m4radius fscale = @m4fscale elseif @function == "Astrodal Ellipsoid" radius = @m5radius fscale = @m5fscale elseif @function == "Bohemian Dome" radius = @m6radius fscale = @m6fscale elseif @function == "Boy Surface" radius = @m7radius fscale = @m7fscale elseif @function == "Dini's Surface" radius = @m8radius fscale = @m8fscale elseif @function == "Enneper's Surface" radius = @m9radius fscale = @m9fscale elseif @function == "Kuen's Surface" radius = @m10radius fscale = @m10fscale elseif @function == "Swallowtail" radius = @m11radius fscale = @m11fscale elseif @function == "Catalan's Surface" radius = @m12radius fscale = @m12fscale elseif @function == "Hennenberg's Surface" radius = @m13radius fscale = @m13fscale elseif @function == "Corkscrew" radius = @m14radius fscale = @m14fscale elseif @function == "Hyperbolic Helicoid" radius = @m15radius fscale = @m15fscale elseif @function == "Sine Surface" radius = @m16radius fscale = @m16fscale elseif @function == "Trefoil Knot" radius = @m17radius fscale = @m17fscale elseif @function == "Lissajous Knots" radius = @m18radius fscale = @m18fscale elseif @function == "Toroidal Spiral" radius = @m19radius fscale = @m19fscale elseif @function == "Klein Bottle" radius = @m20radius fscale = @m20fscale elseif @function == "Triangular Trefoil" radius = @m21radius fscale = @m21fscale elseif @function == "Bent Horns" radius = @m22radius fscale = @m22fscale elseif @function == "Pisot Triaxial" radius = @m23radius fscale = @m23fscale elseif @function == "Spherical Harmonics" radius = @m24radius fscale = @m24fscale elseif @function == "Slippers Surface" radius = @m25radius fscale = @m25fscale elseif @function == "SuperShape" radius = @m26radius fscale = @m26fscale elseif @function == "Fano Planes" radius = @m27radius fscale = @m27fscale elseif @function == "Twisted Fano" radius = @m28radius fscale = @m28fscale elseif @function == "Cresent" radius = @m29radius fscale = @m29fscale elseif @function == "Twisted Triaxial" radius = @m30radius fscale = @m30fscale elseif @function == "Maeder's Owl" radius = @m31radius fscale = @m31fscale elseif @function == "Stiletto Surface" radius = @m32radius fscale = @m32fscale elseif @function == "Verrill Surface" radius = @m33radius fscale = @m33fscale elseif @function == "Twisted Heart" radius = @m34radius fscale = @m34fscale elseif @function == "Figure 8 Torus" radius = @m35radius fscale = @m35fscale elseif @function == "Triaxial Teardrop" radius = @m36radius fscale = @m36fscale elseif @function == "Lemniscape" radius = @m37radius fscale = @m37fscale elseif @function == "Tractrix" radius = @m38radius fscale = @m38fscale elseif @function == "Triaxial Tritorus" radius = @m39radius fscale = @m39fscale elseif @function == "Saddle Torus" radius = @m40radius fscale = @m40fscale elseif @function == "Limpet Torus" radius = @m41radius fscale = @m41fscale elseif @function == "Bow Tie" radius = @m42radius fscale = @m42fscale elseif @function == "Cross Cap" radius = @m43radius fscale = @m43fscale elseif @function == "Whitney Umbrella" radius = @m44radius fscale = @m44fscale elseif @function == "Triaxial Hexatorus" radius = @m45radius fscale = @m45fscale elseif @function == "Fish Surface" radius = @m46radius fscale = @m46fscale elseif @function == "Twisted Pipe" radius = @m47radius fscale = @m47fscale endif complex gr = (1,1) complex gr2 = (0,1) ^ 0.411111111111 float gfreq = 1.0 int gi = 0 complex gp = 0 float gbx0 = 0 float gby0 = 0 float gbx1 = 0 float gby1 = 0 float grx0 = 0 float gry0 = 0 float grx1 = 0 float gry1 = 0 float gb00 = 0 float gb10 = 0 float gb01 = 0 float gb11 = 0 float gg_b00_0 = 0 float gg_b10_0 = 0 float gg_b01_0 = 0 float gg_b11_0 = 0 float gg_b00_1 = 0 float gg_b10_1 = 0 float gg_b01_1 = 0 float gg_b11_1 = 0 float gd = 0.0 float gu1 = 0 float gv1 = 0 float gu2 = 0 float gv2 = 0 float gsx = 0 float gsy = 0 float ga = 0 float gb = 0 complex gpixel=0 complex gp = 0 float fsum = 0 int xlimit = 0 int ylimit = 0 float u = 0 float v = 0 int l = 0 int ir = 0 int si = 0 int sj = 0 float rra = 0 float rrb = 0 float rrc = 0 float rrd = 0 bool continue = true float umin = 0 float vmin = 0 float ustep = 0 float vstep = 0 float pcircum = 0 int k = 0 float kr = 0 float sr = 0 float ru = 0 float rv = 0 ; while (h < #height+ht+1) while (w < #width+wd+1) gpixel = w/(#width+wd+1) + flip(h/(#height+ht)+1) gp = gpixel * @gnscale * gr + @gnoffset gi = @giter gfreq = @gfreq gsum[w,h] = 0 WHILE (gi > 0) gbx0 = floor(real(gp)) % 256 gby0 = floor(imag(gp)) % 256 IF (gbx0 < 0) gbx0 = gbx0 + 256 ENDIF IF (gby0 < 0) gby0 = gby0 + 256 ENDIF gbx1 = (gbx0 + 1) % 256 gby1 = (gby0 + 1) % 256 grx0 = real(gp) - floor(real(gp)) gry0 = imag(gp) - floor(imag(gp)) grx1 = grx0 - 1 gry1 = gry0 - 1 gb00 = (gbx0^2 % 65536 + gby0)^2 % 65536 gb10 = (gbx1^2 % 65536 + gby0)^2 % 65536 gb01 = (gbx0^2 % 65536 + gby1)^2 % 65536 gb11 = (gbx1^2 % 65536 + gby1)^2 % 65536 gg_b00_0 = (gb00)^2*0.25 % 512 - 256 gg_b10_0 = (gb10)^2*0.25 % 512 - 256 gg_b01_0 = (gb01)^2*0.25 % 512 - 256 gg_b11_0 = (gb11)^2*0.25 % 512 - 256 gg_b00_1 = (gb00+1)^2*0.25 % 512 - 256 gg_b10_1 = (gb10+1)^2*0.25 % 512 - 256 gg_b01_1 = (gb01+1)^2*0.25 % 512 - 256 gg_b11_1 = (gb11+1)^2*0.25 % 512 - 256 gd = 1 / sqrt(sqr(gg_b00_0) + sqr(gg_b00_1)) gg_b00_0 = gg_b00_0 * gd gg_b00_1 = gg_b00_1 * gd gd = 1 / sqrt(sqr(gg_b10_0) + sqr(gg_b10_1)) gg_b10_0 = gg_b10_0 * gd gg_b10_1 = gg_b10_1 * gd gd = 1 / sqrt(sqr(gg_b01_0) + sqr(gg_b01_1)) gg_b01_0 = gg_b01_0 * gd gg_b01_1 = gg_b01_1 * gd gd = 1 / sqrt(sqr(gg_b11_0) + sqr(gg_b11_1)) gg_b11_0 = gg_b11_0 * gd gg_b11_1 = gg_b11_1 * gd gu1 = grx0 * gg_b00_0 + gry0 * gg_b00_1 gv1 = grx1 * gg_b10_0 + gry0 * gg_b10_1 gu2 = grx0 * gg_b01_0 + gry1 * gg_b01_1 gv2 = grx1 * gg_b11_0 + gry1 * gg_b11_1 gsx = sqr(grx0) * (3 - grx0*2) gsy = sqr(gry0) * (3 - gry0*2) ga = gu1 + gsx*(gv1-gu1) gb = gu2 + gsx*(gv2-gu2) gsum[w,h] = gsum[w,h] + (ga + gsy*(gb-ga))*gfreq gfreq = gfreq / 2 gp = gp * gr2 * 2 gi = gi - 1 ENDWHILE w = w + 1 endwhile w = 0 h = h + 1 endwhile w = 0 h = 0 ; ; generate the function spheres ; i = 0 j = 0 int ii = 0 ; Initialize limits based on curve type. if @function == "Mandala" xlimit = round((@m0xmax-@m0xmin)/@m0xstep) ylimit = round((@m0ymax-@m0ymin)/@m0ystep) elseif @function == "Wiwianka" xlimit = round((@m1xmax-@m1xmin)/@m1xstep) ylimit = round((@m1ymax-@m1ymin)/@m1ystep) elseif @function == "Banchoff Klein Bottle" xlimit = round((@m2xmax-@m2xmin)/@m2xstep) ylimit = round((@m2ymax-@m2ymin)/@m2ystep) elseif @function == "Seashell" xlimit = round((@m3xmax-@m3xmin)/@m3xstep) ylimit = round((@m3ymax-@m3ymin)/@m3ystep) elseif @function == "Mobius Band" xlimit = round((@m4xmax-@m4xmin)/@m4xstep) ylimit = round((@m4ymax-@m4ymin)/@m4ystep) elseif @function == "Astrodal Ellipsoid" xlimit = round((@m5xmax-@m5xmin)/@m5xstep) ylimit = round((@m5ymax-@m5ymin)/@m5ystep) elseif @function == "Bohemian Dome" xlimit = round((@m6xmax-@m6xmin)/@m6xstep) ylimit = round((@m6ymax-@m6ymin)/@m6ystep) elseif @function == "Boy Surface" xlimit = round((@m7xmax-@m7xmin)/@m7xstep) ylimit = round((@m7ymax-@m7ymin)/@m7ystep) elseif @function == "Dini's Surface" xlimit = round((@m8xmax-@m8xmin)/@m8xstep) ylimit = round((@m8ymax-@m8ymin)/@m8ystep) elseif @function == "Enneper's Surface" xlimit = round((@m9xmax-@m9xmin)/@m9xstep) ylimit = round((@m9ymax-@m9ymin)/@m9ystep) elseif @function == "Kuen's Surface" xlimit = round((@m10xmax-@m10xmin)/@m10xstep) ylimit = round((@m10ymax-@m10ymin)/@m10ystep) elseif @function == "Swallowtail" xlimit = round((@m11xmax-@m11xmin)/@m11xstep) ylimit = round((@m11ymax-@m11ymin)/@m11ystep) elseif @function == "Catalan's Surface" xlimit = round((@m12xmax-@m12xmin)/@m12xstep) ylimit = round((@m12ymax-@m12ymin)/@m12ystep) elseif @function == "Hennenberg's Surface" xlimit = round((@m13xmax-@m13xmin)/@m13xstep) ylimit = round((@m13ymax-@m13ymin)/@m13ystep) elseif @function == "Corkscrew" xlimit = round((@m14xmax-@m14xmin)/@m14xstep) ylimit = round((@m14ymax-@m14ymin)/@m14ystep) elseif @function == "Hyperbolic Helicoid" xlimit = round((@m15xmax-@m15xmin)/@m15xstep) ylimit = round((@m15ymax-@m15ymin)/@m15ystep) elseif @function == "Sine Surface" xlimit = round((@m16xmax-@m16xmin)/@m16xstep) ylimit = round((@m16ymax-@m16ymin)/@m16ystep) elseif @function == "Trefoil Knot" xlimit = round((@m17xmax-@m17xmin)/@m17xstep) ylimit = round((@m17ymax-@m17ymin)/@m17ystep) elseif @function == "Lissajous Knots" xlimit = round((@m18xmax-@m18xmin)/@m18xstep) ylimit = round((@m18ymax-@m18ymin)/@m18ystep) elseif @function == "Toroidal Spiral" xlimit = round((@m19xmax-@m19xmin)/@m19xstep) ylimit = round((@m19ymax-@m19ymin)/@m19ystep) elseif @function == "Klein Bottle" xlimit = round((@m20xmax-@m20xmin)/@m20xstep) ylimit = round((@m20ymax-@m20ymin)/@m20ystep) elseif @function == "Triangular Trefoil" xlimit = round((@m21xmax-@m21xmin)/@m21xstep) ylimit = round((@m21ymax-@m21ymin)/@m21ystep) elseif @function == "Bent Horns" xlimit = round((@m22xmax-@m22xmin)/@m22xstep) ylimit = round((@m22ymax-@m22ymin)/@m22ystep) elseif @function == "Pisot Triaxial" xlimit = round((@m23xmax-@m23xmin)/@m23xstep) ylimit = round((@m23ymax-@m23ymin)/@m23ystep) elseif @function == "Spherical Harmonics" xlimit = round((@m24xmax-@m24xmin)/@m24xstep) ylimit = round((@m24ymax-@m24ymin)/@m24ystep) elseif @function == "Slippers Surface" xlimit = round((@m25xmax-@m25xmin)/@m25xstep) ylimit = round((@m25ymax-@m25ymin)/@m25ystep) elseif @function == "SuperShape" xlimit = round((@m26xmax-@m26xmin)/@m26xstep) ylimit = round((@m26ymax-@m26ymin)/@m26ystep) elseif @function == "Fano Planes" xlimit = round((@m27xmax-@m27xmin)/@m27xstep) ylimit = round((@m27ymax-@m27ymin)/@m27ystep) elseif @function == "Twisted Fano" xlimit = round((@m28xmax-@m28xmin)/@m28xstep) ylimit = round((@m28ymax-@m28ymin)/@m28ystep) elseif @function == "Cresent" xlimit = round((@m29xmax-@m29xmin)/@m29xstep) ylimit = round((@m29ymax-@m29ymin)/@m29ystep) elseif @function == "Twisted Triaxial" xlimit = round((@m30xmax-@m30xmin)/@m30xstep) ylimit = round((@m30ymax-@m30ymin)/@m30ystep) elseif @function == "Maeder's Owl" xlimit = round((@m31xmax-@m31xmin)/@m31xstep) ylimit = round((@m31ymax-@m31ymin)/@m31ystep) elseif @function == "Stiletto Surface" xlimit = round((@m32xmax-@m32xmin)/@m32xstep) ylimit = round((@m32ymax-@m32ymin)/@m32ystep) elseif @function == "Verrill Surface" xlimit = round((@m33xmax-@m33xmin)/@m33xstep) ylimit = round((@m33ymax-@m33ymin)/@m33ystep) elseif @function == "Twisted Heart" xlimit = round((@m34xmax-@m34xmin)/@m34xstep) ylimit = round((@m34ymax-@m34ymin)/@m34ystep) elseif @function == "Figure 8 Torus" xlimit = round((@m35xmax-@m35xmin)/@m35xstep) ylimit = round((@m35ymax-@m35ymin)/@m35ystep) elseif @function == "Triaxial Teardrop" xlimit = round((@m36xmax-@m36xmin)/@m36xstep) ylimit = round((@m36ymax-@m36ymin)/@m36ystep) elseif @function == "Lemniscape" xlimit = round((@m37xmax-@m37xmin)/@m37xstep) ylimit = round((@m37ymax-@m37ymin)/@m37ystep) elseif @function == "Tractrix" xlimit = round((@m38xmax-@m38xmin)/@m38xstep) ylimit = round((@m38ymax-@m38ymin)/@m38ystep) elseif @function == "Triaxial Tritorus" xlimit = round((@m39xmax-@m39xmin)/@m39xstep) ylimit = round((@m39ymax-@m39ymin)/@m39ystep) elseif @function == "Saddle Torus" xlimit = round((@m40xmax-@m40xmin)/@m40xstep) ylimit = round((@m40ymax-@m40ymin)/@m40ystep) elseif @function == "Limpet Torus" xlimit = round((@m41xmax-@m41xmin)/@m41xstep) ylimit = round((@m41ymax-@m41ymin)/@m41ystep) elseif @function == "Bow Tie" xlimit = round((@m42xmax-@m42xmin)/@m42xstep) ylimit = round((@m42ymax-@m42ymin)/@m42ystep) elseif @function == "Cross Cap" xlimit = round((@m43xmax-@m43xmin)/@m43xstep) ylimit = round((@m43ymax-@m43ymin)/@m43ystep) elseif @function == "Whitney Umbrella" xlimit = round((@m44xmax-@m44xmin)/@m44xstep) ylimit = round((@m44ymax-@m44ymin)/@m44ystep) elseif @function == "Triaxial Hexatorus" xlimit = round((@m45xmax-@m45xmin)/@m45xstep) ylimit = round((@m45ymax-@m45ymin)/@m45ystep) elseif @function == "Fish Surface" xlimit = round((@m46xmax-@m46xmin)/@m46xstep) ylimit = round((@m46ymax-@m46ymin)/@m46ystep) elseif @function == "Twisted Pipe" xlimit = round((@m47xmax-@m47xmin)/@m47xstep) ylimit = round((@m47ymax-@m47ymin)/@m47ystep) endif ; Initialize step amounts based on curve type. if @function == "Mandala" umin = @m0xmin vmin = @m0ymin ustep = @m0xstep vstep = @m0ystep elseif @function == "Wiwianka" umin = @m1xmin vmin = @m1ymin ustep = @m1xstep vstep = @m1ystep elseif @function == "Banchoff Klein Bottle" umin = @m2xmin vmin = @m2ymin ustep = @m2xstep vstep = @m2ystep elseif @function == "Seashell" umin = @m3xmin vmin = @m3ymin ustep = @m3xstep vstep = @m3ystep elseif @function == "Mobius Band" umin = @m4xmin vmin = @m4ymin ustep = @m4xstep vstep = @m4ystep elseif @function == "Astrodal Ellipsoid" umin = @m5xmin vmin = @m5ymin ustep = @m5xstep vstep = @m5ystep elseif @function == "Bohemian Dome" umin = @m6xmin vmin = @m6ymin ustep = @m6xstep vstep = @m6ystep elseif @function == "Boy Surface" umin = @m7xmin vmin = @m7ymin ustep = @m7xstep vstep = @m7ystep elseif @function == "Dini's Surface" umin = @m8xmin vmin = @m8ymin ustep = @m8xstep vstep = @m8ystep elseif @function == "Enneper's Surface" umin = @m9xmin vmin = @m9ymin ustep = @m9xstep vstep = @m9ystep elseif @function == "Kuen's Surface" umin = @m10xmin vmin = @m10ymin ustep = @m10xstep vstep = @m10ystep elseif @function == "Swallowtail" umin = @m11xmin vmin = @m11ymin ustep = @m11xstep vstep = @m11ystep elseif @function == "Catalan's Surface" umin = @m12xmin vmin = @m12ymin ustep = @m12xstep vstep = @m12ystep elseif @function == "Hennenberg's Surface" umin = @m13xmin vmin = @m13ymin ustep = @m13xstep vstep = @m13ystep elseif @function == "Corkscrew" umin = @m14xmin vmin = @m14ymin ustep = @m14xstep vstep = @m14ystep elseif @function == "Hyperbolic Helicoid" umin = @m15xmin vmin = @m15ymin ustep = @m15xstep vstep = @m15ystep elseif @function == "Sine Surface" umin = @m16xmin vmin = @m16ymin ustep = @m16xstep vstep = @m16ystep elseif @function == "Trefoil Knot" umin = @m17xmin vmin = @m17ymin ustep = @m17xstep vstep = @m17ystep elseif @function == "Lissajous Knots" umin = @m18xmin vmin = @m18ymin ustep = @m18xstep vstep = @m18ystep elseif @function == "Toroidal Spiral" umin = @m19xmin vmin = @m19ymin ustep = @m19xstep vstep = @m19ystep elseif @function == "Klein Bottle" umin = @m20xmin vmin = @m20ymin ustep = @m20xstep vstep = @m20ystep elseif @function == "Triangular Trefoil" umin = @m21xmin vmin = @m21ymin ustep = @m21xstep vstep = @m21ystep elseif @function == "Bent Horns" umin = @m22xmin vmin = @m22ymin ustep = @m22xstep vstep = @m22ystep elseif @function == "Pisot Triaxial" umin = @m23xmin vmin = @m23ymin ustep = @m23xstep vstep = @m23ystep elseif @function == "Spherical Harmonics" umin = @m24xmin vmin = @m24ymin ustep = @m24xstep vstep = @m24ystep elseif @function == "Slippers Surface" umin = @m25xmin vmin = @m25ymin ustep = @m25xstep vstep = @m25ystep elseif @function == "SuperShape" umin = @m26xmin vmin = @m26ymin ustep = @m26xstep vstep = @m26ystep elseif @function == "Fano Planes" umin = @m27xmin vmin = @m27ymin ustep = @m27xstep vstep = @m27ystep elseif @function == "Twisted Fano" umin = @m28xmin vmin = @m28ymin ustep = @m28xstep vstep = @m28ystep elseif @function == "Cresent" umin = @m29xmin vmin = @m29ymin ustep = @m29xstep vstep = @m29ystep elseif @function == "Twisted Triaxial" umin = @m30xmin vmin = @m30ymin ustep = @m30xstep vstep = @m30ystep elseif @function == "Maeder's Owl" umin = @m31xmin vmin = @m31ymin ustep = @m31xstep vstep = @m31ystep elseif @function == "Stiletto Surface" umin = @m32xmin vmin = @m32ymin ustep = @m32xstep vstep = @m32ystep elseif @function == "Verrill Surface" umin = @m33xmin vmin = @m33ymin ustep = @m33xstep vstep = @m33ystep elseif @function == "Twisted Heart" umin = @m34xmin vmin = @m34ymin ustep = @m34xstep vstep = @m34ystep elseif @function == "Figure 8 Torus" umin = @m35xmin vmin = @m35ymin ustep = @m35xstep vstep = @m35ystep elseif @function == "Triaxial Teardrop" umin = @m36xmin vmin = @m36ymin ustep = @m36xstep vstep = @m36ystep elseif @function == "Lemniscape" umin = @m37xmin vmin = @m37ymin ustep = @m37xstep vstep = @m37ystep elseif @function == "Tractrix" umin = @m38xmin vmin = @m38ymin ustep = @m38xstep vstep = @m38ystep elseif @function == "Triaxial Tritorus" umin = @m39xmin vmin = @m39ymin ustep = @m39xstep vstep = @m39ystep elseif @function == "Saddle Torus" umin = @m40xmin vmin = @m40ymin ustep = @m40xstep vstep = @m40ystep elseif @function == "Limpet Torus" umin = @m41xmin vmin = @m41ymin ustep = @m41xstep vstep = @m41ystep elseif @function == "Bow Tie" umin = @m42xmin vmin = @m42ymin ustep = @m42xstep vstep = @m42ystep elseif @function == "Cross Cap" umin = @m43xmin vmin = @m43ymin ustep = @m43xstep vstep = @m43ystep elseif @function == "Whitney Umbrella" umin = @m44xmin vmin = @m44ymin ustep = @m44xstep vstep = @m44ystep elseif @function == "Triaxial Hexatorus" umin = @m45xmin vmin = @m45ymin ustep = @m45xstep vstep = @m45ystep elseif @function == "Fish Surface" umin = @m46xmin vmin = @m46ymin ustep = @m46xstep vstep = @m46ystep elseif @function == "Twisted Pipe" umin = @m47xmin vmin = @m47ymin ustep = @m47xstep vstep = @m47ystep endif while i < xlimit u = umin + i*ustep while j < ylimit v = vmin + j*vstep if @function == "Mandala" csx[ii] = u*cos(v)*fscale csy[ii] = u*sin(v)*fscale csz[ii] = v*cos(u)*fscale elseif @function == "Wiwianka" csx[ii] = (1+exp(-100*u^2))*sin(#pi*u)*sin(#pi*v)*fscale csy[ii] = (1+exp(-100*u^2))*sin(#pi*u)*cos(#pi*v)*fscale csz[ii] = (1+exp(-100*u^2))*cos(#pi*u)*fscale elseif @function == "Banchoff Klein Bottle" csx[ii] = (cos(u)*(cos(u/2)*(sqrt(2)+cos(v))+(sin(u/2)*sin(v)*cos(v))))*fscale csy[ii] = (sin(u)*(cos(u/2)*(sqrt(2)+cos(v))+(sin(u/2)*sin(v)*cos(v))))*fscale csz[ii] = (-sin(u/2)*(sqrt(2)+cos(v))+cos(u/2)*sin(v)*cos(v))*fscale elseif @function == "Seashell" csx[ii] = (@seaa*(1-v/(2*pi))*cos(@sean*v)*(1+cos(u))+@seac*cos(@sean*v))*fscale csy[ii] = (@seaa*(1-v/(2*pi))*sin(@sean*v)*(1+cos(u))+@seac*sin(@sean*v))*fscale csz[ii] = (@seab*v/(2*pi)+@seaa*(1-v/(2*pi))*sin(u))*fscale elseif @function == "Mobius Band" csx[ii] = (cos(u)+v*cos(u/2)*cos(u))*fscale csy[ii] = (sin(u)+v*cos(u/2)*sin(u))*fscale csz[ii] = (v*sin(u/2))*fscale elseif @function == "Astrodal Ellipsoid" csx[ii] = (@aa*cos(u)*cos(v))^3*fscale csy[ii] = (@ab*sin(u)*cos(v))^3*fscale csz[ii] = (@ac*sin(v))^3*fscale elseif @function == "Bohemian Dome" csx[ii] = (@ba*cos(u))*fscale csy[ii] = (@bb*cos(v) + @ba*sin(u))*fscale csz[ii] = (@bc*sin(v))*fscale elseif @function == "Boy Surface" csx[ii] = ((2/3)*(cos(u)*cos(2*v)+sqrt(2)*sin(u)*cos(v))*cos(u) /(sqrt(2) - sin(2*u)*sin(3*v)))*fscale csy[ii] = ((2/3)*(cos(u)*sin(2*v)-sqrt(2)*sin(u)*sin(v))*cos(u) /(sqrt(2)-sin(2*u)*sin(3*v)))*fscale csz[ii] = (sqrt(2)*cos(u)^2 / (sqrt(2) - sin(2*u)*sin(2*v)))*fscale elseif @function == "Dini's Surface" csx[ii] = (@da*cos(u)*sin(v))*fscale csy[ii] = (@da*sin(u)*sin(v))*fscale csz[ii] = (@da*(cos(v)+log(tan((v/2))))+@db*u)*fscale elseif @function == "Enneper's Surface" csx[ii] = (u-(u*u*u/3)+u*v*v)*fscale csy[ii] = (v-(v*v*v/3)+u*u*v)*fscale csz[ii] = (u*u-v*v)*fscale elseif @function == "Kuen's Surface" csx[ii] = (2*(cos(u)+u*sin(u))*sin(v)/(1+u*u*sin(v)*sin(v)))*fscale csy[ii] = (2*(sin(u)-u*cos(u))*sin(v)/(1+u*u*sin(v)*sin(v)))*fscale csz[ii] = (log(tan(v/2))+2*cos(v)/(1+u*u*sin(v)*sin(v)))*fscale elseif @function == "Swallowtail" csx[ii] = (u*v^2+3*v^4)*fscale csy[ii] = (-2*u*v-4*v^3)*fscale csz[ii] = (u)*fscale elseif @function == "Catalan's Surface" csx[ii] = (u-sin(u)*cosh(v))*fscale csy[ii] = (1-cos(u)*cosh(v))*fscale csz[ii] = (4*sin(u/2)*sinh(v/2))*fscale elseif @function == "Hennenberg's Surface" csx[ii] = (2*sinh(u)*cos(v)-2/3*sinh(3*u)*cos(3*v))*fscale csy[ii] = (2*sinh(u)*sin(v)+2/3*sinh(3*u)*sin(3*v))*fscale csz[ii] = (2*cosh(2*u)*cos(2*v))*fscale elseif @function == "Corkscrew" csx[ii] = (@ta*cos(u)*cos(v))*fscale csy[ii] = (@ta*sin(u)*cos(v))*fscale csz[ii] = (@ta*sin(v)+@tb*u)*fscale elseif @function == "Hyperbolic Helicoid" csx[ii] = (sinh(v)*cos(@tau*u)/(1+cosh(u)*cosh(v)))*fscale csy[ii] = (sinh(v)*sin(@tau*u)/(1+cosh(u)*cosh(v)))*fscale csz[ii] = (cosh(v)*sinh(u)/(1+cosh(u)*cosh(v)))*fscale elseif @function == "Sine Surface" csx[ii] = (@sa*sin(u))*fscale csy[ii] = (@sa*sin(v))*fscale csz[ii] = (@sa*sin(u+v))*fscale elseif @function == "Trefoil Knot" csx[ii] = (sin(3*u))*fscale csy[ii] = (sin(u)+2*sin(2*u))*fscale csz[ii] = (cos(u)-2*cos(2*u))*fscale elseif @function == "Lissajous Knots" csx[ii] = (cos(@na*u+@la))*fscale csy[ii] = (cos(@nb*u+@lb))*fscale csz[ii] = (cos(@nc*u+@lc))*fscale elseif @function == "Toroidal Spiral" while k < @numcoil csx[ii] = ((@tsa+sin(@nts*u+2*k*#pi/@numcoil))*cos(u))*fscale csy[ii] = ((@tsa+sin(@nts*u+2*k*#pi/@numcoil))*sin(u))*fscale csz[ii] = (cos(@nts*u+2*k*#pi/@numcoil))*fscale k = k + 1 if k < @numcoil ii = ii + 1 endif endwhile k = 0 elseif @function == "Klein Bottle" kr = 4*(1-cos(u)/2) if u < #pi csx[ii] = (6*cos(u)*(1+sin(u))+kr*cos(u)*cos(v))*fscale csy[ii] = (16*sin(u)+kr*sin(u)*cos(v))*fscale else csx[ii] = (6*cos(u)*(1+sin(u))+kr*cos(v+#pi))*fscale csy[ii] = (16*sin(u))*fscale endif csz[ii] = (kr*sin(v))*fscale elseif @function == "Triangular Trefoil" csx[ii] = (2*sin(3*u)/(2+cos(v)))*fscale csy[ii] = (2*(sin(u)+2*sin(2*u))/(2+cos(v+2*#pi/3)))*fscale csz[ii] = ((cos(u)-2*cos(2*u))*(2+cos(v))*(2+cos(v+2*#pi/3))/4)*fscale elseif @function == "Bent Horns" csx[ii] = ((2+cos(u))*(v/3-sin(v)))*fscale csy[ii] = ((2+cos(u-2*#pi/3))*(cos(v)-1))*fscale csz[ii] = ((2+cos(u+2*#pi/3))*(cos(v)-1))*fscale elseif @function == "Pisot Triaxial" csx[ii] = (0.655866*cos(1.03002+u)*(2+cos(v)))*fscale csy[ii] = (0.754878*cos(1.40772-u)*(2+0.868837*cos(2.43773+v)))*fscale csz[ii] = (0.868837*cos(2.43773+u)*(2+0.495098*cos(0.377696-v)))*fscale elseif @function == "Spherical Harmonics" sr = sin(@m1*u)^@m2+cos(@m3*u)^@m4+sin(@m5*v)^@m6+cos(@m7*v)^@m8 csx[ii] = (sr*sin(u)*cos(v))*fscale csy[ii] = (sr*cos(u))*fscale csz[ii] = (sr*sin(u)*sin(v))*fscale elseif @function == "Slippers Surface" csx[ii] = ((2+cos(u)*cos(v)^3*sin(v)))*fscale csy[ii] = ((2+cos(u+2*#pi/3))*cos(2*#pi/3+v)^2*sin(2*#pi/3+v)^2)*fscale csz[ii] = (-(2+cos(u-2*#pi/3))*cos(2*#pi/3-v)^2*sin(2*#pi/3-v)^3)*fscale elseif @function == "SuperShape" ru = ((1/@ssa*cos(@ssm*u/4))^@ssn2+(1/@ssb*sin(@ssm*u/4))^@ssn3)^(-1/@ssn1) rv = ((1/@ssa*cos(@ssm*v/4))^@ssn2+(1/@ssb*sin(@ssm*v/4))^@ssn3)^(-1/@ssn1) csx[ii] = (ru*cos(u)*rv*cos(v))*fscale csy[ii] = (ru*sin(u)*rv*cos(v))*fscale csz[ii] = (rv*sin(v))*fscale elseif @function == "Fano Planes" csx[ii] = (cos(2*#pi*(u-v/3))*cos(2*#pi*(-u-v/3))*cos(2*#pi*(u-sqrt(3))))*fscale csy[ii] = (cos(2*#pi*(u-v/3+2/3))*cos(2*#pi*(-u-v/3+2/3))*cos(2*#pi*(-u-v+1)))*fscale csz[ii] = (cos(2*#pi*(u-v/3-2/3))*cos(2*#pi*(-u-v/3-2/3))*cos(2*#pi*(-u+v+1)))*fscale elseif @function == "Twisted Fano" csx[ii] = (cos(2*#pi*(u-v/3))*cos(2*#pi*(-u-v/3))*cos(2*#pi*v)*cos(2*#pi*u))*fscale csy[ii] = (cos(2*#pi*(u-v/3)+2*#pi/3)*cos(2*#pi*(-u-v/3)+2*#pi/3)*cos(2*#pi*(-u-v)+2*#pi/3)*cos(2*#pi*(u-1)))*fscale csz[ii] = (cos(2*#pi*(u-v/3)-2*#pi/3)*cos(2*#pi*(-u-v/3)-2*#pi/3)*cos(2*#pi*(-u+v)+2*#pi/3)*cos(2*#pi*(u-2)))*fscale elseif @function == "Cresent" csx[ii] = ((2+sin(2*#pi*u)*sin(2*#pi*v))*sin(3*#pi*v))*fscale csy[ii] = ((2+sin(2*#pi*u)*sin(2*#pi*v))*cos(3*#pi*v))*fscale csz[ii] = (cos(2*#pi*u)*sin(2*#pi*v)+4*v-2)*fscale elseif @function == "Twisted Triaxial" csx[ii] = ((1-((u*u+v*v)/2)^0.5/#pi)*cos(u)*cos(v)+((u*u+v*v)/2)^0.5/#pi*sin(u)*sin(v))*fscale csy[ii] = ((1-((u*u+v*v)/2)^0.5/#pi)*cos(u+2*#pi/3)*cos(v+2*#pi/3)+((u*u+v*v)/2)^0.5/#pi*sin(u+2*#pi/3)*sin(v+2*#pi/3))*fscale csz[ii] = ((1-((u*u+v*v)/2)^0.5/#pi)*cos(u+4*#pi/3)*cos(v+4*#pi/3)+((u*u+v*v)/2)^0.5/#pi*sin(u+4*#pi/3)*sin(v+4*#pi/3))*fscale elseif @function == "Maeder's Owl" csx[ii] = (v*cos(u)-0.5*v^2*cos(2*u))*fscale csy[ii] = (-v*sin(u)-0.5*v^2*sin(2*u))*fscale csz[ii] = (4*v^1.5*cos(3*u/2)/3)*fscale elseif @function == "Stiletto Surface" csx[ii] = ((2+cos(u))*cos(v)^3*sin(v))*fscale csy[ii] = ((2+cos(u+2*#pi/3))*cos(v+2*#pi/3)^2*sin(v+2*#pi/3)^2)*fscale csz[ii] = (-(2+cos(u-2*#pi/3))*cos(v+2*#pi/3)^2*sin(v+2*#pi/3)^2)*fscale elseif @function == "Verrill Surface" csx[ii] = (-2*u*cos(v)+2*cos(v)/u-2*u^3*cos(3*v)/3)*fscale csy[ii] = (6*u*sin(v)-2*sin(v)/u-2*u^3*sin(3*v)/3)*fscale csz[ii] = (4*log(u))*fscale elseif @function == "Twisted Heart" csx[ii] = ((abs(v)-abs(u) - abs(tanh(u/sqrt(2))*sqrt(2))+abs(tanh(v/sqrt(2))*sqrt(2)))*sin(v))*fscale csy[ii] = ((abs(v)+abs(u) - abs(tanh(u/sqrt(2))*sqrt(2))-abs(tanh(v/sqrt(2))*sqrt(2)))*cos(v))*fscale csz[ii] = ((u^2+v^2)/(cosh(u/sqrt(2))+cosh(v/sqrt(2)))/sqrt(2))*fscale elseif @function == "Figure 8 Torus" csx[ii] = (cos(u)*(@ftc+sin(v)*cos(u)-sin(2*v)*sin(u)/2))*fscale csy[ii] = (sin(u)*(@ftc+sin(v)*cos(u)-sin(2*v)*sin(u)/2))*fscale csz[ii] = (sin(u)*sin(v)+cos(u)*sin(2*v)/2)*fscale elseif @function == "Triaxial Teardrop" csx[ii] = ((1-cos(u))*cos(u+2*#pi/3)*cos(v+2*#pi/3)/2)*fscale csy[ii] = ((1-cos(u))*cos(u+2*#pi/3)*cos(v-2*#pi/3)/2)*fscale csz[ii] = (cos(u-2*#pi/3))*fscale elseif @function == "Lemniscape" csx[ii] = (cos(v)*sqrt(abs(sin(2*u)))*cos(u))*fscale csy[ii] = (cos(v)*sqrt(abs(sin(2*u)))*sin(u))*fscale csz[ii] = ((csx[ii]/fscale)^2-(csy[ii]/fscale)^2+ \ 2*csx[ii]/fscale*csy[ii]/fscale*tan(v)^2)*fscale elseif @function == "Tractrix" csx[ii] = (cos(u)*(v-tanh(v)))*fscale csy[ii] = (cos(u)/cosh(v))*fscale csz[ii] = ((csx[ii]/fscale)^2-(csy[ii]/fscale)^2+ \ 2*csx[ii]/fscale*csy[ii]/fscale*tanh(u)^2)*fscale elseif @function == "Triaxial Tritorus" csx[ii] = (sin(u)*(1+cos(v)))*fscale csy[ii] = (sin(u+2*#pi/3)*(1+cos(v+2*#pi/3)))*fscale csz[ii] = (sin(u+4*#pi/3)*(1+cos(v+4*#pi/3)))*fscale elseif @function == "Saddle Torus" csx[ii] = ((2+cos(u))*cos(v))*fscale csy[ii] = ((2+cos(u+2*#pi/3))*cos(v+2*#pi/3))*fscale csz[ii] = ((2+(1-cos(u)^2-cos(u+2*#pi/3)^2)/abs(1-cos(u)^2-cos(u+2*#pi/3)^2)* \ sqrt(abs(1-cos(u)^2-cos(u+2*#pi/3)^2)))* \ (1-cos(v)^2-cos(v+2*#pi/3)^2)/abs(1-cos(v)^2-cos(v+2*#pi/3)^2)* \ sqrt(abs(1-cos(v)^2-cos(v+2*#pi/3)^2)))*fscale elseif @function == "Limpet Torus" csx[ii] = (cos(u)/(sqrt(2)+sin(v)))*fscale csy[ii] = (sin(u)/(sqrt(2)+sin(v)))*fscale csz[ii] = (1/(sqrt(2)+cos(v)))*fscale elseif @function == "Bow Tie" csx[ii] = (sin(u)/(sqrt(2)+sin(v)))*fscale csy[ii] = (sin(u)/(sqrt(2)+cos(v)))*fscale csz[ii] = (cos(u)/(sqrt(2)+1))*fscale elseif @function == "Cross Cap" csx[ii] = (cos(u)*sin(2*v))*fscale csy[ii] = (sin(u)*sin(2*v))*fscale csz[ii] = (cos(v)*cos(v)-cos(u)*cos(u)*sin(v)*sin(v))*fscale elseif @function == "Whitney Umbrella" csx[ii] = (0.5*sin(u)^2*cos(2*v))*fscale csy[ii] = (0.5*sin(u)^2*sin(2*v))*fscale csz[ii] = (sin(u)*sin(v))*fscale elseif @function == "Triaxial Hexatorus" csx[ii] = (sin(u)/(sqrt(2)+cos(v)))*fscale csy[ii] = (sin(u+2*#pi/3)/(sqrt(2)+cos(v+2*#pi/3)))*fscale csz[ii] = (cos(u-2*#pi/3)/(sqrt(2)+cos(v-2*#pi/3)))*fscale elseif @function == "Fish Surface" csx[ii] = ((cos(u)-cos(2*u))*cos(v)/4)*fscale csy[ii] = ((sin(u)-sin(2*u))*sin(v)/4)*fscale csz[ii] = (cos(u))*fscale elseif @function == "Twisted Pipe" csx[ii] = (cos(v)*(2+cos(u))/sqrt(1+sin(v)^2))*fscale csy[ii] = (sin(v+2*#pi/3)*(2+cos(u+2*#pi/3))/sqrt(1+sin(v)^2))*fscale csz[ii] = (sin(v-2*#pi/3)*(2+cos(u-2*#pi/3))/sqrt(1+sin(v)^2))*fscale endif int kk = 0 if @method == "index u" if @function == "Toroidal Spiral" while kk < @numcoil clr[ii-kk] = i-kk kk = kk+1 endwhile else clr[ii] = i endif elseif @method == "index v" if @function == "Toroidal Spiral" while kk < @numcoil clr[ii-kk] = j-kk kk = kk+1 endwhile else clr[ii] = j endif elseif @method == "index u+v" if @function == "Toroidal Spiral" while kk < @numcoil clr[ii-kk] = i+j-kk kk = kk+1 endwhile else clr[ii] = i + j endif elseif @method == "main index" if @function == "Toroidal Spiral" while kk < @numcoil clr[ii-kk] = ii-kk kk = kk+1 endwhile else clr[ii] = ii endif endif j = j + 1 ii = ii + 1 endwhile j = 0 i = i + 1 endwhile int maxi = ii-1 ; ; ; translate spheres to pixels ; ; initialize arrays ; while(h < #height+ht+1) while(w < #width+wd+1) count[w,h] = 0 lev[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ; iii = 0 while iii <= maxi fx = csx[iii] fy = csy[iii] zz = csz[iii] if @function == "Slippers Surface" fx = fx - 6 fy = fy - 1 elseif @function == "Stiletto Surface" fy = fy - 0.75 elseif @function == "Triaxial Teardrop" zz = zz - 1 endif ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax ffz = (zmin-zz)/sqrt(txmax^2+tymax^2) xx = ffx ; ; rotation around the z axis ; xx = ffx ffx = 0.5 + (ffx - 0.5 - @rotoffx/txmax)*cos(#angle) - \ (ffy - 0.5 - @rotoffy/tymax)*sin(#angle) ffy = 0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(#angle) + \ (xx - 0.5 - @rotoffx/txmax)*sin(#angle) ; ; rotation around the y axis ; xx = ffx ffx = (0.5 + (ffz - 0.5 - @rotoffz/txmax)*sin(@zangle*pi/180) + \ (ffx - 0.5 - @rotoffx/txmax)*cos(@zangle*pi/180))*#width ffz = (0.5 + (ffz - 0.5 - @rotoffz/tzmax)*cos(@zangle*pi/180) - \ (xx - 0.5 - @rotoffx/txmax)*sin(@zangle*pi/180)) ; ; rotation around the x axis ; yy = ffy ffy = (0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(@xangle*pi/180) - \ (ffz - 0.5 - @rotoffz/tzmax)*sin(@xangle*pi/180))*#height ffz = (0.5 + (yy - 0.5 - @rotoffy/tymax)*sin(@xangle*pi/180) + \ (ffz - 0.5 - @rotoffz/tzmax)*cos(@xangle*pi/180))*#height ; ; final translation ; ffx = ffx + @transx*#width ffy = ffy + @transy*#height ffz = ffz + @transz*#height csx[iii] = ffx csy[iii] = ffy csz[iii] = ffz iii = iii + 1 endwhile ; ; sort arrays by z value l = round(maxi/2) + 1 ir = maxi repeat if l > 1 l = l-1 rra = csz[l-1] rrb = csx[l-1] rrc = csy[l-1] rrd = clr[l-1] else rra = csz[ir-1] rrb = csx[ir-1] rrc = csy[ir-1] rrd = clr[ir-1] csz[ir-1] = csz[0] csx[ir-1] = csx[0] csy[ir-1] = csy[0] clr[ir-1] = clr[0] ir = ir-1 if ir == 0 csz[0] = rra csx[0] = rrb csy[0] = rrc clr[0] = rrd continue = false endif endif if continue == true si = l sj = 2*l endif while (sj <= ir) && (continue == true) if sj < ir if csz[sj-1] < csz[sj] sj = sj + 1 endif endif if rra < csz[sj-1] csz[si-1] = csz[sj-1] csx[si-1] = csx[sj-1] csy[si-1] = csy[sj-1] clr[si-1] = clr[sj-1] si = sj sj = sj + sj else sj = ir + 1 endif endwhile if (continue == true) csz[si-1] = rra csx[si-1] = rrb csy[si-1] = rrc clr[si-1] = rrd endif until continue == false ; ; create the spheres ; rds = round(radius*#width/txmax*fscale) iii = 0 while iii <= maxi ; ; perspective application ; if @useproj zz = csz[iii] ffx = csx[iii]*txmax/#width+xmin ffy = tymax*(1-csy[iii]/#height)+ymin ffz = zmin - 2*csz[iii]*sqrt(txmax^2+tymax^2)/#height pcircum = (@cprojx/#magn*ffz-(ffx+radius)*@cprojz/#magn)/(ffz-@cprojz/#magn) ffx = (@cprojx/#magn*ffz-ffx*@cprojz/#magn)/(ffz-@cprojz/#magn) ffy = (@cprojy/#magn*ffz-ffy*@cprojz/#magn)/(ffz-@cprojz/#magn) csx[iii] = (ffx-xmin)*#width/txmax pcircum = (pcircum-xmin)*#width/txmax rds = round(abs((pcircum-csx[iii])*fscale)) csy[iii] = #height*(1-(ffy-ymin)/tymax) csz[iii] = zz endif ; px = trunc(csx[iii])+wd2 py = trunc(csy[iii])+ht2 pxx = px-rds while pxx < px+rds pyy = py-rds while pyy < py+rds if pxx > 0 && pyy > 0 && pxx < #width+wd && pyy < #height+ht fsum = gsum[pxx,pyy]/rds*100 if ((((rds)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2- \ ((pxx-px))^2- ((pyy-py))^2) >=0) if @av == true if count[pxx,pyy] == 0 count[pxx,pyy] = (((rds)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2- \ ((pxx-px))^2-((pyy-py))^2)^0.5 else count[pxx,pyy] = (count[pxx,pyy]+(((rds)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2- \ ((pxx-px))^2-((pyy-py))^2)^0.5)/2 endif else count[pxx,pyy] = (((rds)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2- \ ((pxx-px))^2-((pyy-py))^2)^0.5 endif if @method == "number" lev[pxx,pyy] = trunc(iii^@adj) elseif @method == "position" lev[pxx,pyy] = trunc((csz[iii]^2+csx[iii]^2+csy[iii]^2)^@adj) else lev[pxx,pyy] = trunc(clr[iii]^@adj) endif if (trunc(lev[pxx,pyy]/colorsUsed)%2) == 0 lev[pxx,pyy] = lev[pxx,pyy]%colorsUsed else lev[pxx,pyy] = (colorsUsed-1-lev[pxx,pyy]%colorsUsed) endif endif endif pyy = pyy + 1 endwhile pxx = pxx + 1 endwhile iii = iii + 1 endwhile ; init: float hval = 0.0 float extent = 1.0 - @extent float nhit=0 float nlev = 0 float nhit=0 float nhitx=0 float nhity=0 float e1 = 0.0; potentials float e2 = 0.0 float e3 = 0.0 float vx = 0.0; normal vector float vy = 0.0 float vz = 0.0 float vd = 0.0 float cen = 0 float cenx = 0 float ceny = 0 complex t = 0 float tII = 0 complex z1 = 0 float t1x = 0 float t2x = 0 float t3x = 0 float t1y = 0 float t2y = 0 float t3y = 0 float e1 = 0 float e2 = 0 float e3 = 0 float tx = 0 float ty = 0 float tz = 0 float td = 0 complex ww = 0 complex www = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 int in = 7 complex pp = #pixel*@nscale*r + @noffset WHILE (in > 0) ; determine integer coordinate for corners of square ; surrounding pp float bx0 = floor(real(pp)) % 256 float by0 = floor(imag(pp)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(pp) - floor(real(pp)) float ry0 = imag(pp) - floor(imag(pp)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from pin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float aa = u1 + sx*(v1-u1) float bb = u2 + sx*(v2-u2) sum = sum + (aa + sy*(bb-aa))*freq freq = freq / 2 pp = pp * r2 * 2 in = in - 1 ENDWHILE loop: final: int xcrd = #x int ycrd = #y bool inside = true ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > 0 nhit=count[xcrd,ycrd] nhitx=count[xcrd+1,ycrd] nhity=count[xcrd,ycrd+1] nlev=lev[xcrd,ycrd] else #solid=true endif float x = 0.0 float y = 0.0 IF @transfer == 0 x = real(#pixel)*100+@fbm*(sum+1) y = imag(#pixel)*100+@fbm*(sum+1) ELSEIF @transfer == 1 x = real(#pixel)*200*(1+@fbm*(sum+1)*0.5) y = imag(#pixel)*200*(1+@fbm*(sum+1)*0.5) ELSEIF @transfer == 2 x = real(#pixel)*200/(1+@fbm*(sum+1)*0.5) y = imag(#pixel)*200/(1+@fbm*(sum+1)*0.5) ELSEIF @transfer == 3 x = real(#pixel)*200+10*log(@fbm*(sum+1)) y = imag(#pixel)*200+10*log(@fbm*(sum+1)) ELSEIF @transfer == 4 x = real(#pixel)*200+50*exp(@fbm*(sum+1)) y = imag(#pixel)*200+50*exp(@fbm*(sum+1)) ELSEIF @transfer == 5 x = real(#pixel)*200+50*(@fbm*(sum+1))*(@fbm*(sum+1)) y = imag(#pixel)*200+50*(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 x = real(#pixel)*200+50*sqrt(@fbm*(sum+1)) y = imag(#pixel)*200+50*sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 x = real(#pixel)*200+50*sin(@fbm*(sum+1)) y = imag(#pixel)*200+50*sin(@fbm*(sum+1)) ELSEIF @transfer == 8 x = real(#pixel)*200+50*asin(@fbm*(sum+1)) y = imag(#pixel)*200+50*asin(@fbm*(sum+1)) ELSEIF @transfer == 9 x = real(#pixel)*200+50*tan(@fbm*(sum+1)) y = imag(#pixel)*200+50*tan(@fbm*(sum+1)) ELSEIF @transfer == 10 x = real(#pixel)*200+50*atan(@fbm*(sum+1)) y = imag(#pixel)*200+50*atan(@fbm*(sum+1)) ENDIF cen = nhit*(1+@fbmf*(sum+0.1)*10)/(1+@fbmf) cenx = nhitx*(1+@fbmf*(sum+0.1)*10)/(1+@fbmf) ceny = nhity*(1+@fbmf*(sum+0.1)*10)/(1+@fbmf) e1 = cen*@zscale e2 = cenx*@zscale e3 = ceny*@zscale IF (@xfer == 1); log e1 = log(e1) e2 = log(e2) e3 = log(e3) ELSEIF (@xfer == 2); sqrt e1 = sqrt(e1) e2 = sqrt(e2) e3 = sqrt(e3) ELSEIF (@xfer == 3); cuberoot e1 = (e1)^(1/3) e2 = (e2)^(1/3) e3 = (e3)^(1/3) ELSEIF (@xfer == 4); exp e1 = exp(e1) e2 = exp(e2) e3 = exp(e3) ELSEIF (@xfer == 5); sqr e1 = sqr(e1) e2 = sqr(e2) e3 = sqr(e3) ELSEIF (@xfer == 6); cube e1 = (e1)^3 e2 = (e2)^3 e3 = (e3)^3 ELSEIF (@xfer == 7); sin e1 = sin(e1) e2 = sin(e2) e3 = sin(e3) ELSEIF (@xfer == 8); cos e1 = cos(e1) e2 = cos(e2) e3 = cos(e3) ELSEIF (@xfer == 9); tan e1 = tan(e1) e2 = tan(e2) e3 = tan(e3) ENDIF ; apply post-scale e1 = e1 * @zscale2 e2 = e2 * @zscale2 e3 = e3 * @zscale2 vx = e2-e1 vy = e3-e1 vz = -0.01 ; normalize vector vd = 1/sqrt(sqr(vx)+sqr(vy)+sqr(vz)) vx = vx*vd vy = vy*vd vz = vz*vd z1 = vx + flip(vy) float d2r = #pi/180; degrees to radians conversion factor ; create the texture float gridx = @gridx float gridy = @gridy x = x*(1+@blend*real(z1))/(1+@blend)+ real(#random)*@dx y = y*(1+@blend*imag(z1))/(1+@blend)+ imag(#random)*@dy IF @smooth == false IF @texture == 0 ;lattice t1x = sin(x/gridx)+@toffset t1y = cos(y/gridy)+@toffset t2x = t1x+0.00000001 t3x = t1x t2y = t1y t3y = t1y+0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 1 ;quilt t1x = tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cotan(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 2 ;circles and squares t1x = sin(x/gridx)+cos(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cos(y/gridy)+sin(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 3 ;triangles t1x = tan(x/gridx)+cotan(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cotan(y/gridy)+tan(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 4 ;X's and O's t1x = 1/sin(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cos(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 5 ;Dimples t1x = 1/tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cotan(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 6 ;Arrows t1x = 1/tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/sin(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 7 ; basketweave t1x = 1/sin(x/gridx)+1/cos(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cos(y/gridy)+1/sin(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 8 ; balls t1x = sin(x/gridx)^2 + cos(y/gridy)^2+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = sin(y/gridy)^2 + cos(x/gridx)^2+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 9 ;Net t1x = log(abs(sin(x/gridx)))+@toffset t2x = t1x+0.00000001 t3x = t1x t1y = log(abs(cos(y/gridy)))+@toffset t2y = t1y t3y = t1y+0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ENDIF ELSE IF @texture == 0 ;lattice t1x = sin(x/gridx)+1 t2x = sin((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = cos(y/gridy)+1 t2y = t1y t3y = cos((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 1 ;quilt t1x = tan(x/gridx)+1 t2x = tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = cotan(y/gridy)+1 t2y = t1y t3y = cotan((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 2 ;circles and squares t1x = sin(x/gridx)+cos(y/gridy)+@toffset t2x = sin((x+0.00000001)/gridx)+cos(y/gridy)+@toffset t3x = t1x t1y = cos(y/gridy)+sin(x/gridx)+@toffset t2y = t1y t3y = cos((y+0.00000001)/gridy)+sin(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 3 ;triangles t1x = tan(x/gridx)+cotan(y/gridy)+@toffset t2x = tan((x+0.00000001)/gridx)+cotan(y/gridy)+@toffset t3x = t1x t1y = cotan(y/gridy)+tan(x/gridx)+@toffset t2y = t1y t3y = cotan((y+0.00000001)/gridy)+tan(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 4 ;X's and O's t1x = 1/sin(x/gridx)+@toffset t2x = 1/sin((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/cos(y/gridy)+@toffset t2y = t1y t3y = 1/cos((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 5 ;Dimples t1x = 1/tan(x/gridx)+@toffset t2x = 1/tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/cotan(y/gridy)+@toffset t2y = t1y t3y = 1/cotan((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 6 ;Arrows t1x = 1/tan(x/gridx)+@toffset t2x = 1/tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/sin(y/gridy)+@toffset t2y = t1y t3y = 1/sin((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 7 ; basketweave t1x = 1/sin((x+0.00000001)/gridx)+1/cos(y/gridy)+@toffset t2x = 1/sin(x/gridx)+1/cos(y/gridy)+@toffset t3x = t1x t1y = 1/cos(y/gridy)+1/sin(x/gridx)+@toffset t2y = t1y t3y = 1/cos((y+0.00000001)/gridy)+1/sin(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 8 ; balls t1x = sin((x+0.00000001)/gridx)^2 + cos(y/gridy)^2+@toffset t2x = sin(x/gridx)^2 + cos(y/gridy)^2+@toffset t3x = t1x t1y = sin(y/gridy)^2 + cos(x/gridx)^2+@toffset t2y = t1y t3y = sin((y+0.00000001)/gridy)^2 + cos(x/gridx)^2+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 9 ;net t1x = log(abs(sin(x/gridx)))+1 t2x = log(abs(sin((x+0.00000001)/gridx)))+@toffset t3x = t1x t1y = log(abs(cos(y/gridy)))+1 t2y = t1y t3y = log(abs(cos((y+0.00000001)/gridy)))+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ENDIF ENDIF ; add the weighted texture z1 = z1*(1-@weight) + t*@weight ww = fn2(fn1((fn3(z1+@pmix*((real(#pixel))+flip(imag(#pixel)))))*10^@tpwr))*@ts www = fn2(fn1((ww - round(ww)))) + @toffsetII tII = cabs(www)*@tc tII = (tII - trunc(tII))*@tweight ; create vector for light direction float lx = cos(@angle*d2r) * cos(@elevation*d2r) float ly = sin(@angle*d2r) * cos(@elevation*d2r) float lz = -sin(@elevation*d2r) ; compute cosine of angle between these vectors ; (this is the amount of lighting on the surface) float ll = lx*real(z1) + ly*imag(z1) + lz*vz IF (ll < @ambient); light is below the ambient level ll = @ambient; set it to the ambient level ENDIF IF (@ambient < 0); the ambient level is negative ll = ll + 1; offset to prevent clipping at 0 ENDIF if(nhit==0) #solid=true else if @colorPreset == "Gradient" #color = gradient(ll*0.0275*@scale*(1+@fbmf*(1+sum))/(1+@fbmf) + ((1.0/@totalColors)*nlev%ranges+1) +tII) else int rangeNum = trunc(nlev) if rangeNum < 0 rangeNum = rangeNum * -1 endif rangeNum = rangeNum % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNum < ranges / 2) rangeNum = (rangeNum + rangeNum) % ranges else rangeNum = (rangeNum + rangeNum + 1) % ranges endif else ; Number of ranges is odd. rangeNum = (rangeNum + rangeNum) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNum / 2) * 2) == rangeNum) ; rangeNum is even. rangeNum = rangeNum - trunc (rangeNum / 2) else ; rangeNum is odd. rangeNum = rangeNum + trunc ((ranges - rangeNum) / 2) endif endif float colorPos = (ll * 0.0275 * @scale * (1 + @fbmf * (1 + sum)) / (1 + @fbmf) + tII - 0.04) / 0.03 if colorPos > 0.5 colorPos = (colorPos - 0.5) / 0.5 else colorPos = colorPos / 0.5 endif if @highlight_type == "none" hval = 0 elseif @highlight_type == "linear" if colorPos > extent hval = (5*@highlight*(colorPos-extent)/(1-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "log" if colorPos > extent hval = (5*@highlight*log(colorPos-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "exponential" if colorPos > extent hval = (5*@highlight*(exp(colorPos-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hval = 0 endif endif #color = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],rgb(1,1,1),hval), colorPos) endif endif default: param version caption = "Formula Version" default = 422 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam $ifdef VER40 heading text="Implements built-in lighting based upon \ Damien's lighting code. \ Implements fBm in the global section \ using arrays and a modification of Damien's code. \ Direct coloring options added by Ken Childress. \ Use with Pixel formula in mt.ufm" endheading $else heading caption="Implements built-in lighting based upon" endheading heading caption="Damien's lighting code." endheading heading caption="Implements fBm in the global section" endheading heading caption="using a modification of Damien's code." endheading heading caption="Direct coloring options added by Ken Childress." endheading heading caption="Use with Pixel formula in mt.ufm" endheading render=false $endif title="Formula Plotter" param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam ;-------------------------------------------------------------------- ; Color Settings ;-------------------------------------------------------------------- heading caption = "Color Settings" endheading param colorPreset caption = "Color Preset" enum = "Gradient" "Custom" "Generate" "Default" "Default 12" \ "Default 16" "Default 24" "Color Wheel 12" "Alhambra 8" \ "Belvedere 8" "Bouquet 8" "Color Switch 8" "Evening Sky 8" \ "Fantasia 8" "Flowering Orchard 8" "Morning Sky 8" "Pastel 8" \ "Pastel Rainbow 8" "Showtime 8" "Soleil 8" "Chill 8" \ "Cloud Nine 8" "La Terra 8" "Santa Fe 8" "Spring 8" "Summer 8" \ "Fall 8" "Winter 8" "Mojave 8" "Gold/Green 8" "Gold/Green Alt 8" \ "Gold/Silver 8" "Gold/Silver Alt 8" "Purple/Yellow 8" \ "Purple/Yellow Alt 8" "Silver/Blue 8" "Silver/Blue Alt 8" \ "Fourth of July 3" "Blue/Silver 2" "Blue/White 2" "Cyan/Magenta 2" \ "Cyan/Yellow 2" "Gold/Green 2" "Purple/Yellow 2" "Red/Tan 2" default = 2 hint = "Use 'Gradient' for colors from the gradient. \ Use 'Custom' to set your own color ranges. \ Use 'Default' for the default colors. \ Use 'Generate' to create 3D-like colors from the \ gradient (allows using the gradient randomize function). \ Use any of the other predefined settings for those colors." endparam param customize caption = "Show/Customize" default = false hint = "Check to customize the selected color preset. NOTE: If you \ modify the default values for any of the range(s), you cannot \ get back to the default values for the range(s) you modify \ unless you reload the UCL." visible = (@colorPreset != "Gradient") && (@colorPreset != "Generate") \ && (@colorPreset != "Custom") endparam param highlight_type caption = "Color Highlight Type" default = 1 enum = "none" "linear" "log" "exponential" hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param extent caption = "Highlight Extent" default = 0.05 min = 0.0 max = 0.5 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param scale caption = "color scale adj" default = 1.0 endparam param method caption = "color method" enum = "number" "position" "index u" "index v" "index u+v" "main index" default = 0 endparam param adj caption = "color methd adj" default = 0.3 endparam float param luminanceUpper caption = "Lum. Upper Value" default = 0.60 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the upper value \ when generating the ranges from the gradient. This value \ is used with the brighter end of the color range." visible = (@colorPreset == "Generate") endparam float param luminanceLower caption = "Lum. Lower Value" default = 0.10 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the lower value \ when generating the ranges from the gradient. This value \ is used with the darker end of the color range." visible = (@colorPreset == "Generate") endparam int param totalColors caption = "# Colors in Gradient" default = 8 min = 1 max = 8 visible = (@colorPreset == "Gradient") endparam int param ncolor caption = "# Colors to Use" default = 8 min = 1 max = 24 visible = (@colorPreset != "Generate") endparam int param colorRanges caption = "Number of Ranges" default = 8 min = 1 max = 24 hint = "The number of color ranges (1..24)." visible = (@colorPreset == "Custom") endparam int param numRanges caption = "Number of Ranges" default = 8 min = 1 max = 200 hint = "The number of color ranges." visible = (@colorPreset == "Generate") endparam param perturbRanges caption = "Perturb Ranges" enum = "None" "Even/Odd" "1st Half / 2nd Half" "8 Range Custom" default = 0 hint = "Modify the way the ranges are assigned to the elements. \ 'None' = Assign in Order (0 1 2 3 4 5 6 7); 'Even Odd' = \ Assign Even Ranges, then Odd Ranges (0 2 4 6 1 3 5 7); \ '1st Half / 2nd Half' = Assign from first half of range, \ then 2nd half (0 4 1 5 2 6 3 7); '8 Range Custom' = Assign \ the ordering by entering digits 1-8. Only works for ranges \ with 8 colors." visible = ((@colorPreset == "Custom" && @colorRanges >= 3) || \ (@colorPreset == "Generate" && @numRanges >= 3) || \ (@colorPreset != "Custom" && @colorPreset != "Generate" && \ @colorPreset != "Gradient")) endparam int param rangeOrder caption = "Range Order" default = 12345678 min = 11111111 max = 88888888 hint = "Specify the color range ordering. Use digits 1-8 to specify \ the order the ranges will be used. For example, to reverse \ the ordering, specify 87654321. To alternate, use 13572468. \ If color map or preset is defined that does not contain exactly \ 8 ranges, then this parameter will not have any effect." visible = (@perturbRanges == "8 Range Custom") endparam ; heading ; caption = " " ; endheading ;-------------------------------------------------------------------- ; Color Defaults for Custom ;-------------------------------------------------------------------- heading caption = " Custom Color Settings" visible = (@colorPreset == "Custom") endheading color param colorMax1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMin1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMax2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMin2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMax3 caption = "Color Range 3 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMin3 caption = "Color Range 3 Low" default = rgb(100/255,36/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMax4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMin4 caption = "Color Range 4 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMax5 caption = "Color Range 5 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMin5 caption = "Color Range 5 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMax6 caption = "Color Range 6 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMin6 caption = "Color Range 6 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMax7 caption = "Color Range 7 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMin7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMax8 caption = "Color Range 8 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param colorMin8 caption = "Color Range 8 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param customMax9 caption = "Color Range 9 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMin9 caption = "Color Range 9 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMax10 caption = "Color Range 10 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMin10 caption = "Color Range 10 Low" default = rgb(94/255,18/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMax11 caption = "Color Range 11 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMin11 caption = "Color Range 11 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMax12 caption = "Color Range 12 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMin12 caption = "Color Range 12 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMax13 caption = "Color Range 13 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMin13 caption = "Color Range 13 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMax14 caption = "Color Range 14 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMin14 caption = "Color Range 14 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMax15 caption = "Color Range 15 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMin15 caption = "Color Range 15 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMax16 caption = "Color Range 16 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMin16 caption = "Color Range 16 Low" default = rgb(69/255,0/255,82/255) hint = "Specifies the color at the low end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMax17 caption = "Color Range 17 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMin17 caption = "Color Range 17 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMax18 caption = "Color Range 18 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMin18 caption = "Color Range 18 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMax19 caption = "Color Range 19 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMin19 caption = "Color Range 19 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMax20 caption = "Color Range 20 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMin20 caption = "Color Range 20 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMax21 caption = "Color Range 21 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMin21 caption = "Color Range 21 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMax22 caption = "Color Range 22 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMin22 caption = "Color Range 22 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMax23 caption = "Color Range 23 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMin23 caption = "Color Range 23 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMax24 caption = "Color Range 24 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam color param customMin24 caption = "Color Range 24 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default ;-------------------------------------------------------------------- heading caption = " Default Settings" visible = (@customize && @colorPreset == "Default") endheading color param defaultMax1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax2 caption = "Color Range 2 High" default = rgb(252/255,0/255,172/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin2 caption = "Color Range 2 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax3 caption = "Color Range 3 High" default = rgb(252/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax4 caption = "Color Range 4 High" default = rgb(252/255,128/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin4 caption = "Color Range 4 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax5 caption = "Color Range 5 High" default = rgb(252/255,252/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin5 caption = "Color Range 5 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax6 caption = "Color Range 6 High" default = rgb(0/255,252/255,128/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin7 caption = "Color Range 7 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax8 caption = "Color Range 8 High" default = rgb(64/255,64/255,252/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 12 ;-------------------------------------------------------------------- heading caption = " Default 12 Color Settings" visible = (@customize && @colorPreset == "Default 12") endheading color param default12Max1 caption = "Color Range 1 High" default = rgb(255/255,85/255,253/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min1 caption = "Color Range 1 Low" default = rgb(98/255,0/255,76/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max2 caption = "Color Range 2 High" default = rgb(252/255,0/255,143/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min2 caption = "Color Range 2 Low" default = rgb(98/255,0/255,54/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max4 caption = "Color Range 4 High" default = rgb(255/255,97/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min4 caption = "Color Range 4 Low" default = rgb(104/255,27/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min5 caption = "Color Range 5 Low" default = rgb(110/255,54/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max6 caption = "Color Range 6 High" default = rgb(255/255,248/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min6 caption = "Color Range 6 Low" default = rgb(102/255,60/255,6/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,58/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min7 caption = "Color Range 7 Low" default = rgb(0/255,76/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,205/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min8 caption = "Color Range 8 Low" default = rgb(0/255,89/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max9 caption = "Color Range 9 High" default = rgb(0/255,194/255,255/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min9 caption = "Color Range 9 Low" default = rgb(0/255,80/255,92/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max10 caption = "Color Range 10 High" default = rgb(35/255,109/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min10 caption = "Color Range 10 Low" default = rgb(0/255,4/255,102/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max11 caption = "Color Range 11 High" default = rgb(149/255,53/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min11 caption = "Color Range 11 Low" default = rgb(53/255,0/255,96/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max12 caption = "Color Range 12 High" default = rgb(195/255,0/255,252/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min12 caption = "Color Range 12 Low" default = rgb(58/255,0/255,84/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 16 ;-------------------------------------------------------------------- heading caption = " Default 16 Color Settings" visible = (@customize && @colorPreset == "Default 16") endheading color param default16Max1 caption = "Color Range 1 High" default = rgb(255/255,31/255,114/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min1 caption = "Color Range 1 Low" default = rgb(94/255,0/255,40/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max3 caption = "Color Range 3 High" default = rgb(255/255,78/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min3 caption = "Color Range 3 Low" default = rgb(88/255,27/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max4 caption = "Color Range 4 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min4 caption = "Color Range 4 Low" default = rgb(90/255,30/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,31/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min5 caption = "Color Range 5 Low" default = rgb(88/255,38/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min6 caption = "Color Range 6 Low" default = rgb(96/255,57/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max7 caption = "Color Range 7 High" default = rgb(170/255,255/255,37/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min7 caption = "Color Range 7 Low" default = rgb(41/255,68/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,94/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min8 caption = "Color Range 8 Low" default = rgb(0/255,62/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max9 caption = "Color Range 9 High" default = rgb(0/255,238/255,203/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min9 caption = "Color Range 9 Low" default = rgb(0/255,64/255,54/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max10 caption = "Color Range 10 High" default = rgb(11/255,166/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min10 caption = "Color Range 10 Low" default = rgb(0/255,38/255,78/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max11 caption = "Color Range 11 High" default = rgb(0/255,68/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min11 caption = "Color Range 11 Low" default = rgb(0/255,20/255,88/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max12 caption = "Color Range 12 High" default = rgb(99/255,0/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min12 caption = "Color Range 12 Low" default = rgb(47/255,0/255,94/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max13 caption = "Color Range 13 High" default = rgb(145/255,0/255,255/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min13 caption = "Color Range 13 Low" default = rgb(69/255,0/255,102/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max14 caption = "Color Range 14 High" default = rgb(221/255,0/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min14 caption = "Color Range 14 Low" default = rgb(86/255,0/255,100/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max15 caption = "Color Range 15 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min15 caption = "Color Range 15 Low" default = rgb(90/255,0/255,75/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max16 caption = "Color Range 16 High" default = rgb(255/255,0/255,140/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min16 caption = "Color Range 16 Low" default = rgb(96/255,0/255,60/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 24 ;-------------------------------------------------------------------- heading caption = " Default 24 Color Settings" visible = (@customize && @colorPreset == "Default 24") endheading color param default24Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min2 caption = "Color Range 2 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max3 caption = "Color Range 3 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max4 caption = "Color Range 4 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max5 caption = "Color Range 5 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min5 caption = "Color Range 5 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max6 caption = "Color Range 6 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min6 caption = "Color Range 6 Low" default = rgb(96/255,27/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max7 caption = "Color Range 7 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min7 caption = "Color Range 7 Low" default = rgb(100/255,38/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min8 caption = "Color Range 8 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max9 caption = "Color Range 9 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min9 caption = "Color Range 9 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max10 caption = "Color Range 10 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min10 caption = "Color Range 10 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max11 caption = "Color Range 11 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min11 caption = "Color Range 11 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max12 caption = "Color Range 12 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min12 caption = "Color Range 12 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max13 caption = "Color Range 13 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min13 caption = "Color Range 13 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max14 caption = "Color Range 14 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min14 caption = "Color Range 14 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max15 caption = "Color Range 15 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min15 caption = "Color Range 15 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max16 caption = "Color Range 16 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min16 caption = "Color Range 16 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max17 caption = "Color Range 17 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min17 caption = "Color Range 17 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max18 caption = "Color Range 18 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min18 caption = "Color Range 18 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max19 caption = "Color Range 19 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min19 caption = "Color Range 19 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max20 caption = "Color Range 20 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min20 caption = "Color Range 20 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max21 caption = "Color Range 21 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min21 caption = "Color Range 21 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max22 caption = "Color Range 22 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min22 caption = "Color Range 22 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max23 caption = "Color Range 23 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min23 caption = "Color Range 23 Low" default = rgb(64/255,0/255,76/255) hint = "Specifies the color at the low end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max24 caption = "Color Range 24 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min24 caption = "Color Range 24 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Wheel 12 ;-------------------------------------------------------------------- heading caption = " Color Wheel 12 Settings" visible = (@customize && @colorPreset == "Color Wheel 12") endheading color param colorWheel12Max1 caption = "Color Range 1 High" default = rgb(142/255,117/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min1 caption = "Color Range 1 Low" default = rgb(52/255,0/255,100/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max2 caption = "Color Range 2 High" default = rgb(224/255,9/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,84/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max4 caption = "Color Range 4 High" default = rgb(252/255,167/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min4 caption = "Color Range 4 Low" default = rgb(95/255,54/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max5 caption = "Color Range 5 High" default = rgb(190/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min5 caption = "Color Range 5 Low" default = rgb(63/255,84/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max6 caption = "Color Range 6 High" default = rgb(0/255,231/255,213/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min6 caption = "Color Range 6 Low" default = rgb(4/255,62/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max7 caption = "Color Range 7 High" default = rgb(182/255,27/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min7 caption = "Color Range 7 Low" default = rgb(53/255,0/255,92/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max8 caption = "Color Range 8 High" default = rgb(255/255,33/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min8 caption = "Color Range 8 Low" default = rgb(80/255,0/255,53/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max9 caption = "Color Range 9 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min9 caption = "Color Range 9 Low" default = rgb(101/255,25/255,21/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max10 caption = "Color Range 10 High" default = rgb(255/255,241/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min10 caption = "Color Range 10 Low" default = rgb(88/255,69/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max11 caption = "Color Range 11 High" default = rgb(0/255,248/255,103/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min11 caption = "Color Range 11 Low" default = rgb(0/255,83/255,15/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max12 caption = "Color Range 12 High" default = rgb(27/255,119/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min12 caption = "Color Range 12 Low" default = rgb(0/255,31/255,92/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Alhambra 8 ;-------------------------------------------------------------------- heading caption = " Alhambra 8 Settings" visible = (@customize && @colorPreset == "Alhambra 8") endheading color param alhambra8Max1 caption = "Color Range 1 High" default = rgb(15/255,222/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min1 caption = "Color Range 1 Low" default = rgb(0/255,43/255,52/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max2 caption = "Color Range 2 High" default = rgb(255/255,204/255,75/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min2 caption = "Color Range 2 Low" default = rgb(92/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max3 caption = "Color Range 3 High" default = rgb(188/255,152/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min3 caption = "Color Range 3 Low" default = rgb(41/255,0/255,70/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max4 caption = "Color Range 4 High" default = rgb(255/255,155/255,109/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min4 caption = "Color Range 4 Low" default = rgb(95/255,36/255,14/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max5 caption = "Color Range 5 High" default = rgb(121/255,180/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min5 caption = "Color Range 5 Low" default = rgb(0/255,47/255,91/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max6 caption = "Color Range 6 High" default = rgb(255/255,131/255,126/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min6 caption = "Color Range 6 Low" default = rgb(104/255,20/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max7 caption = "Color Range 7 High" default = rgb(33/255,255/255,220/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min7 caption = "Color Range 7 Low" default = rgb(0/255,67/255,49/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max8 caption = "Color Range 8 High" default = rgb(255/255,177/255,93/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min8 caption = "Color Range 8 Low" default = rgb(100/255,44/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Belvedere 8 ;-------------------------------------------------------------------- heading caption = " Belvedere 8 Settings" visible = (@customize && @colorPreset == "Belvedere 8") endheading color param belvedere8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min1 caption = "Color Range 1 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min2 caption = "Color Range 2 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max3 caption = "Color Range 3 High" default = rgb(123/255,201/255,254/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min3 caption = "Color Range 3 Low" default = rgb(0/255,45/255,68/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max4 caption = "Color Range 4 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min4 caption = "Color Range 4 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max5 caption = "Color Range 5 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min5 caption = "Color Range 5 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max6 caption = "Color Range 6 High" default = rgb(0/255,255/255,217/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min6 caption = "Color Range 6 Low" default = rgb(0/255,54/255,46/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max7 caption = "Color Range 7 High" default = rgb(255/255,20/255,70/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min7 caption = "Color Range 7 Low" default = rgb(100/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max8 caption = "Color Range 8 High" default = rgb(95/255,84/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,89/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Bouquet 8 ;-------------------------------------------------------------------- heading caption = " Bouquet 8 Settings" visible = (@customize && @colorPreset == "Bouquet 8") endheading color param bouquet8Max1 caption = "Color Range 1 High" default = rgb(0/255,255/255,131/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min1 caption = "Color Range 1 Low" default = rgb(0/255,84/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max2 caption = "Color Range 2 High" default = rgb(52/255,255/255,198/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min2 caption = "Color Range 2 Low" default = rgb(0/255,82/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max3 caption = "Color Range 3 High" default = rgb(0/255,244/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min3 caption = "Color Range 3 Low" default = rgb(0/255,64/255,74/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max4 caption = "Color Range 4 High" default = rgb(180/255,169/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min4 caption = "Color Range 4 Low" default = rgb(40/255,12/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max5 caption = "Color Range 5 High" default = rgb(251/255,148/255,230/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min5 caption = "Color Range 5 Low" default = rgb(100/255,20/255,67/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max6 caption = "Color Range 6 High" default = rgb(255/255,101/255,140/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min6 caption = "Color Range 6 Low" default = rgb(84/255,15/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max7 caption = "Color Range 7 High" default = rgb(255/255,149/255,111/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min7 caption = "Color Range 7 Low" default = rgb(77/255,36/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max8 caption = "Color Range 8 High" default = rgb(255/255,252/255,125/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min8 caption = "Color Range 8 Low" default = rgb(95/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Switch 8 ;-------------------------------------------------------------------- heading caption = " Color Switch 8 Settings" visible = (@customize && @colorPreset == "Color Switch 8") endheading color param colorSwitch8Max1 caption = "Color Range 1 High" default = rgb(255/255,33/255,52/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min1 caption = "Color Range 1 Low" default = rgb(90/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max2 caption = "Color Range 2 High" default = rgb(61/255,136/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,82/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,44/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min3 caption = "Color Range 3 Low" default = rgb(0/255,70/255,7/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max4 caption = "Color Range 4 High" default = rgb(255/255,131/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min4 caption = "Color Range 4 Low" default = rgb(105/255,40/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max5 caption = "Color Range 5 High" default = rgb(255/255,27/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min5 caption = "Color Range 5 Low" default = rgb(104/255,0/255,78/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max6 caption = "Color Range 6 High" default = rgb(168/255,87/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min6 caption = "Color Range 6 Low" default = rgb(35/255,0/255,58/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min7 caption = "Color Range 7 Low" default = rgb(0/255,60/255,60/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,38/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min8 caption = "Color Range 8 Low" default = rgb(90/255,90/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Evening Sky 8 ;-------------------------------------------------------------------- heading caption = " Evening Sky 8 Settings" visible = (@customize && @colorPreset == "Evening Sky 8") endheading color param eveningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,238/255,222/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min1 caption = "Color Range 1 Low" default = rgb(50/255,35/255,35/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max2 caption = "Color Range 2 High" default = rgb(255/255,226/255,85/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min2 caption = "Color Range 2 Low" default = rgb(85/255,54/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max3 caption = "Color Range 3 High" default = rgb(249/255,148/255,216/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min3 caption = "Color Range 3 Low" default = rgb(79/255,20/255,57/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max4 caption = "Color Range 4 High" default = rgb(159/255,159/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min4 caption = "Color Range 4 Low" default = rgb(22/255,16/255,54/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,175/255,79/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min5 caption = "Color Range 5 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max6 caption = "Color Range 6 High" default = rgb(124/255,190/255,251/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min6 caption = "Color Range 6 Low" default = rgb(13/255,40/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max7 caption = "Color Range 7 High" default = rgb(255/255,111/255,123/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min7 caption = "Color Range 7 Low" default = rgb(57/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max8 caption = "Color Range 8 High" default = rgb(111/255,255/255,245/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min8 caption = "Color Range 8 Low" default = rgb(0/255,60/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fantasia 8 ;-------------------------------------------------------------------- heading caption = " Fantasia 8 Settings" visible = (@customize && @colorPreset == "Fantasia 8") endheading color param fantasia8Max1 caption = "Color Range 1 High" default = rgb(255/255,230/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min1 caption = "Color Range 1 Low" default = rgb(102/255,81/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max2 caption = "Color Range 2 High" default = rgb(230/255,78/255,208/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min2 caption = "Color Range 2 Low" default = rgb(104/255,0/255,52/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max3 caption = "Color Range 3 High" default = rgb(180/255,119/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min3 caption = "Color Range 3 Low" default = rgb(56/255,0/255,82/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max4 caption = "Color Range 4 High" default = rgb(0/255,228/255,150/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min4 caption = "Color Range 4 Low" default = rgb(0/255,50/255,30/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max5 caption = "Color Range 5 High" default = rgb(131/255,148/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min5 caption = "Color Range 5 Low" default = rgb(38/255,31/255,85/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max6 caption = "Color Range 6 High" default = rgb(255/255,182/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min6 caption = "Color Range 6 Low" default = rgb(76/255,40/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max7 caption = "Color Range 7 High" default = rgb(252/255,0/255,113/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min7 caption = "Color Range 7 Low" default = rgb(84/255,0/255,34/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max8 caption = "Color Range 8 High" default = rgb(0/255,232/255,249/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min8 caption = "Color Range 8 Low" default = rgb(0/255,64/255,78/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Flowering Orchard 8 ;-------------------------------------------------------------------- heading caption = " Flowering Orchard 8 Settings" visible = (@customize && @colorPreset == "Flowering Orchard 8") endheading color param floweringOrchard8Max1 caption = "Color Range 1 High" default = rgb(255/255,188/255,213/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min1 caption = "Color Range 1 Low" default = rgb(132/255,30/255,66/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max2 caption = "Color Range 2 High" default = rgb(240/255,135/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min2 caption = "Color Range 2 Low" default = rgb(70/255,0/255,59/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max3 caption = "Color Range 3 High" default = rgb(255/255,75/255,153/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min3 caption = "Color Range 3 Low" default = rgb(104/255,15/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max4 caption = "Color Range 4 High" default = rgb(71/255,213/255,119/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min4 caption = "Color Range 4 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max5 caption = "Color Range 5 High" default = rgb(255/255,102/255,209/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min5 caption = "Color Range 5 Low" default = rgb(116/255,10/255,86/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max6 caption = "Color Range 6 High" default = rgb(154/255,199/255,51/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min6 caption = "Color Range 6 Low" default = rgb(28/255,44/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max7 caption = "Color Range 7 High" default = rgb(255/255,162/255,228/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min7 caption = "Color Range 7 Low" default = rgb(110/255,0/255,55/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max8 caption = "Color Range 8 High" default = rgb(255/255,201/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min8 caption = "Color Range 8 Low" default = rgb(145/255,20/255,54/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Morning Sky 8 ;-------------------------------------------------------------------- heading caption = " Morning Sky 8 Settings" visible = (@customize && @colorPreset == "Morning Sky 8") endheading color param morningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,178/255,217/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min1 caption = "Color Range 1 Low" default = rgb(79/255,29/255,57/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max2 caption = "Color Range 2 High" default = rgb(107/255,246/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min2 caption = "Color Range 2 Low" default = rgb(13/255,70/255,75/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max3 caption = "Color Range 3 High" default = rgb(255/255,199/255,137/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min3 caption = "Color Range 3 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max4 caption = "Color Range 4 High" default = rgb(241/255,245/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min4 caption = "Color Range 4 Low" default = rgb(16/255,24/255,46/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,177/255,188/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min5 caption = "Color Range 5 Low" default = rgb(54/255,14/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max6 caption = "Color Range 6 High" default = rgb(248/255,236/255,236/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min6 caption = "Color Range 6 Low" default = rgb(49/255,38/255,35/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max7 caption = "Color Range 7 High" default = rgb(129/255,201/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min7 caption = "Color Range 7 Low" default = rgb(0/255,56/255,70/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min8 caption = "Color Range 8 Low" default = rgb(89/255,76/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel 8 ;-------------------------------------------------------------------- heading caption = " Pastel 8 Settings" visible = (@customize && @colorPreset == "Pastel 8") endheading color param pastel8Max1 caption = "Color Range 1 High" default = rgb(147/255,255/255,193/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min1 caption = "Color Range 1 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max2 caption = "Color Range 2 High" default = rgb(147/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max3 caption = "Color Range 3 High" default = rgb(148/255,148/255,253/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min3 caption = "Color Range 3 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max4 caption = "Color Range 4 High" default = rgb(199/255,149/255,253/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max5 caption = "Color Range 5 High" default = rgb(255/255,147/255,221/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min5 caption = "Color Range 5 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max6 caption = "Color Range 6 High" default = rgb(254/255,148/255,148/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min6 caption = "Color Range 6 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max7 caption = "Color Range 7 High" default = rgb(255/255,202/255,147/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min7 caption = "Color Range 7 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,147/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min8 caption = "Color Range 8 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel Rainbow 8 ;-------------------------------------------------------------------- heading caption = " Pastel Rainbow 8 Settings" visible = (@customize && @colorPreset == "Pastel Rainbow 8") endheading color param pastelRainbow8Max1 caption = "Color Range 1 High" default = rgb(242/255,246/255,174/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min1 caption = "Color Range 1 Low" default = rgb(20/255,48/255,12/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max2 caption = "Color Range 2 High" default = rgb(182/255,242/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min2 caption = "Color Range 2 Low" default = rgb(20/255,44/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max3 caption = "Color Range 3 High" default = rgb(202/255,202/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min3 caption = "Color Range 3 Low" default = rgb(36/255,36/255,48/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max4 caption = "Color Range 4 High" default = rgb(255/255,170/255,170/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min4 caption = "Color Range 4 Low" default = rgb(89/255,0/255,24/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max5 caption = "Color Range 5 High" default = rgb(255/255,246/255,178/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min5 caption = "Color Range 5 Low" default = rgb(40/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max6 caption = "Color Range 6 High" default = rgb(255/255,238/255,206/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min6 caption = "Color Range 6 Low" default = rgb(52/255,16/255,40/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max7 caption = "Color Range 7 High" default = rgb(214/255,222/255,161/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min7 caption = "Color Range 7 Low" default = rgb(4/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max8 caption = "Color Range 8 High" default = rgb(255/255,230/255,246/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min8 caption = "Color Range 8 Low" default = rgb(70/255,50/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Showtime 8 ;-------------------------------------------------------------------- heading caption = " Showtime 8 Settings" visible = (@customize && @colorPreset == "Showtime 8") endheading color param showtime8Max1 caption = "Color Range 1 High" default = rgb(241/255,53/255,82/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min1 caption = "Color Range 1 Low" default = rgb(88/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max2 caption = "Color Range 2 High" default = rgb(255/255,121/255,52/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min2 caption = "Color Range 2 Low" default = rgb(107/255,29/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max3 caption = "Color Range 3 High" default = rgb(253/255,168/255,67/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min3 caption = "Color Range 3 Low" default = rgb(97/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max4 caption = "Color Range 4 High" default = rgb(255/255,231/255,21/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min4 caption = "Color Range 4 Low" default = rgb(140/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max5 caption = "Color Range 5 High" default = rgb(58/255,219/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min5 caption = "Color Range 5 Low" default = rgb(0/255,36/255,83/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max6 caption = "Color Range 6 High" default = rgb(9/255,116/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min6 caption = "Color Range 6 Low" default = rgb(33/255,30/255,81/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max7 caption = "Color Range 7 High" default = rgb(105/255,71/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min7 caption = "Color Range 7 Low" default = rgb(36/255,0/255,76/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max8 caption = "Color Range 8 High" default = rgb(187/255,32/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min8 caption = "Color Range 8 Low" default = rgb(50/255,0/255,56/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Soleil 8 ;-------------------------------------------------------------------- heading caption = " Soleil 8 Settings" visible = (@customize && @colorPreset == "Soleil 8") endheading color param soleil8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,35/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min1 caption = "Color Range 1 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max2 caption = "Color Range 2 High" default = rgb(255/255,209/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min2 caption = "Color Range 2 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max3 caption = "Color Range 3 High" default = rgb(231/255,237/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min3 caption = "Color Range 3 Low" default = rgb(54/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max4 caption = "Color Range 4 High" default = rgb(255/255,141/255,49/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min4 caption = "Color Range 4 Low" default = rgb(92/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,156/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min5 caption = "Color Range 5 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max6 caption = "Color Range 6 High" default = rgb(255/255,158/255,17/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min6 caption = "Color Range 6 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,217/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min7 caption = "Color Range 7 Low" default = rgb(76/255,41/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max8 caption = "Color Range 8 High" default = rgb(255/255,184/255,53/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min8 caption = "Color Range 8 Low" default = rgb(76/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Chill 8 ;-------------------------------------------------------------------- heading caption = " Chill 8 Settings" visible = (@customize && @colorPreset == "Chill 8") endheading color param chillMax1 caption = "Color Range 1 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin1 caption = "Color Range 1 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax2 caption = "Color Range 2 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax3 caption = "Color Range 3 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin3 caption = "Color Range 3 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax4 caption = "Color Range 4 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax5 caption = "Color Range 5 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin5 caption = "Color Range 5 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax6 caption = "Color Range 6 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax7 caption = "Color Range 7 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin7 caption = "Color Range 7 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax8 caption = "Color Range 8 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cloud Nine 8 ;-------------------------------------------------------------------- heading caption = " Cloud Nine 8 Settings" visible = (@customize && @colorPreset == "Cloud Nine 8") endheading color param cloudNineMax1 caption = "Color Range 1 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin1 caption = "Color Range 1 Low" default = rgb(143/255,60/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax2 caption = "Color Range 2 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin2 caption = "Color Range 2 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax3 caption = "Color Range 3 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin3 caption = "Color Range 3 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax4 caption = "Color Range 4 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin4 caption = "Color Range 4 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax5 caption = "Color Range 5 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin5 caption = "Color Range 5 Low" default = rgb(140/255,63/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax6 caption = "Color Range 6 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin6 caption = "Color Range 6 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax7 caption = "Color Range 7 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin7 caption = "Color Range 7 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax8 caption = "Color Range 8 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin8 caption = "Color Range 8 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for La Terra 8 ;-------------------------------------------------------------------- heading caption = " La Terra 8 Settings" visible = (@customize && @colorPreset == "La Terra 8") endheading color param laTerraMax1 caption = "Color Range 1 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin1 caption = "Color Range 1 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax2 caption = "Color Range 2 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin2 caption = "Color Range 2 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax3 caption = "Color Range 3 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin3 caption = "Color Range 3 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax4 caption = "Color Range 4 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin4 caption = "Color Range 4 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax5 caption = "Color Range 5 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin5 caption = "Color Range 5 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax6 caption = "Color Range 6 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin6 caption = "Color Range 6 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax7 caption = "Color Range 7 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin7 caption = "Color Range 7 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax8 caption = "Color Range 8 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin8 caption = "Color Range 8 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Santa Fe 8 ;-------------------------------------------------------------------- heading caption = " Santa Fe 8 Settings" visible = (@customize && @colorPreset == "Santa Fe 8") endheading color param santaFe8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min1 caption = "Color Range 1 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max2 caption = "Color Range 2 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max3 caption = "Color Range 3 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min3 caption = "Color Range 3 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max4 caption = "Color Range 4 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min4 caption = "Color Range 4 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min5 caption = "Color Range 5 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max6 caption = "Color Range 6 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max7 caption = "Color Range 7 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min7 caption = "Color Range 7 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min8 caption = "Color Range 8 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Spring 8 ;-------------------------------------------------------------------- heading caption = " Spring 8 Settings" visible = (@customize && @colorPreset == "Spring 8") endheading color param spring8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min1 caption = "Color Range 1 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max2 caption = "Color Range 2 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max3 caption = "Color Range 3 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min3 caption = "Color Range 3 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max4 caption = "Color Range 4 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min5 caption = "Color Range 5 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max6 caption = "Color Range 6 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min6 caption = "Color Range 6 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max7 caption = "Color Range 7 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min7 caption = "Color Range 7 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max8 caption = "Color Range 8 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min8 caption = "Color Range 8 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Summer 8 ;-------------------------------------------------------------------- heading caption = " Summer 8 Settings" visible = (@customize && @colorPreset == "Summer 8") endheading color param summer8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min1 caption = "Color Range 1 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max2 caption = "Color Range 2 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min3 caption = "Color Range 3 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max4 caption = "Color Range 4 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min5 caption = "Color Range 5 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max6 caption = "Color Range 6 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min6 caption = "Color Range 6 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min7 caption = "Color Range 7 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max8 caption = "Color Range 8 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fall 8 ;-------------------------------------------------------------------- heading caption = " Fall 8 Settings" visible = (@customize && @colorPreset == "Fall 8") endheading color param fall8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min1 caption = "Color Range 1 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max2 caption = "Color Range 2 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min2 caption = "Color Range 2 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max3 caption = "Color Range 3 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min3 caption = "Color Range 3 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max4 caption = "Color Range 4 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min4 caption = "Color Range 4 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min5 caption = "Color Range 5 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max6 caption = "Color Range 6 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min6 caption = "Color Range 6 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max7 caption = "Color Range 7 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min7 caption = "Color Range 7 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max8 caption = "Color Range 8 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min8 caption = "Color Range 8 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Winter 8 ;-------------------------------------------------------------------- heading caption = " Winter 8 Settings" visible = (@customize && @colorPreset == "Winter 8") endheading color param winter8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min1 caption = "Color Range 1 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max2 caption = "Color Range 2 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min2 caption = "Color Range 2 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max3 caption = "Color Range 3 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min3 caption = "Color Range 3 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max4 caption = "Color Range 4 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min4 caption = "Color Range 4 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min5 caption = "Color Range 5 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max6 caption = "Color Range 6 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min6 caption = "Color Range 6 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max7 caption = "Color Range 7 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min7 caption = "Color Range 7 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max8 caption = "Color Range 8 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min8 caption = "Color Range 8 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Mojave 8 ;-------------------------------------------------------------------- heading caption = " Mojave 8 Settings" visible = (@customize && @colorPreset == "Mojave 8") endheading color param mojave8Max1 caption = "Color Range 1 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min1 caption = "Color Range 1 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max2 caption = "Color Range 2 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min2 caption = "Color Range 2 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max3 caption = "Color Range 3 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min3 caption = "Color Range 3 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max4 caption = "Color Range 4 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min4 caption = "Color Range 4 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max5 caption = "Color Range 5 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min5 caption = "Color Range 5 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max6 caption = "Color Range 6 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min6 caption = "Color Range 6 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max7 caption = "Color Range 7 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min7 caption = "Color Range 7 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max8 caption = "Color Range 8 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min8 caption = "Color Range 8 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green 8 Settings" visible = (@customize && @colorPreset == "Gold/Green 8") endheading color param goldGreen8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max5 caption = "Color Range 5 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min5 caption = "Color Range 5 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max7 caption = "Color Range 7 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min7 caption = "Color Range 7 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Green Alt 8") endheading color param goldGreenAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max4 caption = "Color Range 4 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver 8") endheading color param goldSilver8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min5 caption = "Color Range 5 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min7 caption = "Color Range 7 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endheading color param goldSilverAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min2 caption = "Color Range 2 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min4 caption = "Color Range 4 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 8") endheading color param purpleYellow8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max2 caption = "Color Range 2 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min2 caption = "Color Range 2 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max4 caption = "Color Range 4 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min5 caption = "Color Range 5 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min7 caption = "Color Range 7 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow Alt 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow Alt 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endheading color param purpleYellowAlt8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min4 caption = "Color Range 4 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max5 caption = "Color Range 5 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min5 caption = "Color Range 5 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max7 caption = "Color Range 7 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min7 caption = "Color Range 7 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue 8") endheading color param silverBlue8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min4 caption = "Color Range 4 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max5 caption = "Color Range 5 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min5 caption = "Color Range 5 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max7 caption = "Color Range 7 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue Alt 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue Alt 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endheading color param silverBlueAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max4 caption = "Color Range 4 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min5 caption = "Color Range 5 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min7 caption = "Color Range 7 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fourth of July 3 ;-------------------------------------------------------------------- heading caption = " Fourth of July 3 Settings" visible = (@customize && @colorPreset == "Fourth of July 3") endheading color param fourthOfJuly3Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min1 caption = "Color Range 1 Low" default = rgb(128/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min3 caption = "Color Range 3 Low" default = rgb(128/255,128/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/Silver 2 ;-------------------------------------------------------------------- heading caption = " Blue/Silver 2 Settings" visible = (@customize && @colorPreset == "Blue/Silver 2") endheading color param blueSilver2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/White 2 ;-------------------------------------------------------------------- heading caption = " Blue/White 2 Settings" visible = (@customize && @colorPreset == "Blue/White 2") endheading color param blueWhite2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min2 caption = "Color Range 2 Low" default = rgb(124/255,124/255,124/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Magenta 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Magenta 2 Settings" visible = (@customize && @colorPreset == "Cyan/Magenta 2") endheading color param cyanMagenta2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Max2 caption = "Color Range 2 High" default = rgb(255/255,128/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Yellow 2 Settings" visible = (@customize && @colorPreset == "Cyan/Yellow 2") endheading color param cyanYellow2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 2 ;-------------------------------------------------------------------- heading caption = " Gold/Green 2 Settings" visible = (@customize && @colorPreset == "Gold/Green 2") endheading color param goldGreen2Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 2 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 2") endheading color param purpleYellow2Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Red/Tan 2 ;-------------------------------------------------------------------- heading caption = " Red/Tan 2 Settings" visible = (@customize && @colorPreset == "Red/Tan 2") endheading color param redTan2Max1 caption = "Color Range 1 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min1 caption = "Color Range 1 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Max2 caption = "Color Range 2 High" default = rgb(255/255,208/255,152/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min2 caption = "Color Range 2 Low" default = rgb(128/255,108/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam param av caption = "average circles" default = false endparam heading caption = "Function Parameters" endheading param function caption = "Function" default = 0 enum = "Astrodal Ellipsoid" "Banchoff Klein Bottle" "Bent Horns" \ "Bohemian Dome" "Bow Tie" "Boy Surface" "Catalan's Surface" \ "Corkscrew" "Cresent" "Cross Cap" "Dini's Surface" "Enneper's Surface" \ "Fano Planes" "Figure 8 Torus" "Fish Surface" "Hennenberg's Surface" \ "Hyperbolic Helicoid" "Klein Bottle" "Kuen's Surface" "Lemniscape" \ "Limpet Torus" "Lissajous Knots" "Maeder's Owl" "Mandala" "Mobius Band" \ "Pisot Triaxial" "Saddle Torus" "Seashell" "Sine Surface" \ "Slippers Surface" "Spherical Harmonics" "Stiletto Surface" \ "SuperShape" "Swallowtail" "Toroidal Spiral" "Tractrix" "Trefoil Knot" \ "Triangular Trefoil" "Triaxial Hexatorus" "Triaxial Teardrop" \ "Triaxial Tritorus" "Twisted Fano" "Twisted Heart" "Twisted Pipe" \ "Twisted Triaxial" "Verrill Surface" "Whitney Umbrella" "Wiwianka" endparam float param m0radius caption = "Sphere radius" default = 0.1 visible = @function == "Mandala" endparam float param m0fscale caption = "Function scale" default = 0.1 visible = @function == "Mandala" endparam float param m0xmax caption = "Max X" default = 16.0 visible = @function == "Mandala" endparam float param m0xmin caption = "Min X" default = -8.0 visible = @function == "Mandala" endparam float param m0ymax caption = "Max Y" default = 12.56 visible = @function == "Mandala" endparam float param m0ymin caption = "Min Y" default = 0.0 visible = @function == "Mandala" endparam float param m0xstep caption = "X increment" default = 0.04 visible = @function == "Mandala" endparam float param m0ystep caption = "Y increment" default = 0.03 visible = @function == "Mandala" endparam float param m1radius caption = "Sphere radius" default = 0.01 visible = @function == "Wiwianka" endparam float param m1fscale caption = "Function scale" default = 1.5 visible = @function == "Wiwianka" endparam float param m1xmax caption = "Max X" default = 1.0 visible = @function == "Wiwianka" endparam float param m1xmin caption = "Min X" default = 0.0 visible = @function == "Wiwianka" endparam float param m1ymax caption = "Max Y" default = 2.0 visible = @function == "Wiwianka" endparam float param m1ymin caption = "Min Y" default = 0.0 visible = @function == "Wiwianka" endparam float param m1xstep caption = "X increment" default = 0.003 visible = @function == "Wiwianka" endparam float param m1ystep caption = "Y increment" default = 0.05 visible = @function == "Wiwianka" endparam float param m2radius caption = "Sphere radius" default = 0.015 visible = @function == "Banchoff Klein Bottle" endparam float param m2fscale caption = "Function scale" default = 0.75 visible = @function == "Banchoff Klein Bottle" endparam float param m2xmax caption = "Max X" default = 9.56 visible = @function == "Banchoff Klein Bottle" endparam float param m2xmin caption = "Min X" default = 0.0 visible = @function == "Banchoff Klein Bottle" endparam float param m2ymax caption = "Max Y" default = 6.28 visible = @function == "Banchoff Klein Bottle" endparam float param m2ymin caption = "Min Y" default = 0.0 visible = @function == "Banchoff Klein Bottle" endparam float param m2xstep caption = "X increment" default = 0.1 visible = @function == "Banchoff Klein Bottle" endparam float param m2ystep caption = "Y increment" default = 0.02 visible = @function == "Banchoff Klein Bottle" endparam float param m3radius caption = "Sphere radius" default = 0.005 visible = @function == "Seashell" endparam float param m3fscale caption = "Function scale" default = 3.0 visible = @function == "Seashell" endparam float param m3xmax caption = "Max X" default = 6.28 visible = @function == "Seashell" endparam float param m3xmin caption = "Min X" default = 0.0 visible = @function == "Seashell" endparam float param m3ymax caption = "Max Y" default = 6.28 visible = @function == "Seashell" endparam float param m3ymin caption = "Min Y" default = 0.0 visible = @function == "Seashell" endparam float param m3xstep caption = "X increment" default = 0.1 visible = @function == "Seashell" endparam float param m3ystep caption = "Y increment" default = 0.01 visible = @function == "Seashell" endparam float param seaa caption = "param a" default = 0.2 visible = @function == "Seashell" endparam float param seab caption = "param b" default = 1.0 visible = @function == "Seashell" endparam float param seac caption = "param c" default = 0.1 visible = @function == "Seashell" endparam float param sean caption = "param n" default = 2.0 visible = @function == "Seashell" endparam float param m4radius caption = "Sphere radius" default = 0.01 visible = @function == "Mobius Band" endparam float param m4fscale caption = "Function scale" default = 1.5 visible = @function == "Mobius Band" endparam float param m4xmax caption = "Max X" default = 6.28 visible = @function == "Mobius Band" endparam float param m4xmin caption = "Min X" default = -0.05 visible = @function == "Mobius Band" endparam float param m4ymax caption = "Max Y" default = 0.3 visible = @function == "Mobius Band" endparam float param m4ymin caption = "Min Y" default = -0.3 visible = @function == "Mobius Band" endparam float param m4xstep caption = "X increment" default = 0.01 visible = @function == "Mobius Band" endparam float param m4ystep caption = "Y increment" default = 0.01 visible = @function == "Mobius Band" endparam float param m5radius caption = "Sphere radius" default = 0.01 visible = @function == "Astrodal Ellipsoid" endparam float param m5fscale caption = "Function scale" default = 1.8 visible = @function == "Astrodal Ellipsoid" endparam float param m5xmax caption = "Max X" default = 3.14 visible = @function == "Astrodal Ellipsoid" endparam float param m5xmin caption = "Min X" default = -3.14 visible = @function == "Astrodal Ellipsoid" endparam float param m5ymax caption = "Max Y" default = 3.14 visible = @function == "Astrodal Ellipsoid" endparam float param m5ymin caption = "Min Y" default = -3.14 visible = @function == "Astrodal Ellipsoid" endparam float param m5xstep caption = "X increment" default = 0.02 visible = @function == "Astrodal Ellipsoid" endparam float param m5ystep caption = "Y increment" default = 0.1 visible = @function == "Astrodal Ellipsoid" endparam float param aa caption = "param a" default = 1.0 visible = @function == "Astrodal Ellipsoid" endparam float param ab caption = "param b" default = 1.0 visible = @function == "Astrodal Ellipsoid" endparam float param ac caption = "param c" default = 1.0 visible = @function == "Astrodal Ellipsoid" endparam float param m6radius caption = "Sphere radius" default = 0.015 visible = @function == "Bohemian Dome" endparam float param m6fscale caption = "Function scale" default = 1.0 visible = @function == "Bohemian Dome" endparam float param m6xmax caption = "Max X" default = 6.28 visible = @function == "Bohemian Dome" endparam float param m6xmin caption = "Min X" default = 0.0 visible = @function == "Bohemian Dome" endparam float param m6ymax caption = "Max Y" default = 6.28 visible = @function == "Bohemian Dome" endparam float param m6ymin caption = "Min Y" default = 0.0 visible = @function == "Bohemian Dome" endparam float param m6xstep caption = "X increment" default = 0.02 visible = @function == "Bohemian Dome" endparam float param m6ystep caption = "Y increment" default = 0.07 visible = @function == "Bohemian Dome" endparam float param ba caption = "param a" default = 0.5 visible = @function == "Bohemian Dome" endparam float param bb caption = "param b" default = 1.5 visible = @function == "Bohemian Dome" endparam float param bc caption = "param c" default = 1.0 visible = @function == "Bohemian Dome" endparam float param m7radius caption = "Sphere radius" default = 0.01 visible = @function == "Boy Surface" endparam float param m7fscale caption = "Function scale" default = 1.0 visible = @function == "Boy Surface" endparam float param m7xmax caption = "Max X" default = 6.28 visible = @function == "Boy Surface" endparam float param m7xmin caption = "Min X" default = 0.0 visible = @function == "Boy Surface" endparam float param m7ymax caption = "Max Y" default = 6.28 visible = @function == "Boy Surface" endparam float param m7ymin caption = "Min Y" default = 0.0 visible = @function == "Boy Surface" endparam float param m7xstep caption = "X increment" default = 0.01 visible = @function == "Boy Surface" endparam float param m7ystep caption = "Y increment" default = 0.02 visible = @function == "Boy Surface" endparam float param m8radius caption = "Sphere radius" default = 0.015 visible = @function == "Dini's Surface" endparam float param m8fscale caption = "Function scale" default = 1.0 visible = @function == "Dini's Surface" endparam float param m8xmax caption = "Max X" default = 12.56 visible = @function == "Dini's Surface" endparam float param m8xmin caption = "Min X" default = 0.0 visible = @function == "Dini's Surface" endparam float param m8ymax caption = "Max Y" default = 2.0 visible = @function == "Dini's Surface" endparam float param m8ymin caption = "Min Y" default = 0.001 visible = @function == "Dini's Surface" endparam float param m8xstep caption = "X increment" default = 0.1 visible = @function == "Dini's Surface" endparam float param m8ystep caption = "Y increment" default = 0.01 visible = @function == "Dini's Surface" endparam float param da caption = "param a" default = 1.0 visible = @function == "Dini's Surface" endparam float param db caption = "param b" default = 0.2 visible = @function == "Dini's Surface" endparam float param m9radius caption = "Sphere radius" default = 0.07 visible = @function == "Enneper's Surface" endparam float param m9fscale caption = "Function scale" default = 0.25 visible = @function == "Enneper's Surface" endparam float param m9xmax caption = "Max X" default = 2.0 visible = @function == "Enneper's Surface" endparam float param m9xmin caption = "Min X" default = -2.0 visible = @function == "Enneper's Surface" endparam float param m9ymax caption = "Max Y" default = 2.0 visible = @function == "Enneper's Surface" endparam float param m9ymin caption = "Min Y" default = -2.0 visible = @function == "Enneper's Surface" endparam float param m9xstep caption = "X increment" default = 0.03 visible = @function == "Enneper's Surface" endparam float param m9ystep caption = "Y increment" default = 0.01 visible = @function == "Enneper's Surface" endparam float param m10radius caption = "Sphere radius" default = 0.015 visible = @function == "Kuen's Surface" endparam float param m10fscale caption = "Function scale" default = 1.0 visible = @function == "Kuen's Surface" endparam float param m10xmax caption = "Max X" default = 4.0 visible = @function == "Kuen's Surface" endparam float param m10xmin caption = "Min X" default = -4.0 visible = @function == "Kuen's Surface" endparam float param m10ymax caption = "Max Y" default = 3.09 visible = @function == "Kuen's Surface" endparam float param m10ymin caption = "Min Y" default = 0.05 visible = @function == "Kuen's Surface" endparam float param m10xstep caption = "X increment" default = 0.05 visible = @function == "Kuen's Surface" endparam float param m10ystep caption = "Y increment" default = 0.002 visible = @function == "Kuen's Surface" endparam float param m11radius caption = "Sphere radius" default = 0.05 visible = @function == "Swallowtail" endparam float param m11fscale caption = "Function scale" default = 0.4 visible = @function == "Swallowtail" endparam float param m11xmax caption = "Max X" default = 2.0 visible = @function == "Swallowtail" endparam float param m11xmin caption = "Min X" default = -2.0 visible = @function == "Swallowtail" endparam float param m11ymax caption = "Max Y" default = 0.8 visible = @function == "Swallowtail" endparam float param m11ymin caption = "Min Y" default = -0.8 visible = @function == "Swallowtail" endparam float param m11xstep caption = "X increment" default = 0.04 visible = @function == "Swallowtail" endparam float param m11ystep caption = "Y increment" default = 0.02 visible = @function == "Swallowtail" endparam float param m12radius caption = "Sphere radius" default = 0.1 visible = @function == "Catalan's Surface" endparam float param m12fscale caption = "Function scale" default = 0.1 visible = @function == "Catalan's Surface" endparam float param m12xmax caption = "Max X" default = 6.28 visible = @function == "Catalan's Surface" endparam float param m12xmin caption = "Min X" default = -6.28 visible = @function == "Catalan's Surface" endparam float param m12ymax caption = "Max Y" default = 3.14 visible = @function == "Catalan's Surface" endparam float param m12ymin caption = "Min Y" default = -3.14 visible = @function == "Catalan's Surface" endparam float param m12xstep caption = "X increment" default = 0.01 visible = @function == "Catalan's Surface" endparam float param m12ystep caption = "Y increment" default = 0.05 visible = @function == "Catalan's Surface" endparam float param m13radius caption = "Sphere radius" default = 0.05 visible = @function == "Hennenberg's Surface" endparam float param m13fscale caption = "Function scale" default = 0.2 visible = @function == "Hennenberg's Surface" endparam float param m13xmax caption = "Max X" default = 1.0 visible = @function == "Hennenberg's Surface" endparam float param m13xmin caption = "Min X" default = -1.0 visible = @function == "Hennenberg's Surface" endparam float param m13ymax caption = "Max Y" default = 3.0 visible = @function == "Hennenberg's Surface" endparam float param m13ymin caption = "Min Y" default = -3.0 visible = @function == "Hennenberg's Surface" endparam float param m13xstep caption = "X increment" default = 0.01 visible = @function == "Hennenberg's Surface" endparam float param m13ystep caption = "Y increment" default = 0.005 visible = @function == "Hennenberg's Surface" endparam float param m14radius caption = "Sphere radius" default = 0.02 visible = @function == "Corkscrew" endparam float param m14fscale caption = "Function scale" default = 1.0 visible = @function == "Corkscrew" endparam float param m14xmax caption = "Max X" default = 3.14 visible = @function == "Corkscrew" endparam float param m14xmin caption = "Min X" default = -3.14 visible = @function == "Corkscrew" endparam float param m14ymax caption = "Max Y" default = 3.14 visible = @function == "Corkscrew" endparam float param m14ymin caption = "Min Y" default = -3.14 visible = @function == "Corkscrew" endparam float param m14xstep caption = "X increment" default = 0.1 visible = @function == "Corkscrew" endparam float param m14ystep caption = "Y increment" default = 0.01 visible = @function == "Corkscrew" endparam float param ta caption = "param a" default = 1.0 visible = @function == "Corkscrew" endparam float param tb caption = "param b" default = 0.5 visible = @function == "Corkscrew" endparam float param m15radius caption = "Sphere radius" default = 0.015 visible = @function == "Hyperbolic Helicoid" endparam float param m15fscale caption = "Function scale" default = 1.7 visible = @function == "Hyperbolic Helicoid" endparam float param m15xmax caption = "Max X" default = 6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15xmin caption = "Min X" default = -6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15ymax caption = "Max Y" default = 6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15ymin caption = "Min Y" default = -6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15xstep caption = "X increment" default = 0.005 visible = @function == "Hyperbolic Helicoid" endparam float param m15ystep caption = "Y increment" default = 0.2 visible = @function == "Hyperbolic Helicoid" endparam float param tau caption = "torsion" default = 6.0 visible = @function == "Hyperbolic Helicoid" endparam float param m16radius caption = "Sphere radius" default = 0.015 visible = @function == "Sine Surface" endparam float param m16fscale caption = "Function scale" default = 1 visible = @function == "Sine Surface" endparam float param m16xmax caption = "Max X" default = 3.14 visible = @function == "Sine Surface" endparam float param m16xmin caption = "Min X" default = -3.14 visible = @function == "Sine Surface" endparam float param m16ymax caption = "Max Y" default = 3.14 visible = @function == "Sine Surface" endparam float param m16ymin caption = "Min Y" default = -3.14 visible = @function == "Sine Surface" endparam float param m16xstep caption = "X increment" default = 0.05 visible = @function == "Sine Surface" endparam float param m16ystep caption = "Y increment" default = 0.01 visible = @function == "Sine Surface" endparam float param sa caption = "parameter a" default = 1.0 visible = @function == "Sine Surface" endparam float param m17radius caption = "Sphere radius" default = 0.05 visible = @function == "Trefoil Knot" endparam float param m17fscale caption = "Function scale" default = 0.5 visible = @function == "Trefoil Knot" endparam float param m17xmax caption = "Max X" default = 6.28 visible = @function == "Trefoil Knot" endparam float param m17xmin caption = "Min X" default = 0 visible = @function == "Trefoil Knot" endparam float param m17ymax caption = "Max Y" default = 0.01 visible = false endparam float param m17ymin caption = "Min Y" default = 0 visible = false endparam float param m17xstep caption = "X increment" default = 0.005 visible = @function == "Trefoil Knot" endparam float param m17ystep caption = "Y increment" default = 0.01 visible = false endparam float param m18radius caption = "Sphere radius" default = 0.02 visible = @function == "Lissajous Knots" endparam float param m18fscale caption = "Function scale" default = 1 visible = @function == "Lissajous Knots" endparam float param m18xmax caption = "Max X" default = 6.28 visible = @function == "Lissajous Knots" endparam float param m18xmin caption = "Min X" default = 0 visible = @function == "Lissajous Knots" endparam float param m18ymax caption = "Max Y" default = 0.01 visible = false endparam float param m18ymin caption = "Min Y" default = 0 visible = false endparam float param m18xstep caption = "X increment" default = 0.005 visible = @function == "Lissajous Knots" endparam float param m18ystep caption = "Y increment" default = 0.01 visible = @function == 99 endparam int param na caption = "Integer a" default = 2 visible = @function == "Lissajous Knots" endparam int param nb caption = "Integer b" default = 3 visible = @function == "Lissajous Knots" endparam int param nc caption = "Integer c" default = 5 visible = @function == "Lissajous Knots" endparam float param la caption = "param a" default = 0.5 visible = @function == "Lissajous Knots" endparam float param lb caption = "param b" default = 0.5 visible = @function == "Lissajous Knots" endparam float param lc caption = "param c" default = -0.5 visible = @function == "Lissajous Knots" endparam float param m19radius caption = "Sphere radius" default = 0.03 visible = @function == "Toroidal Spiral" endparam float param m19fscale caption = "Function scale" default = 0.6 visible = @function == "Toroidal Spiral" endparam float param m19xmax caption = "Max X" default = 6.3 visible = @function == "Toroidal Spiral" endparam float param m19xmin caption = "Min X" default = 0 visible = @function == "Toroidal Spiral" endparam float param m19ymax caption = "Max Y" default = 0.01 visible = false endparam float param m19ymin caption = "Min Y" default = 0 visible = false endparam float param m19xstep caption = "X increment" default = 0.005 visible = @function == "Toroidal Spiral" endparam float param m19ystep caption = "Y increment" default = 0.01 visible = false endparam int param nts caption = "Integer a" default = 5 visible = @function == "Toroidal Spiral" endparam float param tsa caption = "param a" default = 2 visible = @function == "Toroidal Spiral" endparam int param numcoil caption = "# of coils" default = 3 visible = @function == "Toroidal Spiral" endparam float param m20radius caption = "Sphere radius" default = 0.2 visible = @function == "Klein Bottle" endparam float param m20fscale caption = "Function scale" default = 0.1 visible = @function == "Klein Bottle" endparam float param m20xmax caption = "Max X" default = 6.28 visible = @function == "Klein Bottle" endparam float param m20xmin caption = "Min X" default = 0 visible = @function == "Klein Bottle" endparam float param m20ymax caption = "Max Y" default = 6.28 visible = @function == "Klein Bottle" endparam float param m20ymin caption = "Min Y" default = 0 visible = @function == "Klein Bottle" endparam float param m20xstep caption = "X increment" default = 0.05 visible = @function == "Klein Bottle" endparam float param m20ystep caption = "Y increment" default = 0.05 visible = @function == "Klein Bottle" endparam float param m21radius caption = "Sphere radius" default = 0.03 visible = @function == "Triangular Trefoil" endparam float param m21fscale caption = "Function scale" default = 0.4 visible = @function == "Triangular Trefoil" endparam float param m21xmax caption = "Max X" default = 3.14 visible = @function == "Triangular Trefoil" endparam float param m21xmin caption = "Min X" default = -3.14 visible = @function == "Triangular Trefoil" endparam float param m21ymax caption = "Max Y" default = 3.14 visible = @function == "Triangular Trefoil" endparam float param m21ymin caption = "Min Y" default = -3.14 visible = @function == "Triangular Trefoil" endparam float param m21xstep caption = "X increment" default = 0.005 visible = @function == "Triangular Trefoil" endparam float param m21ystep caption = "Y increment" default = 0.1 visible = @function == "Triangular Trefoil" endparam float param m22radius caption = "Sphere radius" default = 0.05 visible = @function == "Bent Horns" endparam float param m22fscale caption = "Function scale" default = 0.25 visible = @function == "Bent Horns" endparam float param m22xmax caption = "Max X" default = 3.14 visible = @function == "Bent Horns" endparam float param m22xmin caption = "Min X" default = -3.14 visible = @function == "Bent Horns" endparam float param m22ymax caption = "Max Y" default = 6.28 visible = @function == "Bent Horns" endparam float param m22ymin caption = "Min Y" default = -6.28 visible = @function == "Bent Horns" endparam float param m22xstep caption = "X increment" default = 0.02 visible = @function == "Bent Horns" endparam float param m22ystep caption = "Y increment" default = 0.1 visible = @function == "Bent Horns" endparam float param m23radius caption = "Sphere radius" default = 0.02 visible = @function == "Pisot Triaxial" endparam float param m23fscale caption = "Function scale" default = 0.75 visible = @function == "Pisot Triaxial" endparam float param m23xmax caption = "Max X" default = 6.28 visible = @function == "Pisot Triaxial" endparam float param m23xmin caption = "Min X" default = 0 visible = @function == "Pisot Triaxial" endparam float param m23ymax caption = "Max Y" default = 6.28 visible = @function == "Pisot Triaxial" endparam float param m23ymin caption = "Min Y" default = 0 visible = @function == "Pisot Triaxial" endparam float param m23xstep caption = "X increment" default = 0.01 visible = @function == "Pisot Triaxial" endparam float param m23ystep caption = "Y increment" default = 0.1 visible = @function == "Pisot Triaxial" endparam float param m24radius caption = "Sphere radius" default = 0.02 visible = @function == "Spherical Harmonics" endparam float param m24fscale caption = "Function scale" default = 0.75 visible = @function == "Spherical Harmonics" endparam float param m24xmax caption = "Max X" default = 3.14 visible = @function == "Spherical Harmonics" endparam float param m24xmin caption = "Min X" default = 0 visible = @function == "Spherical Harmonics" endparam float param m24ymax caption = "Max Y" default = 6.28 visible = @function == "Spherical Harmonics" endparam float param m24ymin caption = "Min Y" default = 0 visible = @function == "Spherical Harmonics" endparam float param m24xstep caption = "X increment" default = 0.005 visible = @function == "Spherical Harmonics" endparam float param m24ystep caption = "Y increment" default = 0.02 visible = @function == "Spherical Harmonics" endparam int param m1 caption = "Harmonic #1" default = 2 visible = @function == "Spherical Harmonics" endparam int param m2 caption = "Harmonic #2" default = 3 visible = @function == "Spherical Harmonics" endparam int param m3 caption = "Harmonic #3" default =3 visible = @function == "Spherical Harmonics" endparam int param m4 caption = "Harmonic #4" default = 4 visible = @function == "Spherical Harmonics" endparam int param m5 caption = "Harmonic #5" default = 4 visible = @function == "Spherical Harmonics" endparam int param m6 caption = "Harmonic #6" default = 2 visible = @function == "Spherical Harmonics" endparam int param m7 caption = "Harmonic #7" default = 5 visible = @function == "Spherical Harmonics" endparam int param m8 caption = "Harmonic #8" default = 3 visible = @function == "Spherical Harmonics" endparam float param m25radius caption = "Sphere radius" default = 0.005 visible = @function == "Slippers Surface" endparam float param m25fscale caption = "Function scale" default = 3 visible = @function == "Slippers Surface" endparam float param m25xmax caption = "Max X" default = 6.28 visible = @function == "Slippers Surface" endparam float param m25xmin caption = "Min X" default = 0 visible = @function == "Slippers Surface" endparam float param m25ymax caption = "Max Y" default = 6.28 visible = @function == "Slippers Surface" endparam float param m25ymin caption = "Min Y" default = 0 visible = @function == "Slippers Surface" endparam float param m25xstep caption = "X increment" default = 0.02 visible = @function == "Slippers Surface" endparam float param m25ystep caption = "Y increment" default = 0.02 visible = @function == "Slippers Surface" endparam float param m26radius caption = "Sphere radius" default = 0.01 visible = @function == "SuperShape" endparam float param m26fscale caption = "Function scale" default = 1.5 visible = @function == "SuperShape" endparam float param m26xmax caption = "Max X" default = 3.14 visible = @function == "SuperShape" endparam float param m26xmin caption = "Min X" default = -3.14 visible = @function == "SuperShape" endparam float param m26ymax caption = "Max Y" default = 6.28 visible = @function == "SuperShape" endparam float param m26ymin caption = "Min Y" default = -6.28 visible = @function == "SuperShape" endparam float param m26xstep caption = "X increment" default = 0.02 visible = @function == "SuperShape" endparam float param m26ystep caption = "Y increment" default = 0.02 visible = @function == "SuperShape" endparam float param ssa caption = "parameter a" default = 1.0 visible = @function == "SuperShape" endparam float param ssb caption = "parameter b" default = 1.0 visible = @function == "SuperShape" endparam float param ssm caption = "parameter m" default = 7.0 visible = @function == "SuperShape" endparam float param ssn1 caption = "parameter n1" default = 0.2 visible = @function == "SuperShape" endparam float param ssn2 caption = "parameter n2" default = 1.7 visible = @function == "SuperShape" endparam float param ssn3 caption = "parameter n3" default = 1.7 visible = @function == "SuperShape" endparam float param m27radius caption = "Sphere radius" default = 0.007 visible = @function == "Fano Planes" endparam float param m27fscale caption = "Function scale" default = 1.5 visible = @function == "Fano Planes" endparam float param m27xmax caption = "Max X" default = 1.0 visible = @function == "Fano Planes" endparam float param m27xmin caption = "Min X" default = 0.0 visible = @function == "Fano Planes" endparam float param m27ymax caption = "Max Y" default = 2.0 visible = @function == "Fano Planes" endparam float param m27ymin caption = "Min Y" default = 0.0 visible = @function == "Fano Planes" endparam float param m27xstep caption = "X increment" default = 0.002 visible = @function == "Fano Planes" endparam float param m27ystep caption = "Y increment" default = 0.01 visible = @function == "Fano Planes" endparam float param m28radius caption = "Sphere radius" default = 0.007 visible = @function == "Twisted Fano" endparam float param m28fscale caption = "Function scale" default = 1.5 visible = @function == "Twisted Fano" endparam float param m28xmax caption = "Max X" default = 1.0 visible = @function == "Twisted Fano" endparam float param m28xmin caption = "Min X" default = 0.0 visible = @function == "Twisted Fano" endparam float param m28ymax caption = "Max Y" default = 2.0 visible = @function == "Twisted Fano" endparam float param m28ymin caption = "Min Y" default = 0.0 visible = @function == "Twisted Fano" endparam float param m28xstep caption = "X increment" default = 0.002 visible = @function == "Twisted Fano" endparam float param m28ystep caption = "Y increment" default = 0.01 visible = @function == "Twisted Fano" endparam float param m29radius caption = "Sphere radius" default = 0.02 visible = @function == "Cresent" endparam float param m29fscale caption = "Function scale" default = 0.6 visible = @function == "Cresent" endparam float param m29xmax caption = "Max X" default = 1.0 visible = @function == "Cresent" endparam float param m29xmin caption = "Min X" default = 0.0 visible = @function == "Cresent" endparam float param m29ymax caption = "Max Y" default = 1.0 visible = @function == "Cresent" endparam float param m29ymin caption = "Min Y" default = 0.0 visible = @function == "Cresent" endparam float param m29xstep caption = "X increment" default = 0.005 visible = @function == "Cresent" endparam float param m29ystep caption = "Y increment" default = 0.005 visible = @function == "Cresent" endparam float param m30radius caption = "Sphere radius" default = 0.007 visible = @function == "Twisted Triaxial" endparam float param m30fscale caption = "Function scale" default = 1.8 visible = @function == "Twisted Triaxial" endparam float param m30xmax caption = "Max X" default = 3.14 visible = @function == "Twisted Triaxial" endparam float param m30xmin caption = "Min X" default = -3.14 visible = @function == "Twisted Triaxial" endparam float param m30ymax caption = "Max Y" default = 3.14 visible = @function == "Twisted Triaxial" endparam float param m30ymin caption = "Min Y" default = -3.14 visible = @function == "Twisted Triaxial" endparam float param m30xstep caption = "X increment" default = 0.05 visible = @function == "Twisted Triaxial" endparam float param m30ystep caption = "Y increment" default = 0.01 visible = @function == "Twisted Triaxial" endparam float param m31radius caption = "Sphere radius" default = 0.01 visible = @function == "Maeder's Owl" endparam float param m31fscale caption = "Function scale" default = 1.25 visible = @function == "Maeder's Owl" endparam float param m31xmax caption = "Max X" default = 12.56 visible = @function == "Maeder's Owl" endparam float param m31xmin caption = "Min X" default = 0.0 visible = @function == "Maeder's Owl" endparam float param m31ymax caption = "Max Y" default = 1.0 visible = @function == "Maeder's Owl" endparam float param m31ymin caption = "Min Y" default = 0.0 visible = @function == "Maeder's Owl" endparam float param m31xstep caption = "X increment" default = 0.02 visible = @function == "Maeder's Owl" endparam float param m31ystep caption = "Y increment" default = 0.01 visible = @function == "Maeder's Owl" endparam float param m32radius caption = "Sphere radius" default = 0.01 visible = @function == "Stiletto Surface" endparam float param m32fscale caption = "Function scale" default = 1.8 visible = @function == "Stiletto Surface" endparam float param m32xmax caption = "Max X" default = 6.28 visible = @function == "Stiletto Surface" endparam float param m32xmin caption = "Min X" default = 0.0 visible = @function == "Stiletto Surface" endparam float param m32ymax caption = "Max Y" default = 6.28 visible = @function == "Stiletto Surface" endparam float param m32ymin caption = "Min Y" default = 0.0 visible = @function == "Stiletto Surface" endparam float param m32xstep caption = "X increment" default = 0.02 visible = @function == "Stiletto Surface" endparam float param m32ystep caption = "Y increment" default = 0.02 visible = @function == "Stiletto Surface" endparam float param m33radius caption = "Sphere radius" default = 0.03 visible = @function == "Verrill Surface" endparam float param m33fscale caption = "Function scale" default = 0.5 visible = @function == "Verrill Surface" endparam float param m33xmax caption = "Max X" default = 1.0 visible = @function == "Verrill Surface" endparam float param m33xmin caption = "Min X" default = 0.5 visible = @function == "Verrill Surface" endparam float param m33ymax caption = "Max Y" default = 6.28 visible = @function == "Verrill Surface" endparam float param m33ymin caption = "Min Y" default = 0.0 visible = @function == "Verrill Surface" endparam float param m33xstep caption = "X increment" default = 0.005 visible = @function == "Verrill Surface" endparam float param m33ystep caption = "Y increment" default = 0.02 visible = @function == "Verrill Surface" endparam float param m34radius caption = "Sphere radius" default = 0.02 visible = @function == "Twisted Heart" endparam float param m34fscale caption = "Function scale" default = 0.6 visible = @function == "Twisted Heart" endparam float param m34xmax caption = "Max X" default = 3.14 visible = @function == "Twisted Heart" endparam float param m34xmin caption = "Min X" default = 0.0 visible = @function == "Twisted Heart" endparam float param m34ymax caption = "Max Y" default = 3.14 visible = @function == "Twisted Heart" endparam float param m34ymin caption = "Min Y" default = -3.14 visible = @function == "Twisted Heart" endparam float param m34xstep caption = "X increment" default = 0.05 visible = @function == "Twisted Heart" endparam float param m34ystep caption = "Y increment" default = 0.01 visible = @function == "Twisted Heart" endparam float param m35radius caption = "Sphere radius" default = 0.015 visible = @function == "Figure 8 Torus" endparam float param m35fscale caption = "Function scale" default = 0.8 visible = @function == "Figure 8 Torus" endparam float param m35xmax caption = "Max X" default = 3.14 visible = @function == "Figure 8 Torus" endparam float param m35xmin caption = "Min X" default = -3.14 visible = @function == "Figure 8 Torus" endparam float param m35ymax caption = "Max Y" default = 3.14 visible = @function == "Figure 8 Torus" endparam float param m35ymin caption = "Min Y" default = -3.14 visible = @function == "Figure 8 Torus" endparam float param m35xstep caption = "X increment" default = 0.05 visible = @function == "Figure 8 Torus" endparam float param m35ystep caption = "Y increment" default = 0.02 visible = @function == "Figure 8 Torus" endparam float param ftc caption = "parameter c" default = 1.0 visible = @function == "Figure 8 Torus" endparam float param m36radius caption = "Sphere radius" default = 0.005 visible = @function == "Triaxial Teardrop" endparam float param m36fscale caption = "Function scale" default = 3.0 visible = @function == "Triaxial Teardrop" endparam float param m36xmax caption = "Max X" default = 3.14 visible = @function == "Triaxial Teardrop" endparam float param m36xmin caption = "Min X" default = 0.0 visible = @function == "Triaxial Teardrop" endparam float param m36ymax caption = "Max Y" default = 6.28 visible = @function == "Triaxial Teardrop" endparam float param m36ymin caption = "Min Y" default = 0.0 visible = @function == "Triaxial Teardrop" endparam float param m36xstep caption = "X increment" default = 0.005 visible = @function == "Triaxial Teardrop" endparam float param m36ystep caption = "Y increment" default = 0.02 visible = @function == "Triaxial Teardrop" endparam float param m37radius caption = "Sphere radius" default = 0.007 visible = @function == "Lemniscape" endparam float param m37fscale caption = "Function scale" default = 2.0 visible = @function == "Lemniscape" endparam float param m37xmax caption = "Max X" default = 3.14 visible = @function == "Lemniscape" endparam float param m37xmin caption = "Min X" default = 0.0 visible = @function == "Lemniscape" endparam float param m37ymax caption = "Max Y" default = 3.14 visible = @function == "Lemniscape" endparam float param m37ymin caption = "Min Y" default = 0.0 visible = @function == "Lemniscape" endparam float param m37xstep caption = "X increment" default = 0.005 visible = @function == "Lemniscape" endparam float param m37ystep caption = "Y increment" default = 0.03 visible = @function == "Lemniscape" endparam float param m38radius caption = "Sphere radius" default = 0.01 visible = @function == "Tractrix" endparam float param m38fscale caption = "Function scale" default = 1.0 visible = @function == "Tractrix" endparam float param m38xmax caption = "Max X" default = 3.14 visible = @function == "Tractrix" endparam float param m38xmin caption = "Min X" default = -3.14 visible = @function == "Tractrix" endparam float param m38ymax caption = "Max Y" default = 3.14 visible = @function == "Tractrix" endparam float param m38ymin caption = "Min Y" default = -3.14 visible = @function == "Tractrix" endparam float param m38xstep caption = "X increment" default = 0.03 visible = @function == "Tractrix" endparam float param m38ystep caption = "Y increment" default = 0.03 visible = @function == "Tractrix" endparam float param m39radius caption = "Sphere radius" default = 0.015 visible = @function == "Triaxial Tritorus" endparam float param m39fscale caption = "Function scale" default = 0.9 visible = @function == "Triaxial Tritorus" endparam float param m39xmax caption = "Max X" default = 3.14 visible = @function == "Triaxial Tritorus" endparam float param m39xmin caption = "Min X" default = -3.14 visible = @function == "Triaxial Tritorus" endparam float param m39ymax caption = "Max Y" default = 3.14 visible = @function == "Triaxial Tritorus" endparam float param m39ymin caption = "Min Y" default = -3.14 visible = @function == "Triaxial Tritorus" endparam float param m39xstep caption = "X increment" default = 0.02 visible = @function == "Triaxial Tritorus" endparam float param m39ystep caption = "Y increment" default = 0.02 visible = @function == "Triaxial Tritorus" endparam float param m40radius caption = "Sphere radius" default = 0.03 visible = @function == "Saddle Torus" endparam float param m40fscale caption = "Function scale" default = 0.5 visible = @function == "Saddle Torus" endparam float param m40xmax caption = "Max X" default = 6.28 visible = @function == "Saddle Torus" endparam float param m40xmin caption = "Min X" default = 0.0 visible = @function == "Saddle Torus" endparam float param m40ymax caption = "Max Y" default = 6.28 visible = @function == "Saddle Torus" endparam float param m40ymin caption = "Min Y" default = 0.0 visible = @function == "Saddle Torus" endparam float param m40xstep caption = "X increment" default = 0.1 visible = @function == "Saddle Torus" endparam float param m40ystep caption = "Y increment" default = 0.01 visible = @function == "Saddle Torus" endparam float param m41radius caption = "Sphere radius" default = 0.02 visible = @function == "Limpet Torus" endparam float param m41fscale caption = "Function scale" default = 0.75 visible = @function == "Limpet Torus" endparam float param m41xmax caption = "Max X" default = 6.28 visible = @function == "Limpet Torus" endparam float param m41xmin caption = "Min X" default = 0.0 visible = @function == "Limpet Torus" endparam float param m41ymax caption = "Max Y" default = 6.28 visible = @function == "Limpet Torus" endparam float param m41ymin caption = "Min Y" default = 0.0 visible = @function == "Limpet Torus" endparam float param m41xstep caption = "X increment" default = 0.03 visible = @function == "Limpet Torus" endparam float param m41ystep caption = "Y increment" default = 0.01 visible = @function == "Limpet Torus" endparam float param m42radius caption = "Sphere radius" default = 0.015 visible = @function == "Bow Tie" endparam float param m42fscale caption = "Function scale" default = 0.75 visible = @function == "Bow Tie" endparam float param m42xmax caption = "Max X" default = 6.28 visible = @function == "Bow Tie" endparam float param m42xmin caption = "Min X" default = 0.0 visible = @function == "Bow Tie" endparam float param m42ymax caption = "Max Y" default = 6.28 visible = @function == "Bow Tie" endparam float param m42ymin caption = "Min Y" default = 0.0 visible = @function == "Bow Tie" endparam float param m42xstep caption = "X increment" default = 0.02 visible = @function == "Bow Tie" endparam float param m42ystep caption = "Y increment" default = 0.05 visible = @function == "Bow Tie" endparam float param m43radius caption = "Sphere radius" default = 0.01 visible = @function == "Cross Cap" endparam float param m43fscale caption = "Function scale" default = 1.5 visible = @function == "Cross Cap" endparam float param m43xmax caption = "Max X" default = 6.28 visible = @function == "Cross Cap" endparam float param m43xmin caption = "Min X" default = 0.0 visible = @function == "Cross Cap" endparam float param m43ymax caption = "Max Y" default = 1.571 visible = @function == "Cross Cap" endparam float param m43ymin caption = "Min Y" default = 0.0 visible = @function == "Cross Cap" endparam float param m43xstep caption = "X increment" default = 0.01 visible = @function == "Cross Cap" endparam float param m43ystep caption = "Y increment" default = 0.03 visible = @function == "Cross Cap" endparam float param m44radius caption = "Sphere radius" default = 0.005 visible = @function == "Whitney Umbrella" endparam float param m44fscale caption = "Function scale" default = 2.5 visible = @function == "Whitney Umbrella" endparam float param m44xmax caption = "Max X" default = 3.14 visible = @function == "Whitney Umbrella" endparam float param m44xmin caption = "Min X" default = 0.0 visible = @function == "Whitney Umbrella" endparam float param m44ymax caption = "Max Y" default = 6.28 visible = @function == "Whitney Umbrella" endparam float param m44ymin caption = "Min Y" default = 0.0 visible = @function == "Whitney Umbrella" endparam float param m44xstep caption = "X increment" default = 0.02 visible = @function == "Whitney Umbrella" endparam float param m44ystep caption = "Y increment" default = 0.01 visible = @function == "Whitney Umbrella" endparam float param m45radius caption = "Sphere radius" default = 0.02 visible = @function == "Triaxial Hexatorus" endparam float param m45fscale caption = "Function scale" default = 0.75 visible = @function == "Triaxial Hexatorus" endparam float param m45xmax caption = "Max X" default = 6.28 visible = @function == "Triaxial Hexatorus" endparam float param m45xmin caption = "Min X" default = 0.0 visible = @function == "Triaxial Hexatorus" endparam float param m45ymax caption = "Max Y" default = 6.28 visible = @function == "Triaxial Hexatorus" endparam float param m45ymin caption = "Min Y" default = 0.0 visible = @function == "Triaxial Hexatorus" endparam float param m45xstep caption = "X increment" default = 0.02 visible = @function == "Triaxial Hexatorus" endparam float param m45ystep caption = "Y increment" default = 0.05 visible = @function == "Triaxial Hexatorus" endparam float param m46radius caption = "Sphere radius" default = 0.005 visible = @function == "Fish Surface" endparam float param m46fscale caption = "Function scale" default = 2.5 visible = @function == "Fish Surface" endparam float param m46xmax caption = "Max X" default = 3.14 visible = @function == "Fish Surface" endparam float param m46xmin caption = "Min X" default = 0.0 visible = @function == "Fish Surface" endparam float param m46ymax caption = "Max Y" default = 6.28 visible = @function == "Fish Surface" endparam float param m46ymin caption = "Min Y" default = 0.0 visible = @function == "Fish Surface" endparam float param m46xstep caption = "X increment" default = 0.03 visible = @function == "Fish Surface" endparam float param m46ystep caption = "Y increment" default = 0.01 visible = @function == "Fish Surface" endparam float param m47radius caption = "Sphere radius" default = 0.02 visible = @function == "Twisted Pipe" endparam float param m47fscale caption = "Function scale" default = 0.6 visible = @function == "Twisted Pipe" endparam float param m47xmax caption = "Max X" default = 6.28 visible = @function == "Twisted Pipe" endparam float param m47xmin caption = "Min X" default = 0.0 visible = @function == "Twisted Pipe" endparam float param m47ymax caption = "Max Y" default = 6.28 visible = @function == "Twisted Pipe" endparam float param m47ymin caption = "Min Y" default = 0.0 visible = @function == "Twisted Pipe" endparam float param m47xstep caption = "X increment" default = 0.02 visible = @function == "Twisted Pipe" endparam float param m47ystep caption = "Y increment" default = 0.02 visible = @function == "Twisted Pipe" endparam heading caption = "Lighting parameters" endheading param xfer caption = "Height Transfer" default = 0 enum = "linear" "log" "sqrt" "cuberoot" "exp" "sqr" "cube" "sin" "cos" "tan" hint = "This function will be applied to the height value \ before a slope is calculated." endparam param zscale caption = "Height Pre-Scale" default = 0.4 hint = "Specifies the ratio between height and distance. Higher \ values will exaggerate differences between high and low. \ In general, you will want to use smaller numbers here." endparam param zscale2 caption = "Height Post-Scale" default = 0.025 hint = "Specifies the ratio between height and distance; like \ Height Pre-Scale, except that this value is applied after \ the transfer function." endparam param @angle caption = "Light Rotation" default = 135 hint = "Gives the rotation of the light source, in degrees." endparam param @elevation caption = "Light Elevation" default = 60 hint = "Gives the elevation of the light source, in degrees." endparam float param @ambient caption = "Ambient Light" default = -1 min = -1.0 max = 1.0 hint = "Specifies the level of ambient light. Use -1.0 to \ color all surfaces." endparam heading caption = "Rotations & Translations" endheading $ifdef VER40 heading text = "Z Rotation is on the \ Location Tab." endheading $else heading caption = "Z Rotation is on the" endheading heading caption = "Location Tab." endheading $endif param xangle caption = "X Axis Rotation" default = -20.0 hint = "This is the fixed (horizontal) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param zangle caption = "Y Axis Rotation" default = 30.0 hint = "This is the fixed (vertical) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param rotoffx caption = "Rotation Center X Offset" default = 0.0 endparam param rotoffy caption = "Rotation Center Y Offset" default = 0.0 endparam param rotoffz caption = "Rotation Center Z Offset" default = 0.0 endparam param transx caption = "X Final Translation" default = 0.0 endparam param transy caption = "Y Final Translation" default = 0.0 endparam param transz caption = "Z Final Translation" default = 0.0 endparam heading caption = "Perspective" endheading param useproj caption = "Use Perspective" default = false endparam param cprojx caption = "X Center of Projection" default = 0.0 visible=@useproj==true endparam param cprojy caption = "Y Center of Projection" default = 0.0 visible=@useproj==true endparam param cprojz caption = "Z Center of Projection" default = -10 visible=@useproj==true endparam heading caption = "fBm Textures" endheading param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Texture Weight" default = 0.0 endparam param fbmf caption = "fBm Final Weight" default = 0.5 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam heading caption = "Global fBm" endheading $ifdef VER40 heading text = "Applies 3D texture to spheres and directly \ modifies their shape." endheading $else heading caption = "Applies 3D texture to spheres and directly" endheading heading caption = "modifies their shape." endheading $endif param gnoffset caption = "global fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam float param gfbmf caption = "global fBm weight" default = 0.1 endparam float param gnscale caption = "global fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." endparam float param gfreq caption = "global fBm freq" default = 1.0 endparam int param giter caption = "global fBm iter" default = 7 min = 1 endparam heading caption = "Lattice Textures" endheading param texture caption = "Texture" default = 0 enum = "Lattice" "Quilt" "Circles & Squares" "Triangles" \ "X's & O's" "Dimples" "Arrows" "Basketweave" "Balls" \ "Net" endparam param gridx caption = "Texture X distance" default = 1.0 endparam param gridy caption = "Texture Y distance" default = 1.0 endparam param dx caption = "Texture X randomizer" default = 0.0 endparam param dy caption = "Texture Y randomizer" default = 0.0 endparam param theight caption = "Texture Height" default = 1.0 endparam param weight caption = "Texture Weight" default = 0.0 min = 0.0 max = 1.0 endparam param blend caption = "Texture Blend" default = 0.0 endparam param toffset caption = "Texturizer Offset" default = 1.0 endparam param smooth caption = "Texture Smoothing" default = false hint = "Apply 3D smoothing to the texture" endparam heading caption = "General Textures" endheading param toffsetII caption = "Texture II offset" default = (-1,-1) hint = "Changes the texture pattern." endparam param tweight caption = "Texture II weight" default = 0.0 endparam param ts caption = "Texture II scale" default = 3.0 endparam param tc caption = "Texture II modifier" default = 5.0 endparam param tpwr caption = "Texture II power" default = 1.0 endparam param pmix caption = "Pixel Strange Mix" default = 0.0 endparam func fn3 caption = "Texture II Adjustment" default = ident() endfunc func fn1 caption = "Texture II Function 1" default = sqr() endfunc func fn2 caption = "Texture II Function 2" default = acos() endfunc } ApollonianGasketRayTrace {; Ron Barnett June 28, 2005 ; Direct coloring methods added by Ken Childress. ; Modifications for highlighting added by Ron Barnett ; Uses Susan Chambless' mapping code ; Inversion circle perturbations added August 9, 2005 ; Improved method for duplicate removal and addition of ; smallest circle threshold October 9, 2005 ; Transparency/Refraction, relections from spheres ; to the floor, more fractal types added November 15,2005 $define debug global: int MaxLevel = @level int level = MaxLevel complex cs[100000] float rad[100000] float csz[100000] float clr[100000] color colorswitch = rgb(0,0,0) float checkscale = @checkscale/#width*30 float frac[#width, #height] int l = 0 int ir = 0 int si = 0 int sj = 0 bool continue = true complex rra = 0 float rrb = 0 float rrc = 0 float rrd = 0 float ddx = 0 float ddy = 0 float ddz = 0 float ddr = 0 float ang = 2*#pi/3 complex ipi = flip(#pi); float ar = 0 float br = 0 complex a = 0 complex b = 0 float kr = @kr float krf = @krf float krt = @krt float krft = @krft if @tparent kr = kr*(1-@tparentval) krf = krf*(1-@tparentval) krt = krt*@tparentval krft = krft*@tparentval endif float agree = 100 float thresh = @scircle/agree bool done = false float c = 0 float temp = 0 int ii = 0 int i = 0 int j = 0 int k = 0 float mxi = 0 float fi = 0 float fj = 0 float expiter = 0 complex fij = 0 complex oldf = 0 complex fz = 0 complex fzp = 0 complex fzp2 = 0 float pwrtest = 10^(100/cabs(@p1)) bool bTest = false float isnear = cabs(@p2)^cabs(@p1)/@bailout complex fcenter = 0 float asp = #height/#width complex phx = 0 complex phy = 0 complex gx = 0 complex gx1 = 0 complex gy = 0 float ddx = 0 float ddy = 0 float ddr = 0 float closest = 1e318 complex ez = 0 float trap = 0.0 float trapd = 0.0 float trapd2 = 0.0 complex trapz2 = (0,0) complex trapr = (0,1)^(@trot/90.0) complex trapcenter2 = @tcenter complex r0 = (0,0) complex rh = (0,1)^(@torder/8) complex zh = (0,0) float theta = 0 float rr = 0 float af1 = 0 float af2 = 0 complex astroid = 0 int trap_iter = 0 if @flrtype == "Fractal" if @fctltype == "Mandelbrot" fcenter = @fmcenter while i < #width fi = (i*4/(#width)-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/(#height) - 2)/@fmag + imag(fcenter) fij = 0 while k < @miter fij = fij^@mp1+fi+flip(fj) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Julia" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter fij = fij^@mp1+@seed if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Newton" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^@p1 - @p2 fzp = @p1*fij^(@p1-1) fzp2 = @p1*(@p1-1)*fij^(@p1-2) if @cmethod == "Newton" fij = fij - fz/fzp elseif @cmethod == "Householder" fij = fij - fz/fzp*(1 + fz*fzp2/(2*fzp^2)) elseif @cmethod == "Halley" fij = fij - 2*fz*fzp/(2*fzp^2 - fz*fzp2) elseif @cmethod == "Schroder" fij = fij - fz*fzp/(fzp^2 - fz*fzp2) endif btest = (cabs(oldf-fij) < isnear) if !(!btest && (cabs(fij) < pwrtest)) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(!btest && (cabs(fij) < pwrtest)) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Cayley Julia" closest = 1e318 fcenter = @fccenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^3 - @cseed*fij - @cseed + 1 fzp = 3*fij^2 - @cseed fij = fij - fz/fzp btest = (cabs(oldf-fij) < isnear) if !(|fij - oldf| >= 1/@bailout) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(|fij - oldf| >= 1/@bailout) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Phoenix" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter phx = fij*fij + real(@phseed) + imag(@phseed)*phy phy = fij fij = phx if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 phx = 0 phy = 0 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Gopalsamy" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter gx = real(fij) gy = imag(fij) gx1 = -2*gx*gy + @gseed gy = gy*gy - gx*gx fij = gx1 + flip(gy) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Barnsley" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter IF real(fij) >= 0 fij = (fij - 1) * @bseed ELSE fij = (fij + 1) * @bseed ENDIF if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile endif endif i = 1 j = 0 k = 0 int ib = 0 int start = 0 int finish = 0 int lev = 2 int pert = @pert pert = 11 - pert float scle2 = 0 float scle = 0 if (@ptype == "None") scle = 2 + sqrt(3) scle2 = 1 elseif (@ptype == "Outer Circles") scle = (2 + sqrt(3))*cos(#pi/(pert+6)) scle2 = (scle-sqrt(3)-1.5)/0.5 else ; distance to origin for base spheres scle = 2 + sqrt(3) if pert == 10 scle2 = 1.0041268407 elseif pert == 9 scle2 = 1.0049465720 elseif pert == 8 scle2 = 1.0060422243 elseif pert == 7 scle2 = 1.0075560883 elseif pert == 6 scle2 = 1.0097381547 elseif pert == 5 scle2 = 1.0130643119 elseif pert == 4 scle2 = 1.0185254 elseif pert == 3 scle2 = 1.0286754 elseif pert == 2 scle2 = 1.0515254 elseif pert == 1 scle2 = 1.1277437913 endif endif int iii = 9 float fx = 0.0 float ffx = 0.0 float xx = 0.0 float yy = 0 float fy = 0.0 float ffy = 0.0 float ffz = 0 float zz = 0 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float tzmax = tymax float zmin = xmin ; floor parameters float fa = @fa float fb = @fb float fc = @fc float fd = @fd*#width*asp ; Color range variables and initialization. color colorMap [500, 2] int ranges = 8 int colorsUsed = 0 int offset = 0 if (@colorPreset == "Gradient") colorsUsed = @ncolor elseif (@colorPreset == "Generate") colorsUsed = @numRanges elseif (@colorPreset == "Custom") colorsUsed = @colorRanges else colorsUsed = @ncolor endif if (@colorPreset == "Gradient") ; Use the gradient for the color ranges. ranges = @totalColors offset = 0 elseif (@colorPreset == "Custom") ; User specified custom range. ; Initial values by Toby Marshall. colorMap [0,0] = @colorMax1, colorMap [0,1] = @colorMin1 colorMap [1,0] = @colorMax2, colorMap [1,1] = @colorMin2 colorMap [2,0] = @colorMax3, colorMap [2,1] = @colorMin3 colorMap [3,0] = @colorMax4, colorMap [3,1] = @colorMin4 colorMap [4,0] = @colorMax5, colorMap [4,1] = @colorMin5 colorMap [5,0] = @colorMax6, colorMap [5,1] = @colorMin6 colorMap [6,0] = @colorMax7, colorMap [6,1] = @colorMin7 colorMap [7,0] = @colorMax8, colorMap [7,1] = @colorMin8 colorMap [8,0] = @customMax9, colorMap [8,1] = @customMin9 colorMap [9,0] = @customMax10, colorMap [9,1] = @customMin10 colorMap [10,0] = @customMax11, colorMap [10,1] = @customMin11 colorMap [11,0] = @customMax12, colorMap [11,1] = @customMin12 colorMap [12,0] = @customMax13, colorMap [12,1] = @customMin13 colorMap [13,0] = @customMax14, colorMap [13,1] = @customMin14 colorMap [14,0] = @customMax15, colorMap [14,1] = @customMin15 colorMap [15,0] = @customMax16, colorMap [15,1] = @customMin16 colorMap [16,0] = @customMax17, colorMap [16,1] = @customMin17 colorMap [17,0] = @customMax18, colorMap [17,1] = @customMin18 colorMap [18,0] = @customMax19, colorMap [18,1] = @customMin19 colorMap [19,0] = @customMax20, colorMap [19,1] = @customMin20 colorMap [20,0] = @customMax21, colorMap [20,1] = @customMin21 colorMap [21,0] = @customMax22, colorMap [21,1] = @customMin22 colorMap [22,0] = @customMax23, colorMap [22,1] = @customMin23 colorMap [23,0] = @customMax24, colorMap [23,1] = @customMin24 ranges = @colorRanges offset = @colorOffset elseif (@colorPreset == "Generate") ; Compute the color ranges using the gradient. ranges = 0 offset = @colorOffset while ranges < @numRanges color gradientColor = gradient(ranges/@numRanges) colorMap [ranges,0] = hsl(hue(gradientColor), sat(gradientColor), @luminanceUpper) colorMap [ranges,1] = hsl(hue(gradientColor), sat(gradientColor), @luminanceLower) ranges = ranges + 1 endwhile elseif (@colorPreset == "Default") ; colorMap [0,0] = @defaultMax1, colorMap [0,1] = @defaultMin1 colorMap [1,0] = @defaultMax2, colorMap [1,1] = @defaultMin2 colorMap [2,0] = @defaultMax3, colorMap [2,1] = @defaultMin3 colorMap [3,0] = @defaultMax4, colorMap [3,1] = @defaultMin4 colorMap [4,0] = @defaultMax5, colorMap [4,1] = @defaultMin5 colorMap [5,0] = @defaultMax6, colorMap [5,1] = @defaultMin6 colorMap [6,0] = @defaultMax7, colorMap [6,1] = @defaultMin7 colorMap [7,0] = @defaultMax8, colorMap [7,1] = @defaultMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Default 12") ; Created by Toby Marshall. colorMap [0,0] = @default12Max1, colorMap [0,1] = @default12Min1 colorMap [1,0] = @default12Max2, colorMap [1,1] = @default12Min2 colorMap [2,0] = @default12Max3, colorMap [2,1] = @default12Min3 colorMap [3,0] = @default12Max4, colorMap [3,1] = @default12Min4 colorMap [4,0] = @default12Max5, colorMap [4,1] = @default12Min5 colorMap [5,0] = @default12Max6, colorMap [5,1] = @default12Min6 colorMap [6,0] = @default12Max7, colorMap [6,1] = @default12Min7 colorMap [7,0] = @default12Max8, colorMap [7,1] = @default12Min8 colorMap [8,0] = @default12Max9, colorMap [8,1] = @default12Min9 colorMap [9,0] = @default12Max10, colorMap [9,1] = @default12Min10 colorMap [10,0] = @default12Max11, colorMap [10,1] = @default12Min11 colorMap [11,0] = @default12Max12, colorMap [11,1] = @default12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Default 16") ; Created by Toby Marshall. colorMap [0,0] = @default16Max1, colorMap [0,1] = @default16Min1 colorMap [1,0] = @default16Max2, colorMap [1,1] = @default16Min2 colorMap [2,0] = @default16Max3, colorMap [2,1] = @default16Min3 colorMap [3,0] = @default16Max4, colorMap [3,1] = @default16Min4 colorMap [4,0] = @default16Max5, colorMap [4,1] = @default16Min5 colorMap [5,0] = @default16Max6, colorMap [5,1] = @default16Min6 colorMap [6,0] = @default16Max7, colorMap [6,1] = @default16Min7 colorMap [7,0] = @default16Max8, colorMap [7,1] = @default16Min8 colorMap [8,0] = @default16Max9, colorMap [8,1] = @default16Min9 colorMap [9,0] = @default16Max10, colorMap [9,1] = @default16Min10 colorMap [10,0] = @default16Max11, colorMap [10,1] = @default16Min11 colorMap [11,0] = @default16Max12, colorMap [11,1] = @default16Min12 colorMap [12,0] = @default16Max13, colorMap [12,1] = @default16Min13 colorMap [13,0] = @default16Max14, colorMap [13,1] = @default16Min14 colorMap [14,0] = @default16Max15, colorMap [14,1] = @default16Min15 colorMap [15,0] = @default16Max16, colorMap [15,1] = @default16Min16 ranges = 16 offset = @colorOffset elseif (@colorPreset == "Default 24") ; Created by Toby Marshall. colorMap [0,0] = @default24Max1, colorMap [0,1] = @default24Min1 colorMap [1,0] = @default24Max2, colorMap [1,1] = @default24Min2 colorMap [2,0] = @default24Max3, colorMap [2,1] = @default24Min3 colorMap [3,0] = @default24Max4, colorMap [3,1] = @default24Min4 colorMap [4,0] = @default24Max5, colorMap [4,1] = @default24Min5 colorMap [5,0] = @default24Max6, colorMap [5,1] = @default24Min6 colorMap [6,0] = @default24Max7, colorMap [6,1] = @default24Min7 colorMap [7,0] = @default24Max8, colorMap [7,1] = @default24Min8 colorMap [8,0] = @default24Max9, colorMap [8,1] = @default24Min9 colorMap [9,0] = @default24Max10, colorMap [9,1] = @default24Min10 colorMap [10,0] = @default24Max11, colorMap [10,1] = @default24Min11 colorMap [11,0] = @default24Max12, colorMap [11,1] = @default24Min12 colorMap [12,0] = @default24Max13, colorMap [12,1] = @default24Min13 colorMap [13,0] = @default24Max14, colorMap [13,1] = @default24Min14 colorMap [14,0] = @default24Max15, colorMap [14,1] = @default24Min15 colorMap [15,0] = @default24Max16, colorMap [15,1] = @default24Min16 colorMap [16,0] = @default24Max17, colorMap [16,1] = @default24Min17 colorMap [17,0] = @default24Max18, colorMap [17,1] = @default24Min18 colorMap [18,0] = @default24Max19, colorMap [18,1] = @default24Min19 colorMap [19,0] = @default24Max20, colorMap [19,1] = @default24Min20 colorMap [20,0] = @default24Max21, colorMap [20,1] = @default24Min21 colorMap [21,0] = @default24Max22, colorMap [21,1] = @default24Min22 colorMap [22,0] = @default24Max23, colorMap [22,1] = @default24Min23 colorMap [23,0] = @default24Max24, colorMap [23,1] = @default24Min24 ranges = 24 offset = @colorOffset elseif (@colorPreset == "Color Wheel 12") ; Created by Toby Marshall. colorMap [0,0] = @colorWheel12Max1, colorMap [0,1] = @colorWheel12Min1 colorMap [1,0] = @colorWheel12Max2, colorMap [1,1] = @colorWheel12Min2 colorMap [2,0] = @colorWheel12Max3, colorMap [2,1] = @colorWheel12Min3 colorMap [3,0] = @colorWheel12Max4, colorMap [3,1] = @colorWheel12Min4 colorMap [4,0] = @colorWheel12Max5, colorMap [4,1] = @colorWheel12Min5 colorMap [5,0] = @colorWheel12Max6, colorMap [5,1] = @colorWheel12Min6 colorMap [6,0] = @colorWheel12Max7, colorMap [6,1] = @colorWheel12Min7 colorMap [7,0] = @colorWheel12Max8, colorMap [7,1] = @colorWheel12Min8 colorMap [8,0] = @colorWheel12Max9, colorMap [8,1] = @colorWheel12Min9 colorMap [9,0] = @colorWheel12Max10, colorMap [9,1] = @colorWheel12Min10 colorMap [10,0] = @colorWheel12Max11, colorMap [10,1] = @colorWheel12Min11 colorMap [11,0] = @colorWheel12Max12, colorMap [11,1] = @colorWheel12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Alhambra 8") ; Created by Toby Marshall. colorMap [0,0] = @alhambra8Max1, colorMap [0,1] = @alhambra8Min1 colorMap [1,0] = @alhambra8Max2, colorMap [1,1] = @alhambra8Min2 colorMap [2,0] = @alhambra8Max3, colorMap [2,1] = @alhambra8Min3 colorMap [3,0] = @alhambra8Max4, colorMap [3,1] = @alhambra8Min4 colorMap [4,0] = @alhambra8Max5, colorMap [4,1] = @alhambra8Min5 colorMap [5,0] = @alhambra8Max6, colorMap [5,1] = @alhambra8Min6 colorMap [6,0] = @alhambra8Max7, colorMap [6,1] = @alhambra8Min7 colorMap [7,0] = @alhambra8Max8, colorMap [7,1] = @alhambra8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Belvedere 8") ; Created by Toby Marshall. colorMap [0,0] = @belvedere8Max1, colorMap [0,1] = @belvedere8Min1 colorMap [1,0] = @belvedere8Max2, colorMap [1,1] = @belvedere8Min2 colorMap [2,0] = @belvedere8Max3, colorMap [2,1] = @belvedere8Min3 colorMap [3,0] = @belvedere8Max4, colorMap [3,1] = @belvedere8Min4 colorMap [4,0] = @belvedere8Max5, colorMap [4,1] = @belvedere8Min5 colorMap [5,0] = @belvedere8Max6, colorMap [5,1] = @belvedere8Min6 colorMap [6,0] = @belvedere8Max7, colorMap [6,1] = @belvedere8Min7 colorMap [7,0] = @belvedere8Max8, colorMap [7,1] = @belvedere8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Bouquet 8") ; Created by Toby Marshall. colorMap [0,0] = @bouquet8Max1, colorMap [0,1] = @bouquet8Min1 colorMap [1,0] = @bouquet8Max2, colorMap [1,1] = @bouquet8Min2 colorMap [2,0] = @bouquet8Max3, colorMap [2,1] = @bouquet8Min3 colorMap [3,0] = @bouquet8Max4, colorMap [3,1] = @bouquet8Min4 colorMap [4,0] = @bouquet8Max5, colorMap [4,1] = @bouquet8Min5 colorMap [5,0] = @bouquet8Max6, colorMap [5,1] = @bouquet8Min6 colorMap [6,0] = @bouquet8Max7, colorMap [6,1] = @bouquet8Min7 colorMap [7,0] = @bouquet8Max8, colorMap [7,1] = @bouquet8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Color Switch 8") ; Created by Toby Marshall. colorMap [0,0] = @colorSwitch8Max1, colorMap [0,1] = @colorSwitch8Min1 colorMap [1,0] = @colorSwitch8Max2, colorMap [1,1] = @colorSwitch8Min2 colorMap [2,0] = @colorSwitch8Max3, colorMap [2,1] = @colorSwitch8Min3 colorMap [3,0] = @colorSwitch8Max4, colorMap [3,1] = @colorSwitch8Min4 colorMap [4,0] = @colorSwitch8Max5, colorMap [4,1] = @colorSwitch8Min5 colorMap [5,0] = @colorSwitch8Max6, colorMap [5,1] = @colorSwitch8Min6 colorMap [6,0] = @colorSwitch8Max7, colorMap [6,1] = @colorSwitch8Min7 colorMap [7,0] = @colorSwitch8Max8, colorMap [7,1] = @colorSwitch8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Evening Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @eveningSky8Max1, colorMap [0,1] = @eveningSky8Min1 colorMap [1,0] = @eveningSky8Max2, colorMap [1,1] = @eveningSky8Min2 colorMap [2,0] = @eveningSky8Max3, colorMap [2,1] = @eveningSky8Min3 colorMap [3,0] = @eveningSky8Max4, colorMap [3,1] = @eveningSky8Min4 colorMap [4,0] = @eveningSky8Max5, colorMap [4,1] = @eveningSky8Min5 colorMap [5,0] = @eveningSky8Max6, colorMap [5,1] = @eveningSky8Min6 colorMap [6,0] = @eveningSky8Max7, colorMap [6,1] = @eveningSky8Min7 colorMap [7,0] = @eveningSky8Max8, colorMap [7,1] = @eveningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fantasia 8") ; Created by Toby Marshall. colorMap [0,0] = @fantasia8Max1, colorMap [0,1] = @fantasia8Min1 colorMap [1,0] = @fantasia8Max2, colorMap [1,1] = @fantasia8Min2 colorMap [2,0] = @fantasia8Max3, colorMap [2,1] = @fantasia8Min3 colorMap [3,0] = @fantasia8Max4, colorMap [3,1] = @fantasia8Min4 colorMap [4,0] = @fantasia8Max5, colorMap [4,1] = @fantasia8Min5 colorMap [5,0] = @fantasia8Max6, colorMap [5,1] = @fantasia8Min6 colorMap [6,0] = @fantasia8Max7, colorMap [6,1] = @fantasia8Min7 colorMap [7,0] = @fantasia8Max8, colorMap [7,1] = @fantasia8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Flowering Orchard 8") ; Created by Toby Marshall. colorMap [0,0] = @floweringOrchard8Max1, colorMap [0,1] = @floweringOrchard8Min1 colorMap [1,0] = @floweringOrchard8Max2, colorMap [1,1] = @floweringOrchard8Min2 colorMap [2,0] = @floweringOrchard8Max3, colorMap [2,1] = @floweringOrchard8Min3 colorMap [3,0] = @floweringOrchard8Max4, colorMap [3,1] = @floweringOrchard8Min4 colorMap [4,0] = @floweringOrchard8Max5, colorMap [4,1] = @floweringOrchard8Min5 colorMap [5,0] = @floweringOrchard8Max6, colorMap [5,1] = @floweringOrchard8Min6 colorMap [6,0] = @floweringOrchard8Max7, colorMap [6,1] = @floweringOrchard8Min7 colorMap [7,0] = @floweringOrchard8Max8, colorMap [7,1] = @floweringOrchard8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Morning Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @morningSky8Max1, colorMap [0,1] = @morningSky8Min1 colorMap [1,0] = @morningSky8Max2, colorMap [1,1] = @morningSky8Min2 colorMap [2,0] = @morningSky8Max3, colorMap [2,1] = @morningSky8Min3 colorMap [3,0] = @morningSky8Max4, colorMap [3,1] = @morningSky8Min4 colorMap [4,0] = @morningSky8Max5, colorMap [4,1] = @morningSky8Min5 colorMap [5,0] = @morningSky8Max6, colorMap [5,1] = @morningSky8Min6 colorMap [6,0] = @morningSky8Max7, colorMap [6,1] = @morningSky8Min7 colorMap [7,0] = @morningSky8Max8, colorMap [7,1] = @morningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel 8") ; colorMap [0,0] = @pastel8Max1, colorMap [0,1] = @pastel8Min1 colorMap [1,0] = @pastel8Max2, colorMap [1,1] = @pastel8Min2 colorMap [2,0] = @pastel8Max3, colorMap [2,1] = @pastel8Min3 colorMap [3,0] = @pastel8Max4, colorMap [3,1] = @pastel8Min4 colorMap [4,0] = @pastel8Max5, colorMap [4,1] = @pastel8Min5 colorMap [5,0] = @pastel8Max6, colorMap [5,1] = @pastel8Min6 colorMap [6,0] = @pastel8Max7, colorMap [6,1] = @pastel8Min7 colorMap [7,0] = @pastel8Max8, colorMap [7,1] = @pastel8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel Rainbow 8") ; Created by Angela Wilczynski. colorMap [0,0] = @pastelRainbow8Max1, colorMap [0,1] = @pastelRainbow8Min1 colorMap [1,0] = @pastelRainbow8Max2, colorMap [1,1] = @pastelRainbow8Min2 colorMap [2,0] = @pastelRainbow8Max3, colorMap [2,1] = @pastelRainbow8Min3 colorMap [3,0] = @pastelRainbow8Max4, colorMap [3,1] = @pastelRainbow8Min4 colorMap [4,0] = @pastelRainbow8Max5, colorMap [4,1] = @pastelRainbow8Min5 colorMap [5,0] = @pastelRainbow8Max6, colorMap [5,1] = @pastelRainbow8Min6 colorMap [6,0] = @pastelRainbow8Max7, colorMap [6,1] = @pastelRainbow8Min7 colorMap [7,0] = @pastelRainbow8Max8, colorMap [7,1] = @pastelRainbow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Showtime 8") ; Created by Toby Marshall. colorMap [0,0] = @showtime8Max1, colorMap [0,1] = @showtime8Min1 colorMap [1,0] = @showtime8Max2, colorMap [1,1] = @showtime8Min2 colorMap [2,0] = @showtime8Max3, colorMap [2,1] = @showtime8Min3 colorMap [3,0] = @showtime8Max4, colorMap [3,1] = @showtime8Min4 colorMap [4,0] = @showtime8Max5, colorMap [4,1] = @showtime8Min5 colorMap [5,0] = @showtime8Max6, colorMap [5,1] = @showtime8Min6 colorMap [6,0] = @showtime8Max7, colorMap [6,1] = @showtime8Min7 colorMap [7,0] = @showtime8Max8, colorMap [7,1] = @showtime8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Soleil 8") ; Created by Toby Marshall. colorMap [0,0] = @soleil8Max1, colorMap [0,1] = @soleil8Min1 colorMap [1,0] = @soleil8Max2, colorMap [1,1] = @soleil8Min2 colorMap [2,0] = @soleil8Max3, colorMap [2,1] = @soleil8Min3 colorMap [3,0] = @soleil8Max4, colorMap [3,1] = @soleil8Min4 colorMap [4,0] = @soleil8Max5, colorMap [4,1] = @soleil8Min5 colorMap [5,0] = @soleil8Max6, colorMap [5,1] = @soleil8Min6 colorMap [6,0] = @soleil8Max7, colorMap [6,1] = @soleil8Min7 colorMap [7,0] = @soleil8Max8, colorMap [7,1] = @soleil8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Chill 8") ; Created by Toby Marshall. colorMap [0,0] = @chillMax1, colorMap [0,1] = @chillMin1 colorMap [1,0] = @chillMax2, colorMap [1,1] = @chillMin2 colorMap [2,0] = @chillMax3, colorMap [2,1] = @chillMin3 colorMap [3,0] = @chillMax4, colorMap [3,1] = @chillMin4 colorMap [4,0] = @chillMax5, colorMap [4,1] = @chillMin5 colorMap [5,0] = @chillMax6, colorMap [5,1] = @chillMin6 colorMap [6,0] = @chillMax7, colorMap [6,1] = @chillMin7 colorMap [7,0] = @chillMax8, colorMap [7,1] = @chillMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Cloud Nine 8") ; Created by Toby Marshall. colorMap [0,0] = @cloudNineMax1, colorMap [0,1] = @cloudNineMin1 colorMap [1,0] = @cloudNineMax2, colorMap [1,1] = @cloudNineMin2 colorMap [2,0] = @cloudNineMax3, colorMap [2,1] = @cloudNineMin3 colorMap [3,0] = @cloudNineMax4, colorMap [3,1] = @cloudNineMin4 colorMap [4,0] = @cloudNineMax5, colorMap [4,1] = @cloudNineMin5 colorMap [5,0] = @cloudNineMax6, colorMap [5,1] = @cloudNineMin6 colorMap [6,0] = @cloudNineMax7, colorMap [6,1] = @cloudNineMin7 colorMap [7,0] = @cloudNineMax8, colorMap [7,1] = @cloudNineMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "La Terra 8") ; Created by Toby Marshall. colorMap [0,0] = @laTerraMax1, colorMap [0,1] = @laTerraMin1 colorMap [1,0] = @laTerraMax2, colorMap [1,1] = @laTerraMin2 colorMap [2,0] = @laTerraMax3, colorMap [2,1] = @laTerraMin3 colorMap [3,0] = @laTerraMax4, colorMap [3,1] = @laTerraMin4 colorMap [4,0] = @laTerraMax5, colorMap [4,1] = @laTerraMin5 colorMap [5,0] = @laTerraMax6, colorMap [5,1] = @laTerraMin6 colorMap [6,0] = @laTerraMax7, colorMap [6,1] = @laTerraMin7 colorMap [7,0] = @laTerraMax8, colorMap [7,1] = @laTerraMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Santa Fe 8") ; Created by Toby Marshall. colorMap [0,0] = @santaFe8Max1, colorMap [0,1] = @santaFe8Min1 colorMap [1,0] = @santaFe8Max2, colorMap [1,1] = @santaFe8Min2 colorMap [2,0] = @santaFe8Max3, colorMap [2,1] = @santaFe8Min3 colorMap [3,0] = @santaFe8Max4, colorMap [3,1] = @santaFe8Min4 colorMap [4,0] = @santaFe8Max5, colorMap [4,1] = @santaFe8Min5 colorMap [5,0] = @santaFe8Max6, colorMap [5,1] = @santaFe8Min6 colorMap [6,0] = @santaFe8Max7, colorMap [6,1] = @santaFe8Min7 colorMap [7,0] = @santaFe8Max8, colorMap [7,1] = @santaFe8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Spring 8") ; Created by Toby Marshall. colorMap [0,0] = @spring8Max1, colorMap [0,1] = @spring8Min1 colorMap [1,0] = @spring8Max2, colorMap [1,1] = @spring8Min2 colorMap [2,0] = @spring8Max3, colorMap [2,1] = @spring8Min3 colorMap [3,0] = @spring8Max4, colorMap [3,1] = @spring8Min4 colorMap [4,0] = @spring8Max5, colorMap [4,1] = @spring8Min5 colorMap [5,0] = @spring8Max6, colorMap [5,1] = @spring8Min6 colorMap [6,0] = @spring8Max7, colorMap [6,1] = @spring8Min7 colorMap [7,0] = @spring8Max8, colorMap [7,1] = @spring8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Summer 8") ; Created by Toby Marshall. colorMap [0,0] = @summer8Max1, colorMap [0,1] = @summer8Min1 colorMap [1,0] = @summer8Max2, colorMap [1,1] = @summer8Min2 colorMap [2,0] = @summer8Max3, colorMap [2,1] = @summer8Min3 colorMap [3,0] = @summer8Max4, colorMap [3,1] = @summer8Min4 colorMap [4,0] = @summer8Max5, colorMap [4,1] = @summer8Min5 colorMap [5,0] = @summer8Max6, colorMap [5,1] = @summer8Min6 colorMap [6,0] = @summer8Max7, colorMap [6,1] = @summer8Min7 colorMap [7,0] = @summer8Max8, colorMap [7,1] = @summer8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fall 8") ; Created by Toby Marshall. colorMap [0,0] = @fall8Max1, colorMap [0,1] = @fall8Min1 colorMap [1,0] = @fall8Max2, colorMap [1,1] = @fall8Min2 colorMap [2,0] = @fall8Max3, colorMap [2,1] = @fall8Min3 colorMap [3,0] = @fall8Max4, colorMap [3,1] = @fall8Min4 colorMap [4,0] = @fall8Max5, colorMap [4,1] = @fall8Min5 colorMap [5,0] = @fall8Max6, colorMap [5,1] = @fall8Min6 colorMap [6,0] = @fall8Max7, colorMap [6,1] = @fall8Min7 colorMap [7,0] = @fall8Max8, colorMap [7,1] = @fall8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Winter 8") ; Created by Toby Marshall. colorMap [0,0] = @winter8Max1, colorMap [0,1] = @winter8Min1 colorMap [1,0] = @winter8Max2, colorMap [1,1] = @winter8Min2 colorMap [2,0] = @winter8Max3, colorMap [2,1] = @winter8Min3 colorMap [3,0] = @winter8Max4, colorMap [3,1] = @winter8Min4 colorMap [4,0] = @winter8Max5, colorMap [4,1] = @winter8Min5 colorMap [5,0] = @winter8Max6, colorMap [5,1] = @winter8Min6 colorMap [6,0] = @winter8Max7, colorMap [6,1] = @winter8Min7 colorMap [7,0] = @winter8Max8, colorMap [7,1] = @winter8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Mojave 8") ; Created by Toby Marshall. colorMap [0,0] = @mojave8Max1, colorMap [0,1] = @mojave8Min1 colorMap [1,0] = @mojave8Max2, colorMap [1,1] = @mojave8Min2 colorMap [2,0] = @mojave8Max3, colorMap [2,1] = @mojave8Min3 colorMap [3,0] = @mojave8Max4, colorMap [3,1] = @mojave8Min4 colorMap [4,0] = @mojave8Max5, colorMap [4,1] = @mojave8Min5 colorMap [5,0] = @mojave8Max6, colorMap [5,1] = @mojave8Min6 colorMap [6,0] = @mojave8Max7, colorMap [6,1] = @mojave8Min7 colorMap [7,0] = @mojave8Max8, colorMap [7,1] = @mojave8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green 8") ; colorMap [0,0] = @goldGreen8Max1, colorMap [0,1] = @goldGreen8Min1 colorMap [1,0] = @goldGreen8Max2, colorMap [1,1] = @goldGreen8Min2 colorMap [2,0] = @goldGreen8Max3, colorMap [2,1] = @goldGreen8Min3 colorMap [3,0] = @goldGreen8Max4, colorMap [3,1] = @goldGreen8Min4 colorMap [4,0] = @goldGreen8Max5, colorMap [4,1] = @goldGreen8Min5 colorMap [5,0] = @goldGreen8Max6, colorMap [5,1] = @goldGreen8Min6 colorMap [6,0] = @goldGreen8Max7, colorMap [6,1] = @goldGreen8Min7 colorMap [7,0] = @goldGreen8Max8, colorMap [7,1] = @goldGreen8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green Alt 8") ; colorMap [0,0] = @goldGreenAlt8Max1, colorMap [0,1] = @goldGreenAlt8Min1 colorMap [1,0] = @goldGreenAlt8Max2, colorMap [1,1] = @goldGreenAlt8Min2 colorMap [2,0] = @goldGreenAlt8Max3, colorMap [2,1] = @goldGreenAlt8Min3 colorMap [3,0] = @goldGreenAlt8Max4, colorMap [3,1] = @goldGreenAlt8Min4 colorMap [4,0] = @goldGreenAlt8Max5, colorMap [4,1] = @goldGreenAlt8Min5 colorMap [5,0] = @goldGreenAlt8Max6, colorMap [5,1] = @goldGreenAlt8Min6 colorMap [6,0] = @goldGreenAlt8Max7, colorMap [6,1] = @goldGreenAlt8Min7 colorMap [7,0] = @goldGreenAlt8Max8, colorMap [7,1] = @goldGreenAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver 8") ; colorMap [0,0] = @goldSilver8Max1, colorMap [0,1] = @goldSilver8Min1 colorMap [1,0] = @goldSilver8Max2, colorMap [1,1] = @goldSilver8Min2 colorMap [2,0] = @goldSilver8Max3, colorMap [2,1] = @goldSilver8Min3 colorMap [3,0] = @goldSilver8Max4, colorMap [3,1] = @goldSilver8Min4 colorMap [4,0] = @goldSilver8Max5, colorMap [4,1] = @goldSilver8Min5 colorMap [5,0] = @goldSilver8Max6, colorMap [5,1] = @goldSilver8Min6 colorMap [6,0] = @goldSilver8Max7, colorMap [6,1] = @goldSilver8Min7 colorMap [7,0] = @goldSilver8Max8, colorMap [7,1] = @goldSilver8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue 8") ; colorMap [0,0] = @silverBlue8Max1, colorMap [0,1] = @silverBlue8Min1 colorMap [1,0] = @silverBlue8Max2, colorMap [1,1] = @silverBlue8Min2 colorMap [2,0] = @silverBlue8Max3, colorMap [2,1] = @silverBlue8Min3 colorMap [3,0] = @silverBlue8Max4, colorMap [3,1] = @silverBlue8Min4 colorMap [4,0] = @silverBlue8Max5, colorMap [4,1] = @silverBlue8Min5 colorMap [5,0] = @silverBlue8Max6, colorMap [5,1] = @silverBlue8Min6 colorMap [6,0] = @silverBlue8Max7, colorMap [6,1] = @silverBlue8Min7 colorMap [7,0] = @silverBlue8Max8, colorMap [7,1] = @silverBlue8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue Alt 8") ; colorMap [0,0] = @silverBlueAlt8Max1, colorMap [0,1] = @silverBlueAlt8Min1 colorMap [1,0] = @silverBlueAlt8Max2, colorMap [1,1] = @silverBlueAlt8Min2 colorMap [2,0] = @silverBlueAlt8Max3, colorMap [2,1] = @silverBlueAlt8Min3 colorMap [3,0] = @silverBlueAlt8Max4, colorMap [3,1] = @silverBlueAlt8Min4 colorMap [4,0] = @silverBlueAlt8Max5, colorMap [4,1] = @silverBlueAlt8Min5 colorMap [5,0] = @silverBlueAlt8Max6, colorMap [5,1] = @silverBlueAlt8Min6 colorMap [6,0] = @silverBlueAlt8Max7, colorMap [6,1] = @silverBlueAlt8Min7 colorMap [7,0] = @silverBlueAlt8Max8, colorMap [7,1] = @silverBlueAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver Alt 8") ; colorMap [0,0] = @goldSilverAlt8Max1, colorMap [0,1] = @goldSilverAlt8Min1 colorMap [1,0] = @goldSilverAlt8Max2, colorMap [1,1] = @goldSilverAlt8Min2 colorMap [2,0] = @goldSilverAlt8Max3, colorMap [2,1] = @goldSilverAlt8Min3 colorMap [3,0] = @goldSilverAlt8Max4, colorMap [3,1] = @goldSilverAlt8Min4 colorMap [4,0] = @goldSilverAlt8Max5, colorMap [4,1] = @goldSilverAlt8Min5 colorMap [5,0] = @goldSilverAlt8Max6, colorMap [5,1] = @goldSilverAlt8Min6 colorMap [6,0] = @goldSilverAlt8Max7, colorMap [6,1] = @goldSilverAlt8Min7 colorMap [7,0] = @goldSilverAlt8Max8, colorMap [7,1] = @goldSilverAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 8") ; colorMap [0,0] = @purpleYellow8Max1, colorMap [0,1] = @purpleYellow8Min1 colorMap [1,0] = @purpleYellow8Max2, colorMap [1,1] = @purpleYellow8Min2 colorMap [2,0] = @purpleYellow8Max3, colorMap [2,1] = @purpleYellow8Min3 colorMap [3,0] = @purpleYellow8Max4, colorMap [3,1] = @purpleYellow8Min4 colorMap [4,0] = @purpleYellow8Max5, colorMap [4,1] = @purpleYellow8Min5 colorMap [5,0] = @purpleYellow8Max6, colorMap [5,1] = @purpleYellow8Min6 colorMap [6,0] = @purpleYellow8Max7, colorMap [6,1] = @purpleYellow8Min7 colorMap [7,0] = @purpleYellow8Max8, colorMap [7,1] = @purpleYellow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow Alt 8") ; colorMap [0,0] = @purpleYellowAlt8Max1, colorMap [0,1] = @purpleYellowAlt8Min1 colorMap [1,0] = @purpleYellowAlt8Max2, colorMap [1,1] = @purpleYellowAlt8Min2 colorMap [2,0] = @purpleYellowAlt8Max3, colorMap [2,1] = @purpleYellowAlt8Min3 colorMap [3,0] = @purpleYellowAlt8Max4, colorMap [3,1] = @purpleYellowAlt8Min4 colorMap [4,0] = @purpleYellowAlt8Max5, colorMap [4,1] = @purpleYellowAlt8Min5 colorMap [5,0] = @purpleYellowAlt8Max6, colorMap [5,1] = @purpleYellowAlt8Min6 colorMap [6,0] = @purpleYellowAlt8Max7, colorMap [6,1] = @purpleYellowAlt8Min7 colorMap [7,0] = @purpleYellowAlt8Max8, colorMap [7,1] = @purpleYellowAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fourth of July 3") ; colorMap [0,0] = @fourthOfJuly3Max1, colorMap [0,1] = @fourthOfJuly3Min1 colorMap [1,0] = @fourthOfJuly3Max2, colorMap [1,1] = @fourthOfJuly3Min2 colorMap [2,0] = @fourthOfJuly3Max3, colorMap [2,1] = @fourthOfJuly3Min3 ranges = 3 offset = @colorOffset elseif (@colorPreset == "Blue/Silver 2") ; colorMap [0,0] = @blueSilver2Max1, colorMap [0,1] = @blueSilver2Min1 colorMap [1,0] = @blueSilver2Max2, colorMap [1,1] = @blueSilver2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Blue/White 2") ; colorMap [0,0] = @blueWhite2Max1, colorMap [0,1] = @blueWhite2Min1 colorMap [1,0] = @blueWhite2Max2, colorMap [1,1] = @blueWhite2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Magenta 2") ; colorMap [0,0] = @cyanMagenta2Max1, colorMap [0,1] = @cyanMagenta2Min1 colorMap [1,0] = @cyanMagenta2Max2, colorMap [1,1] = @cyanMagenta2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Yellow 2") ; colorMap [0,0] = @cyanYellow2Max1, colorMap [0,1] = @cyanYellow2Min1 colorMap [1,0] = @cyanYellow2Max2, colorMap [1,1] = @cyanYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Gold/Green 2") ; colorMap [0,0] = @goldGreen2Max1, colorMap [0,1] = @goldGreen2Min1 colorMap [1,0] = @goldGreen2Max2, colorMap [1,1] = @goldGreen2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 2") ; colorMap [0,0] = @purpleYellow2Max1, colorMap [0,1] = @purpleYellow2Min1 colorMap [1,0] = @purpleYellow2Max2, colorMap [1,1] = @purpleYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Red/Tan 2") ; colorMap [0,0] = @redTan2Max1, colorMap [0,1] = @redTan2Min1 colorMap [1,0] = @redTan2Max2, colorMap [1,1] = @redTan2Min2 ranges = 2 offset = @colorOffset endif if (@perturbRanges == "8 Range Custom" && ranges == 8) ; If we are using 8 ranges, then take into account ; the rangeOrdering parameter. int range[8] ; Convert range ordering from 12345678 to .12345678 float ordering = @rangeOrder / 100000000 ; Convert .12345678 to 1.2345678 ordering = ordering * 10 ; Get the first digit int range[0] = trunc (ordering) ; Subract the first digit, i.e. 1.2345678 becomes .2345678 ordering = ordering - range[0] ; Get the second digit ordering = ordering * 10 int range[1] = trunc (ordering) ordering = ordering - range[1] ; Get the third digit ordering = ordering * 10 int range[2] = trunc (ordering) ordering = ordering - range[2] ; Get the fourth digit ordering = ordering * 10 int range[3] = trunc (ordering) ordering = ordering - range[3] ; Get the fifth digit ordering = ordering * 10 int range[4] = trunc (ordering) ordering = ordering - range[4] ; Get the sixth digit ordering = ordering * 10 int range[5] = trunc (ordering) ordering = ordering - range[5] ; Get the seventh digit ordering = ordering * 10 int range[6] = trunc (ordering) ordering = ordering - range[6] ; Get the eighth digit ordering = ordering * 10 int range[7] = round (ordering) ordering = ordering - range[7] ; Save the original order of the maps. color tempMap[8,2] tempMap[0,0] = colorMap[0,0], tempMap[0,1] = colorMap[0,1] tempMap[1,0] = colorMap[1,0], tempMap[1,1] = colorMap[1,1] tempMap[2,0] = colorMap[2,0], tempMap[2,1] = colorMap[2,1] tempMap[3,0] = colorMap[3,0], tempMap[3,1] = colorMap[3,1] tempMap[4,0] = colorMap[4,0], tempMap[4,1] = colorMap[4,1] tempMap[5,0] = colorMap[5,0], tempMap[5,1] = colorMap[5,1] tempMap[6,0] = colorMap[6,0], tempMap[6,1] = colorMap[6,1] tempMap[7,0] = colorMap[7,0], tempMap[7,1] = colorMap[7,1] ; Reorder the maps according to the rangeOrder parameter. colorMap[0,0] = tempMap[range[0]-1,0], colorMap[0,1] = tempMap[range[0]-1,1] colorMap[1,0] = tempMap[range[1]-1,0], colorMap[1,1] = tempMap[range[1]-1,1] colorMap[2,0] = tempMap[range[2]-1,0], colorMap[2,1] = tempMap[range[2]-1,1] colorMap[3,0] = tempMap[range[3]-1,0], colorMap[3,1] = tempMap[range[3]-1,1] colorMap[4,0] = tempMap[range[4]-1,0], colorMap[4,1] = tempMap[range[4]-1,1] colorMap[5,0] = tempMap[range[5]-1,0], colorMap[5,1] = tempMap[range[5]-1,1] colorMap[6,0] = tempMap[range[6]-1,0], colorMap[6,1] = tempMap[range[6]-1,1] colorMap[7,0] = tempMap[range[7]-1,0], colorMap[7,1] = tempMap[range[7]-1,1] endif ; cs[1] = exp((0,0)*ang+ipi)*scle cs[2] = exp((0,1)*ang+ipi)*scle cs[3] = exp((0,2)*ang+ipi)*scle cs[4] = 0 rad[1] = sqrt(3)+1.5 rad[2] = rad[1] rad[3] = rad[1] if (@ptype == "None") rad[4] = 0.5 elseif (@ptype == "Outer Circles") rad[4] = scle-sqrt(3)-1.5 else ; inner inversion circle radius if pert == 10 rad[4] = 0.5151714074 elseif pert == 9 rad[4] = 0.5181320854 elseif pert == 8 rad[4] = 0.5220631074 elseif pert == 7 rad[4] = 0.5274464005 elseif pert == 6 rad[4] = 0.5351105381 elseif pert == 5 rad[4] = 0.5465863845 elseif pert == 4 rad[4] = 0.564987 elseif pert == 3 rad[4] = 0.597588 elseif pert == 2 rad[4] = 0.665053 elseif pert == 1 rad[4] = 0.8524941755 endif endif cs[5] = exp((0,0)*ang)*scle2 clr[5] = 1 cs[6] = exp((0,1)*ang)*scle2 clr[6] = 2 cs[7] = exp((0,2)*ang)*scle2 clr[7] = 3 cs[8] = 0 clr[8] = 4 if (@ptype == "None")||(@ptype == "Outer Circles") rad[5] = sqrt(3)/2*scle2 rad[6] = rad[5] rad[7] = rad[5] rad[8] = rad[5]+1*scle2 else ; base sphere radii if pert == 10 rad[5] = 0.8618985631 elseif pert == 9 rad[5] = 0.8610788318 elseif pert == 8 rad[5] = 0.8599831795 elseif pert == 7 rad[5] = 0.8584693155 elseif pert == 6 rad[5] = 0.8562872491 elseif pert == 5 rad[5] = 0.8529610919 elseif pert == 4 rad[5] = 0.8475 elseif pert == 3 rad[5] = 0.83735 elseif pert == 2 rad[5] = 0.8145 elseif pert == 1 rad[5] = 0.7382816125 endif rad[6] = rad[5] rad[7] = rad[5] rad[8] = rad[5]+1 endif ; Traverse the levels i = 4 ii = 9 ; level 1 while ib < 8 if ib >= 0 && ib < 4 i = ib + 5 j = i - 4 else i = ib + 1 j = i - 3 if i == 8 j = 1 endif endif ar = rad[j], br = rad[i], a = cs[j], b = cs[i] temp = ar^2/(|a-b|-br^2), rad[ii] = (temp*br), cs[ii] = temp*(b-a) + a if @method == 0 if @version <=331 clr[ii] = 0 else clr[ii] = 1 if rad[ii] <= rad[13]+0.0001 && rad[ii] >= rad[13]-0.0001 clr[ii] = 0^@adj+0.01 endif endif elseif @method == 1 clr[ii] = sqrt(3)/2/abs(rad[ii])^@adj+0.01 elseif @method == 2 clr[ii] = ii^@adj+0.01 elseif @method == 3 clr[ii] = cabs((cs[ii]*2)^@adj)+0.01 elseif @method == 4 clr[ii] = clr[i] elseif @method == 5 && @version >= 338 if abs(rad[ii])< @rthresh clr[ii] = 2 else clr[ii] = 1 endif endif csz[ii] = 0 ii = ii + 1 ib = ib + 1 endwhile start = 9 finish = 13 while lev <= level if lev == 2 || lev == 3 iii = start endif k = 1 while iii < finish while k <=4 ar = rad[k], br = rad[iii], a = cs[k], b = cs[iii] temp = ar^2/(|a-b|-br^2), rad[ii] = (temp*br) if abs(rad[ii]) < abs(rad[iii]) cs[ii] = temp*(b-a) + a if abs(rad[ii]) < @scircle && @version >=335 ii = ii - 1 endif if @method == 0 if @version <=331 clr[ii] = lev-1 else clr[ii] = lev endif elseif @method == 1 clr[ii] = sqrt(3)/2/abs(rad[ii])^@adj+0.01 elseif @method == 2 clr[ii] = ii^@adj+0.01 elseif @method == 3 clr[ii] = cabs((cs[ii]*2)^@adj)+0.01 elseif @method == 4 clr[ii] = clr[iii] elseif @method == 5 && @version >= 338 if abs(rad[ii])< @rthresh clr[ii] = 2 else clr[ii] = 1 endif endif csz[ii] = 0 ii = ii + 1 endif ; duplicate removal if lev < 4 i = 5 while i < ii-1 done = false ddx = real(cs[i])-real(cs[ii-1]) ddy = imag(cs[i])-imag(cs[ii-1]) ddz = csz[i]-csz[ii-1] ddr = rad[i]-rad[ii-1] if ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif ddz < -thresh && !done c = -1 done = true elseif ddz > thresh && !done c = 1 done = true elseif ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 done = true else c = 0 endif if c == 0 ||((rad[ii-1]<0) && lev > 2 && @lace) i = ii-1 ii = ii-1 endif i = i + 1 endwhile endif k = k + 1 endwhile k = 1 iii= iii + 1 endwhile if lev == 2 start = ii-12 finish = ii else if finish == ii lev = level+1 endif finish = ii endif lev = lev + 1 j = ii-finish if j > 0 l = round((j)/2) + 1 ir = j continue = true repeat if l > 1 l = l-1 rra = cs[l-1+finish] rrb = rad[l-1+finish] rrc = clr[l-1+finish] rrd = csz[l-1+finish] else rra = cs[ir-1+finish] rrb = rad[ir-1+finish] rrc = clr[ir-1+finish] rrd = csz[ir-1+finish] cs[ir-1+finish] = cs[finish] rad[ir-1+finish] = rad[finish] clr[ir-1+finish] = clr[finish] csz[ir-1+finish] = csz[finish] ir = ir-1 if ir == 0 cs[finish] = rra rad[finish] = rrb clr[finish] = rrc csz[finish] = rrd continue = false endif endif if continue == true si = l sj = 2*l endif while (sj <= ir) && (continue == true) if sj < ir done = false ddx = real(cs[sj-1+finish])-real(cs[sj+finish]) ddy = imag(cs[sj-1+finish])-imag(cs[sj+finish]) ddz = csz[sj-1+finish]-csz[sj+finish] ddr = rad[sj-1+finish]-rad[sj+finish] if ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif ddz < -thresh && !done c = -1 done = true elseif ddz > thresh && !done c = 1 done = true elseif ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 else c = 0 endif if c < 0 sj = sj + 1 endif endif done = false ddx = real(rra)-real(cs[sj-1+finish]) ddy = imag(rra)-imag(cs[sj-1+finish]) ddz = rrd-csz[sj+finish] ddr = rrb-rad[sj-1+finish] if ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif ddz < -thresh && !done c = -1 done = true elseif ddz > thresh && !done c = 1 done = true elseif ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 done = true else c = 0 endif if c < 0 cs[si-1+finish] = cs[sj-1+finish] rad[si-1+finish] = rad[sj-1+finish] clr[si-1+finish] = clr[sj-1+finish] csz[si-1+finish] = csz[sj-1+finish] si = sj sj = sj + sj else sj = ir + 1 endif endwhile if (continue == true) cs[si-1+finish] = rra rad[si-1+finish] = rrb clr[si-1+finish] = rrc csz[si-1+finish] = rrd endif until continue == false ; eliminate duplicates in place for index 'finish' to index 'ii' ir = finish l = finish while ir < ii done = false ddx = real(cs[ir])-real(cs[ir-1]) ddy = imag(cs[ir])-imag(cs[ir-1]) ddz = csz[ir]-csz[ir-1] ddr = rad[ir]-rad[ir-1] if ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif ddz < -thresh && !done c = -1 done = true elseif ddz > thresh && !done c = 1 done = true elseif ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 done = true else c = 0 endif if c == 0 ir = ir + 1 else cs[l] = cs[ir] rad[l] = rad[ir] clr[l] = clr[ir] csz[l] = csz[ir] ir = ir +1 l = l + 1 endif endwhile ii = l endif finish = ii endwhile int maxi = ii-1 iii = 9 ii = 0 float radius = 0 while iii <= maxi radius = abs((rad[iii])) if (((radius > 0)&&((@ptype==0)&&((radius < (sqrt(3)/2*scle2-.0001))||@base)&& \ (radius < (sqrt(3)/2+1*scle2-.0001))) || \ ((@ptype==1)&&((radius < (sqrt(3)/2*scle2-.0001))||@base)&& \ (radius < (sqrt(3)/2+1*scle2-.0001)) && \ (radius < (sqrt(3)/2*scle2+.0001))) || \ ((@ptype==2)&&((radius < (rad[5]-.01))||@base)&& \ (radius < (sqrt(3)/2+1-.01)) && (radius < (rad[5]+.01)))) && \ (iii != 12||@centr)) && (radius > @scirclev || @version < 260) fx = real(cs[iii])*@ascale fy = imag(cs[iii])*@ascale zz = csz[iii]*@ascale tymax = txmax tzmax = txmax ffx = fx - xmin ffy = fy - ymin ffy = tymax*asp - ffy ffx = ffx/txmax ffy = ffy/tymax ffz = (zz-zmin)/tzmax xx = ffx ; ; rotation around the z axis ; xx = ffx ffx = 0.5 + (ffx - 0.5 - @rotoffx/txmax)*cos(#angle) - \ (ffy - 0.5 - @rotoffy/tymax)*sin(#angle) ffy = 0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(#angle) + \ (xx - 0.5 - @rotoffx/txmax)*sin(#angle) ; ; rotation around the y axis ; xx = ffx ffx = (0.5 + (ffz - 0.5 - @rotoffz/txmax)*sin(@zangle*pi/180) + \ (ffx - 0.5 - @rotoffx/txmax)*cos(@zangle*pi/180))*#width ffz = (0.5 + (ffz - 0.5 - @rotoffz/tzmax)*cos(@zangle*pi/180) - \ (xx - 0.5 - @rotoffx/txmax)*sin(@zangle*pi/180)) ; ; rotation around the x axis ; yy = ffy ffy = (0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(@xangle*pi/180) - \ (ffz - 0.5 - @rotoffz/tzmax)*sin(@xangle*pi/180))*#width ffz = (0.5 + (yy - 0.5 - @rotoffy/tymax)*sin(@xangle*pi/180) + \ (ffz - 0.5 - @rotoffz/tzmax)*cos(@xangle*pi/180))*#width ; ; final translation ; ffx = ffx + @transx*#width ffy = ffy + @transy*#width ffz = ffz + @transz*#width cs[iii] = (ffx+flip(ffy)) csz[iii] = ffz rad[iii] = round(radius*#width/txmax)*@ascale if rad[iii] < 1 && @version >= 337 rad[iii] = 1 endif else rad[iii] = -1 endif iii = iii + 1 endwhile ; if @switch && @tparent int i = 0 while i < 500 colorswitch = colormap[i,0] colormap[i,0] = colormap[i,1] colormap[i,1] = colorswitch i = i + 1 endwhile endif init: ; initialize camera vector float vx = 0.0 float vy = 0.0 float vz = 0.0 float vd = 0.0 ; this is used for normalizing all vectors ; ; refraction vector array (continuation of camera vector through refractions) float vxt[300] float vyt[300] float vzt[300] ; initialize light vector float lx = 0.0 float ly = 0.0 float lz = 0.0 ; ; initialize intersection point float xi = 0 float yi = 0 float zi = 0 ; ; initialize floor intersection point float xf = 0 float yf = 0 float zf = 0 ; ; initialize reflection intersection point float xr = 0 float yr = 0 float zr = 0 ; ; initialize floor reflection intersection point float xrf = 0 float yrf = 0 float zrf = 0 ; ; floor intersection array for refraction vector float xft[100] float yft[100] float zft[100] ; refraction intersection array float xit[300] float yit[300] float zit[300] int it = 0 int jt = 0 ; surface normal array for refraction intersections float lxtt[300] float lytt[300] float lztt[300] float ctheta2 = 0 ; refraction angle float rfi = 0 ; refractive index ratio float tdt[100] ; distance from back of sphere to floor (refracted ray) float dt[100] ; distance from back of sphere to next closest sphere (refracted ray) ; initialize to 1e10 it = 0 while it < 100 tdt[it]= 1e10 dt[it] = 1e10 it = it + 1 endwhile float ldt[100] ; distance from floor intersection to light (refracted ray) float floormodt[100] float fractalmodt[100] ; initialize to 10 it = 0 while it < 100 floormodt[it] = 10 fractalmodt[it] = 10 it = it + 1 endwhile float rdt[100] ; radius of closest sphere on refraction path float ldst[100] ; distance from closest sphere on refraction path to floor bool stop = false float tindex[100] ; color index for refracted spheres float colrT[100] ; color parameter for refracted spheres float ltfact[100] ; refracted floor fade according to lighting model color colorft[100] ; refracted floor color value float ltt[100] ; dot product of light vector and normal and refract intersection float colorPosT[100] ; color parameter for refracted spheres float hvalt[100] ; hightlight parameter for refracted spheres int xcrd = #x int ycrd = #y bool inside = true if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width)*0.5; float transy = (#height)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd<0 || xcrd>=#width || ycrd<0 || ycrd>=#height) inside = false endif endif float ambient = @ambient float hval = 0 ; highlight param for spheres float hvalR = 0 ; highlight param for sphere reflections float hvalRF = 0 ; highlight param for sphere reflections off floor float colorPos = 0 ; color param for spheres float colorPosR = 0 ; color param for sphere reflections float colorPosRF = 0 ; color param for sphere reflections off floor int rangeNum = 0 ; color ranges for spheres int rangeNumR = 0 ; color ranges for sphere reflections int rangeNumRF = 0 ; color ranges for sphere reflections off floor int rangeNumT[100] ; color ranges for sphere refractions color color1 = rgb(0,0,0) color color2 = rgb(0,0,0) color tempcolor = rgb(0,0,0) color colorf = rgb(0,0,0) int floormod = 10 int floormodr = 10 float fractalmod = 10 float fractalmodr = 10 color fractalcolor = rgb(0,0,0) color amcolor = @amcolor float extent = 1.0 - @extent float ctheta = 0 ; cos of angle between camera ray and floor normal float ortheta = 0 ; dot product of camera position and floor normal float dirtheta = 0 ; negative cos of angle between camera ray and floor normal float leftbound = @leftbound*#width float rightbound = @rightbound*#width float topbound = -@topbound*#width*asp float bottombound = -@bottombound*#width*asp float rd = 0 ; radius of closest sphere float td = 1e10 ; distance to closest sphere float tdr = 1e10 ; distance to closest reflection sphere float ld = 0 ; distance from light to floor intersection float ltfac = 0 ; floor fade according to lighting model float ltfacr = 0 ; floor reflection on sphere fade according to lighting model float lds = 0 ; distance from light to closest sphere with floor reflection float st = 0 float sd = 0 ; bool trapped = false ; if frac[xcrd,ycrd] == -1 ; trapped = true ; endif ; light position float lightx = @lightx*#width float lighty = @lighty*#width*asp float lightz = @lightz*#width*asp ; camera position float camx = 0 float camy = 0 float camz = 0 ; float z0 = @vplane*#width*asp float zl = @lplane*#width*asp ; camx = @camerax*#width camy = @cameray*#width*asp camz = @cameraz*#width*asp ; ; create the camera vector ; vx = xcrd-(#width-@cpointx*#width) -camx vy = ycrd-(@cpointy*#width-#width)*asp -camy vz = -z0 - camz vd = 1/sqrt(vx*vx+vy*vy+vz*vz) vx = vx*vd vy = vy*vd vz = vz*vd ; create vector for light direction if @ltype == "Point source" || @ltype == "Spotlight" lx = #width-@lpointx*#width-lightx ly = (@lpointy*#width-#width)*asp-lighty lz = -zl-lightz else float elevation = -@elevation float d2r = #pi/180; degrees to radians conversion factor lx = -cos(@angle*d2r) * cos(elevation*d2r) ly = -sin(@angle*d2r) * cos(elevation*d2r) lz = sin(elevation*d2r) endif vd = 1/sqrt(lx*lx+ly*ly+lz*lz) lx = -lx*vd ly = -ly*vd lz = -lz*vd ; ; initialize normal vector for intersection point float lxt = 0 float lyt = 0 float lzt = 0 ; ; initialize normal vector for intersection point on floor float lxtf = 0 float lytf = 0 float lztf = 0 ; ; initialize normal vector for intersection point at reflection object float lxn = 0 float lyn = 0 float lzn = 0 ; ; initialize reflection vector float lxr = 0 float lyr = 0 float lzr = 0 ; ; initialize reflection vector from floor float lxfr = 0 float lyfr = 0 float lzfr = 0 ; float bi = 0 float ci = 0 float arg = 0 float ti1 = 0 float ti2 = 0 float ti = 0 float colr = 0 ; gradient sphere color parameter float colrR = 0 ; gradient sphere relection color parameter float colrRF = 0 ; gradient sphere refraction color parameter float colorPos = 0 ; sphere color float lt = 0 ; dot product of light vector and normal float d = 1e10 ; distance from camera to closest float ss = 1e10 float ro = 1e10 ; distance from intersection to closest reflection sphere float dx = 0 float dy = 0 float dz = 0 float am = 0 ; shadow color float am2 = 0 ; shadow parameter float cindex = 0 float lrf = 0 ; reflection on floor coloring int rspf = 0 ; index of sphere reflected onto floor float rof = 1e10 ; distance from intersection to next refraction int ri = 1 int ristart = 9 int rsp = 0 ; index of reflection sphere float lr = 0 ; reflection coloring int di = 0 float rindex = 0 float rindexf = 0 ; ; create floor ; if @floor ; floor normal lxtf = fa lytf = fb lztf = fc vd = 1/sqrt(lxtf*lxtf+lytf*lytf+lztf*lztf) lxtf = lxtf*vd lytf = lytf*vd lztf = lztf*vd ; dot product with ray origin ortheta = lxtf*camx+lytf*camy+lztf*camz ; dot product with camera vector dirtheta = lxtf*vx+lytf*vy+lztf*vz ; distance from camera to intersection td = -(ortheta+fd)/dirtheta ; intersection point with camera ray if td > 0 xf = camx+vx*td yf = camy+vy*td zf = camz+vz*td endif ; distance to light if @ltype == "Point source" if td > 0 ld = sqrt((lightx-xf)^2 + (lighty-yf)^2+ (lightz-zf)^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ld = 1234567890 endif elseif @ltype == "Spotlight" st = (xf-lightx)*lx + (yf-lighty)*ly + (zf-lightz)*lz sd = sqrt((lightx-xf+lx*st)^2+(lighty-yf+ly*st)^2+(lightz-zf+lz*st)^2) if @spottype == "Sharp" ld = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ld = 1-@ambient endif elseif @spottype == "Set focus" ld = (sd/(@spotrad*#width*asp))^@setfocus if ld < 0.8 ld = 0 else ld = ld - 0.8 endif if ld > 1-@ambient ld = 1-@ambient endif endif endif if @fbound == true ; put bounds on the floor if xf < leftbound || zf < topbound || xf > rightbound || zf > bottombound td = 0 ld = 1234567890 endif endif ; setup checkerboard complex fp = (lytf+lztf)*xf + lxtf*yf + \ flip((lxtf+lytf)*zf + lztf*yf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormod = 0 else floormod = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmod = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width/2*asp)%trunc(#width*asp)] endif ; is the floor point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if rad[ri] != -1 if ri != di ; eliminate self-shadow bi = (lx*(xf-real(cs[ri]))+ly*(yf-imag(cs[ri]))+lz*(zf-csz[ri])) ci = (xf-real(cs[ri]))^2+(yf-imag(cs[ri]))^2+(zf-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am2 = @am endif endif endif endif ri = ri + 1 endwhile endif ss = 1e10 ; ; is there a reflection object to reflect onto the floor? ; if @version >=300 if @reflect && @reflectf ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxtf*vx-lytf*vy-lztf*vz ; N.I lxfr = -vx+2*lxtf*ctheta lyfr = -vy+2*lytf*ctheta lzfr = -vz+2*lztf*ctheta vd = 1/sqrt(lxfr*lxfr+lyfr*lyfr+lzfr*lzfr) lxfr = lxfr*vd lyfr = lyfr*vd lzfr = lzfr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 while ri <= maxi if rad[ri] != -1 bi = (lxfr*(xf-real(cs[ri]))+lyfr*(yf-imag(cs[ri]))+lzfr*(zf-csz[ri])) ci = (xf-real(cs[ri]))^2+(yf-imag(cs[ri]))^2+(zf-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < rof ; find closest reflection object rof = ti rspf = ri ; index of reflection object endif endif endif ri = ri + 1 endwhile if rof != 1e10 && @reflectf==true ; find intersection point on reflection object xr = xf+lxfr*rof yr = yf+lyfr*rof zr = zf+lzfr*rof ; ; create the normal at the intersection point lxn = -(xr-real(cs[rspf]))/rad[rspf] lyn = (yr-imag(cs[rspf]))/rad[rspf] lzn = (zr-csz[rspf])/rad[rspf] vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection ; if colorsUsed == 8 && !@reflect if colorsUsed == 8 rindexf = trunc(clr[rspf]) if (trunc(rindexf/colorsUsed+0.01)%2) == 0 rindexf = rindexf%colorsUsed else rindexf = colorsUsed-1-(rindexf)%(colorsUsed) endif else rindexf = trunc(clr[rspf])%colorsUsed endif lrf = -(lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif endif ; ri = ristart ti = 0 while ri <= maxi if rad[ri] != -1 bi = vx*(camx-real(cs[ri]))+vy*(camy-imag(cs[ri]))+vz*(camz-csz[ri]) ci = (camx-real(cs[ri]))^2+(camy-imag(cs[ri]))^2+(camz-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < d ; find closest object d = ti dx = real(cs[ri]) dy = imag(cs[ri]) dz = csz[ri] di = ri rd = rad[ri] if colorsUsed == 8 && !@reflect cindex = trunc(clr[ri]) if (trunc(cindex/colorsUsed+0.01)%2) == 0 cindex = cindex%colorsUsed else cindex = colorsUsed-1-(cindex)%(colorsUsed) endif else cindex = trunc(clr[ri])%colorsUsed endif endif endif ri = ri+1 endwhile if d > 0 && d != 1e10 ; intersection point outside object xi = camx+vx*d yi = camy+vy*d zi = camz+vz*d ; distance to light if @ltype == "Point source" if tdr > 0 lds = sqrt((lightx-xi)^2 + (lighty-yi)^2+ (lightz-zi)^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else lds = 1234567890 endif elseif @ltype == "Spotlight" st = (xi-lightx)*lx + (yi-lighty)*ly + (zi-lightz)*lz sd = sqrt((lightx-xi+lx*st)^2+(lighty-yi+ly*st)^2+(lightz-zi+lz*st)^2) if @spottype == "Sharp" lds = 0.0 if (sd/(@spotrad*#width*asp)) > 1 lds = 1-@ambient endif elseif @spottype == "Set focus" lds = (sd/(@spotrad*#width*asp))^@setfocus if lds < 0.8 lds = 0 else lds = lds - 0.8 endif if lds > 1-@ambient lds = 1-@ambient endif endif endif ; ; is the point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if rad[ri] != -1 if ri != di ; eliminate self-shadow bi = (lx*(xi-real(cs[ri]))+ly*(yi-imag(cs[ri]))+lz*(zi-csz[ri])) ci = (xi-real(cs[ri]))^2+(yi-imag(cs[ri]))^2+(zi-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am = (1.0/@totalColors)*@am+(1.0/@totalColors)*(cindex+(1-@scale/2)/2)-0.015 endif endif endif endif ri = ri + 1 endwhile endif ; ; create the normals at the intersection points ; lxt = (xi-dx)/rd lyt = (yi-dy)/rd lzt = (zi-dz)/rd vd = 1/sqrt(lxt*lxt+lyt*lyt+lzt*lzt) lxt = lxt*vd lyt = lyt*vd lzt = lzt*vd ; ; check for reflections ; if @reflect == true ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxt*vx-lyt*vy-lzt*vz ; N.I lxr = vx+2*lxt*ctheta lyr = vy+2*lyt*ctheta lzr = vz+2*lzt*ctheta vd = 1/sqrt(lxr*lxr+lyr*lyr+lzr*lzr) lxr = lxr*vd lyr = lyr*vd lzr = lzr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 lr = 0 while ri <= maxi if rad[ri] != -1 if di != ri ; eliminate self-reflection bi = (lxr*(xi-real(cs[ri]))+lyr*(yi-imag(cs[ri]))+lzr*(zi-csz[ri])) ci = (xi-real(cs[ri]))^2+(yi-imag(cs[ri]))^2+(zi-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ro ; find closest reflection object ro = ti rsp = ri ; index of reflection object endif endif endif endif ri = ri + 1 endwhile ; ; Is the floor closer? if @floor == true ; intersection point with reflection ray ; dot product with ray origin ortheta = lxtf*xi+lytf*yi+lztf*zi ; dot product with reflection vector dirtheta = lxtf*lxr+lytf*lyr+lztf*lzr ; distance from camera to intersection tdr = -(ortheta+fd)/dirtheta if tdr > 0 xrf = xi+lxr*tdr yrf = yi+lyr*tdr zrf = zi+lzr*tdr endif endif if tdr < ro && tdr > 0 ; floor is closest reflection object if @fbound == true ; put bounds on the floor ; if xrf < leftbound || zrf < topbound || xrf > rightbound || zrf > bottombound ; tdr = 0 ; endif endif ; setup checkerboard complex fp = (lytf+lztf)*xrf + lxtf*yrf + \ flip((lxtf+lytf)*zrf + lztf*yrf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodr = 0 else floormodr = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmodr = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif else if ro != 1e10 && @reflect==true ; find intersection point on reflection object xr = xi+lxr*ro yr = yi+lyr*ro zr = zi+lzr*ro ; ; create the normal at the intersection point lxn = (xr-real(cs[rsp]))/rad[rsp] lyn = (yr-imag(cs[rsp]))/rad[rsp] lzn = (zr-csz[rsp])/rad[rsp] vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection if colorsUsed == 8 && !@reflect rindex = trunc(clr[rsp]) if (trunc(rindex/colorsUsed+0.01)%2) == 0 rindex = rindex%colorsUsed else rindex = colorsUsed-1-(rindex)%(colorsUsed) endif else rindex = trunc(clr[rsp])%colorsUsed endif lr = (lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif ; ; tranparency code ; ; ; initialize initial array values ; ; refraction vectors vxt[0] = vx vyt[0] = vy vzt[0] = vz ; sphere intersection points xit[0] = xi yit[0] = yi zit[0] = zi lxtt[0] = lxt lytt[0] = lyt lztt[0] = lzt ; array indices it = 0 jt = 0 stop = false if @tparent while !stop ltt[jt] = 0 ldt[jt] = 0 ldst[jt] = 0 ; calculate surface normal ; float dlast = di lxtt[it] = (xit[it]-real(cs[di]))/rad[di] lytt[it] = (yit[it]-imag(cs[di]))/rad[di] lztt[it] = (zit[it]-csz[di])/rad[di] vd = 1/sqrt(lxtt[it]*lxtt[it]+lytt[it]*lytt[it]+lztt[it]*lztt[it]) lxtt[it] = lxtt[it]*vd lytt[it] = lytt[it]*vd lztt[it] = lztt[it]*vd ; ; calculate refraction vector #1 ; ; T = [I/rfi-(ctheta2-ctheta/rfi)*N] ; Snell's law: sin(angle1)/sin(angle2) = rf2/rf1 = rfi rfi = @rfi ctheta = -lxtt[it]*vxt[it]-lytt[it]*vyt[it]-lztt[it]*vzt[it] ; N.I ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) ; T.I vxt[it+1] = vxt[it]/rfi-lxtt[it]*(ctheta2-ctheta/rfi) vyt[it+1] = vyt[it]/rfi-lytt[it]*(ctheta2-ctheta/rfi) vzt[it+1] = vzt[it]/rfi-lztt[it]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+1]*vxt[it+1]+vyt[it+1]*vyt[it+1]+vzt[it+1]*vzt[it+1]) vxt[it+1] = vxt[it+1]*vd vyt[it+1] = vyt[it+1]*vd vzt[it+1] = vzt[it+1]*vd ; ; find intersection in back of sphere ; bi = vxt[it+1]*(xit[it]-real(cs[di]))+vyt[it+1]*(yit[it]-imag(cs[di]))+vzt[it+1]*(zit[it]-csz[di]) ci = (xit[it]-real(cs[di]))^2+(yit[it]-imag(cs[di]))^2+(zit[it]-csz[di])^2-rad[di]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 < ti2 ; find largest ti ti = ti2 else ti = ti1 endif endif xit[it+1] = xit[it]+vxt[it+1]*ti yit[it+1] = yit[it]+vyt[it+1]*ti zit[it+1] = zit[it]+vzt[it+1]*ti ; ; calculate surface normal #2 ; lxtt[it+1] = -(xit[it+1]-real(cs[di]))/rad[di] lytt[it+1] = -(yit[it+1]-imag(cs[di]))/rad[di] lztt[it+1] = -(zit[it+1]-csz[di])/rad[di] vd = 1/sqrt(lxtt[it+1]*lxtt[it+1]+lytt[it+1]*lytt[it+1]+lztt[it+1]*lztt[it+1]) lxtt[it+1] = lxtt[it+1]*vd lytt[it+1] = lytt[it+1]*vd lztt[it+1] = lztt[it+1]*vd ; ; calculate refraction vector #2 ; ctheta = -lxtt[it+1]*vxt[it+1]-lytt[it+1]*vyt[it+1]-lztt[it+1]*vzt[it+1] ; N.I rfi = 1/@rfi ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) vxt[it+2] = vxt[it+1]/rfi-lxtt[it+1]*(ctheta2-ctheta/rfi) vyt[it+2] = vyt[it+1]/rfi-lytt[it+1]*(ctheta2-ctheta/rfi) vzt[it+2] = vzt[it+1]/rfi-lztt[it+1]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+2]*vxt[it+2]+vyt[it+2]*vyt[it+2]+vzt[it+2]*vzt[it+2]) vxt[it+2] = vxt[it+2]*vd vyt[it+2] = vyt[it+2]*vd vzt[it+2] = vzt[it+2]*vd ; ; determine intersection of reflection vector with floor ; ; dot product with ray origin at back of sphere ortheta = lxtf*xit[it+1]+lytf*yit[it+1]+lztf*zit[it+1] ; dot product with 2nd refraction vector dirtheta = lxtf*vxt[it+2]+lytf*vyt[it+2]+lztf*vzt[it+2] ; distance from back of sphere to intersection with floor tdt[jt] = -(ortheta+fd)/dirtheta ; intersection point with 2nd refraction ray if tdt[jt] > 0 xft[jt] = xit[it+1]+vxt[it+2]*tdt[jt] yft[jt] = yit[it+1]+vyt[it+2]*tdt[jt] zft[jt] = zit[it+1]+vzt[it+2]*tdt[jt] endif ; ; distance from floor interection to light ; if @ltype == "Point source" if tdt[jt] > 0 ldt[jt] = sqrt((lightx-xft[jt])^2 + (lighty-yft[jt])^2+ (lightz-zft[jt])^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ldt[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xft[jt]-lightx)*lx + (yft[jt]-lighty)*ly + (zft[jt]-lightz)*lz sd = sqrt((lightx-xft[jt]+lx*st)^2+(lighty-yft[jt]+ly*st)^2+(lightz-zft[jt]+lz*st)^2) if @spottype == "Sharp" ldt[jt] = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ldt[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldt[jt] = (sd/(@spotrad*#width*asp))^@setfocus if ldt[jt] < 0.8 ldt[jt] = 0 else ldt[jt] = ldt[jt] - 0.8 endif if ldt[jt] > 1-@ambient ldt[jt] = 1-@ambient endif endif endif ; if @fbound == true ; put bounds on the floor if xft[jt] < leftbound || zft[jt] < topbound || xft[jt] > rightbound || zft[jt] > bottombound tdt[jt] = 0 ldt[jt] = 1234567890 endif endif ; ; setup checkerboard complex fp = (lytf+lztf)*xft[jt] + lxtf*yft[jt] + \ flip((lxtf+lytf)*zft[jt] + lztf*yft[jt])+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodt[jt] = 0 else floormodt[jt] = 1 endif ; setup fractal pattern elseif @flrtype == "Fractal" fp = abs(fp) fractalmodt[jt] = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif ; ; find closest sphere or terminate ; ri = ristart ti = 0 dt[jt] = 1e10 while ri <= maxi if rad[ri] != -1 && ri != dlast bi = vxt[it+2]*(xit[it+1]-real(cs[ri]))+vyt[it+2]*(yit[it+1]-imag(cs[ri]))+vzt[it+2]*(zit[it+1]-csz[ri]) ci = (xit[it+1]-real(cs[ri]))^2+(yit[it+1]-imag(cs[ri]))^2+(zit[it+1]-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < dt[jt] ; find closest object dt[jt] = ti dx = real(cs[ri]) dy = imag(cs[ri]) dz = csz[ri] di = ri ; this will be used in the next level rdt[jt] = rad[ri] if colorsUsed == 8 && !@reflect tindex[jt] = trunc(clr[ri]) if (trunc(tindex[jt]/colorsUsed+0.01)%2) == 0 tindex[jt] = tindex[jt]%colorsUsed else tindex[jt] = colorsUsed-1-(tindex[jt])%(colorsUsed) endif else tindex[jt] = trunc(clr[ri])%colorsUsed endif endif endif ri = ri+1 endwhile ; ; intersection point with next sphere ; if dt[jt] > 0 && dt[jt] != 1e10 ; intersection point outside object xit[it+2] = xit[it+1]+vxt[it+2]*dt[jt] yit[it+2] = yit[it+1]+vyt[it+2]*dt[jt] zit[it+2] = zit[it+1]+vzt[it+2]*dt[jt] ; ; distance of intersection to light ; if @ltype == "Point source" if td > 0 ldst[jt] = sqrt((lightx-xit[it+2])^2 + (lighty-yit[it+2])^2+ (lightz-zit[it+2])^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else ldst[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xit[it+2]-lightx)*lx + (yit[it+2]-lighty)*ly + (zit[it+2]-lightz)*lz sd = sqrt((lightx-xit[it+2]+lx*st)^2+(lighty-yit[it+2]+ly*st)^2+(lightz-zit[it+2]+lz*st)^2) if @spottype == "Sharp" ldst[jt] = 0.0 if (sd/(@spotrad*#width)) > 1 ldst[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldst[jt] = (sd/(@spotrad*#width))^@setfocus if ldst[jt] < 0.8 ldst[jt] = 0 else ldst[jt] = ldst[jt] - 0.8 endif if ldst[jt] > 1-@ambient ldst[jt] = 1-@ambient endif endif endif ; calculation of surface normal #3 ; lxtt[it+2] = (xit[it+2]-dx)/rdt[jt] lytt[it+2] = (yit[it+2]-dy)/rdt[jt] lztt[it+2] = (zit[it+2]-dz)/rdt[jt] vd = 1/sqrt(lxtt[it+2]*lxtt[it+2]+lytt[it+2]*lytt[it+2]+lztt[it+2]*lztt[it+2]) lxtt[it+2] = lxtt[it+2]*vd lytt[it+2] = lytt[it+2]*vd lztt[it+2] = lztt[it+2]*vd ; ; dot product of light vector and normal vector ; ltt[jt] = (lx*lxtt[it+2]+ly*lytt[it+2]+lz*lztt[it+2])*krt colrT[jt] = (1.0/@totalColors)*@scale/2*ltt[jt]+0.25*(tindex[jt]+(1-@scale/2)/2)-0.015 colorPosT[jt] = @scale/2*ltt[jt] endif it = it+2 jt = jt+1 if dt[jt-1] == 1e10 stop = true jt = jt-1 it = it-2 endif endwhile endif ; ; dot product of light vector and normal vector ; lt = (lx*lxt+ly*lyt+lz*lzt) colorPos = @scale/2*lt colorPosR = @scale/2*lr if @reflect == true if lr != 0 colrR = (1.0/@totalColors)*@scale/2*lr+0.25*(rindex+(1-@scale/2)/2)-0.015 colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif endif if rof != 1e10 && @reflectf && @floor colorPosRF = @scale/2*lrf colrRF = (1.0/@totalColors)*@scale/2*lrf+0.25*(rindexf+(1-@scale/2)/2)-0.015 endif ; if @tparent ; am = am*(1-@tparentval) ; am2 = am2*(1-@tparentval) ; endif ; loop: final: ; if @applymapping && !inside && @solid #solid = true endif ; Perturb the ranges, if specified. rangeNum = trunc(cindex) if rangeNum < 0 rangeNum = rangeNum * -1 endif rangeNum = (rangeNum + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNum < ranges / 2) rangeNum = (rangeNum + rangeNum) % ranges else rangeNum = (rangeNum + rangeNum + 1) % ranges endif else ; Number of ranges is odd. rangeNum = (rangeNum + rangeNum) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNum / 2) * 2) == rangeNum) ; rangeNum is even. rangeNum = rangeNum - trunc (rangeNum / 2) else ; rangeNum is odd. rangeNum = rangeNum + trunc ((ranges - rangeNum) / 2) endif endif if colorPos > 0.5 colorPos = (colorPos - 0.5) / 0.5 else colorPos = colorPos / 0.5 endif if @highlight_type == "none" hval = 0 elseif @highlight_type == "linear" if colorPos > extent hval = (5*@highlight*(colorPos-extent)/(1-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "log" if colorPos > extent hval = (5*@highlight*log(colorPos-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "exponential" if colorPos > extent hval = (5*@highlight*(exp(colorPos-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hval = 0 endif endif if @reflect == true ; Perturb the ranges, if specified. rangeNumR = trunc(rindex) if rangeNumR < 0 rangeNumR = rangeNumR * -1 endif rangeNumR = (rangeNumR + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumR < ranges / 2) rangeNumR = (rangeNumR + rangeNumR) % ranges else rangeNumR = (rangeNumR + rangeNumR + 1) % ranges endif else ; Number of ranges is odd. rangeNumR = (rangeNumR + rangeNumR) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumR / 2) * 2) == rangeNumR) ; rangeNumR is even. rangeNumR = rangeNumR - trunc (rangeNumR / 2) else ; rangeNumR is odd. rangeNumR = rangeNumR + trunc ((ranges - rangeNumR) / 2) endif endif if colorPosR > 0.5 colorPosR = (colorPosR - 0.5) / 0.5 else colorPosR = colorPosR / 0.5 endif if @highlight_type == "none" hvalR = 0 elseif @highlight_type == "linear" if colorPosR > extent hvalR = (5*@highlight*(colorPosR-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "log" if colorPosR > extent hvalR = (5*@highlight*log(colorPosR-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "exponential" if colorPosR > extent hvalR = (5*@highlight*(exp(colorPosR-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalR = 0 endif endif ; Perturb the ranges, if specified. rangenumRF = trunc(rindexf) if rangenumRF < 0 rangenumRF = rangenumRF * -1 endif rangenumRF = (rangenumRF + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangenumRF < ranges / 2) rangenumRF = (rangenumRF + rangenumRF) % ranges else rangenumRF = (rangenumRF + rangenumRF + 1) % ranges endif else ; Number of ranges is odd. rangenumRF = (rangenumRF + rangenumRF) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangenumRF / 2) * 2) == rangenumRF) ; rangenumRF is even. rangenumRF = rangenumRF - trunc (rangenumRF / 2) else ; rangenumRF is odd. rangenumRF = rangenumRF + trunc ((ranges - rangenumRF) / 2) endif endif if colorPosRF > 0.5 colorPosRF = (colorPosRF - 0.5) / 0.5 else colorPosRF = colorPosRF / 0.5 endif if @highlight_type == "none" hvalRF = 0 elseif @highlight_type == "linear" if colorPosRF > extent hvalRF = (5*@highlight*(colorPosRF-extent)/(1-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "log" if colorPosRF > extent hvalRF = (5*@highlight*log(colorPosRF-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "exponential" if colorPosRF > extent hvalRF = (5*@highlight*(exp(colorPosRF-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif endif endif if @tparent it = 0 while it <= jt ; Perturb the ranges, if specified. rangeNumT[it] = trunc(tindex[it]) if rangeNumT[it] < 0 rangeNumT[it] = rangeNumT[it] * -1 endif rangeNumT[it] = (rangeNumT[it] + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumT[it] < ranges / 2) rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges else rangeNumT[it] = (rangeNumT[it] + rangeNumT[it] + 1) % ranges endif else ; Number of ranges is odd. rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumT[it] / 2) * 2) == rangeNumT[it]) ; rangeNumT[it] is even. rangeNumT[it] = rangeNumT[it] - trunc (rangeNumT[it] / 2) else ; rangeNumT[it] is odd. rangeNumT[it] = rangeNumT[it] + trunc ((ranges - rangeNumT[it]) / 2) endif endif if colorPosT[it] > 0.5 colorPosT[it] = (colorPosT[it] - 0.5) / 0.5 else colorPosT[it] = colorPosT[it] / 0.5 endif if @highlight_type == "none" hvalt[it] = 0 elseif @highlight_type == "linear" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(colorPosT[it]-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "log" if colorPosT[it] > extent hvalt[it] = (5*@highlight*log(colorPosT[it]-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "exponential" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(exp(colorPosT[it]-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif endif it = it + 1 endwhile endif if lds > @sdis lds = @sdis endif it = 0 while it <= jt if ldst[it] > @sdis ldst[it] = @sdis endif ; have refracted floor fade according to lighting model ltfact[it] = ldt[it]/@dis/@floorrefract if ldt[it] == 1234567890 ltfact[it] = 0 elseif ltfact[it] < 0 ltfact[it] = 0 elseif ltfact[it] > 1 ltfact[it] = 1 endif ; if ltfact[it] > krft ; ltfact[it] = krft ; endif If ltfact[it]+am2 > 1 ltfact[it] = 1-am2 endif if dt[it] > tdt[it] && tdt[it] > 0 && ltfact[it] >= 0 if @flrtype == "Checkerboard" if floormodt[it] == 0 colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif floormodt[it] == 1 colorft[it] = blend(@flrcolor2,rgb(0,0,0),ltfact[it]+am2) endif elseif @flrtype == "Plain" colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif @flrtype == "Fractal" if fractalmodt[it] == 0 fractalcolor = @icolor colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) else fractalcolor = gradient((fractalmodt[it]/mxi)^@spread+@shift) colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) endif endif else colorft[it] = rgba(0,0,0,1) endif it = it+ 1 endwhile if colr == 0 && (td == 0 || td == 1e10) if @solid #solid = true else if @colorPreset == "Gradient" colorf = gradient(0) else if @switch colorf = colormap[0,0] else colorf = colormap[0,1] endif endif endif else if @am == 0 if @colorPreset == "Gradient" if @reflect == true if lr != 0 color1 = gradient(colrR/2) color2 = gradient(colr/2) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if am < colr/2 if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = gradient(colr/2 - am) color2 = gradient(colr/2) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@cblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color2 = gradient(0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif endif endif endif ; have floor fade according to lighting model ltfac = ld/@dis if ld == 1234567890 ltfac = 0 elseif ltfac < 0 ltfac = 0 elseif ltfac > 1 ltfac = 1 endif If ltfac+am2 > 1 ltfac = 1-am2 endif ; have floor reflection fade according to lighting model ltfacr = tdr/td/@floorreflect if lds == 1234567890 ltfacr = 0 elseif ltfacr < 0 ltfacr = 0 elseif ltfacr > 1 ltfacr = 1 endif if ltfacr>krf ltfacr = krf endif ; ltfacr = ltfacr*ltfac ; apply floor and floor reflection coloring if @reflect == true && tdr > 0 && tdr < ro if @flrtype == "Checkerboard" if floormodr == 0 colorf = blend(colorf,@flrcolor,krf-ltfacr) else colorf = blend(colorf,@flrcolor2,krf-ltfacr) endif elseif @flrtype == "Plain" colorf = blend(colorf,@flrcolor,krf-ltfacr) else if fractalmodr == 0 fractalcolor = @icolor colorf = blend(colorf,fractalcolor,krf-ltfacr) else fractalcolor = gradient((fractalmodr/mxi)^@spread+@shift) colorf = blend(colorf,fractalcolor,krf-ltfacr) endif endif endif if d > td && td > 0 && ltfac >= 0 if @flrtype == "Checkerboard" if floormod == 0 colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) elseif floormod == 1 colorf = blend(@flrcolor2,rgb(0,0,0),ltfac+am2) endif elseif @flrtype == "Plain" colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) else if fractalmod == 0 fractalcolor = @icolor colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) elseif fractalmod == -1 && @solid #solid = true else fractalcolor = gradient((fractalmod/mxi)^@spread+@shift) colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) endif endif endif if @reflectf && @floor && rof != 1e10 && d > td if @colorPreset == "Gradient" color1 = gradient(colrRF/2) else color1 = blend(colorMap[rangeNumRF,1], blend(colorMap[rangeNumRF,0], \ @hcolor,hvalRF), colorPosRF) endif colorf = blend(color1, colorf,(1-@blendvalf)) endif #color = blend(colorf, amcolor, ambient) default: param version caption = "Formula Version" default = 410 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam $ifdef VER40 heading text="Direct coloring methods provided by \ Ken Childress. \ Use with Pixel in mt.ufm or Pixel Offset in \ reb.ufm" endheading $else heading caption="Apollonian Gasket Ray Trace" endheading heading caption="Direct coloring methods provided by" endheading heading caption="Ken Childress." endheading heading caption="Use with Pixel formula in mt.ufm" endheading $endif render=false title="Apollonian Gasket Ray Trace" param solid caption="solid background?" default=false visible= !@floor||@applymapping||@fbound || @mask || @rmask endparam param applyMapping caption = "Apply Mapping" default = false endparam $ifdef VER40 heading text="The actual number of iterations may be less than \ 'Max Iters' if all new generations are smaller \ than the 'Smallest Circle' setting." visible = @version >= 335 endheading $endif param level caption = "Max Iters (1-100)" default = 100 min = 1 max = 100 endparam $ifdef VER40 heading text="Decreasing 'Smallest Circle' will increase the \ amount of detail, but rending speed will decrease. For \ the 'Inner Circle' perturb type, use caution when decreasing \ the value as artifacts can be generated." visible = @version >= 335 endheading $endif param scircle caption = "Smallest Circle" default = 0.01 max = 0.01 min = 0.0001 visible = @version >= 335 endparam param scirclev caption = "Smallest View Circle" default = 0.001 max = 0.01 visible = @version >= 410 endparam bool param base caption = "Show Base Set" default = false endparam bool param centr caption = "Center Circle" default = true visible=@version>=332 endparam param lace caption = "Display as Lace" default = false visible = @ptype == "Inner Circle" && (@pert >=8) endparam $ifdef VER40 heading text = "Perturbation of Inversion Circles \ by overlap." endheading $else heading caption = "Perturbation of Inversion Circles" endheading heading caption = "by overlap." endheading $endif param ptype caption = "Perturb Type" default = 0 enum = "None" "Outer Circles" "Inner Circle" endparam param pert caption = "Perturb Level (1-10)" default = 1 min = 1 max = 10 visible = @ptype != "None" endparam $ifdef VER40 heading text = "Use 'Magnification' below in place of 'Magnification on \ the Location Tab." endheading $endif param ascale caption = "Magnification" default = 0.6 endparam $ifdef VER40 heading caption = "Rotations & Translations" expanded = false endheading heading text = "Z Rotation is on the Location Tab." endheading $else heading caption = "Rotations & Translations" endheading heading caption = "Z Rotation is on the" endheading heading caption = "Location Tab." endheading $endif param xangle caption = "X Axis Rotation" default = 0.0 hint = "This is the fixed (horizontal) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param zangle caption = "Y Axis Rotation" default = 0.0 hint = "This is the fixed (vertical) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param rotoffx caption = "Rotation Center X Offset" default = 0.0 endparam param rotoffy caption = "Rotation Center Y Offset" default = 0.0 endparam param rotoffz caption = "Rotation Center Z Offset" default = 0.0 endparam param transx caption = "X Final Translation" default = 0.0 endparam param transy caption = "Y Final Translation" default = -.15 endparam param transz caption = "Z Final Translation" default = 0.0 endparam ; ------------------------------------------------------------------- ; Color Settings ;-------------------------------------------------------------------- heading caption = "Color Settings" endheading param colorPreset caption = "Color Preset" enum = "Gradient" "Custom" "Generate" "Default" "Default 12" \ "Default 16" "Default 24" "Color Wheel 12" "Alhambra 8" \ "Belvedere 8" "Bouquet 8" "Color Switch 8" "Evening Sky 8" \ "Fantasia 8" "Flowering Orchard 8" "Morning Sky 8" "Pastel 8" \ "Pastel Rainbow 8" "Showtime 8" "Soleil 8" "Chill 8" \ "Cloud Nine 8" "La Terra 8" "Santa Fe 8" "Spring 8" "Summer 8" \ "Fall 8" "Winter 8" "Mojave 8" "Gold/Green 8" "Gold/Green Alt 8" \ "Gold/Silver 8" "Gold/Silver Alt 8" "Purple/Yellow 8" \ "Purple/Yellow Alt 8" "Silver/Blue 8" "Silver/Blue Alt 8" \ "Fourth of July 3" "Blue/Silver 2" "Blue/White 2" "Cyan/Magenta 2" \ "Cyan/Yellow 2" "Gold/Green 2" "Purple/Yellow 2" "Red/Tan 2" default = 2 hint = "Use 'Gradient' for colors from the gradient. \ Use 'Custom' to set your own color ranges. \ Use 'Default' for the default colors. \ Use 'Generate' to create 3D-like colors from the \ gradient (allows using the gradient randomize function). \ Use any of the other predefined settings for those colors." endparam param customize caption = "Show/Customize" default = false hint = "Check to customize the selected color preset. NOTE: If you \ modify the default values for any of the range(s), you cannot \ get back to the default values for the range(s) you modify \ unless you reload the UCL." visible = (@colorPreset != "Gradient") && (@colorPreset != "Generate") \ && (@colorPreset != "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Custom ;-------------------------------------------------------------------- heading caption = " Custom Color Settings" visible = (@colorPreset == "Custom") endheading color param colorMax1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMin1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMax2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMin2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMax3 caption = "Color Range 3 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMin3 caption = "Color Range 3 Low" default = rgb(100/255,36/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMax4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMin4 caption = "Color Range 4 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMax5 caption = "Color Range 5 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMin5 caption = "Color Range 5 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMax6 caption = "Color Range 6 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMin6 caption = "Color Range 6 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMax7 caption = "Color Range 7 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMin7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMax8 caption = "Color Range 8 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param colorMin8 caption = "Color Range 8 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param customMax9 caption = "Color Range 9 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMin9 caption = "Color Range 9 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMax10 caption = "Color Range 10 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMin10 caption = "Color Range 10 Low" default = rgb(94/255,18/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMax11 caption = "Color Range 11 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMin11 caption = "Color Range 11 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMax12 caption = "Color Range 12 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMin12 caption = "Color Range 12 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMax13 caption = "Color Range 13 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMin13 caption = "Color Range 13 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMax14 caption = "Color Range 14 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMin14 caption = "Color Range 14 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMax15 caption = "Color Range 15 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMin15 caption = "Color Range 15 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMax16 caption = "Color Range 16 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMin16 caption = "Color Range 16 Low" default = rgb(69/255,0/255,82/255) hint = "Specifies the color at the low end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMax17 caption = "Color Range 17 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMin17 caption = "Color Range 17 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMax18 caption = "Color Range 18 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMin18 caption = "Color Range 18 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMax19 caption = "Color Range 19 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMin19 caption = "Color Range 19 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMax20 caption = "Color Range 20 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMin20 caption = "Color Range 20 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMax21 caption = "Color Range 21 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMin21 caption = "Color Range 21 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMax22 caption = "Color Range 22 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMin22 caption = "Color Range 22 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMax23 caption = "Color Range 23 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMin23 caption = "Color Range 23 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMax24 caption = "Color Range 24 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam color param customMin24 caption = "Color Range 24 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default ;-------------------------------------------------------------------- heading caption = " Default Settings" visible = (@customize && @colorPreset == "Default") endheading color param defaultMax1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax2 caption = "Color Range 2 High" default = rgb(252/255,0/255,172/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin2 caption = "Color Range 2 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax3 caption = "Color Range 3 High" default = rgb(252/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax4 caption = "Color Range 4 High" default = rgb(252/255,128/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin4 caption = "Color Range 4 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax5 caption = "Color Range 5 High" default = rgb(252/255,252/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin5 caption = "Color Range 5 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax6 caption = "Color Range 6 High" default = rgb(0/255,252/255,128/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin7 caption = "Color Range 7 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax8 caption = "Color Range 8 High" default = rgb(64/255,64/255,252/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 12 ;-------------------------------------------------------------------- heading caption = " Default 12 Color Settings" visible = (@customize && @colorPreset == "Default 12") endheading color param default12Max1 caption = "Color Range 1 High" default = rgb(255/255,85/255,253/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min1 caption = "Color Range 1 Low" default = rgb(98/255,0/255,76/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max2 caption = "Color Range 2 High" default = rgb(252/255,0/255,143/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min2 caption = "Color Range 2 Low" default = rgb(98/255,0/255,54/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max4 caption = "Color Range 4 High" default = rgb(255/255,97/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min4 caption = "Color Range 4 Low" default = rgb(104/255,27/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min5 caption = "Color Range 5 Low" default = rgb(110/255,54/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max6 caption = "Color Range 6 High" default = rgb(255/255,248/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min6 caption = "Color Range 6 Low" default = rgb(102/255,60/255,6/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,58/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min7 caption = "Color Range 7 Low" default = rgb(0/255,76/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,205/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min8 caption = "Color Range 8 Low" default = rgb(0/255,89/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max9 caption = "Color Range 9 High" default = rgb(0/255,194/255,255/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min9 caption = "Color Range 9 Low" default = rgb(0/255,80/255,92/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max10 caption = "Color Range 10 High" default = rgb(35/255,109/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min10 caption = "Color Range 10 Low" default = rgb(0/255,4/255,102/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max11 caption = "Color Range 11 High" default = rgb(149/255,53/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min11 caption = "Color Range 11 Low" default = rgb(53/255,0/255,96/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max12 caption = "Color Range 12 High" default = rgb(195/255,0/255,252/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min12 caption = "Color Range 12 Low" default = rgb(58/255,0/255,84/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 16 ;-------------------------------------------------------------------- heading caption = " Default 16 Color Settings" visible = (@customize && @colorPreset == "Default 16") endheading color param default16Max1 caption = "Color Range 1 High" default = rgb(255/255,31/255,114/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min1 caption = "Color Range 1 Low" default = rgb(94/255,0/255,40/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max3 caption = "Color Range 3 High" default = rgb(255/255,78/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min3 caption = "Color Range 3 Low" default = rgb(88/255,27/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max4 caption = "Color Range 4 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min4 caption = "Color Range 4 Low" default = rgb(90/255,30/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,31/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min5 caption = "Color Range 5 Low" default = rgb(88/255,38/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min6 caption = "Color Range 6 Low" default = rgb(96/255,57/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max7 caption = "Color Range 7 High" default = rgb(170/255,255/255,37/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min7 caption = "Color Range 7 Low" default = rgb(41/255,68/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,94/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min8 caption = "Color Range 8 Low" default = rgb(0/255,62/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max9 caption = "Color Range 9 High" default = rgb(0/255,238/255,203/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min9 caption = "Color Range 9 Low" default = rgb(0/255,64/255,54/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max10 caption = "Color Range 10 High" default = rgb(11/255,166/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min10 caption = "Color Range 10 Low" default = rgb(0/255,38/255,78/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max11 caption = "Color Range 11 High" default = rgb(0/255,68/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min11 caption = "Color Range 11 Low" default = rgb(0/255,20/255,88/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max12 caption = "Color Range 12 High" default = rgb(99/255,0/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min12 caption = "Color Range 12 Low" default = rgb(47/255,0/255,94/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max13 caption = "Color Range 13 High" default = rgb(145/255,0/255,255/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min13 caption = "Color Range 13 Low" default = rgb(69/255,0/255,102/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max14 caption = "Color Range 14 High" default = rgb(221/255,0/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min14 caption = "Color Range 14 Low" default = rgb(86/255,0/255,100/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max15 caption = "Color Range 15 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min15 caption = "Color Range 15 Low" default = rgb(90/255,0/255,75/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max16 caption = "Color Range 16 High" default = rgb(255/255,0/255,140/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min16 caption = "Color Range 16 Low" default = rgb(96/255,0/255,60/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 24 ;-------------------------------------------------------------------- heading caption = " Default 24 Color Settings" visible = (@customize && @colorPreset == "Default 24") endheading color param default24Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min2 caption = "Color Range 2 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max3 caption = "Color Range 3 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max4 caption = "Color Range 4 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max5 caption = "Color Range 5 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min5 caption = "Color Range 5 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max6 caption = "Color Range 6 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min6 caption = "Color Range 6 Low" default = rgb(96/255,27/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max7 caption = "Color Range 7 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min7 caption = "Color Range 7 Low" default = rgb(100/255,38/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min8 caption = "Color Range 8 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max9 caption = "Color Range 9 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min9 caption = "Color Range 9 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max10 caption = "Color Range 10 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min10 caption = "Color Range 10 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max11 caption = "Color Range 11 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min11 caption = "Color Range 11 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max12 caption = "Color Range 12 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min12 caption = "Color Range 12 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max13 caption = "Color Range 13 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min13 caption = "Color Range 13 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max14 caption = "Color Range 14 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min14 caption = "Color Range 14 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max15 caption = "Color Range 15 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min15 caption = "Color Range 15 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max16 caption = "Color Range 16 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min16 caption = "Color Range 16 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max17 caption = "Color Range 17 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min17 caption = "Color Range 17 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max18 caption = "Color Range 18 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min18 caption = "Color Range 18 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max19 caption = "Color Range 19 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min19 caption = "Color Range 19 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max20 caption = "Color Range 20 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min20 caption = "Color Range 20 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max21 caption = "Color Range 21 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min21 caption = "Color Range 21 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max22 caption = "Color Range 22 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min22 caption = "Color Range 22 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max23 caption = "Color Range 23 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min23 caption = "Color Range 23 Low" default = rgb(64/255,0/255,76/255) hint = "Specifies the color at the low end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max24 caption = "Color Range 24 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min24 caption = "Color Range 24 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Wheel 12 ;-------------------------------------------------------------------- heading caption = " Color Wheel 12 Settings" visible = (@customize && @colorPreset == "Color Wheel 12") endheading color param colorWheel12Max1 caption = "Color Range 1 High" default = rgb(142/255,117/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min1 caption = "Color Range 1 Low" default = rgb(52/255,0/255,100/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max2 caption = "Color Range 2 High" default = rgb(224/255,9/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,84/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max4 caption = "Color Range 4 High" default = rgb(252/255,167/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min4 caption = "Color Range 4 Low" default = rgb(95/255,54/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max5 caption = "Color Range 5 High" default = rgb(190/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min5 caption = "Color Range 5 Low" default = rgb(63/255,84/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max6 caption = "Color Range 6 High" default = rgb(0/255,231/255,213/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min6 caption = "Color Range 6 Low" default = rgb(4/255,62/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max7 caption = "Color Range 7 High" default = rgb(182/255,27/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min7 caption = "Color Range 7 Low" default = rgb(53/255,0/255,92/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max8 caption = "Color Range 8 High" default = rgb(255/255,33/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min8 caption = "Color Range 8 Low" default = rgb(80/255,0/255,53/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max9 caption = "Color Range 9 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min9 caption = "Color Range 9 Low" default = rgb(101/255,25/255,21/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max10 caption = "Color Range 10 High" default = rgb(255/255,241/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min10 caption = "Color Range 10 Low" default = rgb(88/255,69/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max11 caption = "Color Range 11 High" default = rgb(0/255,248/255,103/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min11 caption = "Color Range 11 Low" default = rgb(0/255,83/255,15/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max12 caption = "Color Range 12 High" default = rgb(27/255,119/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min12 caption = "Color Range 12 Low" default = rgb(0/255,31/255,92/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Alhambra 8 ;-------------------------------------------------------------------- heading caption = " Alhambra 8 Settings" visible = (@customize && @colorPreset == "Alhambra 8") endheading color param alhambra8Max1 caption = "Color Range 1 High" default = rgb(15/255,222/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min1 caption = "Color Range 1 Low" default = rgb(0/255,43/255,52/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max2 caption = "Color Range 2 High" default = rgb(255/255,204/255,75/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min2 caption = "Color Range 2 Low" default = rgb(92/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max3 caption = "Color Range 3 High" default = rgb(188/255,152/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min3 caption = "Color Range 3 Low" default = rgb(41/255,0/255,70/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max4 caption = "Color Range 4 High" default = rgb(255/255,155/255,109/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min4 caption = "Color Range 4 Low" default = rgb(95/255,36/255,14/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max5 caption = "Color Range 5 High" default = rgb(121/255,180/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min5 caption = "Color Range 5 Low" default = rgb(0/255,47/255,91/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max6 caption = "Color Range 6 High" default = rgb(255/255,131/255,126/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min6 caption = "Color Range 6 Low" default = rgb(104/255,20/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max7 caption = "Color Range 7 High" default = rgb(33/255,255/255,220/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min7 caption = "Color Range 7 Low" default = rgb(0/255,67/255,49/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max8 caption = "Color Range 8 High" default = rgb(255/255,177/255,93/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min8 caption = "Color Range 8 Low" default = rgb(100/255,44/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Belvedere 8 ;-------------------------------------------------------------------- heading caption = " Belvedere 8 Settings" visible = (@customize && @colorPreset == "Belvedere 8") endheading color param belvedere8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min1 caption = "Color Range 1 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min2 caption = "Color Range 2 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max3 caption = "Color Range 3 High" default = rgb(123/255,201/255,254/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min3 caption = "Color Range 3 Low" default = rgb(0/255,45/255,68/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max4 caption = "Color Range 4 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min4 caption = "Color Range 4 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max5 caption = "Color Range 5 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min5 caption = "Color Range 5 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max6 caption = "Color Range 6 High" default = rgb(0/255,255/255,217/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min6 caption = "Color Range 6 Low" default = rgb(0/255,54/255,46/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max7 caption = "Color Range 7 High" default = rgb(255/255,20/255,70/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min7 caption = "Color Range 7 Low" default = rgb(100/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max8 caption = "Color Range 8 High" default = rgb(95/255,84/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,89/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Bouquet 8 ;-------------------------------------------------------------------- heading caption = " Bouquet 8 Settings" visible = (@customize && @colorPreset == "Bouquet 8") endheading color param bouquet8Max1 caption = "Color Range 1 High" default = rgb(0/255,255/255,131/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min1 caption = "Color Range 1 Low" default = rgb(0/255,84/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max2 caption = "Color Range 2 High" default = rgb(52/255,255/255,198/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min2 caption = "Color Range 2 Low" default = rgb(0/255,82/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max3 caption = "Color Range 3 High" default = rgb(0/255,244/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min3 caption = "Color Range 3 Low" default = rgb(0/255,64/255,74/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max4 caption = "Color Range 4 High" default = rgb(180/255,169/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min4 caption = "Color Range 4 Low" default = rgb(40/255,12/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max5 caption = "Color Range 5 High" default = rgb(251/255,148/255,230/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min5 caption = "Color Range 5 Low" default = rgb(100/255,20/255,67/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max6 caption = "Color Range 6 High" default = rgb(255/255,101/255,140/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min6 caption = "Color Range 6 Low" default = rgb(84/255,15/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max7 caption = "Color Range 7 High" default = rgb(255/255,149/255,111/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min7 caption = "Color Range 7 Low" default = rgb(77/255,36/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max8 caption = "Color Range 8 High" default = rgb(255/255,252/255,125/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min8 caption = "Color Range 8 Low" default = rgb(95/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Switch 8 ;-------------------------------------------------------------------- heading caption = " Color Switch 8 Settings" visible = (@customize && @colorPreset == "Color Switch 8") endheading color param colorSwitch8Max1 caption = "Color Range 1 High" default = rgb(255/255,33/255,52/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min1 caption = "Color Range 1 Low" default = rgb(90/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max2 caption = "Color Range 2 High" default = rgb(61/255,136/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,82/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,44/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min3 caption = "Color Range 3 Low" default = rgb(0/255,70/255,7/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max4 caption = "Color Range 4 High" default = rgb(255/255,131/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min4 caption = "Color Range 4 Low" default = rgb(105/255,40/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max5 caption = "Color Range 5 High" default = rgb(255/255,27/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min5 caption = "Color Range 5 Low" default = rgb(104/255,0/255,78/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max6 caption = "Color Range 6 High" default = rgb(168/255,87/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min6 caption = "Color Range 6 Low" default = rgb(35/255,0/255,58/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min7 caption = "Color Range 7 Low" default = rgb(0/255,60/255,60/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,38/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min8 caption = "Color Range 8 Low" default = rgb(90/255,90/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Evening Sky 8 ;-------------------------------------------------------------------- heading caption = " Evening Sky 8 Settings" visible = (@customize && @colorPreset == "Evening Sky 8") endheading color param eveningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,238/255,222/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min1 caption = "Color Range 1 Low" default = rgb(50/255,35/255,35/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max2 caption = "Color Range 2 High" default = rgb(255/255,226/255,85/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min2 caption = "Color Range 2 Low" default = rgb(85/255,54/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max3 caption = "Color Range 3 High" default = rgb(249/255,148/255,216/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min3 caption = "Color Range 3 Low" default = rgb(79/255,20/255,57/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max4 caption = "Color Range 4 High" default = rgb(159/255,159/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min4 caption = "Color Range 4 Low" default = rgb(22/255,16/255,54/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,175/255,79/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min5 caption = "Color Range 5 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max6 caption = "Color Range 6 High" default = rgb(124/255,190/255,251/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min6 caption = "Color Range 6 Low" default = rgb(13/255,40/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max7 caption = "Color Range 7 High" default = rgb(255/255,111/255,123/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min7 caption = "Color Range 7 Low" default = rgb(57/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max8 caption = "Color Range 8 High" default = rgb(111/255,255/255,245/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min8 caption = "Color Range 8 Low" default = rgb(0/255,60/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fantasia 8 ;-------------------------------------------------------------------- heading caption = " Fantasia 8 Settings" visible = (@customize && @colorPreset == "Fantasia 8") endheading color param fantasia8Max1 caption = "Color Range 1 High" default = rgb(255/255,230/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min1 caption = "Color Range 1 Low" default = rgb(102/255,81/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max2 caption = "Color Range 2 High" default = rgb(230/255,78/255,208/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min2 caption = "Color Range 2 Low" default = rgb(104/255,0/255,52/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max3 caption = "Color Range 3 High" default = rgb(180/255,119/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min3 caption = "Color Range 3 Low" default = rgb(56/255,0/255,82/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max4 caption = "Color Range 4 High" default = rgb(0/255,228/255,150/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min4 caption = "Color Range 4 Low" default = rgb(0/255,50/255,30/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max5 caption = "Color Range 5 High" default = rgb(131/255,148/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min5 caption = "Color Range 5 Low" default = rgb(38/255,31/255,85/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max6 caption = "Color Range 6 High" default = rgb(255/255,182/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min6 caption = "Color Range 6 Low" default = rgb(76/255,40/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max7 caption = "Color Range 7 High" default = rgb(252/255,0/255,113/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min7 caption = "Color Range 7 Low" default = rgb(84/255,0/255,34/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max8 caption = "Color Range 8 High" default = rgb(0/255,232/255,249/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min8 caption = "Color Range 8 Low" default = rgb(0/255,64/255,78/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Flowering Orchard 8 ;-------------------------------------------------------------------- heading caption = " Flowering Orchard 8 Settings" visible = (@customize && @colorPreset == "Flowering Orchard 8") endheading color param floweringOrchard8Max1 caption = "Color Range 1 High" default = rgb(255/255,188/255,213/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min1 caption = "Color Range 1 Low" default = rgb(132/255,30/255,66/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max2 caption = "Color Range 2 High" default = rgb(240/255,135/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min2 caption = "Color Range 2 Low" default = rgb(70/255,0/255,59/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max3 caption = "Color Range 3 High" default = rgb(255/255,75/255,153/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min3 caption = "Color Range 3 Low" default = rgb(104/255,15/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max4 caption = "Color Range 4 High" default = rgb(71/255,213/255,119/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min4 caption = "Color Range 4 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max5 caption = "Color Range 5 High" default = rgb(255/255,102/255,209/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min5 caption = "Color Range 5 Low" default = rgb(116/255,10/255,86/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max6 caption = "Color Range 6 High" default = rgb(154/255,199/255,51/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min6 caption = "Color Range 6 Low" default = rgb(28/255,44/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max7 caption = "Color Range 7 High" default = rgb(255/255,162/255,228/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min7 caption = "Color Range 7 Low" default = rgb(110/255,0/255,55/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max8 caption = "Color Range 8 High" default = rgb(255/255,201/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min8 caption = "Color Range 8 Low" default = rgb(145/255,20/255,54/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Morning Sky 8 ;-------------------------------------------------------------------- heading caption = " Morning Sky 8 Settings" visible = (@customize && @colorPreset == "Morning Sky 8") endheading color param morningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,178/255,217/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min1 caption = "Color Range 1 Low" default = rgb(79/255,29/255,57/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max2 caption = "Color Range 2 High" default = rgb(107/255,246/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min2 caption = "Color Range 2 Low" default = rgb(13/255,70/255,75/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max3 caption = "Color Range 3 High" default = rgb(255/255,199/255,137/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min3 caption = "Color Range 3 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max4 caption = "Color Range 4 High" default = rgb(241/255,245/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min4 caption = "Color Range 4 Low" default = rgb(16/255,24/255,46/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,177/255,188/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min5 caption = "Color Range 5 Low" default = rgb(54/255,14/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max6 caption = "Color Range 6 High" default = rgb(248/255,236/255,236/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min6 caption = "Color Range 6 Low" default = rgb(49/255,38/255,35/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max7 caption = "Color Range 7 High" default = rgb(129/255,201/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min7 caption = "Color Range 7 Low" default = rgb(0/255,56/255,70/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min8 caption = "Color Range 8 Low" default = rgb(89/255,76/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel 8 ;-------------------------------------------------------------------- heading caption = " Pastel 8 Settings" visible = (@customize && @colorPreset == "Pastel 8") endheading color param pastel8Max1 caption = "Color Range 1 High" default = rgb(147/255,255/255,193/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min1 caption = "Color Range 1 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max2 caption = "Color Range 2 High" default = rgb(147/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max3 caption = "Color Range 3 High" default = rgb(148/255,148/255,253/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min3 caption = "Color Range 3 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max4 caption = "Color Range 4 High" default = rgb(199/255,149/255,253/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max5 caption = "Color Range 5 High" default = rgb(255/255,147/255,221/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min5 caption = "Color Range 5 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max6 caption = "Color Range 6 High" default = rgb(254/255,148/255,148/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min6 caption = "Color Range 6 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max7 caption = "Color Range 7 High" default = rgb(255/255,202/255,147/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min7 caption = "Color Range 7 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,147/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min8 caption = "Color Range 8 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel Rainbow 8 ;-------------------------------------------------------------------- heading caption = " Pastel Rainbow 8 Settings" visible = (@customize && @colorPreset == "Pastel Rainbow 8") endheading color param pastelRainbow8Max1 caption = "Color Range 1 High" default = rgb(242/255,246/255,174/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min1 caption = "Color Range 1 Low" default = rgb(20/255,48/255,12/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max2 caption = "Color Range 2 High" default = rgb(182/255,242/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min2 caption = "Color Range 2 Low" default = rgb(20/255,44/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max3 caption = "Color Range 3 High" default = rgb(202/255,202/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min3 caption = "Color Range 3 Low" default = rgb(36/255,36/255,48/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max4 caption = "Color Range 4 High" default = rgb(255/255,170/255,170/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min4 caption = "Color Range 4 Low" default = rgb(89/255,0/255,24/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max5 caption = "Color Range 5 High" default = rgb(255/255,246/255,178/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min5 caption = "Color Range 5 Low" default = rgb(40/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max6 caption = "Color Range 6 High" default = rgb(255/255,238/255,206/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min6 caption = "Color Range 6 Low" default = rgb(52/255,16/255,40/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max7 caption = "Color Range 7 High" default = rgb(214/255,222/255,161/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min7 caption = "Color Range 7 Low" default = rgb(4/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max8 caption = "Color Range 8 High" default = rgb(255/255,230/255,246/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min8 caption = "Color Range 8 Low" default = rgb(70/255,50/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Showtime 8 ;-------------------------------------------------------------------- heading caption = " Showtime 8 Settings" visible = (@customize && @colorPreset == "Showtime 8") endheading color param showtime8Max1 caption = "Color Range 1 High" default = rgb(241/255,53/255,82/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min1 caption = "Color Range 1 Low" default = rgb(88/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max2 caption = "Color Range 2 High" default = rgb(255/255,121/255,52/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min2 caption = "Color Range 2 Low" default = rgb(107/255,29/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max3 caption = "Color Range 3 High" default = rgb(253/255,168/255,67/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min3 caption = "Color Range 3 Low" default = rgb(97/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max4 caption = "Color Range 4 High" default = rgb(255/255,231/255,21/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min4 caption = "Color Range 4 Low" default = rgb(140/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max5 caption = "Color Range 5 High" default = rgb(58/255,219/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min5 caption = "Color Range 5 Low" default = rgb(0/255,36/255,83/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max6 caption = "Color Range 6 High" default = rgb(9/255,116/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min6 caption = "Color Range 6 Low" default = rgb(33/255,30/255,81/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max7 caption = "Color Range 7 High" default = rgb(105/255,71/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min7 caption = "Color Range 7 Low" default = rgb(36/255,0/255,76/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max8 caption = "Color Range 8 High" default = rgb(187/255,32/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min8 caption = "Color Range 8 Low" default = rgb(50/255,0/255,56/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Soleil 8 ;-------------------------------------------------------------------- heading caption = " Soleil 8 Settings" visible = (@customize && @colorPreset == "Soleil 8") endheading color param soleil8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,35/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min1 caption = "Color Range 1 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max2 caption = "Color Range 2 High" default = rgb(255/255,209/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min2 caption = "Color Range 2 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max3 caption = "Color Range 3 High" default = rgb(231/255,237/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min3 caption = "Color Range 3 Low" default = rgb(54/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max4 caption = "Color Range 4 High" default = rgb(255/255,141/255,49/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min4 caption = "Color Range 4 Low" default = rgb(92/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,156/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min5 caption = "Color Range 5 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max6 caption = "Color Range 6 High" default = rgb(255/255,158/255,17/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min6 caption = "Color Range 6 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,217/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min7 caption = "Color Range 7 Low" default = rgb(76/255,41/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max8 caption = "Color Range 8 High" default = rgb(255/255,184/255,53/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min8 caption = "Color Range 8 Low" default = rgb(76/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Chill 8 ;-------------------------------------------------------------------- heading caption = " Chill 8 Settings" visible = (@customize && @colorPreset == "Chill 8") endheading color param chillMax1 caption = "Color Range 1 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin1 caption = "Color Range 1 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax2 caption = "Color Range 2 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax3 caption = "Color Range 3 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin3 caption = "Color Range 3 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax4 caption = "Color Range 4 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax5 caption = "Color Range 5 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin5 caption = "Color Range 5 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax6 caption = "Color Range 6 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax7 caption = "Color Range 7 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin7 caption = "Color Range 7 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax8 caption = "Color Range 8 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cloud Nine 8 ;-------------------------------------------------------------------- heading caption = " Cloud Nine 8 Settings" visible = (@customize && @colorPreset == "Cloud Nine 8") endheading color param cloudNineMax1 caption = "Color Range 1 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin1 caption = "Color Range 1 Low" default = rgb(143/255,60/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax2 caption = "Color Range 2 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin2 caption = "Color Range 2 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax3 caption = "Color Range 3 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin3 caption = "Color Range 3 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax4 caption = "Color Range 4 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin4 caption = "Color Range 4 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax5 caption = "Color Range 5 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin5 caption = "Color Range 5 Low" default = rgb(140/255,63/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax6 caption = "Color Range 6 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin6 caption = "Color Range 6 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax7 caption = "Color Range 7 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin7 caption = "Color Range 7 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax8 caption = "Color Range 8 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin8 caption = "Color Range 8 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for La Terra 8 ;-------------------------------------------------------------------- heading caption = " La Terra 8 Settings" visible = (@customize && @colorPreset == "La Terra 8") endheading color param laTerraMax1 caption = "Color Range 1 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin1 caption = "Color Range 1 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax2 caption = "Color Range 2 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin2 caption = "Color Range 2 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax3 caption = "Color Range 3 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin3 caption = "Color Range 3 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax4 caption = "Color Range 4 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin4 caption = "Color Range 4 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax5 caption = "Color Range 5 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin5 caption = "Color Range 5 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax6 caption = "Color Range 6 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin6 caption = "Color Range 6 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax7 caption = "Color Range 7 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin7 caption = "Color Range 7 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax8 caption = "Color Range 8 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin8 caption = "Color Range 8 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Santa Fe 8 ;-------------------------------------------------------------------- heading caption = " Santa Fe 8 Settings" visible = (@customize && @colorPreset == "Santa Fe 8") endheading color param santaFe8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min1 caption = "Color Range 1 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max2 caption = "Color Range 2 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max3 caption = "Color Range 3 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min3 caption = "Color Range 3 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max4 caption = "Color Range 4 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min4 caption = "Color Range 4 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min5 caption = "Color Range 5 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max6 caption = "Color Range 6 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max7 caption = "Color Range 7 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min7 caption = "Color Range 7 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min8 caption = "Color Range 8 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Spring 8 ;-------------------------------------------------------------------- heading caption = " Spring 8 Settings" visible = (@customize && @colorPreset == "Spring 8") endheading color param spring8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min1 caption = "Color Range 1 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max2 caption = "Color Range 2 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max3 caption = "Color Range 3 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min3 caption = "Color Range 3 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max4 caption = "Color Range 4 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min5 caption = "Color Range 5 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max6 caption = "Color Range 6 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min6 caption = "Color Range 6 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max7 caption = "Color Range 7 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min7 caption = "Color Range 7 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max8 caption = "Color Range 8 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min8 caption = "Color Range 8 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Summer 8 ;-------------------------------------------------------------------- heading caption = " Summer 8 Settings" visible = (@customize && @colorPreset == "Summer 8") endheading color param summer8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min1 caption = "Color Range 1 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max2 caption = "Color Range 2 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min3 caption = "Color Range 3 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max4 caption = "Color Range 4 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min5 caption = "Color Range 5 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max6 caption = "Color Range 6 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min6 caption = "Color Range 6 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min7 caption = "Color Range 7 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max8 caption = "Color Range 8 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fall 8 ;-------------------------------------------------------------------- heading caption = " Fall 8 Settings" visible = (@customize && @colorPreset == "Fall 8") endheading color param fall8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min1 caption = "Color Range 1 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max2 caption = "Color Range 2 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min2 caption = "Color Range 2 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max3 caption = "Color Range 3 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min3 caption = "Color Range 3 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max4 caption = "Color Range 4 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min4 caption = "Color Range 4 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min5 caption = "Color Range 5 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max6 caption = "Color Range 6 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min6 caption = "Color Range 6 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max7 caption = "Color Range 7 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min7 caption = "Color Range 7 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max8 caption = "Color Range 8 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min8 caption = "Color Range 8 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Winter 8 ;-------------------------------------------------------------------- heading caption = " Winter 8 Settings" visible = (@customize && @colorPreset == "Winter 8") endheading color param winter8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min1 caption = "Color Range 1 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max2 caption = "Color Range 2 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min2 caption = "Color Range 2 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max3 caption = "Color Range 3 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min3 caption = "Color Range 3 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max4 caption = "Color Range 4 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min4 caption = "Color Range 4 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min5 caption = "Color Range 5 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max6 caption = "Color Range 6 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min6 caption = "Color Range 6 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max7 caption = "Color Range 7 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min7 caption = "Color Range 7 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max8 caption = "Color Range 8 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min8 caption = "Color Range 8 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Mojave 8 ;-------------------------------------------------------------------- heading caption = " Mojave 8 Settings" visible = (@customize && @colorPreset == "Mojave 8") endheading color param mojave8Max1 caption = "Color Range 1 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min1 caption = "Color Range 1 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max2 caption = "Color Range 2 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min2 caption = "Color Range 2 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max3 caption = "Color Range 3 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min3 caption = "Color Range 3 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max4 caption = "Color Range 4 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min4 caption = "Color Range 4 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max5 caption = "Color Range 5 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min5 caption = "Color Range 5 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max6 caption = "Color Range 6 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min6 caption = "Color Range 6 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max7 caption = "Color Range 7 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min7 caption = "Color Range 7 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max8 caption = "Color Range 8 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min8 caption = "Color Range 8 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green 8 Settings" visible = (@customize && @colorPreset == "Gold/Green 8") endheading color param goldGreen8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max5 caption = "Color Range 5 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min5 caption = "Color Range 5 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max7 caption = "Color Range 7 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min7 caption = "Color Range 7 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Green Alt 8") endheading color param goldGreenAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max4 caption = "Color Range 4 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver 8") endheading color param goldSilver8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min5 caption = "Color Range 5 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min7 caption = "Color Range 7 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endheading color param goldSilverAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min2 caption = "Color Range 2 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min4 caption = "Color Range 4 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 8") endheading color param purpleYellow8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max2 caption = "Color Range 2 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min2 caption = "Color Range 2 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max4 caption = "Color Range 4 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min5 caption = "Color Range 5 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min7 caption = "Color Range 7 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow Alt 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow Alt 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endheading color param purpleYellowAlt8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min4 caption = "Color Range 4 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max5 caption = "Color Range 5 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min5 caption = "Color Range 5 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max7 caption = "Color Range 7 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min7 caption = "Color Range 7 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue 8") endheading color param silverBlue8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min4 caption = "Color Range 4 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max5 caption = "Color Range 5 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min5 caption = "Color Range 5 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max7 caption = "Color Range 7 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue Alt 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue Alt 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endheading color param silverBlueAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max4 caption = "Color Range 4 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min5 caption = "Color Range 5 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min7 caption = "Color Range 7 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fourth of July 3 ;-------------------------------------------------------------------- heading caption = " Fourth of July 3 Settings" visible = (@customize && @colorPreset == "Fourth of July 3") endheading color param fourthOfJuly3Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min1 caption = "Color Range 1 Low" default = rgb(128/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min3 caption = "Color Range 3 Low" default = rgb(128/255,128/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/Silver 2 ;-------------------------------------------------------------------- heading caption = " Blue/Silver 2 Settings" visible = (@customize && @colorPreset == "Blue/Silver 2") endheading color param blueSilver2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/White 2 ;-------------------------------------------------------------------- heading caption = " Blue/White 2 Settings" visible = (@customize && @colorPreset == "Blue/White 2") endheading color param blueWhite2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min2 caption = "Color Range 2 Low" default = rgb(124/255,124/255,124/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Magenta 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Magenta 2 Settings" visible = (@customize && @colorPreset == "Cyan/Magenta 2") endheading color param cyanMagenta2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Max2 caption = "Color Range 2 High" default = rgb(255/255,128/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Yellow 2 Settings" visible = (@customize && @colorPreset == "Cyan/Yellow 2") endheading color param cyanYellow2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 2 ;-------------------------------------------------------------------- heading caption = " Gold/Green 2 Settings" visible = (@customize && @colorPreset == "Gold/Green 2") endheading color param goldGreen2Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 2 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 2") endheading color param purpleYellow2Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Red/Tan 2 ;-------------------------------------------------------------------- heading caption = " Red/Tan 2 Settings" visible = (@customize && @colorPreset == "Red/Tan 2") endheading color param redTan2Max1 caption = "Color Range 1 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min1 caption = "Color Range 1 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Max2 caption = "Color Range 2 High" default = rgb(255/255,208/255,152/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min2 caption = "Color Range 2 Low" default = rgb(128/255,108/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam param highlight_type caption = "Color Highlight Type" default = 1 enum = "none" "linear" "log" "exponential" hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param extent caption = "Highlight Extent" default = 0.05 min = 0.0 max = 0.5 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param hblend caption = "Highlight power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam color param hcolor caption = "Highlight color" default = rgb(255/255,255/255,255/255) visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param scale caption = "color scale adj" default = 1.0 endparam float param cblend caption = "color blend power" default = 3.0 visible = @colorPreset != "Gradient" endparam param method caption = "color method" enum = "level" "size" "index" "position" "generator" "size threshold" default = 0 endparam param rthresh caption = "Size thresh" default = 0.01 visible = @method == 5 && @version >= 338 endparam param adj caption = "color methd adj" default = 1.0 endparam float param luminanceUpper caption = "Lum. Upper Value" default = 0.5 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the upper value \ when generating the ranges from the gradient. This value \ is used with the brighter end of the color range." visible = (@colorPreset == "Generate") endparam float param luminanceLower caption = "Lum. Lower Value" default = 0.0 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the lower value \ when generating the ranges from the gradient. This value \ is used with the darker end of the color range." visible = (@colorPreset == "Generate") endparam int param totalColors caption = "# Colors in Gradient" default = 8 min = 1 max = 8 visible = (@colorPreset == "Gradient") endparam int param ncolor caption = "# Colors to Use" default = 8 min = 1 max = 24 visible = (@colorPreset != "Generate") endparam int param colorRanges caption = "Number of Ranges" default = 8 min = 1 max = 24 hint = "The number of color ranges (1..24)." visible = (@colorPreset == "Custom") endparam int param numRanges caption = "Number of Ranges" default = 8 min = 1 max = 500 hint = "The number of color ranges." visible = (@colorPreset == "Generate") endparam param perturbRanges caption = "Perturb Ranges" enum = "None" "Even/Odd" "1st Half / 2nd Half" "8 Range Custom" default = 0 hint = "Modify the way the ranges are assigned to the elements. \ 'None' = Assign in Order (0 1 2 3 4 5 6 7); 'Even Odd' = \ Assign Even Ranges, then Odd Ranges (0 2 4 6 1 3 5 7); \ '1st Half / 2nd Half' = Assign from first half of range, \ then 2nd half (0 4 1 5 2 6 3 7); '8 Range Custom' = Assign \ the ordering by entering digits 1-8. Only works for ranges \ with 8 colors." visible = ((@colorPreset == "Custom" && @colorRanges >= 3) || \ (@colorPreset == "Generate" && @numRanges >= 3) || \ (@colorPreset != "Custom" && @colorPreset != "Generate" && \ @colorPreset != "Gradient")) endparam int param rangeOrder caption = "Range Order" default = 12345678 min = 11111111 max = 88888888 hint = "Specify the color range ordering. Use digits 1-8 to specify \ the order the ranges will be used. For example, to reverse \ the ordering, specify 87654321. To alternate, use 13572468. \ If color map or preset is defined that does not contain exactly \ 8 ranges, then this parameter will not have any effect." visible = (@perturbRanges == "8 Range Custom") endparam int param colorOffset caption = "Range Offset" default = 0 min = 0 max = 23 hint = "This is used to rotate the color ranges. The offset can \ range from 0 to 23, where 23 is the maximum number of ranges \ that can be specified using the 'Generate' Color Preset." visible = (@colorPreset != "Gradient") endparam $ifdef VER40 heading caption = "Camera Settings" expanded = false endheading heading text = "Camera Origin" endheading $else heading caption = "Camera Settings" endheading heading caption = " Camera Origin" endheading $endif float param camerax caption = " X" default = 0.5 endparam float param cameray caption = " Y" default = -1.4 endparam float param cameraz caption = " Z" default = 10 endparam $ifdef VER40 heading text = "Camera Point At" endheading $else heading caption = " Camera Point At" endheading $endif float param cpointx caption = " X" default = 1.0 endparam float param cpointy caption = " Y" default = 0.7 endparam float param vplane caption = " Z" default = 2.0 endparam heading caption = "Illumination" endheading param ltype caption = "Light type" default = 1 enum = "Point source" "Spotlight" "Infinite light" endparam param angle caption = "Light Rotation" default = -60 hint = "Gives the rotation of the light source, in degrees." visible=@ltype == "Infinite light" endparam param elevation caption = "Light Elevation" default = 60 hint = "Gives the elevation of the light source, in degrees." visible=@ltype == "Infinite light" endparam $ifdef VER40 heading text = "Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lpointx caption = " X" default = 1 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lpointy caption = " Y" default = 3 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lplane caption = " Z" default = 5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam $ifdef VER40 heading text = "Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lightx caption = " X" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lighty caption = " Y" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lightz caption = " Z" default = 0.0 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param spotrad caption = "Spotlight radius" default = 0.25 visible=@ltype=="Spotlight" endparam param spottype caption = "Spotlight focus" default = 0 enum = "Set focus" "Sharp" visible=@ltype=="Spotlight" endparam float param setfocus default = 1.0 visible=@ltype=="Spotlight"&& @spottype == "Set focus" endparam float param sdis caption = "Sphere brightness" default = 2.0 visible=@ltype=="Point source" || @ltype=="Spotlight" endparam float param dis caption = "Floor brightness" default = 1.0 visible=@floor==true && (@ltype=="Point source" || @ltype=="Spotlight") endparam param ambient caption = "Ambient light" default = 0.05 max = 1.0 min = 0.0 endparam color param amcolor caption = "Ambient color" default = rgb(192/255,192/255,192/255) endparam float param am caption = "Shadow level" default = 0.4 min = 0.0 max = 1.0 endparam heading caption = "Reflection parameters" endheading bool param reflect caption = "Show reflections" default = false endparam float param kr caption = "Reflect param" default = 1.0 min = 0.0 max = 1.0 visible=@reflect==true endparam float param krf caption = "Floor reflect param" default = 0.2 min = 0.0 max = 1.0 visible=@reflect==true endparam float param floorreflect caption = "Floor reflect dist" default = 1.0 visible=@reflect==true endparam param blendval caption = "Blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflect==true endparam param rblend caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @reflect==true endparam float param hrblend caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @reflect==true endparam param reflectf caption="Reflection off floor" default = false visible = @reflect==true endparam param blendvalf caption = "Floor blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflectf==true endparam heading caption = "Transparency parameters" endheading bool param tparent caption = "Set transparency" default = false endparam param tparentval caption = "Transparency (0-1)" default = 0.5 min = 0.0 max = 1.0 visible=@tparent==true endparam param rfi caption = "Refractive index" default = 1.5 min = 1.0 max = 4 visible=@tparent==true endparam float param krt caption = "Refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param krft caption = "Floor refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param floorrefract caption = "Floor refract dist" default = 1.0 visible=@tparent==true endparam param rblendt caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @tparent==true endparam float param hrblendt caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @tparent==true endparam param tmerge caption = "Refract merge mode" enum = "Normal" "Screen" "Hard Light" "Lighten" "Addition" default = 0 visible=@tparent==true endparam $ifdef VER40 heading text = "More realistic transparent coloring can often be obtained \ by switching colors." visible=@tparent==true && @colorPreset != "Gradient" endheading $endif bool param switch caption = "switch colors" default = false visible=@tparent==true && @colorPreset != "Gradient" endparam heading caption = "Floor Settings" endheading bool param floor caption ="Add floor" default = true endparam float param fa caption = "X direction" default = 0.0 visible=@floor==true endparam float param fb caption = "Y direction" default = 1.0 visible=@floor==true endparam float param fc caption = "Z direction" default = 0.0 visible=@floor==true endparam float param fd caption = "Position" default = -0.9 visible=@floor==true endparam heading caption = "Floor Patterns" endheading param flrtype caption = "Floor Type" default = 0 enum = "Checkerboard" "Fractal" "Plain" visible=@floor==true endparam float param checkscale caption = "Pattern scale" default = 0.3 max = 1.0 min = 0.01 visible=@floor==true && @flrtype != "Plain" endparam complex param poffset caption = "Pattern offset" default = (0,0) visible=@floor==true && @flrtype != "Plain" endparam param fctltype caption = "Fractal Type" default = 4 enum = "Barnsley" "Cayley Julia" "Gopalsamy" "Julia" "Mandelbrot" "Newton" "Phoenix" visible=@floor==true && @flrtype == "Fractal" endparam color param flrcolor caption = "Floor color #1" default = rgba(0/255,0/255,139/255,1) visible=@floor==true && (@flrtype == "Checkerboard" || @flrtype == "Plain") endparam color param flrcolor2 caption = "Floor color #2" default = rgba(176/255,224/255,230/255,1) visible=@floor==true && @flrtype == "Checkerboard" endparam param cmethod caption = "Converge method" default = 2 enum = "Halley" "Householder" "Newton" "Schroder" visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam param color_mode caption = "Color mode" default = 0 enum = "Distance" "Iteration" visible=@floor==true && @flrtype == "Fractal" && @colormethod != "Exponential smoothing" endparam param colormethod caption = "Trap" enum = "Exponential smoothing" "Simple traps" "Orbit traps" default = 0 visible=@floor==true && @flrtype == "Fractal" endparam param traptype caption = "Trap type" enum = "Arachnida2" "Archimedes" "Atzema spiral" "Butterfly" "Cardoid" \ "Ceil_floor" "Cf_plus" "Conchoid" "Cycloid" "Ellipse Catacaustic" \ "Gear" "Lemniscate" "Log spiral" "Maltese cross" "Product" "Quotient1" \ "Quotient2" "Rose" "Rose of Troy" "Serpentine" "Sum" "Tr_plus" \ "Trefoil" "Trifolium" "Trisectrix of Maclaurin" "Trunc_round" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" endparam param traptype2 caption = "Trap type" enum = "Astroid" "Box" "Cross" "Diamond" "Egg" "Heart" "Hyperbola" "Hypercross" \ "Lines" "Mirrored waves" "Pinch" "Point" "Spiral"\ "Radial waves" "Rectangle" "Ring" "Waves" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param pa caption = "Polar parameter" default = 0.2 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Lemniscate" ||@traptype == "Cardoid" \ ||@traptype == "Conchoid"||@traptype == "Log spiral"|| \ @traptype == "Rose"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Butterfly"||@traptype == "Gear" \ ||@traptype == "Arachnida2"||@traptype == "Maltese cross" \ ||@traptype == "Trifolium"||@traptype == "Serpentine" \ ||@traptype == "Trefoil"||@traptype == "Trisectrix of Maclaurin" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pb caption = "2nd polar parameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Conchoid"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Gear"||@traptype == "Serpentine" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pc caption = "3rd Polar parameter" default = 0.05 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && @traptype == "Rose of Troy" endparam param pn caption = "Polar integer" default = 3 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Gear" || @traptype == "Arachnida2") endparam param diameter caption = "Trap diameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Ring" || @traptype2 == "Egg" || \ @traptype2 == "Hyperbola" || @traptype2 == "Lines" ||\ @traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves"|| @traptype2 == "Spiral"\ || @traptype2 == "Heart") endparam param torder caption = "Trap order" default = 4.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Pinch" ||@traptype2 == "Egg" || \ @traptype2 == "Astroid" ||@traptype2 == "Waves"|| \ @traptype2 == "Mirrored Waves" || @traptype2 == "Radial Waves") endparam param tfreq caption = "Trap frequency" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves") endparam bool param mask caption = "Use mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam $ifdef VER40 heading text = "'Reverse mask' overrides 'Mask'." visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endheading $endif bool param rmask caption = "Use reverse mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param threshold caption = "Mask threshold" default = 0.1 visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param tcenter caption = "Trap center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param tasp caption = "Trap aspect" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param trot caption = "Trap rotation" default = 0.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam color param icolor caption = "Inside color" default = rgb(0,0,0) visible=@floor==true && @flrtype == "Fractal" endparam int param miter caption = "Maximum iterations" default = 100 visible=@floor==true && @flrtype == "Fractal" endparam complex param seed caption = "Seed" default = (-0.75,0.2) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Julia" endparam complex param cseed caption = "Seed" default = (0.360968017578125,0.00074462890625) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param phseed caption = "Seed" default = (0.56667, -0.5) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Phoenix" endparam complex param gseed caption = "Seed" default = (-0.19, -0.19) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Gopalsamy" endparam complex param bseed caption = "Seed" default = (1.025, 0.9875) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Barnsley" endparam complex param p1 caption = "Newton power" default = (3.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param mp1 caption = "Power" default = (2.0,0.0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Mandelbrot" || \ @fctltype == "Julia") endparam complex param p2 caption = "Newton root" default = (1.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param fmcenter caption = "Fractal center" default = (-0.5,0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Mandelbrot" endparam complex param fccenter caption = "Fractal center" default = (-0.0005781248605,0.0022031248985) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param fcenter caption = "Fractal center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Julia" || \ @fctltype == "Newton" || @fctltype == "Phoenix" || @fctltype == "Barnsley" \ || @fctltype == "Gopalsamy") endparam float param fmag caption = "Fractal magnification" default = 1.0 visible=@floor==true && @flrtype == "Fractal" endparam float param bailout caption = "Bailout" default = 10000 visible=@floor==true && @flrtype == "Fractal" endparam float param spread caption = "Color spread" default = 0.5 visible=@floor==true && @flrtype == "Fractal" endparam float param shift caption = "Color shift" default = 0.0 visible=@floor==true && @flrtype == "Fractal" endparam bool param fbound caption ="Floor boundaries?" default = false visible=@floor==true endparam float param leftbound caption ="Left boundary" default = 0.05 visible=@floor==true && @fbound == true endparam float param rightbound caption ="Right boundary" default = 0.95 visible=@floor==true && @fbound == true endparam float param topbound caption ="Top boundary" default = 2.0 visible=@floor==true && @fbound == true endparam float param bottombound caption ="Bottom boundary" default = -2.0 visible=@floor==true && @fbound == true endparam } FormulaRayTrace {; Ron Barnett June 30, 2005 ; Direct coloring methods added by Ken Childress. ; Modifications for highlighting added by Ron Barnett ; Reflections code added ; Susan Chambless' mapping code added June 2, 2005 ; Transparency/Refraction, relections from spheres ; to the floor, more fractal types added November 15,2005 $define debug global: ; ; rotz has same sense as standard UF rotation ; complex rotz = cos(#angle) + flip(sin(#angle)) complex roty = (0,1)^(@zangle/90) complex rotx = (0,1)^(@xangle/90) complex temp = 0 float csx[1000000] float csy[1000000] float csz[1000000] float clr[1000000] float checkscale = @checkscale/#width*30 color colorswitch = rgb(0,0,0) float frac[#width, #height] int i = 0 int j = 0 int k = 0 float kr = @kr float krf = @krf float krt = @krt float krft = @krft if @tparent kr = kr*(1-@tparentval) krf = krf*(1-@tparentval) krt = krt*@tparentval krft = krft*@tparentval endif float kt = 0 float kp = 0 float mxi = 0 float fi = 0 float fj = 0 float expiter = 0 complex fij = 0 complex oldf = 0 complex fz = 0 complex fzp = 0 complex fzp2 = 0 float pwrtest = 10^(100/cabs(@p1)) bool bTest = false float isnear = cabs(@p2)^cabs(@p1)/@bailout complex fcenter = 0 float asp = #height/#width complex phx = 0 complex phy = 0 complex gx = 0 complex gx1 = 0 complex gy = 0 float trap = 0 float closest = 1e318 complex ez = 0 float trapd = 0.0 float trapd2 = 0.0 complex trapz2 = (0,0) complex trapr = (0,1)^(@trot/90.0) complex trapcenter2 = @tcenter complex r0 = (0,0) complex rh = (0,1)^(@torder/8) complex zh = (0,0) float theta = 0 float rr = 0 float af1 = 0 float af2 = 0 complex astroid = 0 int trap_iter = 0 if @flrtype == "Fractal" if @fctltype == "Mandelbrot" fcenter = @fmcenter while i < #width fi = (i*4/(#width)-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/(#height) - 2)/@fmag + imag(fcenter) fij = 0 while k < @miter fij = fij^@mp1+fi+flip(fj) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Julia" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter fij = fij^@mp1+@seed if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Newton" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^@p1 - @p2 fzp = @p1*fij^(@p1-1) fzp2 = @p1*(@p1-1)*fij^(@p1-2) if @cmethod == "Newton" fij = fij - fz/fzp elseif @cmethod == "Householder" fij = fij - fz/fzp*(1 + fz*fzp2/(2*fzp^2)) elseif @cmethod == "Halley" fij = fij - 2*fz*fzp/(2*fzp^2 - fz*fzp2) elseif @cmethod == "Schroder" fij = fij - fz*fzp/(fzp^2 - fz*fzp2) endif btest = (cabs(oldf-fij) < isnear) if !(!btest && (cabs(fij) < pwrtest)) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(!btest && (cabs(fij) < pwrtest)) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Cayley Julia" closest = 1e318 fcenter = @fccenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^3 - @cseed*fij - @cseed + 1 fzp = 3*fij^2 - @cseed fij = fij - fz/fzp btest = (cabs(oldf-fij) < isnear) if !(|fij - oldf| >= 1/@bailout) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(|fij - oldf| >= 1/@bailout) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Phoenix" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter phx = fij*fij + real(@phseed) + imag(@phseed)*phy phy = fij fij = phx if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 phx = 0 phy = 0 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Gopalsamy" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter gx = real(fij) gy = imag(fij) gx1 = -2*gx*gy + @gseed gy = gy*gy - gx*gx fij = gx1 + flip(gy) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Barnsley" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter IF real(fij) >= 0 fij = (fij - 1) * @bseed ELSE fij = (fij + 1) * @bseed ENDIF if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile endif endif i = 1 j = 0 int iii = 0 float fx = 0.0 float ffx = 0.0 float fy = 0.0 float ffy = 0.0 float zz = 0.0 float ffz = 0.0 if @version < 122 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float tzmax = sqrt(txmax^2+tymax^2) float zmin = sqrt(xmin^2 + ymin^2) else float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float tzmax = tymax float zmin = xmin endif ; floor parameters float fa = @fa float fb = @fb float fc = @fc float fd = @fd*#width*asp float radius = 0 float fscale = 0 float xlimit = 0 float ylimit = 0 float umin = 0 float vmin = 0 float rds = 0 float u = 0 float v = 0 float ustep = 0 float vstep = 0 int k = 0 float kr = 0 float sr = 0 float ru = 0 float rv = 0 ; Color range variables and initialization. color colorMap [10000, 2] int ranges = 8 int colorsUsed = 0 int offset = 0 if (@colorPreset == "Gradient") colorsUsed = @ncolor elseif (@colorPreset == "Generate") colorsUsed = @numRanges elseif (@colorPreset == "Custom") colorsUsed = @colorRanges else colorsUsed = @ncolor endif if (@colorPreset == "Gradient") ; Use the gradient for the color ranges. ranges = @totalColors offset = 0 elseif (@colorPreset == "Custom") ; User specified custom range. ; Initial values by Toby Marshall. colorMap [0,0] = @colorMax1, colorMap [0,1] = @colorMin1 colorMap [1,0] = @colorMax2, colorMap [1,1] = @colorMin2 colorMap [2,0] = @colorMax3, colorMap [2,1] = @colorMin3 colorMap [3,0] = @colorMax4, colorMap [3,1] = @colorMin4 colorMap [4,0] = @colorMax5, colorMap [4,1] = @colorMin5 colorMap [5,0] = @colorMax6, colorMap [5,1] = @colorMin6 colorMap [6,0] = @colorMax7, colorMap [6,1] = @colorMin7 colorMap [7,0] = @colorMax8, colorMap [7,1] = @colorMin8 colorMap [8,0] = @customMax9, colorMap [8,1] = @customMin9 colorMap [9,0] = @customMax10, colorMap [9,1] = @customMin10 colorMap [10,0] = @customMax11, colorMap [10,1] = @customMin11 colorMap [11,0] = @customMax12, colorMap [11,1] = @customMin12 colorMap [12,0] = @customMax13, colorMap [12,1] = @customMin13 colorMap [13,0] = @customMax14, colorMap [13,1] = @customMin14 colorMap [14,0] = @customMax15, colorMap [14,1] = @customMin15 colorMap [15,0] = @customMax16, colorMap [15,1] = @customMin16 colorMap [16,0] = @customMax17, colorMap [16,1] = @customMin17 colorMap [17,0] = @customMax18, colorMap [17,1] = @customMin18 colorMap [18,0] = @customMax19, colorMap [18,1] = @customMin19 colorMap [19,0] = @customMax20, colorMap [19,1] = @customMin20 colorMap [20,0] = @customMax21, colorMap [20,1] = @customMin21 colorMap [21,0] = @customMax22, colorMap [21,1] = @customMin22 colorMap [22,0] = @customMax23, colorMap [22,1] = @customMin23 colorMap [23,0] = @customMax24, colorMap [23,1] = @customMin24 ranges = @colorRanges offset = @colorOffset elseif (@colorPreset == "Generate") ; Compute the color ranges using the gradient. ranges = 0 offset = @colorOffset while ranges < @numRanges color gradientColor = gradient(ranges/@numRanges) colorMap [ranges,0] = hsl(hue(gradientColor), sat(gradientColor), @luminanceUpper) colorMap [ranges,1] = hsl(hue(gradientColor), sat(gradientColor), @luminanceLower) ranges = ranges + 1 endwhile elseif (@colorPreset == "Default") ; colorMap [0,0] = @defaultMax1, colorMap [0,1] = @defaultMin1 colorMap [1,0] = @defaultMax2, colorMap [1,1] = @defaultMin2 colorMap [2,0] = @defaultMax3, colorMap [2,1] = @defaultMin3 colorMap [3,0] = @defaultMax4, colorMap [3,1] = @defaultMin4 colorMap [4,0] = @defaultMax5, colorMap [4,1] = @defaultMin5 colorMap [5,0] = @defaultMax6, colorMap [5,1] = @defaultMin6 colorMap [6,0] = @defaultMax7, colorMap [6,1] = @defaultMin7 colorMap [7,0] = @defaultMax8, colorMap [7,1] = @defaultMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Default 12") ; Created by Toby Marshall. colorMap [0,0] = @default12Max1, colorMap [0,1] = @default12Min1 colorMap [1,0] = @default12Max2, colorMap [1,1] = @default12Min2 colorMap [2,0] = @default12Max3, colorMap [2,1] = @default12Min3 colorMap [3,0] = @default12Max4, colorMap [3,1] = @default12Min4 colorMap [4,0] = @default12Max5, colorMap [4,1] = @default12Min5 colorMap [5,0] = @default12Max6, colorMap [5,1] = @default12Min6 colorMap [6,0] = @default12Max7, colorMap [6,1] = @default12Min7 colorMap [7,0] = @default12Max8, colorMap [7,1] = @default12Min8 colorMap [8,0] = @default12Max9, colorMap [8,1] = @default12Min9 colorMap [9,0] = @default12Max10, colorMap [9,1] = @default12Min10 colorMap [10,0] = @default12Max11, colorMap [10,1] = @default12Min11 colorMap [11,0] = @default12Max12, colorMap [11,1] = @default12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Default 16") ; Created by Toby Marshall. colorMap [0,0] = @default16Max1, colorMap [0,1] = @default16Min1 colorMap [1,0] = @default16Max2, colorMap [1,1] = @default16Min2 colorMap [2,0] = @default16Max3, colorMap [2,1] = @default16Min3 colorMap [3,0] = @default16Max4, colorMap [3,1] = @default16Min4 colorMap [4,0] = @default16Max5, colorMap [4,1] = @default16Min5 colorMap [5,0] = @default16Max6, colorMap [5,1] = @default16Min6 colorMap [6,0] = @default16Max7, colorMap [6,1] = @default16Min7 colorMap [7,0] = @default16Max8, colorMap [7,1] = @default16Min8 colorMap [8,0] = @default16Max9, colorMap [8,1] = @default16Min9 colorMap [9,0] = @default16Max10, colorMap [9,1] = @default16Min10 colorMap [10,0] = @default16Max11, colorMap [10,1] = @default16Min11 colorMap [11,0] = @default16Max12, colorMap [11,1] = @default16Min12 colorMap [12,0] = @default16Max13, colorMap [12,1] = @default16Min13 colorMap [13,0] = @default16Max14, colorMap [13,1] = @default16Min14 colorMap [14,0] = @default16Max15, colorMap [14,1] = @default16Min15 colorMap [15,0] = @default16Max16, colorMap [15,1] = @default16Min16 ranges = 16 offset = @colorOffset elseif (@colorPreset == "Default 24") ; Created by Toby Marshall. colorMap [0,0] = @default24Max1, colorMap [0,1] = @default24Min1 colorMap [1,0] = @default24Max2, colorMap [1,1] = @default24Min2 colorMap [2,0] = @default24Max3, colorMap [2,1] = @default24Min3 colorMap [3,0] = @default24Max4, colorMap [3,1] = @default24Min4 colorMap [4,0] = @default24Max5, colorMap [4,1] = @default24Min5 colorMap [5,0] = @default24Max6, colorMap [5,1] = @default24Min6 colorMap [6,0] = @default24Max7, colorMap [6,1] = @default24Min7 colorMap [7,0] = @default24Max8, colorMap [7,1] = @default24Min8 colorMap [8,0] = @default24Max9, colorMap [8,1] = @default24Min9 colorMap [9,0] = @default24Max10, colorMap [9,1] = @default24Min10 colorMap [10,0] = @default24Max11, colorMap [10,1] = @default24Min11 colorMap [11,0] = @default24Max12, colorMap [11,1] = @default24Min12 colorMap [12,0] = @default24Max13, colorMap [12,1] = @default24Min13 colorMap [13,0] = @default24Max14, colorMap [13,1] = @default24Min14 colorMap [14,0] = @default24Max15, colorMap [14,1] = @default24Min15 colorMap [15,0] = @default24Max16, colorMap [15,1] = @default24Min16 colorMap [16,0] = @default24Max17, colorMap [16,1] = @default24Min17 colorMap [17,0] = @default24Max18, colorMap [17,1] = @default24Min18 colorMap [18,0] = @default24Max19, colorMap [18,1] = @default24Min19 colorMap [19,0] = @default24Max20, colorMap [19,1] = @default24Min20 colorMap [20,0] = @default24Max21, colorMap [20,1] = @default24Min21 colorMap [21,0] = @default24Max22, colorMap [21,1] = @default24Min22 colorMap [22,0] = @default24Max23, colorMap [22,1] = @default24Min23 colorMap [23,0] = @default24Max24, colorMap [23,1] = @default24Min24 ranges = 24 offset = @colorOffset elseif (@colorPreset == "Color Wheel 12") ; Created by Toby Marshall. colorMap [0,0] = @colorWheel12Max1, colorMap [0,1] = @colorWheel12Min1 colorMap [1,0] = @colorWheel12Max2, colorMap [1,1] = @colorWheel12Min2 colorMap [2,0] = @colorWheel12Max3, colorMap [2,1] = @colorWheel12Min3 colorMap [3,0] = @colorWheel12Max4, colorMap [3,1] = @colorWheel12Min4 colorMap [4,0] = @colorWheel12Max5, colorMap [4,1] = @colorWheel12Min5 colorMap [5,0] = @colorWheel12Max6, colorMap [5,1] = @colorWheel12Min6 colorMap [6,0] = @colorWheel12Max7, colorMap [6,1] = @colorWheel12Min7 colorMap [7,0] = @colorWheel12Max8, colorMap [7,1] = @colorWheel12Min8 colorMap [8,0] = @colorWheel12Max9, colorMap [8,1] = @colorWheel12Min9 colorMap [9,0] = @colorWheel12Max10, colorMap [9,1] = @colorWheel12Min10 colorMap [10,0] = @colorWheel12Max11, colorMap [10,1] = @colorWheel12Min11 colorMap [11,0] = @colorWheel12Max12, colorMap [11,1] = @colorWheel12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Alhambra 8") ; Created by Toby Marshall. colorMap [0,0] = @alhambra8Max1, colorMap [0,1] = @alhambra8Min1 colorMap [1,0] = @alhambra8Max2, colorMap [1,1] = @alhambra8Min2 colorMap [2,0] = @alhambra8Max3, colorMap [2,1] = @alhambra8Min3 colorMap [3,0] = @alhambra8Max4, colorMap [3,1] = @alhambra8Min4 colorMap [4,0] = @alhambra8Max5, colorMap [4,1] = @alhambra8Min5 colorMap [5,0] = @alhambra8Max6, colorMap [5,1] = @alhambra8Min6 colorMap [6,0] = @alhambra8Max7, colorMap [6,1] = @alhambra8Min7 colorMap [7,0] = @alhambra8Max8, colorMap [7,1] = @alhambra8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Belvedere 8") ; Created by Toby Marshall. colorMap [0,0] = @belvedere8Max1, colorMap [0,1] = @belvedere8Min1 colorMap [1,0] = @belvedere8Max2, colorMap [1,1] = @belvedere8Min2 colorMap [2,0] = @belvedere8Max3, colorMap [2,1] = @belvedere8Min3 colorMap [3,0] = @belvedere8Max4, colorMap [3,1] = @belvedere8Min4 colorMap [4,0] = @belvedere8Max5, colorMap [4,1] = @belvedere8Min5 colorMap [5,0] = @belvedere8Max6, colorMap [5,1] = @belvedere8Min6 colorMap [6,0] = @belvedere8Max7, colorMap [6,1] = @belvedere8Min7 colorMap [7,0] = @belvedere8Max8, colorMap [7,1] = @belvedere8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Bouquet 8") ; Created by Toby Marshall. colorMap [0,0] = @bouquet8Max1, colorMap [0,1] = @bouquet8Min1 colorMap [1,0] = @bouquet8Max2, colorMap [1,1] = @bouquet8Min2 colorMap [2,0] = @bouquet8Max3, colorMap [2,1] = @bouquet8Min3 colorMap [3,0] = @bouquet8Max4, colorMap [3,1] = @bouquet8Min4 colorMap [4,0] = @bouquet8Max5, colorMap [4,1] = @bouquet8Min5 colorMap [5,0] = @bouquet8Max6, colorMap [5,1] = @bouquet8Min6 colorMap [6,0] = @bouquet8Max7, colorMap [6,1] = @bouquet8Min7 colorMap [7,0] = @bouquet8Max8, colorMap [7,1] = @bouquet8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Color Switch 8") ; Created by Toby Marshall. colorMap [0,0] = @colorSwitch8Max1, colorMap [0,1] = @colorSwitch8Min1 colorMap [1,0] = @colorSwitch8Max2, colorMap [1,1] = @colorSwitch8Min2 colorMap [2,0] = @colorSwitch8Max3, colorMap [2,1] = @colorSwitch8Min3 colorMap [3,0] = @colorSwitch8Max4, colorMap [3,1] = @colorSwitch8Min4 colorMap [4,0] = @colorSwitch8Max5, colorMap [4,1] = @colorSwitch8Min5 colorMap [5,0] = @colorSwitch8Max6, colorMap [5,1] = @colorSwitch8Min6 colorMap [6,0] = @colorSwitch8Max7, colorMap [6,1] = @colorSwitch8Min7 colorMap [7,0] = @colorSwitch8Max8, colorMap [7,1] = @colorSwitch8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Evening Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @eveningSky8Max1, colorMap [0,1] = @eveningSky8Min1 colorMap [1,0] = @eveningSky8Max2, colorMap [1,1] = @eveningSky8Min2 colorMap [2,0] = @eveningSky8Max3, colorMap [2,1] = @eveningSky8Min3 colorMap [3,0] = @eveningSky8Max4, colorMap [3,1] = @eveningSky8Min4 colorMap [4,0] = @eveningSky8Max5, colorMap [4,1] = @eveningSky8Min5 colorMap [5,0] = @eveningSky8Max6, colorMap [5,1] = @eveningSky8Min6 colorMap [6,0] = @eveningSky8Max7, colorMap [6,1] = @eveningSky8Min7 colorMap [7,0] = @eveningSky8Max8, colorMap [7,1] = @eveningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fantasia 8") ; Created by Toby Marshall. colorMap [0,0] = @fantasia8Max1, colorMap [0,1] = @fantasia8Min1 colorMap [1,0] = @fantasia8Max2, colorMap [1,1] = @fantasia8Min2 colorMap [2,0] = @fantasia8Max3, colorMap [2,1] = @fantasia8Min3 colorMap [3,0] = @fantasia8Max4, colorMap [3,1] = @fantasia8Min4 colorMap [4,0] = @fantasia8Max5, colorMap [4,1] = @fantasia8Min5 colorMap [5,0] = @fantasia8Max6, colorMap [5,1] = @fantasia8Min6 colorMap [6,0] = @fantasia8Max7, colorMap [6,1] = @fantasia8Min7 colorMap [7,0] = @fantasia8Max8, colorMap [7,1] = @fantasia8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Flowering Orchard 8") ; Created by Toby Marshall. colorMap [0,0] = @floweringOrchard8Max1, colorMap [0,1] = @floweringOrchard8Min1 colorMap [1,0] = @floweringOrchard8Max2, colorMap [1,1] = @floweringOrchard8Min2 colorMap [2,0] = @floweringOrchard8Max3, colorMap [2,1] = @floweringOrchard8Min3 colorMap [3,0] = @floweringOrchard8Max4, colorMap [3,1] = @floweringOrchard8Min4 colorMap [4,0] = @floweringOrchard8Max5, colorMap [4,1] = @floweringOrchard8Min5 colorMap [5,0] = @floweringOrchard8Max6, colorMap [5,1] = @floweringOrchard8Min6 colorMap [6,0] = @floweringOrchard8Max7, colorMap [6,1] = @floweringOrchard8Min7 colorMap [7,0] = @floweringOrchard8Max8, colorMap [7,1] = @floweringOrchard8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Morning Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @morningSky8Max1, colorMap [0,1] = @morningSky8Min1 colorMap [1,0] = @morningSky8Max2, colorMap [1,1] = @morningSky8Min2 colorMap [2,0] = @morningSky8Max3, colorMap [2,1] = @morningSky8Min3 colorMap [3,0] = @morningSky8Max4, colorMap [3,1] = @morningSky8Min4 colorMap [4,0] = @morningSky8Max5, colorMap [4,1] = @morningSky8Min5 colorMap [5,0] = @morningSky8Max6, colorMap [5,1] = @morningSky8Min6 colorMap [6,0] = @morningSky8Max7, colorMap [6,1] = @morningSky8Min7 colorMap [7,0] = @morningSky8Max8, colorMap [7,1] = @morningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel 8") ; colorMap [0,0] = @pastel8Max1, colorMap [0,1] = @pastel8Min1 colorMap [1,0] = @pastel8Max2, colorMap [1,1] = @pastel8Min2 colorMap [2,0] = @pastel8Max3, colorMap [2,1] = @pastel8Min3 colorMap [3,0] = @pastel8Max4, colorMap [3,1] = @pastel8Min4 colorMap [4,0] = @pastel8Max5, colorMap [4,1] = @pastel8Min5 colorMap [5,0] = @pastel8Max6, colorMap [5,1] = @pastel8Min6 colorMap [6,0] = @pastel8Max7, colorMap [6,1] = @pastel8Min7 colorMap [7,0] = @pastel8Max8, colorMap [7,1] = @pastel8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel Rainbow 8") ; Created by Angela Wilczynski. colorMap [0,0] = @pastelRainbow8Max1, colorMap [0,1] = @pastelRainbow8Min1 colorMap [1,0] = @pastelRainbow8Max2, colorMap [1,1] = @pastelRainbow8Min2 colorMap [2,0] = @pastelRainbow8Max3, colorMap [2,1] = @pastelRainbow8Min3 colorMap [3,0] = @pastelRainbow8Max4, colorMap [3,1] = @pastelRainbow8Min4 colorMap [4,0] = @pastelRainbow8Max5, colorMap [4,1] = @pastelRainbow8Min5 colorMap [5,0] = @pastelRainbow8Max6, colorMap [5,1] = @pastelRainbow8Min6 colorMap [6,0] = @pastelRainbow8Max7, colorMap [6,1] = @pastelRainbow8Min7 colorMap [7,0] = @pastelRainbow8Max8, colorMap [7,1] = @pastelRainbow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Showtime 8") ; Created by Toby Marshall. colorMap [0,0] = @showtime8Max1, colorMap [0,1] = @showtime8Min1 colorMap [1,0] = @showtime8Max2, colorMap [1,1] = @showtime8Min2 colorMap [2,0] = @showtime8Max3, colorMap [2,1] = @showtime8Min3 colorMap [3,0] = @showtime8Max4, colorMap [3,1] = @showtime8Min4 colorMap [4,0] = @showtime8Max5, colorMap [4,1] = @showtime8Min5 colorMap [5,0] = @showtime8Max6, colorMap [5,1] = @showtime8Min6 colorMap [6,0] = @showtime8Max7, colorMap [6,1] = @showtime8Min7 colorMap [7,0] = @showtime8Max8, colorMap [7,1] = @showtime8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Soleil 8") ; Created by Toby Marshall. colorMap [0,0] = @soleil8Max1, colorMap [0,1] = @soleil8Min1 colorMap [1,0] = @soleil8Max2, colorMap [1,1] = @soleil8Min2 colorMap [2,0] = @soleil8Max3, colorMap [2,1] = @soleil8Min3 colorMap [3,0] = @soleil8Max4, colorMap [3,1] = @soleil8Min4 colorMap [4,0] = @soleil8Max5, colorMap [4,1] = @soleil8Min5 colorMap [5,0] = @soleil8Max6, colorMap [5,1] = @soleil8Min6 colorMap [6,0] = @soleil8Max7, colorMap [6,1] = @soleil8Min7 colorMap [7,0] = @soleil8Max8, colorMap [7,1] = @soleil8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Chill 8") ; Created by Toby Marshall. colorMap [0,0] = @chillMax1, colorMap [0,1] = @chillMin1 colorMap [1,0] = @chillMax2, colorMap [1,1] = @chillMin2 colorMap [2,0] = @chillMax3, colorMap [2,1] = @chillMin3 colorMap [3,0] = @chillMax4, colorMap [3,1] = @chillMin4 colorMap [4,0] = @chillMax5, colorMap [4,1] = @chillMin5 colorMap [5,0] = @chillMax6, colorMap [5,1] = @chillMin6 colorMap [6,0] = @chillMax7, colorMap [6,1] = @chillMin7 colorMap [7,0] = @chillMax8, colorMap [7,1] = @chillMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Cloud Nine 8") ; Created by Toby Marshall. colorMap [0,0] = @cloudNineMax1, colorMap [0,1] = @cloudNineMin1 colorMap [1,0] = @cloudNineMax2, colorMap [1,1] = @cloudNineMin2 colorMap [2,0] = @cloudNineMax3, colorMap [2,1] = @cloudNineMin3 colorMap [3,0] = @cloudNineMax4, colorMap [3,1] = @cloudNineMin4 colorMap [4,0] = @cloudNineMax5, colorMap [4,1] = @cloudNineMin5 colorMap [5,0] = @cloudNineMax6, colorMap [5,1] = @cloudNineMin6 colorMap [6,0] = @cloudNineMax7, colorMap [6,1] = @cloudNineMin7 colorMap [7,0] = @cloudNineMax8, colorMap [7,1] = @cloudNineMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "La Terra 8") ; Created by Toby Marshall. colorMap [0,0] = @laTerraMax1, colorMap [0,1] = @laTerraMin1 colorMap [1,0] = @laTerraMax2, colorMap [1,1] = @laTerraMin2 colorMap [2,0] = @laTerraMax3, colorMap [2,1] = @laTerraMin3 colorMap [3,0] = @laTerraMax4, colorMap [3,1] = @laTerraMin4 colorMap [4,0] = @laTerraMax5, colorMap [4,1] = @laTerraMin5 colorMap [5,0] = @laTerraMax6, colorMap [5,1] = @laTerraMin6 colorMap [6,0] = @laTerraMax7, colorMap [6,1] = @laTerraMin7 colorMap [7,0] = @laTerraMax8, colorMap [7,1] = @laTerraMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Santa Fe 8") ; Created by Toby Marshall. colorMap [0,0] = @santaFe8Max1, colorMap [0,1] = @santaFe8Min1 colorMap [1,0] = @santaFe8Max2, colorMap [1,1] = @santaFe8Min2 colorMap [2,0] = @santaFe8Max3, colorMap [2,1] = @santaFe8Min3 colorMap [3,0] = @santaFe8Max4, colorMap [3,1] = @santaFe8Min4 colorMap [4,0] = @santaFe8Max5, colorMap [4,1] = @santaFe8Min5 colorMap [5,0] = @santaFe8Max6, colorMap [5,1] = @santaFe8Min6 colorMap [6,0] = @santaFe8Max7, colorMap [6,1] = @santaFe8Min7 colorMap [7,0] = @santaFe8Max8, colorMap [7,1] = @santaFe8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Spring 8") ; Created by Toby Marshall. colorMap [0,0] = @spring8Max1, colorMap [0,1] = @spring8Min1 colorMap [1,0] = @spring8Max2, colorMap [1,1] = @spring8Min2 colorMap [2,0] = @spring8Max3, colorMap [2,1] = @spring8Min3 colorMap [3,0] = @spring8Max4, colorMap [3,1] = @spring8Min4 colorMap [4,0] = @spring8Max5, colorMap [4,1] = @spring8Min5 colorMap [5,0] = @spring8Max6, colorMap [5,1] = @spring8Min6 colorMap [6,0] = @spring8Max7, colorMap [6,1] = @spring8Min7 colorMap [7,0] = @spring8Max8, colorMap [7,1] = @spring8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Summer 8") ; Created by Toby Marshall. colorMap [0,0] = @summer8Max1, colorMap [0,1] = @summer8Min1 colorMap [1,0] = @summer8Max2, colorMap [1,1] = @summer8Min2 colorMap [2,0] = @summer8Max3, colorMap [2,1] = @summer8Min3 colorMap [3,0] = @summer8Max4, colorMap [3,1] = @summer8Min4 colorMap [4,0] = @summer8Max5, colorMap [4,1] = @summer8Min5 colorMap [5,0] = @summer8Max6, colorMap [5,1] = @summer8Min6 colorMap [6,0] = @summer8Max7, colorMap [6,1] = @summer8Min7 colorMap [7,0] = @summer8Max8, colorMap [7,1] = @summer8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fall 8") ; Created by Toby Marshall. colorMap [0,0] = @fall8Max1, colorMap [0,1] = @fall8Min1 colorMap [1,0] = @fall8Max2, colorMap [1,1] = @fall8Min2 colorMap [2,0] = @fall8Max3, colorMap [2,1] = @fall8Min3 colorMap [3,0] = @fall8Max4, colorMap [3,1] = @fall8Min4 colorMap [4,0] = @fall8Max5, colorMap [4,1] = @fall8Min5 colorMap [5,0] = @fall8Max6, colorMap [5,1] = @fall8Min6 colorMap [6,0] = @fall8Max7, colorMap [6,1] = @fall8Min7 colorMap [7,0] = @fall8Max8, colorMap [7,1] = @fall8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Winter 8") ; Created by Toby Marshall. colorMap [0,0] = @winter8Max1, colorMap [0,1] = @winter8Min1 colorMap [1,0] = @winter8Max2, colorMap [1,1] = @winter8Min2 colorMap [2,0] = @winter8Max3, colorMap [2,1] = @winter8Min3 colorMap [3,0] = @winter8Max4, colorMap [3,1] = @winter8Min4 colorMap [4,0] = @winter8Max5, colorMap [4,1] = @winter8Min5 colorMap [5,0] = @winter8Max6, colorMap [5,1] = @winter8Min6 colorMap [6,0] = @winter8Max7, colorMap [6,1] = @winter8Min7 colorMap [7,0] = @winter8Max8, colorMap [7,1] = @winter8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Mojave 8") ; Created by Toby Marshall. colorMap [0,0] = @mojave8Max1, colorMap [0,1] = @mojave8Min1 colorMap [1,0] = @mojave8Max2, colorMap [1,1] = @mojave8Min2 colorMap [2,0] = @mojave8Max3, colorMap [2,1] = @mojave8Min3 colorMap [3,0] = @mojave8Max4, colorMap [3,1] = @mojave8Min4 colorMap [4,0] = @mojave8Max5, colorMap [4,1] = @mojave8Min5 colorMap [5,0] = @mojave8Max6, colorMap [5,1] = @mojave8Min6 colorMap [6,0] = @mojave8Max7, colorMap [6,1] = @mojave8Min7 colorMap [7,0] = @mojave8Max8, colorMap [7,1] = @mojave8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green 8") ; colorMap [0,0] = @goldGreen8Max1, colorMap [0,1] = @goldGreen8Min1 colorMap [1,0] = @goldGreen8Max2, colorMap [1,1] = @goldGreen8Min2 colorMap [2,0] = @goldGreen8Max3, colorMap [2,1] = @goldGreen8Min3 colorMap [3,0] = @goldGreen8Max4, colorMap [3,1] = @goldGreen8Min4 colorMap [4,0] = @goldGreen8Max5, colorMap [4,1] = @goldGreen8Min5 colorMap [5,0] = @goldGreen8Max6, colorMap [5,1] = @goldGreen8Min6 colorMap [6,0] = @goldGreen8Max7, colorMap [6,1] = @goldGreen8Min7 colorMap [7,0] = @goldGreen8Max8, colorMap [7,1] = @goldGreen8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green Alt 8") ; colorMap [0,0] = @goldGreenAlt8Max1, colorMap [0,1] = @goldGreenAlt8Min1 colorMap [1,0] = @goldGreenAlt8Max2, colorMap [1,1] = @goldGreenAlt8Min2 colorMap [2,0] = @goldGreenAlt8Max3, colorMap [2,1] = @goldGreenAlt8Min3 colorMap [3,0] = @goldGreenAlt8Max4, colorMap [3,1] = @goldGreenAlt8Min4 colorMap [4,0] = @goldGreenAlt8Max5, colorMap [4,1] = @goldGreenAlt8Min5 colorMap [5,0] = @goldGreenAlt8Max6, colorMap [5,1] = @goldGreenAlt8Min6 colorMap [6,0] = @goldGreenAlt8Max7, colorMap [6,1] = @goldGreenAlt8Min7 colorMap [7,0] = @goldGreenAlt8Max8, colorMap [7,1] = @goldGreenAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver 8") ; colorMap [0,0] = @goldSilver8Max1, colorMap [0,1] = @goldSilver8Min1 colorMap [1,0] = @goldSilver8Max2, colorMap [1,1] = @goldSilver8Min2 colorMap [2,0] = @goldSilver8Max3, colorMap [2,1] = @goldSilver8Min3 colorMap [3,0] = @goldSilver8Max4, colorMap [3,1] = @goldSilver8Min4 colorMap [4,0] = @goldSilver8Max5, colorMap [4,1] = @goldSilver8Min5 colorMap [5,0] = @goldSilver8Max6, colorMap [5,1] = @goldSilver8Min6 colorMap [6,0] = @goldSilver8Max7, colorMap [6,1] = @goldSilver8Min7 colorMap [7,0] = @goldSilver8Max8, colorMap [7,1] = @goldSilver8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue 8") ; colorMap [0,0] = @silverBlue8Max1, colorMap [0,1] = @silverBlue8Min1 colorMap [1,0] = @silverBlue8Max2, colorMap [1,1] = @silverBlue8Min2 colorMap [2,0] = @silverBlue8Max3, colorMap [2,1] = @silverBlue8Min3 colorMap [3,0] = @silverBlue8Max4, colorMap [3,1] = @silverBlue8Min4 colorMap [4,0] = @silverBlue8Max5, colorMap [4,1] = @silverBlue8Min5 colorMap [5,0] = @silverBlue8Max6, colorMap [5,1] = @silverBlue8Min6 colorMap [6,0] = @silverBlue8Max7, colorMap [6,1] = @silverBlue8Min7 colorMap [7,0] = @silverBlue8Max8, colorMap [7,1] = @silverBlue8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue Alt 8") ; colorMap [0,0] = @silverBlueAlt8Max1, colorMap [0,1] = @silverBlueAlt8Min1 colorMap [1,0] = @silverBlueAlt8Max2, colorMap [1,1] = @silverBlueAlt8Min2 colorMap [2,0] = @silverBlueAlt8Max3, colorMap [2,1] = @silverBlueAlt8Min3 colorMap [3,0] = @silverBlueAlt8Max4, colorMap [3,1] = @silverBlueAlt8Min4 colorMap [4,0] = @silverBlueAlt8Max5, colorMap [4,1] = @silverBlueAlt8Min5 colorMap [5,0] = @silverBlueAlt8Max6, colorMap [5,1] = @silverBlueAlt8Min6 colorMap [6,0] = @silverBlueAlt8Max7, colorMap [6,1] = @silverBlueAlt8Min7 colorMap [7,0] = @silverBlueAlt8Max8, colorMap [7,1] = @silverBlueAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver Alt 8") ; colorMap [0,0] = @goldSilverAlt8Max1, colorMap [0,1] = @goldSilverAlt8Min1 colorMap [1,0] = @goldSilverAlt8Max2, colorMap [1,1] = @goldSilverAlt8Min2 colorMap [2,0] = @goldSilverAlt8Max3, colorMap [2,1] = @goldSilverAlt8Min3 colorMap [3,0] = @goldSilverAlt8Max4, colorMap [3,1] = @goldSilverAlt8Min4 colorMap [4,0] = @goldSilverAlt8Max5, colorMap [4,1] = @goldSilverAlt8Min5 colorMap [5,0] = @goldSilverAlt8Max6, colorMap [5,1] = @goldSilverAlt8Min6 colorMap [6,0] = @goldSilverAlt8Max7, colorMap [6,1] = @goldSilverAlt8Min7 colorMap [7,0] = @goldSilverAlt8Max8, colorMap [7,1] = @goldSilverAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 8") ; colorMap [0,0] = @purpleYellow8Max1, colorMap [0,1] = @purpleYellow8Min1 colorMap [1,0] = @purpleYellow8Max2, colorMap [1,1] = @purpleYellow8Min2 colorMap [2,0] = @purpleYellow8Max3, colorMap [2,1] = @purpleYellow8Min3 colorMap [3,0] = @purpleYellow8Max4, colorMap [3,1] = @purpleYellow8Min4 colorMap [4,0] = @purpleYellow8Max5, colorMap [4,1] = @purpleYellow8Min5 colorMap [5,0] = @purpleYellow8Max6, colorMap [5,1] = @purpleYellow8Min6 colorMap [6,0] = @purpleYellow8Max7, colorMap [6,1] = @purpleYellow8Min7 colorMap [7,0] = @purpleYellow8Max8, colorMap [7,1] = @purpleYellow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow Alt 8") ; colorMap [0,0] = @purpleYellowAlt8Max1, colorMap [0,1] = @purpleYellowAlt8Min1 colorMap [1,0] = @purpleYellowAlt8Max2, colorMap [1,1] = @purpleYellowAlt8Min2 colorMap [2,0] = @purpleYellowAlt8Max3, colorMap [2,1] = @purpleYellowAlt8Min3 colorMap [3,0] = @purpleYellowAlt8Max4, colorMap [3,1] = @purpleYellowAlt8Min4 colorMap [4,0] = @purpleYellowAlt8Max5, colorMap [4,1] = @purpleYellowAlt8Min5 colorMap [5,0] = @purpleYellowAlt8Max6, colorMap [5,1] = @purpleYellowAlt8Min6 colorMap [6,0] = @purpleYellowAlt8Max7, colorMap [6,1] = @purpleYellowAlt8Min7 colorMap [7,0] = @purpleYellowAlt8Max8, colorMap [7,1] = @purpleYellowAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fourth of July 3") ; colorMap [0,0] = @fourthOfJuly3Max1, colorMap [0,1] = @fourthOfJuly3Min1 colorMap [1,0] = @fourthOfJuly3Max2, colorMap [1,1] = @fourthOfJuly3Min2 colorMap [2,0] = @fourthOfJuly3Max3, colorMap [2,1] = @fourthOfJuly3Min3 ranges = 3 offset = @colorOffset elseif (@colorPreset == "Blue/Silver 2") ; colorMap [0,0] = @blueSilver2Max1, colorMap [0,1] = @blueSilver2Min1 colorMap [1,0] = @blueSilver2Max2, colorMap [1,1] = @blueSilver2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Blue/White 2") ; colorMap [0,0] = @blueWhite2Max1, colorMap [0,1] = @blueWhite2Min1 colorMap [1,0] = @blueWhite2Max2, colorMap [1,1] = @blueWhite2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Magenta 2") ; colorMap [0,0] = @cyanMagenta2Max1, colorMap [0,1] = @cyanMagenta2Min1 colorMap [1,0] = @cyanMagenta2Max2, colorMap [1,1] = @cyanMagenta2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Yellow 2") ; colorMap [0,0] = @cyanYellow2Max1, colorMap [0,1] = @cyanYellow2Min1 colorMap [1,0] = @cyanYellow2Max2, colorMap [1,1] = @cyanYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Gold/Green 2") ; colorMap [0,0] = @goldGreen2Max1, colorMap [0,1] = @goldGreen2Min1 colorMap [1,0] = @goldGreen2Max2, colorMap [1,1] = @goldGreen2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 2") ; colorMap [0,0] = @purpleYellow2Max1, colorMap [0,1] = @purpleYellow2Min1 colorMap [1,0] = @purpleYellow2Max2, colorMap [1,1] = @purpleYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Red/Tan 2") ; colorMap [0,0] = @redTan2Max1, colorMap [0,1] = @redTan2Min1 colorMap [1,0] = @redTan2Max2, colorMap [1,1] = @redTan2Min2 ranges = 2 offset = @colorOffset endif if (@perturbRanges == "8 Range Custom" && ranges == 8) ; If we are using 8 ranges, then take into account ; the rangeOrdering parameter. int range[8] ; Convert range ordering from 12345678 to .12345678 float ordering = @rangeOrder / 100000000 ; Convert .12345678 to 1.2345678 ordering = ordering * 10 ; Get the first digit int range[0] = trunc (ordering) ; Subract the first digit, i.e. 1.2345678 becomes .2345678 ordering = ordering - range[0] ; Get the second digit ordering = ordering * 10 int range[1] = trunc (ordering) ordering = ordering - range[1] ; Get the third digit ordering = ordering * 10 int range[2] = trunc (ordering) ordering = ordering - range[2] ; Get the fourth digit ordering = ordering * 10 int range[3] = trunc (ordering) ordering = ordering - range[3] ; Get the fifth digit ordering = ordering * 10 int range[4] = trunc (ordering) ordering = ordering - range[4] ; Get the sixth digit ordering = ordering * 10 int range[5] = trunc (ordering) ordering = ordering - range[5] ; Get the seventh digit ordering = ordering * 10 int range[6] = trunc (ordering) ordering = ordering - range[6] ; Get the eighth digit ordering = ordering * 10 int range[7] = round (ordering) ordering = ordering - range[7] ; Save the original order of the maps. color tempMap[8,2] tempMap[0,0] = colorMap[0,0], tempMap[0,1] = colorMap[0,1] tempMap[1,0] = colorMap[1,0], tempMap[1,1] = colorMap[1,1] tempMap[2,0] = colorMap[2,0], tempMap[2,1] = colorMap[2,1] tempMap[3,0] = colorMap[3,0], tempMap[3,1] = colorMap[3,1] tempMap[4,0] = colorMap[4,0], tempMap[4,1] = colorMap[4,1] tempMap[5,0] = colorMap[5,0], tempMap[5,1] = colorMap[5,1] tempMap[6,0] = colorMap[6,0], tempMap[6,1] = colorMap[6,1] tempMap[7,0] = colorMap[7,0], tempMap[7,1] = colorMap[7,1] ; Reorder the maps according to the rangeOrder parameter. colorMap[0,0] = tempMap[range[0]-1,0], colorMap[0,1] = tempMap[range[0]-1,1] colorMap[1,0] = tempMap[range[1]-1,0], colorMap[1,1] = tempMap[range[1]-1,1] colorMap[2,0] = tempMap[range[2]-1,0], colorMap[2,1] = tempMap[range[2]-1,1] colorMap[3,0] = tempMap[range[3]-1,0], colorMap[3,1] = tempMap[range[3]-1,1] colorMap[4,0] = tempMap[range[4]-1,0], colorMap[4,1] = tempMap[range[4]-1,1] colorMap[5,0] = tempMap[range[5]-1,0], colorMap[5,1] = tempMap[range[5]-1,1] colorMap[6,0] = tempMap[range[6]-1,0], colorMap[6,1] = tempMap[range[6]-1,1] colorMap[7,0] = tempMap[range[7]-1,0], colorMap[7,1] = tempMap[range[7]-1,1] endif if @function == "Mandala" radius = @m0radius fscale = @m0fscale elseif @function == "Wiwianka" radius = @m1radius fscale = @m1fscale elseif @function == "Banchoff Klein Bottle" radius = @m2radius fscale = @m2fscale elseif @function == "Seashell" radius = @m3radius fscale = @m3fscale elseif @function == "Mobius Band" radius = @m4radius fscale = @m4fscale elseif @function == "Astrodal Ellipsoid" radius = @m5radius fscale = @m5fscale elseif @function == "Bohemian Dome" radius = @m6radius fscale = @m6fscale elseif @function == "Boy Surface" radius = @m7radius fscale = @m7fscale elseif @function == "Dini's Surface" radius = @m8radius fscale = @m8fscale elseif @function == "Enneper's Surface" radius = @m9radius fscale = @m9fscale elseif @function == "Kuen's Surface" radius = @m10radius fscale = @m10fscale elseif @function == "Swallowtail" radius = @m11radius fscale = @m11fscale elseif @function == "Catalan's Surface" radius = @m12radius fscale = @m12fscale elseif @function == "Hennenberg's Surface" radius = @m13radius fscale = @m13fscale elseif @function == "Corkscrew" radius = @m14radius fscale = @m14fscale elseif @function == "Hyperbolic Helicoid" radius = @m15radius fscale = @m15fscale elseif @function == "Sine Surface" radius = @m16radius fscale = @m16fscale elseif @function == "Trefoil Knot" radius = @m17radius fscale = @m17fscale elseif @function == "Lissajous Knots" radius = @m18radius fscale = @m18fscale elseif @function == "Toroidal Spiral" radius = @m19radius fscale = @m19fscale elseif @function == "Klein Bottle" radius = @m20radius fscale = @m20fscale elseif @function == "Triangular Trefoil" radius = @m21radius fscale = @m21fscale elseif @function == "Bent Horns" radius = @m22radius fscale = @m22fscale elseif @function == "Pisot Triaxial" radius = @m23radius fscale = @m23fscale elseif @function == "Spherical Harmonics" radius = @m24radius fscale = @m24fscale elseif @function == "Slippers Surface" radius = @m25radius fscale = @m25fscale elseif @function == "SuperShape" radius = @m26radius fscale = @m26fscale elseif @function == "Fano Planes" radius = @m27radius fscale = @m27fscale elseif @function == "Twisted Fano" radius = @m28radius fscale = @m28fscale elseif @function == "Cresent" radius = @m29radius fscale = @m29fscale elseif @function == "Twisted Triaxial" radius = @m30radius fscale = @m30fscale elseif @function == "Maeder's Owl" radius = @m31radius fscale = @m31fscale elseif @function == "Stiletto Surface" radius = @m32radius fscale = @m32fscale elseif @function == "Verrill Surface" radius = @m33radius fscale = @m33fscale elseif @function == "Twisted Heart" radius = @m34radius fscale = @m34fscale elseif @function == "Figure 8 Torus" radius = @m35radius fscale = @m35fscale elseif @function == "Triaxial Teardrop" radius = @m36radius fscale = @m36fscale elseif @function == "Lemniscape" radius = @m37radius fscale = @m37fscale elseif @function == "Tractrix" radius = @m38radius fscale = @m38fscale elseif @function == "Triaxial Tritorus" radius = @m39radius fscale = @m39fscale elseif @function == "Saddle Torus" radius = @m40radius fscale = @m40fscale elseif @function == "Limpet Torus" radius = @m41radius fscale = @m41fscale elseif @function == "Bow Tie" radius = @m42radius fscale = @m42fscale elseif @function == "Cross Cap" radius = @m43radius fscale = @m43fscale elseif @function == "Whitney Umbrella" radius = @m44radius fscale = @m44fscale elseif @function == "Triaxial Hexatorus" radius = @m45radius fscale = @m45fscale elseif @function == "Fish Surface" radius = @m46radius fscale = @m46fscale elseif @function == "Twisted Pipe" radius = @m47radius fscale = @m47fscale elseif @function == "Knot 4" radius = @m48radius fscale = @m48fscale elseif @function == "Eight Knot" radius = @m49radius fscale = @m49fscale elseif @function == "Cinquefoil Knot" radius = @m50radius fscale = @m50fscale elseif @function == "Granny Knot" radius = @m51radius fscale = @m51fscale endif ; i = 0 j = 0 if @function == "Mandala" xlimit = round((@m0xmax-@m0xmin)/@m0xstep) ylimit = round((@m0ymax-@m0ymin)/@m0ystep) elseif @function == "Wiwianka" xlimit = round((@m1xmax-@m1xmin)/@m1xstep) ylimit = round((@m1ymax-@m1ymin)/@m1ystep) elseif @function == "Banchoff Klein Bottle" xlimit = round((@m2xmax-@m2xmin)/@m2xstep) ylimit = round((@m2ymax-@m2ymin)/@m2ystep) elseif @function == "Seashell" xlimit = round((@m3xmax-@m3xmin)/@m3xstep) ylimit = round((@m3ymax-@m3ymin)/@m3ystep) elseif @function == "Mobius Band" xlimit = round((@m4xmax-@m4xmin)/@m4xstep) ylimit = round((@m4ymax-@m4ymin)/@m4ystep) elseif @function == "Astrodal Ellipsoid" xlimit = round((@m5xmax-@m5xmin)/@m5xstep) ylimit = round((@m5ymax-@m5ymin)/@m5ystep) elseif @function == "Bohemian Dome" xlimit = round((@m6xmax-@m6xmin)/@m6xstep) ylimit = round((@m6ymax-@m6ymin)/@m6ystep) elseif @function == "Boy Surface" xlimit = round((@m7xmax-@m7xmin)/@m7xstep) ylimit = round((@m7ymax-@m7ymin)/@m7ystep) elseif @function == "Dini's Surface" xlimit = round((@m8xmax-@m8xmin)/@m8xstep) ylimit = round((@m8ymax-@m8ymin)/@m8ystep) elseif @function == "Enneper's Surface" xlimit = round((@m9xmax-@m9xmin)/@m9xstep) ylimit = round((@m9ymax-@m9ymin)/@m9ystep) elseif @function == "Kuen's Surface" xlimit = round((@m10xmax-@m10xmin)/@m10xstep) ylimit = round((@m10ymax-@m10ymin)/@m10ystep) elseif @function == "Swallowtail" xlimit = round((@m11xmax-@m11xmin)/@m11xstep) ylimit = round((@m11ymax-@m11ymin)/@m11ystep) elseif @function == "Catalan's Surface" xlimit = round((@m12xmax-@m12xmin)/@m12xstep) ylimit = round((@m12ymax-@m12ymin)/@m12ystep) elseif @function == "Hennenberg's Surface" xlimit = round((@m13xmax-@m13xmin)/@m13xstep) ylimit = round((@m13ymax-@m13ymin)/@m13ystep) elseif @function == "Corkscrew" xlimit = round((@m14xmax-@m14xmin)/@m14xstep) ylimit = round((@m14ymax-@m14ymin)/@m14ystep) elseif @function == "Hyperbolic Helicoid" xlimit = round((@m15xmax-@m15xmin)/@m15xstep) ylimit = round((@m15ymax-@m15ymin)/@m15ystep) elseif @function == "Sine Surface" xlimit = round((@m16xmax-@m16xmin)/@m16xstep) ylimit = round((@m16ymax-@m16ymin)/@m16ystep) elseif @function == "Trefoil Knot" xlimit = round((@m17xmax-@m17xmin)/@m17xstep) ylimit = round((@m17ymax-@m17ymin)/@m17ystep) elseif @function == "Lissajous Knots" xlimit = round((@m18xmax-@m18xmin)/@m18xstep) ylimit = round((@m18ymax-@m18ymin)/@m18ystep) elseif @function == "Toroidal Spiral" xlimit = round((@m19xmax-@m19xmin)/@m19xstep) ylimit = round((@m19ymax-@m19ymin)/@m19ystep) elseif @function == "Klein Bottle" xlimit = round((@m20xmax-@m20xmin)/@m20xstep) ylimit = round((@m20ymax-@m20ymin)/@m20ystep) elseif @function == "Triangular Trefoil" xlimit = round((@m21xmax-@m21xmin)/@m21xstep) ylimit = round((@m21ymax-@m21ymin)/@m21ystep) elseif @function == "Bent Horns" xlimit = round((@m22xmax-@m22xmin)/@m22xstep) ylimit = round((@m22ymax-@m22ymin)/@m22ystep) elseif @function == "Pisot Triaxial" xlimit = round((@m23xmax-@m23xmin)/@m23xstep) ylimit = round((@m23ymax-@m23ymin)/@m23ystep) elseif @function == "Spherical Harmonics" xlimit = round((@m24xmax-@m24xmin)/@m24xstep) ylimit = round((@m24ymax-@m24ymin)/@m24ystep) elseif @function == "Slippers Surface" xlimit = round((@m25xmax-@m25xmin)/@m25xstep) ylimit = round((@m25ymax-@m25ymin)/@m25ystep) elseif @function == "SuperShape" xlimit = round((@m26xmax-@m26xmin)/@m26xstep) ylimit = round((@m26ymax-@m26ymin)/@m26ystep) elseif @function == "Fano Planes" xlimit = round((@m27xmax-@m27xmin)/@m27xstep) ylimit = round((@m27ymax-@m27ymin)/@m27ystep) elseif @function == "Twisted Fano" xlimit = round((@m28xmax-@m28xmin)/@m28xstep) ylimit = round((@m28ymax-@m28ymin)/@m28ystep) elseif @function == "Cresent" xlimit = round((@m29xmax-@m29xmin)/@m29xstep) ylimit = round((@m29ymax-@m29ymin)/@m29ystep) elseif @function == "Twisted Triaxial" xlimit = round((@m30xmax-@m30xmin)/@m30xstep) ylimit = round((@m30ymax-@m30ymin)/@m30ystep) elseif @function == "Maeder's Owl" xlimit = round((@m31xmax-@m31xmin)/@m31xstep) ylimit = round((@m31ymax-@m31ymin)/@m31ystep) elseif @function == "Stiletto Surface" xlimit = round((@m32xmax-@m32xmin)/@m32xstep) ylimit = round((@m32ymax-@m32ymin)/@m32ystep) elseif @function == "Verrill Surface" xlimit = round((@m33xmax-@m33xmin)/@m33xstep) ylimit = round((@m33ymax-@m33ymin)/@m33ystep) elseif @function == "Twisted Heart" xlimit = round((@m34xmax-@m34xmin)/@m34xstep) ylimit = round((@m34ymax-@m34ymin)/@m34ystep) elseif @function == "Figure 8 Torus" xlimit = round((@m35xmax-@m35xmin)/@m35xstep) ylimit = round((@m35ymax-@m35ymin)/@m35ystep) elseif @function == "Triaxial Teardrop" xlimit = round((@m36xmax-@m36xmin)/@m36xstep) ylimit = round((@m36ymax-@m36ymin)/@m36ystep) elseif @function == "Lemniscape" xlimit = round((@m37xmax-@m37xmin)/@m37xstep) ylimit = round((@m37ymax-@m37ymin)/@m37ystep) elseif @function == "Tractrix" xlimit = round((@m38xmax-@m38xmin)/@m38xstep) ylimit = round((@m38ymax-@m38ymin)/@m38ystep) elseif @function == "Triaxial Tritorus" xlimit = round((@m39xmax-@m39xmin)/@m39xstep) ylimit = round((@m39ymax-@m39ymin)/@m39ystep) elseif @function == "Saddle Torus" xlimit = round((@m40xmax-@m40xmin)/@m40xstep) ylimit = round((@m40ymax-@m40ymin)/@m40ystep) elseif @function == "Limpet Torus" xlimit = round((@m41xmax-@m41xmin)/@m41xstep) ylimit = round((@m41ymax-@m41ymin)/@m41ystep) elseif @function == "Bow Tie" xlimit = round((@m42xmax-@m42xmin)/@m42xstep) ylimit = round((@m42ymax-@m42ymin)/@m42ystep) elseif @function == "Cross Cap" xlimit = round((@m43xmax-@m43xmin)/@m43xstep) ylimit = round((@m43ymax-@m43ymin)/@m43ystep) elseif @function == "Whitney Umbrella" xlimit = round((@m44xmax-@m44xmin)/@m44xstep) ylimit = round((@m44ymax-@m44ymin)/@m44ystep) elseif @function == "Triaxial Hexatorus" xlimit = round((@m45xmax-@m45xmin)/@m45xstep) ylimit = round((@m45ymax-@m45ymin)/@m45ystep) elseif @function == "Fish Surface" xlimit = round((@m46xmax-@m46xmin)/@m46xstep) ylimit = round((@m46ymax-@m46ymin)/@m46ystep) elseif @function == "Twisted Pipe" xlimit = round((@m47xmax-@m47xmin)/@m47xstep) ylimit = round((@m47ymax-@m47ymin)/@m47ystep) elseif @function == "Knot 4" xlimit = round((@m48xmax-@m48xmin)/@m48xstep) ylimit = round((@m48ymax-@m48ymin)/@m48ystep) elseif @function == "Eight Knot" xlimit = round((@m49xmax-@m49xmin)/@m49xstep) ylimit = round((@m49ymax-@m49ymin)/@m49ystep) elseif @function == "Cinquefoil Knot" xlimit = round((@m50xmax-@m50xmin)/@m50xstep)*(4*@ck+2) ylimit = round((@m50ymax-@m50ymin)/@m50ystep) elseif @function == "Granny Knot" xlimit = round((@m51xmax-@m51xmin)/@m51xstep) ylimit = round((@m51ymax-@m51ymin)/@m51ystep) endif if @function == "Mandala" umin = @m0xmin vmin = @m0ymin ustep = @m0xstep vstep = @m0ystep elseif @function == "Wiwianka" umin = @m1xmin vmin = @m1ymin ustep = @m1xstep vstep = @m1ystep elseif @function == "Banchoff Klein Bottle" umin = @m2xmin vmin = @m2ymin ustep = @m2xstep vstep = @m2ystep elseif @function == "Seashell" umin = @m3xmin vmin = @m3ymin ustep = @m3xstep vstep = @m3ystep elseif @function == "Mobius Band" umin = @m4xmin vmin = @m4ymin ustep = @m4xstep vstep = @m4ystep elseif @function == "Astrodal Ellipsoid" umin = @m5xmin vmin = @m5ymin ustep = @m5xstep vstep = @m5ystep elseif @function == "Bohemian Dome" umin = @m6xmin vmin = @m6ymin ustep = @m6xstep vstep = @m6ystep elseif @function == "Boy Surface" umin = @m7xmin vmin = @m7ymin ustep = @m7xstep vstep = @m7ystep elseif @function == "Dini's Surface" umin = @m8xmin vmin = @m8ymin ustep = @m8xstep vstep = @m8ystep elseif @function == "Enneper's Surface" umin = @m9xmin vmin = @m9ymin ustep = @m9xstep vstep = @m9ystep elseif @function == "Kuen's Surface" umin = @m10xmin vmin = @m10ymin ustep = @m10xstep vstep = @m10ystep elseif @function == "Swallowtail" umin = @m11xmin vmin = @m11ymin ustep = @m11xstep vstep = @m11ystep elseif @function == "Catalan's Surface" umin = @m12xmin vmin = @m12ymin ustep = @m12xstep vstep = @m12ystep elseif @function == "Hennenberg's Surface" umin = @m13xmin vmin = @m13ymin ustep = @m13xstep vstep = @m13ystep elseif @function == "Corkscrew" umin = @m14xmin vmin = @m14ymin ustep = @m14xstep vstep = @m14ystep elseif @function == "Hyperbolic Helicoid" umin = @m15xmin vmin = @m15ymin ustep = @m15xstep vstep = @m15ystep elseif @function == "Sine Surface" umin = @m16xmin vmin = @m16ymin ustep = @m16xstep vstep = @m16ystep elseif @function == "Trefoil Knot" umin = @m17xmin vmin = @m17ymin ustep = @m17xstep vstep = @m17ystep elseif @function == "Lissajous Knots" umin = @m18xmin vmin = @m18ymin ustep = @m18xstep vstep = @m18ystep elseif @function == "Toroidal Spiral" umin = @m19xmin vmin = @m19ymin ustep = @m19xstep vstep = @m19ystep elseif @function == "Klein Bottle" umin = @m20xmin vmin = @m20ymin ustep = @m20xstep vstep = @m20ystep elseif @function == "Triangular Trefoil" umin = @m21xmin vmin = @m21ymin ustep = @m21xstep vstep = @m21ystep elseif @function == "Bent Horns" umin = @m22xmin vmin = @m22ymin ustep = @m22xstep vstep = @m22ystep elseif @function == "Pisot Triaxial" umin = @m23xmin vmin = @m23ymin ustep = @m23xstep vstep = @m23ystep elseif @function == "Spherical Harmonics" umin = @m24xmin vmin = @m24ymin ustep = @m24xstep vstep = @m24ystep elseif @function == "Slippers Surface" umin = @m25xmin vmin = @m25ymin ustep = @m25xstep vstep = @m25ystep elseif @function == "SuperShape" umin = @m26xmin vmin = @m26ymin ustep = @m26xstep vstep = @m26ystep elseif @function == "Fano Planes" umin = @m27xmin vmin = @m27ymin ustep = @m27xstep vstep = @m27ystep elseif @function == "Twisted Fano" umin = @m28xmin vmin = @m28ymin ustep = @m28xstep vstep = @m28ystep elseif @function == "Cresent" umin = @m29xmin vmin = @m29ymin ustep = @m29xstep vstep = @m29ystep elseif @function == "Twisted Triaxial" umin = @m30xmin vmin = @m30ymin ustep = @m30xstep vstep = @m30ystep elseif @function == "Maeder's Owl" umin = @m31xmin vmin = @m31ymin ustep = @m31xstep vstep = @m31ystep elseif @function == "Stiletto Surface" umin = @m32xmin vmin = @m32ymin ustep = @m32xstep vstep = @m32ystep elseif @function == "Verrill Surface" umin = @m33xmin vmin = @m33ymin ustep = @m33xstep vstep = @m33ystep elseif @function == "Twisted Heart" umin = @m34xmin vmin = @m34ymin ustep = @m34xstep vstep = @m34ystep elseif @function == "Figure 8 Torus" umin = @m35xmin vmin = @m35ymin ustep = @m35xstep vstep = @m35ystep elseif @function == "Triaxial Teardrop" umin = @m36xmin vmin = @m36ymin ustep = @m36xstep vstep = @m36ystep elseif @function == "Lemniscape" umin = @m37xmin vmin = @m37ymin ustep = @m37xstep vstep = @m37ystep elseif @function == "Tractrix" umin = @m38xmin vmin = @m38ymin ustep = @m38xstep vstep = @m38ystep elseif @function == "Triaxial Tritorus" umin = @m39xmin vmin = @m39ymin ustep = @m39xstep vstep = @m39ystep elseif @function == "Saddle Torus" umin = @m40xmin vmin = @m40ymin ustep = @m40xstep vstep = @m40ystep elseif @function == "Limpet Torus" umin = @m41xmin vmin = @m41ymin ustep = @m41xstep vstep = @m41ystep elseif @function == "Bow Tie" umin = @m42xmin vmin = @m42ymin ustep = @m42xstep vstep = @m42ystep elseif @function == "Cross Cap" umin = @m43xmin vmin = @m43ymin ustep = @m43xstep vstep = @m43ystep elseif @function == "Whitney Umbrella" umin = @m44xmin vmin = @m44ymin ustep = @m44xstep vstep = @m44ystep elseif @function == "Triaxial Hexatorus" umin = @m45xmin vmin = @m45ymin ustep = @m45xstep vstep = @m45ystep elseif @function == "Fish Surface" umin = @m46xmin vmin = @m46ymin ustep = @m46xstep vstep = @m46ystep elseif @function == "Twisted Pipe" umin = @m47xmin vmin = @m47ymin ustep = @m47xstep vstep = @m47ystep elseif @function == "Knot 4" umin = @m48xmin vmin = @m48ymin ustep = @m48xstep vstep = @m48ystep elseif @function == "Eight Knot" umin = @m49xmin vmin = @m49ymin ustep = @m49xstep vstep = @m49ystep elseif @function == "Cinquefoil Knot" umin = @m50xmin vmin = @m50ymin ustep = @m50xstep vstep = @m50ystep elseif @function == "Granny Knot" umin = @m51xmin vmin = @m51ymin ustep = @m51xstep vstep = @m51ystep endif iii = 0 fscale = 0.8*fscale while i <= xlimit u = umin + i*ustep while j <= ylimit v = vmin + j*vstep if @function == "Mandala" csx[iii] = u*cos(v)*fscale csy[iii] = u*sin(v)*fscale csz[iii] = v*cos(u)*fscale elseif @function == "Wiwianka" csx[iii] = (1+exp(-100*u^2))*sin(#pi*u)*sin(#pi*v)*fscale csy[iii] = (1+exp(-100*u^2))*sin(#pi*u)*cos(#pi*v)*fscale csz[iii] = (1+exp(-100*u^2))*cos(#pi*u)*fscale elseif @function == "Banchoff Klein Bottle" csx[iii] = (cos(u/@banc)*(cos(u/@banb)*(@bana+cos(v))+ \ (sin(u/@banb)*sin(v)*cos(v))))*fscale csy[iii] = (sin(u/@banc)*(cos(u/@banb)*(@bana+cos(v))+ \ (sin(u/@banb)*sin(v)*cos(v))))*fscale csz[iii] = (-sin(u/@banb)*(@bana+cos(v))+cos(u/@banb)*sin(v)*cos(v))*fscale elseif @function == "Seashell" csx[iii] = (@seaa*(1-v/(2*pi))*cos(@sean*v)*(1+cos(u))+@seac*cos(@sean*v))*fscale csy[iii] = (@seaa*(1-v/(2*pi))*sin(@sean*v)*(1+cos(u))+@seac*sin(@sean*v))*fscale csz[iii] = (@seab*v/(2*pi)+@seaa*(1-v/(2*pi))*sin(u))*fscale elseif @function == "Mobius Band" csx[iii] = (cos(u)+v*cos(u/2)*cos(u))*fscale csy[iii] = (sin(u)+v*cos(u/2)*sin(u))*fscale csz[iii] = (v*sin(u/2))*fscale elseif @function == "Astrodal Ellipsoid" csx[iii] = (@aa*cos(u)*cos(v))^3*fscale csy[iii] = (@ab*sin(u)*cos(v))^3*fscale csz[iii] = (@ac*sin(v))^3*fscale elseif @function == "Bohemian Dome" csx[iii] = (@ba*cos(u))*fscale csy[iii] = (@bb*cos(v) + @ba*sin(u))*fscale csz[iii] = (@bc*sin(v))*fscale elseif @function == "Boy Surface" csx[iii] = ((2/3)*(cos(u)*cos(2*v)+sqrt(2)*sin(u)*cos(v))*cos(u) /(sqrt(2) - sin(2*u)*sin(3*v)))*fscale csy[iii] = ((2/3)*(cos(u)*sin(2*v)-sqrt(2)*sin(u)*sin(v))*cos(u) /(sqrt(2)-sin(2*u)*sin(3*v)))*fscale csz[iii] = (sqrt(2)*cos(u)^2 / (sqrt(2) - sin(2*u)*sin(2*v)))*fscale elseif @function == "Dini's Surface" csx[iii] = (@da*cos(u)*sin(v))*fscale csy[iii] = (@da*sin(u)*sin(v))*fscale csz[iii] = (@da*(cos(v)+log(tan((v/2))))+@db*u)*fscale elseif @function == "Enneper's Surface" csx[iii] = (u-(u*u*u/3)+u*v*v)*fscale csy[iii] = (v-(v*v*v/3)+u*u*v)*fscale csz[iii] = (u*u-v*v)*fscale elseif @function == "Kuen's Surface" csx[iii] = (2*(cos(u)+u*sin(u))*sin(v)/(1+u*u*sin(v)*sin(v)))*fscale csy[iii] = (2*(sin(u)-u*cos(u))*sin(v)/(1+u*u*sin(v)*sin(v)))*fscale csz[iii] = (log(tan(v/2))+2*cos(v)/(1+u*u*sin(v)*sin(v)))*fscale elseif @function == "Swallowtail" csx[iii] = (u*v^2+3*v^4)*fscale csy[iii] = (-2*u*v-4*v^3)*fscale csz[iii] = (u)*fscale elseif @function == "Catalan's Surface" csx[iii] = (u-sin(u)*cosh(v))*fscale csy[iii] = (1-cos(u)*cosh(v))*fscale csz[iii] = (4*sin(u/2)*sinh(v/2))*fscale elseif @function == "Hennenberg's Surface" csx[iii] = (2*sinh(u)*cos(v)-2/3*sinh(3*u)*cos(3*v))*fscale csy[iii] = (2*sinh(u)*sin(v)+2/3*sinh(3*u)*sin(3*v))*fscale csz[iii] = (2*cosh(2*u)*cos(2*v))*fscale elseif @function == "Corkscrew" csx[iii] = (@ta*cos(u)*cos(v))*fscale csy[iii] = (@ta*sin(u)*cos(v))*fscale csz[iii] = (@ta*sin(v)+@tb*u)*fscale elseif @function == "Hyperbolic Helicoid" csx[iii] = (sinh(v)*cos(@tau*u)/(1+cosh(u)*cosh(v)))*fscale csy[iii] = (sinh(v)*sin(@tau*u)/(1+cosh(u)*cosh(v)))*fscale csz[iii] = (cosh(v)*sinh(u)/(1+cosh(u)*cosh(v)))*fscale elseif @function == "Sine Surface" csx[iii] = (@sa*sin(u))*fscale csy[iii] = (@sa*sin(v))*fscale csz[iii] = (@sa*sin(u+v))*fscale elseif @function == "Trefoil Knot" csx[iii] = (sin(3*u))*fscale csy[iii] = (sin(u)+2*sin(2*u))*fscale csz[iii] = (cos(u)-2*cos(2*u))*fscale elseif @function == "Lissajous Knots" csx[iii] = (cos(@na*u+@la))*fscale csy[iii] = (cos(@nb*u+@lb))*fscale csz[iii] = (cos(@nc*u+@lc))*fscale elseif @function == "Toroidal Spiral" while k < @numcoil csx[iii] = ((@tsa+sin(@nts*u+2*k*#pi/@numcoil))*cos(u))*fscale csy[iii] = ((@tsa+sin(@nts*u+2*k*#pi/@numcoil))*sin(u))*fscale csz[iii] = (cos(@nts*u+2*k*#pi/@numcoil))*fscale k = k + 1 if k < @numcoil iii = iii + 1 endif endwhile k = 0 elseif @function == "Klein Bottle" kr = 4*(1-cos(u)/2) if u < #pi csx[iii] = (6*cos(u)*(1+sin(u))+kr*cos(u)*cos(v))*fscale csy[iii] = (16*sin(u)+kr*sin(u)*cos(v))*fscale else csx[iii] = (6*cos(u)*(1+sin(u))+kr*cos(v+#pi))*fscale csy[iii] = (16*sin(u))*fscale endif csz[iii] = (kr*sin(v))*fscale elseif @function == "Triangular Trefoil" csx[iii] = (2*sin(3*u)/(2+cos(v)))*fscale csy[iii] = (2*(sin(u)+2*sin(2*u))/(2+cos(v+2*#pi/3)))*fscale csz[iii] = ((cos(u)-2*cos(2*u))*(2+cos(v))*(2+cos(v+2*#pi/3))/4)*fscale elseif @function == "Bent Horns" csx[iii] = ((2+cos(u))*(v/3-sin(v)))*fscale csy[iii] = ((2+cos(u-2*#pi/3))*(cos(v)-1))*fscale csz[iii] = ((2+cos(u+2*#pi/3))*(cos(v)-1))*fscale elseif @function == "Pisot Triaxial" csx[iii] = (0.655866*cos(1.03002+u)*(2+cos(v)))*fscale csy[iii] = (0.754878*cos(1.40772-u)*(2+0.868837*cos(2.43773+v)))*fscale csz[iii] = (0.868837*cos(2.43773+u)*(2+0.495098*cos(0.377696-v)))*fscale elseif @function == "Spherical Harmonics" sr = sin(@m1*u)^@m2+cos(@m3*u)^@m4+sin(@m5*v)^@m6+cos(@m7*v)^@m8 csx[iii] = (sr*sin(u)*cos(v))*fscale csy[iii] = (sr*cos(u))*fscale csz[iii] = (sr*sin(u)*sin(v))*fscale elseif @function == "Slippers Surface" csx[iii] = ((2+cos(u)*cos(v)^3*sin(v)))*fscale csy[iii] = ((2+cos(u+2*#pi/3))*cos(2*#pi/3+v)^2*sin(2*#pi/3+v)^2)*fscale csz[iii] = (-(2+cos(u-2*#pi/3))*cos(2*#pi/3-v)^2*sin(2*#pi/3-v)^3)*fscale elseif @function == "SuperShape" ru = ((1/@ssa*cos(@ssm*u/4))^@ssn2+(1/@ssb*sin(@ssm*u/4))^@ssn3)^(-1/@ssn1) rv = ((1/@ssa*cos(@ssm*v/4))^@ssn2+(1/@ssb*sin(@ssm*v/4))^@ssn3)^(-1/@ssn1) csx[iii] = (ru*cos(u)*rv*cos(v))*fscale csy[iii] = (ru*sin(u)*rv*cos(v))*fscale csz[iii] = (rv*sin(v))*fscale elseif @function == "Fano Planes" csx[iii] = (cos(2*#pi*(u-v/3))*cos(2*#pi*(-u-v/3))*cos(2*#pi*(u-sqrt(3))))*fscale csy[iii] = (cos(2*#pi*(u-v/3+2/3))*cos(2*#pi*(-u-v/3+2/3))*cos(2*#pi*(-u-v+1)))*fscale csz[iii] = (cos(2*#pi*(u-v/3-2/3))*cos(2*#pi*(-u-v/3-2/3))*cos(2*#pi*(-u+v+1)))*fscale elseif @function == "Twisted Fano" csx[iii] = (cos(2*#pi*(u-v/3))*cos(2*#pi*(-u-v/3))*cos(2*#pi*v)*cos(2*#pi*u))*fscale csy[iii] = (cos(2*#pi*(u-v/3)+2*#pi/3)*cos(2*#pi*(-u-v/3)+2*#pi/3)*cos(2*#pi*(-u-v)+2*#pi/3)*cos(2*#pi*(u-1)))*fscale csz[iii] = (cos(2*#pi*(u-v/3)-2*#pi/3)*cos(2*#pi*(-u-v/3)-2*#pi/3)*cos(2*#pi*(-u+v)+2*#pi/3)*cos(2*#pi*(u-2)))*fscale elseif @function == "Cresent" csx[iii] = ((2+sin(2*#pi*u)*sin(2*#pi*v))*sin(3*#pi*v))*fscale csy[iii] = ((2+sin(2*#pi*u)*sin(2*#pi*v))*cos(3*#pi*v))*fscale csz[iii] = (cos(2*#pi*u)*sin(2*#pi*v)+4*v-2)*fscale elseif @function == "Twisted Triaxial" csx[iii] = ((1-((u*u+v*v)/2)^0.5/#pi)*cos(u)*cos(v)+((u*u+v*v)/2)^0.5/#pi*sin(u)*sin(v))*fscale csy[iii] = ((1-((u*u+v*v)/2)^0.5/#pi)*cos(u+2*#pi/3)*cos(v+2*#pi/3)+((u*u+v*v)/2)^0.5/#pi*sin(u+2*#pi/3)*sin(v+2*#pi/3))*fscale csz[iii] = ((1-((u*u+v*v)/2)^0.5/#pi)*cos(u+4*#pi/3)*cos(v+4*#pi/3)+((u*u+v*v)/2)^0.5/#pi*sin(u+4*#pi/3)*sin(v+4*#pi/3))*fscale elseif @function == "Maeder's Owl" csx[iii] = (v*cos(u)-0.5*v^2*cos(2*u))*fscale csy[iii] = (-v*sin(u)-0.5*v^2*sin(2*u))*fscale csz[iii] = (4*v^1.5*cos(3*u/2)/3)*fscale elseif @function == "Stiletto Surface" csx[iii] = ((2+cos(u))*cos(v)^3*sin(v))*fscale csy[iii] = ((2+cos(u+2*#pi/3))*cos(v+2*#pi/3)^2*sin(v+2*#pi/3)^2)*fscale csz[iii] = (-(2+cos(u-2*#pi/3))*cos(v+2*#pi/3)^2*sin(v+2*#pi/3)^2)*fscale elseif @function == "Verrill Surface" csx[iii] = (-2*u*cos(v)+2*cos(v)/u-2*u^3*cos(3*v)/3)*fscale csy[iii] = (6*u*sin(v)-2*sin(v)/u-2*u^3*sin(3*v)/3)*fscale csz[iii] = (4*log(u))*fscale elseif @function == "Twisted Heart" csx[iii] = ((abs(v)-abs(u) - abs(tanh(u/sqrt(2))*sqrt(2))+abs(tanh(v/sqrt(2))*sqrt(2)))*sin(v))*fscale csy[iii] = ((abs(v)+abs(u) - abs(tanh(u/sqrt(2))*sqrt(2))-abs(tanh(v/sqrt(2))*sqrt(2)))*cos(v))*fscale csz[iii] = ((u^2+v^2)/(cosh(u/sqrt(2))+cosh(v/sqrt(2)))/sqrt(2))*fscale elseif @function == "Figure 8 Torus" csx[iii] = (cos(u)*(@ftc+sin(v)*cos(u)-sin(2*v)*sin(u)/2))*fscale csy[iii] = (sin(u)*(@ftc+sin(v)*cos(u)-sin(2*v)*sin(u)/2))*fscale csz[iii] = (sin(u)*sin(v)+cos(u)*sin(2*v)/2)*fscale elseif @function == "Triaxial Teardrop" csx[iii] = ((1-cos(u))*cos(u+2*#pi/3)*cos(v+2*#pi/3)/2)*fscale csy[iii] = ((1-cos(u))*cos(u+2*#pi/3)*cos(v-2*#pi/3)/2)*fscale csz[iii] = (cos(u-2*#pi/3))*fscale elseif @function == "Lemniscape" csx[iii] = (cos(v)*sqrt(abs(sin(2*u)))*cos(u))*fscale csy[iii] = (cos(v)*sqrt(abs(sin(2*u)))*sin(u))*fscale csz[iii] = ((csx[iii]/fscale)^2-(csy[iii]/fscale)^2+ \ 2*csx[iii]/fscale*csy[iii]/fscale*tan(v)^2)*fscale elseif @function == "Tractrix" csx[iii] = (cos(u)*(v-tanh(v)))*fscale csy[iii] = (cos(u)/cosh(v))*fscale csz[iii] = ((csx[iii]/fscale)^2-(csy[iii]/fscale)^2+ \ 2*csx[iii]/fscale*csy[iii]/fscale*tanh(u)^2)*fscale elseif @function == "Triaxial Tritorus" csx[iii] = (sin(u)*(1+cos(v)))*fscale csy[iii] = (sin(u+2*#pi/3)*(1+cos(v+2*#pi/3)))*fscale csz[iii] = (sin(u+4*#pi/3)*(1+cos(v+4*#pi/3)))*fscale elseif @function == "Saddle Torus" csx[iii] = ((2+cos(u))*cos(v))*fscale csy[iii] = ((2+cos(u+2*#pi/3))*cos(v+2*#pi/3))*fscale csz[iii] = ((2+(1-cos(u)^2-cos(u+2*#pi/3)^2)/abs(1-cos(u)^2-cos(u+2*#pi/3)^2)* \ sqrt(abs(1-cos(u)^2-cos(u+2*#pi/3)^2)))* \ (1-cos(v)^2-cos(v+2*#pi/3)^2)/abs(1-cos(v)^2-cos(v+2*#pi/3)^2)* \ sqrt(abs(1-cos(v)^2-cos(v+2*#pi/3)^2)))*fscale elseif @function == "Limpet Torus" csx[iii] = (cos(u)/(sqrt(2)+sin(v)))*fscale csy[iii] = (sin(u)/(sqrt(2)+sin(v)))*fscale csz[iii] = (1/(sqrt(2)+cos(v)))*fscale elseif @function == "Bow Tie" csx[iii] = (sin(u)/(sqrt(2)+sin(v)))*fscale csy[iii] = (sin(u)/(sqrt(2)+cos(v)))*fscale csz[iii] = (cos(u)/(sqrt(2)+1))*fscale elseif @function == "Cross Cap" csx[iii] = (cos(u)*sin(2*v))*fscale csy[iii] = (sin(u)*sin(2*v))*fscale csz[iii] = (cos(v)*cos(v)-cos(u)*cos(u)*sin(v)*sin(v))*fscale elseif @function == "Whitney Umbrella" csx[iii] = (0.5*sin(u)^2*cos(2*v))*fscale csy[iii] = (0.5*sin(u)^2*sin(2*v))*fscale csz[iii] = (sin(u)*sin(v))*fscale elseif @function == "Triaxial Hexatorus" csx[iii] = (sin(u)/(sqrt(2)+cos(v)))*fscale csy[iii] = (sin(u+2*#pi/3)/(sqrt(2)+cos(v+2*#pi/3)))*fscale csz[iii] = (cos(u-2*#pi/3)/(sqrt(2)+cos(v-2*#pi/3)))*fscale elseif @function == "Fish Surface" csx[iii] = ((cos(u)-cos(2*u))*cos(v)/4)*fscale csy[iii] = ((sin(u)-sin(2*u))*sin(v)/4)*fscale csz[iii] = (cos(u))*fscale elseif @function == "Twisted Pipe" csx[iii] = (cos(v)*(2+cos(u))/sqrt(1+sin(v)^2))*fscale csy[iii] = (sin(v+2*#pi/3)*(2+cos(u+2*#pi/3))/sqrt(1+sin(v)^2))*fscale csz[iii] = (sin(v-2*#pi/3)*(2+cos(u-2*#pi/3))/sqrt(1+sin(v)^2))*fscale elseif @function == "Knot 4" kr = 0.8+1.6*sin(6*u) kt = 2*u kp = 0.6*pi*sin(12*u) csx[iii] = kr*cos(kp)*cos(kt)*fscale csy[iii] = kr*cos(kp)*sin(kt)*fscale csz[iii] = kr*sin(kp)*fscale elseif @function == "Eight Knot" csx[iii] = (10*(cos(u)+cos(3*u))+cos(2*u)+cos(4*u))*fscale csy[iii] = (6*sin(u)+10*sin(3*u))*fscale csz[iii] = (4*sin(3*u)*sin(5*u/2)+4*sin(4*u)-2*sin(6*u))*fscale elseif @function == "Cinquefoil Knot" csx[iii] = cos(u)*(2-cos(2*u/(2*@ck+1)))*fscale csy[iii] = sin(u)*(2-cos(2*u/(2*@ck+1)))*fscale csz[iii] = -sin(2*u/(2*@ck+1))*fscale elseif @function == "Granny Knot" csx[iii] = (-22*cos(u)-128*sin(u)-44*cos(3*u)-78*sin(3*u))*fscale csy[iii] = (-10*cos(2*u)-27*sin(2*u)+38*cos(4*u)+46*sin(4*u))*fscale csz[iii] = (70*cos(3*u)-40*sin(3*u))*fscale endif int kk = 0 if @method == "index u" if @function == "Toroidal Spiral" while kk < @numcoil clr[iii-kk] = i-kk kk = kk+1 endwhile else clr[iii] = i endif elseif @method == "index v" if @function == "Toroidal Spiral" while kk < @numcoil clr[iii-kk] = j-kk+@numcoil kk = kk+1 endwhile else clr[iii] = j endif elseif @method == "index u+v" if @function == "Toroidal Spiral" while kk < @numcoil clr[iii-kk] = i+j-kk kk = kk+1 endwhile else clr[iii] = i + j endif elseif @method == "main index" if @function == "Toroidal Spiral" while kk < @numcoil clr[iii-kk] = iii-kk kk = kk+1 endwhile else clr[iii] = iii endif elseif @method == "position" if @function == "Toroidal Spiral" while kk < @numcoil clr[iii-kk] = sqrt(csx[iii-kk]^2+csy[iii-kk]^2+csz[iii-kk]^2)*#width kk = kk+1 endwhile else clr[iii] = sqrt(csx[iii]^2+csy[iii]^2+csz[iii]^2)*#width endif endif j = j + 1 iii = iii + 1 endwhile j = 0 i = i + 1 endwhile int maxi = iii-1 ; ; translate spheres to pixel positions. This is before application of ray ; tracing. Perspective and camera effects will move the positions so that ; magnification and center position on the Locations tab will not accurately ; reflect the actual image position on the screen. ; iii = 0 while iii <= maxi fx = csx[iii] fy = csy[iii] if @version < 122 zz = csz[iii] if @function == "Slippers Surface" fx = fx - 6 fy = fy - 1 elseif @function == "Stiletto Surface" fy = fy - 0.75 elseif @function == "Triaxial Teardrop" zz = zz - 1 endif ffx = fx - xmin ffy = fy - xmin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax ffz = (zmin-zz)/sqrt(txmax^2+tymax^2) else zz = csz[iii]/asp if @function == "Slippers Surface" fx = fx - 6 fy = fy - 1 elseif @function == "Stiletto Surface" fy = fy - 0.75 elseif @function == "Triaxial Teardrop" zz = zz - 1 endif tymax = txmax tzmax = txmax ffx = fx - xmin ffy = fy - ymin ffy = tymax*asp - ffy tymax = txmax tzmax = txmax ffx = ffx/txmax ffy = ffy/tymax ffz = (zz-zmin)/tzmax endif ; ; rotation around the z axis ; temp = ffx-0.5-@rotoffx/txmax + flip(ffy-0.5- @rotoffy/tymax) temp = temp*rotz ffx = real(temp)+0.5 ffy = imag(temp)+0.5 ; rotation around the y axis temp = ffx-0.5-@rotoffx/txmax + flip(ffz-0.5- @rotoffz/txmax) temp = temp*roty ffx = (real(temp)+0.5) ffz = imag(temp)+0.5 ; rotation around the x axis temp = ffy-0.5-@rotoffy/tymax + flip(ffz-0.5- @rotoffz/txmax) temp = temp*rotx ffy = (real(temp)+0.5) ffz = imag(temp)+0.5 ; ; final translation. #width is used for all dimensions since the ; ray trace algorithm takes the aspect ratio into account. ; ffx = (ffx + @transx)*#width ffy = (ffy + @transy)*#width ffz = (ffz + @transz)*#width csx[iii] = ffx csy[iii] = ffy csz[iii] = ffz iii = iii + 1 endwhile rds = round(radius*#width/txmax*fscale) ; ; switch the low and high colors for more realistic effects when transparency ; is used. ; if @switch && @tparent int i = 0 while i < 200 colorswitch = colormap[i,0] colormap[i,0] = colormap[i,1] colormap[i,1] = colorswitch i = i + 1 endwhile endif init: ; initialize camera vector float vx = 0.0 float vy = 0.0 float vz = 0.0 float vd = 0.0 ; this is used for normalizing all vectors ; ; refraction vector array (continuation of camera vector through refractions) float vxt[300] float vyt[300] float vzt[300] ; initialize light vector float lx = 0.0 float ly = 0.0 float lz = 0.0 ; ; initialize intersection point float xi = 0 float yi = 0 float zi = 0 ; ; initialize floor intersection point float xf = 0 float yf = 0 float zf = 0 ; ; initialize reflection intersection point float xr = 0 float yr = 0 float zr = 0 ; ; initialize floor reflection intersection point float xrf = 0 float yrf = 0 float zrf = 0 ; ; floor intersection array for refraction vector float xft[100] float yft[100] float zft[100] ; refraction intersection array float xit[300] float yit[300] float zit[300] int it = 0 int jt = 0 ; surface normal array for refraction intersections float lxtt[300] float lytt[300] float lztt[300] float ctheta2 = 0 ; refraction angle float rfi = 0 ; refractive index ratio float tdt[100] ; distance from back of sphere to floor (refracted ray) float dt[100] ; distance from back of sphere to next closest sphere (refracted ray) ; initialize to 1e10 it = 0 while it < 100 tdt[it]= 1e10 dt[it] = 1e10 it = it + 1 endwhile float ldt[100] ; distance from floor intersection to light (refracted ray) float floormodt[100] float fractalmodt[100] ; initialize to 10 it = 0 while it < 100 floormodt[it] = 10 fractalmodt[it] = 10 it = it + 1 endwhile float ldst[100] ; distance from closest sphere on refraction path to floor bool stop = false float tindex[100] ; color index for refracted spheres float colrT[100] ; color parameter for refracted spheres float ltfact[100] ; refracted floor fade according to lighting model color colorft[100] ; refracted floor color value float ltt[100] ; dot product of light vector and normal and refract intersection float colorPosT[100] ; color parameter for refracted spheres float hvalt[100] ; hightlight parameter for refracted spheres int xcrd = #x int ycrd = #y bool inside = true if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width)*0.5; float transy = (#height)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd<0 || xcrd>=#width || ycrd<0 || ycrd>=#height) inside = false endif endif float ambient = @ambient float hval = 0 ; highlight param for spheres float hvalR = 0 ; highlight param for sphere reflections float hvalRF = 0 ; highlight param for sphere reflections off floor float colorPos = 0 ; color param for spheres float colorPosR = 0 ; color param for sphere reflections float colorPosRF = 0 ; color param for sphere reflections off floor int rangeNum = 0 ; color ranges for spheres int rangeNumR = 0 ; color ranges for sphere reflections int rangeNumRF = 0 ; color ranges for sphere reflections off floor int rangeNumT[100] ; color ranges for sphere refractions color color1 = rgb(0,0,0) color color2 = rgb(0,0,0) color tempcolor = rgb(0,0,0) color colorf = rgb(0,0,0) int floormod = 10 int floormodr = 10 float fractalmod = 10 float fractalmodr = 10 color fractalcolor = rgb(0,0,0) color amcolor = @amcolor float extent = 1.0 - @extent float ctheta = 0 ; cos of angle between camera ray and floor normal float ortheta = 0 ; dot product of camera position and floor normal float dirtheta = 0 ; negative cos of angle between camera ray and floor normal float leftbound = @leftbound*#width float rightbound = @rightbound*#width float topbound = -@topbound*#width*asp float bottombound = -@bottombound*#width*asp float td = 1e10 ; distance to closest sphere float tdr = 1e10 ; distance to closest reflection sphere float ld = 0 ; distance from light to floor intersection float ltfac = 0 ; floor fade according to lighting model float ltfacr = 0 ; floor reflection on sphere fade according to lighting model float lds = 0 ; distance from light to closest sphere with floor reflection float st = 0 float sd = 0 ; bool trapped = false ; if frac[xcrd,ycrd] == -1 ; trapped = true ; endif ; light position float lightx = @lightx*#width float lighty = @lighty*#width*asp float lightz = @lightz*#width*asp ; camera position float camx = 0 float camy = 0 float camz = 0 ; float z0 = @vplane*#width*asp float zl = @lplane*#width*asp ; camx = @camerax*#width camy = @cameray*#width*asp camz = @cameraz*#width*asp ; ; create the camera vector ; vx = xcrd-(#width-@cpointx*#width) -camx vy = ycrd-(@cpointy*#width-#width)*asp -camy vz = -z0 - camz vd = 1/sqrt(vx*vx+vy*vy+vz*vz) vx = vx*vd vy = vy*vd vz = vz*vd ; create vector for light direction if @ltype == "Point source" || @ltype == "Spotlight" lx = #width-@lpointx*#width-lightx ly = (@lpointy*#width-#width)*asp-lighty lz = -zl-lightz else float elevation = -@elevation float d2r = #pi/180; degrees to radians conversion factor lx = -cos(@angle*d2r) * cos(elevation*d2r) ly = -sin(@angle*d2r) * cos(elevation*d2r) lz = sin(elevation*d2r) endif vd = 1/sqrt(lx*lx+ly*ly+lz*lz) lx = -lx*vd ly = -ly*vd lz = -lz*vd ; ; initialize normal vector for intersection point float lxt = 0 float lyt = 0 float lzt = 0 ; ; initialize normal vector for intersection point on floor float lxtf = 0 float lytf = 0 float lztf = 0 ; ; initialize normal vector for intersection point at reflection object float lxn = 0 float lyn = 0 float lzn = 0 ; ; initialize reflection vector float lxr = 0 float lyr = 0 float lzr = 0 ; ; initialize reflection vector from floor float lxfr = 0 float lyfr = 0 float lzfr = 0 ; float bi = 0 float ci = 0 float arg = 0 float ti1 = 0 float ti2 = 0 float ti = 0 float colr = 0 ; gradient sphere color parameter float colrR = 0 ; gradient sphere relection color parameter float colrRF = 0 ; gradient sphere refraction color parameter float colorPos = 0 ; sphere color float lt = 0 ; dot product of light vector and normal float d = 1e10 ; distance from camera to closest float ss = 1e10 float ro = 1e10 ; distance from intersection to closest reflection sphere float dx = 0 float dy = 0 float dz = 0 float am = 0 ; shadow color float am2 = 0 ; shadow parameter float cindex = 0 float lrf = 0 ; reflection on floor coloring int rspf = 0 ; index of sphere reflected onto floor float rof = 1e10 ; distance from intersection to next refraction int ri = 1 int ristart = 0 int rsp = 0 ; index of reflection sphere float lr = 0 ; reflection coloring int di = 0 float rindex = 0 float rindexf = 0 ; ; create floor ; if @floor ; floor normal lxtf = fa lytf = fb lztf = fc vd = 1/sqrt(lxtf*lxtf+lytf*lytf+lztf*lztf) lxtf = lxtf*vd lytf = lytf*vd lztf = lztf*vd ; dot product with ray origin ortheta = lxtf*camx+lytf*camy+lztf*camz ; dot product with camera vector dirtheta = lxtf*vx+lytf*vy+lztf*vz ; distance from camera to intersection td = -(ortheta+fd)/dirtheta ; intersection point with camera ray if td > 0 xf = camx+vx*td yf = camy+vy*td zf = camz+vz*td endif ; distance to light if @ltype == "Point source" if td > 0 ld = sqrt((lightx-xf)^2 + (lighty-yf)^2+ (lightz-zf)^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ld = 1234567890 endif elseif @ltype == "Spotlight" st = (xf-lightx)*lx + (yf-lighty)*ly + (zf-lightz)*lz sd = sqrt((lightx-xf+lx*st)^2+(lighty-yf+ly*st)^2+(lightz-zf+lz*st)^2) if @spottype == "Sharp" ld = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ld = 1-@ambient endif elseif @spottype == "Set focus" ld = (sd/(@spotrad*#width*asp))^@setfocus if ld < 0.8 ld = 0 else ld = ld - 0.8 endif if ld > 1-@ambient ld = 1-@ambient endif endif endif if @fbound == true ; put bounds on the floor if xf < leftbound || zf < topbound || xf > rightbound || zf > bottombound td = 0 ld = 1234567890 endif endif ; setup checkerboard complex fp = (lytf+lztf)*xf + lxtf*yf + \ flip((lxtf+lytf)*zf + lztf*yf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormod = 0 else floormod = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmod = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width/2*asp)%trunc(#width*asp)] endif ; is the floor point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if rds != -1 if ri != di ; eliminate self-shadow bi = (lx*(xf-csx[ri])+ly*(yf-csy[ri])+lz*(zf-csz[ri])) ci = (xf-csx[ri])^2+(yf-csy[ri])^2+(zf-csz[ri])^2-rds^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am2 = @am endif endif endif endif ri = ri + 1 endwhile endif ss = 1e10 ; ; is there a reflection object to reflect onto the floor? ; if @version >=122 if @reflect && @reflectf ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxtf*vx-lytf*vy-lztf*vz ; N.I lxfr = -vx+2*lxtf*ctheta lyfr = -vy+2*lytf*ctheta lzfr = -vz+2*lztf*ctheta vd = 1/sqrt(lxfr*lxfr+lyfr*lyfr+lzfr*lzfr) lxfr = lxfr*vd lyfr = lyfr*vd lzfr = lzfr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 while ri <= maxi if rds != -1 bi = (lxfr*(xf-csx[ri])+lyfr*(yf-csy[ri])+lzfr*(zf-csz[ri])) ci = (xf-csx[ri])^2+(yf-csy[ri])^2+(zf-csz[ri])^2-rds^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < rof ; find closest reflection object rof = ti rspf = ri ; index of reflection object endif endif endif ri = ri + 1 endwhile if rof != 1e10 && @reflectf==true ; find intersection point on reflection object xr = xf+lxfr*rof yr = yf+lyfr*rof zr = zf+lzfr*rof ; ; create the normal at the intersection point lxn = -(xr-csx[rspf])/rds lyn = (yr-csy[rspf])/rds lzn = (zr-csz[rspf])/rds vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection ; if colorsUsed == 8 && !@reflect if colorsUsed == 8 rindexf = trunc(clr[rspf]) if (trunc(rindexf/colorsUsed+0.01)%2) == 0 rindexf = rindexf%colorsUsed else rindexf = colorsUsed-1-(rindexf)%(colorsUsed) endif else rindexf = trunc(clr[rspf])%colorsUsed endif lrf = -(lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif endif ; ri = ristart ti = 0 while ri <= maxi if rds != -1 bi = vx*(camx-csx[ri])+vy*(camy-csy[ri])+vz*(camz-csz[ri]) ci = (camx-csx[ri])^2+(camy-csy[ri])^2+(camz-csz[ri])^2-rds^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < d ; find closest object d = ti dx = csx[ri] dy = csy[ri] dz = csz[ri] di = ri if colorsUsed == 8 && !@reflect cindex = trunc(clr[ri]) if (trunc(cindex/colorsUsed+0.01)%2) == 0 cindex = cindex%colorsUsed else cindex = colorsUsed-1-(cindex)%(colorsUsed) endif else cindex = trunc(clr[ri])%colorsUsed endif endif endif ri = ri+1 endwhile if d > 0 && d != 1e10 ; intersection point outside object xi = camx+vx*d yi = camy+vy*d zi = camz+vz*d ; distance to light if @ltype == "Point source" if tdr > 0 lds = sqrt((lightx-xi)^2 + (lighty-yi)^2+ (lightz-zi)^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else lds = 1234567890 endif elseif @ltype == "Spotlight" st = (xi-lightx)*lx + (yi-lighty)*ly + (zi-lightz)*lz sd = sqrt((lightx-xi+lx*st)^2+(lighty-yi+ly*st)^2+(lightz-zi+lz*st)^2) if @spottype == "Sharp" lds = 0.0 if (sd/(@spotrad*#width*asp)) > 1 lds = 1-@ambient endif elseif @spottype == "Set focus" lds = (sd/(@spotrad*#width*asp))^@setfocus if lds < 0.8 lds = 0 else lds = lds - 0.8 endif if lds > 1-@ambient lds = 1-@ambient endif endif endif ; ; is the point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if rds != -1 if ri != di ; eliminate self-shadow bi = (lx*(xi-csx[ri])+ly*(yi-csy[ri])+lz*(zi-csz[ri])) ci = (xi-csx[ri])^2+(yi-csy[ri])^2+(zi-csz[ri])^2-rds^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am = (1.0/@totalColors)*@am+(1.0/@totalColors)*(cindex+(1-@scale/2)/2)-0.015 endif endif endif endif ri = ri + 1 endwhile endif ; ; create the normals at the intersection points ; lxt = (xi-dx)/rds lyt = (yi-dy)/rds lzt = (zi-dz)/rds vd = 1/sqrt(lxt*lxt+lyt*lyt+lzt*lzt) lxt = lxt*vd lyt = lyt*vd lzt = lzt*vd ; ; check for reflections ; if @reflect == true ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxt*vx-lyt*vy-lzt*vz ; N.I lxr = vx+2*lxt*ctheta lyr = vy+2*lyt*ctheta lzr = vz+2*lzt*ctheta vd = 1/sqrt(lxr*lxr+lyr*lyr+lzr*lzr) lxr = lxr*vd lyr = lyr*vd lzr = lzr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 lr = 0 while ri <= maxi if rds != -1 if di != ri ; eliminate self-reflection bi = (lxr*(xi-csx[ri])+lyr*(yi-csy[ri])+lzr*(zi-csz[ri])) ci = (xi-csx[ri])^2+(yi-csy[ri])^2+(zi-csz[ri])^2-rds^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ro ; find closest reflection object ro = ti rsp = ri ; index of reflection object endif endif endif endif ri = ri + 1 endwhile ; ; Is the floor closer? if @floor == true ; intersection point with reflection ray ; dot product with ray origin ortheta = lxtf*xi+lytf*yi+lztf*zi ; dot product with reflection vector dirtheta = lxtf*lxr+lytf*lyr+lztf*lzr ; distance from camera to intersection tdr = -(ortheta+fd)/dirtheta if tdr > 0 xrf = xi+lxr*tdr yrf = yi+lyr*tdr zrf = zi+lzr*tdr endif endif if tdr < ro && tdr > 0 ; floor is closest reflection object if @fbound == true ; put bounds on the floor if xrf < leftbound || zrf < topbound || xrf > rightbound || zrf > bottombound tdr = 0 endif endif ; setup checkerboard complex fp = (lytf+lztf)*xrf + lxtf*yrf + \ flip((lxtf+lytf)*zrf + lztf*yrf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodr = 0 else floormodr = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmodr = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif else if ro != 1e10 && @reflect==true ; find intersection point on reflection object xr = xi+lxr*ro yr = yi+lyr*ro zr = zi+lzr*ro ; ; create the normal at the intersection point lxn = (xr-csx[rsp])/rds lyn = (yr-csy[rsp])/rds lzn = (zr-csz[rsp])/rds vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection if colorsUsed == 8 && !@reflect rindex = trunc(clr[rsp]) if (trunc(rindex/colorsUsed+0.01)%2) == 0 rindex = rindex%colorsUsed else rindex = colorsUsed-1-(rindex)%(colorsUsed) endif else rindex = trunc(clr[rsp])%colorsUsed endif lr = (lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif ; ; tranparency code ; ; ; initialize initial array values ; ; refraction vectors vxt[0] = vx vyt[0] = vy vzt[0] = vz ; sphere intersection points xit[0] = xi yit[0] = yi zit[0] = zi lxtt[0] = lxt lytt[0] = lyt lztt[0] = lzt ; array indices it = 0 jt = 0 stop = false if @tparent while !stop ltt[jt] = 0 ldt[jt] = 0 ldst[jt] = 0 ; calculate surface normal ; float dlast = di lxtt[it] = (xit[it]-csx[di])/rds lytt[it] = (yit[it]-csy[di])/rds lztt[it] = (zit[it]-csz[di])/rds vd = 1/sqrt(lxtt[it]*lxtt[it]+lytt[it]*lytt[it]+lztt[it]*lztt[it]) lxtt[it] = lxtt[it]*vd lytt[it] = lytt[it]*vd lztt[it] = lztt[it]*vd ; ; calculate refraction vector #1 ; ; T = [I/rfi-(ctheta2-ctheta/rfi)*N] ; Snell's law: sin(angle1)/sin(angle2) = rf2/rf1 = rfi rfi = @rfi ctheta = -lxtt[it]*vxt[it]-lytt[it]*vyt[it]-lztt[it]*vzt[it] ; N.I ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) ; T.I vxt[it+1] = vxt[it]/rfi-lxtt[it]*(ctheta2-ctheta/rfi) vyt[it+1] = vyt[it]/rfi-lytt[it]*(ctheta2-ctheta/rfi) vzt[it+1] = vzt[it]/rfi-lztt[it]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+1]*vxt[it+1]+vyt[it+1]*vyt[it+1]+vzt[it+1]*vzt[it+1]) vxt[it+1] = vxt[it+1]*vd vyt[it+1] = vyt[it+1]*vd vzt[it+1] = vzt[it+1]*vd ; ; find intersection in back of sphere ; bi = vxt[it+1]*(xit[it]-csx[di])+vyt[it+1]*(yit[it]-csy[di])+vzt[it+1]*(zit[it]-csz[di]) ci = (xit[it]-csx[di])^2+(yit[it]-csy[di])^2+(zit[it]-csz[di])^2-rds^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 < ti2 ; find largest ti ti = ti2 else ti = ti1 endif endif xit[it+1] = xit[it]+vxt[it+1]*ti yit[it+1] = yit[it]+vyt[it+1]*ti zit[it+1] = zit[it]+vzt[it+1]*ti ; ; calculate surface normal #2 ; lxtt[it+1] = -(xit[it+1]-csx[di])/rds lytt[it+1] = -(yit[it+1]-csy[di])/rds lztt[it+1] = -(zit[it+1]-csz[di])/rds vd = 1/sqrt(lxtt[it+1]*lxtt[it+1]+lytt[it+1]*lytt[it+1]+lztt[it+1]*lztt[it+1]) lxtt[it+1] = lxtt[it+1]*vd lytt[it+1] = lytt[it+1]*vd lztt[it+1] = lztt[it+1]*vd ; ; calculate refraction vector #2 ; ctheta = -lxtt[it+1]*vxt[it+1]-lytt[it+1]*vyt[it+1]-lztt[it+1]*vzt[it+1] ; N.I rfi = 1/@rfi ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) vxt[it+2] = vxt[it+1]/rfi-lxtt[it+1]*(ctheta2-ctheta/rfi) vyt[it+2] = vyt[it+1]/rfi-lytt[it+1]*(ctheta2-ctheta/rfi) vzt[it+2] = vzt[it+1]/rfi-lztt[it+1]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+2]*vxt[it+2]+vyt[it+2]*vyt[it+2]+vzt[it+2]*vzt[it+2]) vxt[it+2] = vxt[it+2]*vd vyt[it+2] = vyt[it+2]*vd vzt[it+2] = vzt[it+2]*vd ; ; determine intersection of reflection vector with floor ; ; dot product with ray origin at back of sphere ortheta = lxtf*xit[it+1]+lytf*yit[it+1]+lztf*zit[it+1] ; dot product with 2nd refraction vector dirtheta = lxtf*vxt[it+2]+lytf*vyt[it+2]+lztf*vzt[it+2] ; distance from back of sphere to intersection with floor tdt[jt] = -(ortheta+fd)/dirtheta ; intersection point with 2nd refraction ray if tdt[jt] > 0 xft[jt] = xit[it+1]+vxt[it+2]*tdt[jt] yft[jt] = yit[it+1]+vyt[it+2]*tdt[jt] zft[jt] = zit[it+1]+vzt[it+2]*tdt[jt] endif ; ; distance from floor interection to light ; if @ltype == "Point source" if tdt[jt] > 0 ldt[jt] = sqrt((lightx-xft[jt])^2 + (lighty-yft[jt])^2+ (lightz-zft[jt])^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ldt[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xft[jt]-lightx)*lx + (yft[jt]-lighty)*ly + (zft[jt]-lightz)*lz sd = sqrt((lightx-xft[jt]+lx*st)^2+(lighty-yft[jt]+ly*st)^2+(lightz-zft[jt]+lz*st)^2) if @spottype == "Sharp" ldt[jt] = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ldt[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldt[jt] = (sd/(@spotrad*#width*asp))^@setfocus if ldt[jt] < 0.8 ldt[jt] = 0 else ldt[jt] = ldt[jt] - 0.8 endif if ldt[jt] > 1-@ambient ldt[jt] = 1-@ambient endif endif endif ; if @fbound == true ; put bounds on the floor if xft[jt] < leftbound || zft[jt] < topbound || xft[jt] > rightbound || zft[jt] > bottombound tdt[jt] = 0 ldt[jt] = 1234567890 endif endif ; ; setup checkerboard complex fp = (lytf+lztf)*xft[jt] + lxtf*yft[jt] + \ flip((lxtf+lytf)*zft[jt] + lztf*yft[jt])+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodt[jt] = 0 else floormodt[jt] = 1 endif ; setup fractal pattern elseif @flrtype == "Fractal" fp = abs(fp) fractalmodt[jt] = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif ; ; find closest sphere or terminate ; ri = ristart ti = 0 dt[jt] = 1e10 while ri <= maxi if rds != -1 && ri != dlast bi = vxt[it+2]*(xit[it+1]-csx[ri])+vyt[it+2]*(yit[it+1]-csy[ri])+vzt[it+2]*(zit[it+1]-csz[ri]) ci = (xit[it+1]-csx[ri])^2+(yit[it+1]-csy[ri])^2+(zit[it+1]-csz[ri])^2-rds^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < dt[jt] ; find closest object dt[jt] = ti dx = csx[ri] dy = csy[ri] dz = csz[ri] di = ri ; this will be used in the next level if colorsUsed == 8 && !@reflect tindex[jt] = trunc(clr[ri]) if (trunc(tindex[jt]/colorsUsed+0.01)%2) == 0 tindex[jt] = tindex[jt]%colorsUsed else tindex[jt] = colorsUsed-1-(tindex[jt])%(colorsUsed) endif else tindex[jt] = trunc(clr[ri])%colorsUsed endif endif endif ri = ri+1 endwhile ; ; intersection point with next sphere ; if dt[jt] > 0 && dt[jt] != 1e10 ; intersection point outside object xit[it+2] = xit[it+1]+vxt[it+2]*dt[jt] yit[it+2] = yit[it+1]+vyt[it+2]*dt[jt] zit[it+2] = zit[it+1]+vzt[it+2]*dt[jt] ; ; distance of intersection to light ; if @ltype == "Point source" if td > 0 ldst[jt] = sqrt((lightx-xit[it+2])^2 + (lighty-yit[it+2])^2+ (lightz-zit[it+2])^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else ldst[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xit[it+2]-lightx)*lx + (yit[it+2]-lighty)*ly + (zit[it+2]-lightz)*lz sd = sqrt((lightx-xit[it+2]+lx*st)^2+(lighty-yit[it+2]+ly*st)^2+(lightz-zit[it+2]+lz*st)^2) if @spottype == "Sharp" ldst[jt] = 0.0 if (sd/(@spotrad*#width)) > 1 ldst[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldst[jt] = (sd/(@spotrad*#width))^@setfocus if ldst[jt] < 0.8 ldst[jt] = 0 else ldst[jt] = ldst[jt] - 0.8 endif if ldst[jt] > 1-@ambient ldst[jt] = 1-@ambient endif endif endif ; calculation of surface normal #3 ; lxtt[it+2] = (xit[it+2]-dx)/rds lytt[it+2] = (yit[it+2]-dy)/rds lztt[it+2] = (zit[it+2]-dz)/rds vd = 1/sqrt(lxtt[it+2]*lxtt[it+2]+lytt[it+2]*lytt[it+2]+lztt[it+2]*lztt[it+2]) lxtt[it+2] = lxtt[it+2]*vd lytt[it+2] = lytt[it+2]*vd lztt[it+2] = lztt[it+2]*vd ; ; dot product of light vector and normal vector ; ltt[jt] = (lx*lxtt[it+2]+ly*lytt[it+2]+lz*lztt[it+2])*krt colrT[jt] = (1.0/@totalColors)*@scale/2*ltt[jt]+0.25*(tindex[jt]+(1-@scale/2)/2)-0.015 colorPosT[jt] = @scale/2*ltt[jt] endif it = it+2 jt = jt+1 if dt[jt-1] == 1e10 stop = true jt = jt-1 it = it-2 endif endwhile endif ; ; dot product of light vector and normal vector ; lt = (lx*lxt+ly*lyt+lz*lzt) colorPos = @scale/2*lt colorPosR = @scale/2*lr if @reflect == true if lr != 0 colrR = (1.0/@totalColors)*@scale/2*lr+0.25*(rindex+(1-@scale/2)/2)-0.015 colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif endif if rof != 1e10 && @reflectf && @floor colorPosRF = @scale/2*lrf colrRF = (1.0/@totalColors)*@scale/2*lrf+0.25*(rindexf+(1-@scale/2)/2)-0.015 endif ; if @tparent ; am = am*(1-@tparentval) ; am2 = am2*(1-@tparentval) ; endif loop: final: ; if @applymapping && !inside && @solid #solid = true endif ; Perturb the ranges, if specified. rangeNum = trunc(cindex) if rangeNum < 0 rangeNum = rangeNum * -1 endif rangeNum = (rangeNum + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNum < ranges / 2) rangeNum = (rangeNum + rangeNum) % ranges else rangeNum = (rangeNum + rangeNum + 1) % ranges endif else ; Number of ranges is odd. rangeNum = (rangeNum + rangeNum) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNum / 2) * 2) == rangeNum) ; rangeNum is even. rangeNum = rangeNum - trunc (rangeNum / 2) else ; rangeNum is odd. rangeNum = rangeNum + trunc ((ranges - rangeNum) / 2) endif endif if colorPos > 0.5 colorPos = (colorPos - 0.5) / 0.5 else colorPos = colorPos / 0.5 endif if @highlight_type == "none" hval = 0 elseif @highlight_type == "linear" if colorPos > extent hval = (5*@highlight*(colorPos-extent)/(1-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "log" if colorPos > extent hval = (5*@highlight*log(colorPos-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "exponential" if colorPos > extent hval = (5*@highlight*(exp(colorPos-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hval = 0 endif endif if @reflect == true ; Perturb the ranges, if specified. rangeNumR = trunc(rindex) if rangeNumR < 0 rangeNumR = rangeNumR * -1 endif rangeNumR = (rangeNumR + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumR < ranges / 2) rangeNumR = (rangeNumR + rangeNumR) % ranges else rangeNumR = (rangeNumR + rangeNumR + 1) % ranges endif else ; Number of ranges is odd. rangeNumR = (rangeNumR + rangeNumR) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumR / 2) * 2) == rangeNumR) ; rangeNumR is even. rangeNumR = rangeNumR - trunc (rangeNumR / 2) else ; rangeNumR is odd. rangeNumR = rangeNumR + trunc ((ranges - rangeNumR) / 2) endif endif if colorPosR > 0.5 colorPosR = (colorPosR - 0.5) / 0.5 else colorPosR = colorPosR / 0.5 endif if @highlight_type == "none" hvalR = 0 elseif @highlight_type == "linear" if colorPosR > extent hvalR = (5*@highlight*(colorPosR-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "log" if colorPosR > extent hvalR = (5*@highlight*log(colorPosR-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "exponential" if colorPosR > extent hvalR = (5*@highlight*(exp(colorPosR-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalR = 0 endif endif ; Perturb the ranges, if specified. rangenumRF = trunc(rindexf) if rangenumRF < 0 rangenumRF = rangenumRF * -1 endif rangenumRF = (rangenumRF + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangenumRF < ranges / 2) rangenumRF = (rangenumRF + rangenumRF) % ranges else rangenumRF = (rangenumRF + rangenumRF + 1) % ranges endif else ; Number of ranges is odd. rangenumRF = (rangenumRF + rangenumRF) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangenumRF / 2) * 2) == rangenumRF) ; rangenumRF is even. rangenumRF = rangenumRF - trunc (rangenumRF / 2) else ; rangenumRF is odd. rangenumRF = rangenumRF + trunc ((ranges - rangenumRF) / 2) endif endif if colorPosRF > 0.5 colorPosRF = (colorPosRF - 0.5) / 0.5 else colorPosRF = colorPosRF / 0.5 endif if @highlight_type == "none" hvalRF = 0 elseif @highlight_type == "linear" if colorPosRF > extent hvalRF = (5*@highlight*(colorPosRF-extent)/(1-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "log" if colorPosRF > extent hvalRF = (5*@highlight*log(colorPosRF-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "exponential" if colorPosRF > extent hvalRF = (5*@highlight*(exp(colorPosRF-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif endif endif if @tparent it = 0 while it <= jt ; Perturb the ranges, if specified. rangeNumT[it] = trunc(tindex[it]) if rangeNumT[it] < 0 rangeNumT[it] = rangeNumT[it] * -1 endif rangeNumT[it] = (rangeNumT[it] + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumT[it] < ranges / 2) rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges else rangeNumT[it] = (rangeNumT[it] + rangeNumT[it] + 1) % ranges endif else ; Number of ranges is odd. rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumT[it] / 2) * 2) == rangeNumT[it]) ; rangeNumT[it] is even. rangeNumT[it] = rangeNumT[it] - trunc (rangeNumT[it] / 2) else ; rangeNumT[it] is odd. rangeNumT[it] = rangeNumT[it] + trunc ((ranges - rangeNumT[it]) / 2) endif endif if colorPosT[it] > 0.5 colorPosT[it] = (colorPosT[it] - 0.5) / 0.5 else colorPosT[it] = colorPosT[it] / 0.5 endif if @highlight_type == "none" hvalt[it] = 0 elseif @highlight_type == "linear" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(colorPosT[it]-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "log" if colorPosT[it] > extent hvalt[it] = (5*@highlight*log(colorPosT[it]-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "exponential" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(exp(colorPosT[it]-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif endif it = it + 1 endwhile endif if lds > @sdis lds = @sdis endif it = 0 while it <= jt if ldst[it] > @sdis ldst[it] = @sdis endif ; have refracted floor fade according to lighting model ltfact[it] = ldt[it]/@dis/@floorrefract if ldt[it] == 1234567890 ltfact[it] = 0 elseif ltfact[it] < 0 ltfact[it] = 0 elseif ltfact[it] > 1 ltfact[it] = 1 endif ; if ltfact[it] > krft ; ltfact[it] = krft ; endif If ltfact[it]+am2 > 1 ltfact[it] = 1-am2 endif if dt[it] > tdt[it] && tdt[it] > 0 && ltfact[it] >= 0 if @flrtype == "Checkerboard" if floormodt[it] == 0 colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif floormodt[it] == 1 colorft[it] = blend(@flrcolor2,rgb(0,0,0),ltfact[it]+am2) endif elseif @flrtype == "Plain" colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif @flrtype == "Fractal" if fractalmodt[it] == 0 fractalcolor = @icolor colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) else fractalcolor = gradient((fractalmodt[it]/mxi)^@spread+@shift) colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) endif endif else colorft[it] = rgba(0,0,0,1) endif it = it+ 1 endwhile if colr == 0 && (td == 0 || td == 1e10) if @solid #solid = true else if @colorPreset == "Gradient" colorf = gradient(0) else if @switch colorf = colormap[0,0] else colorf = colormap[0,1] endif endif endif else if @am == 0 if @colorPreset == "Gradient" if @reflect == true if lr != 0 color1 = gradient(colrR/2) color2 = gradient(colr/2) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if am < colr/2 if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = gradient(colr/2 - am) color2 = gradient(colr/2) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@cblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color2 = gradient(0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif endif endif endif ; have floor fade according to lighting model ltfac = ld/@dis if ld == 1234567890 ltfac = 0 elseif ltfac < 0 ltfac = 0 elseif ltfac > 1 ltfac = 1 endif If ltfac+am2 > 1 ltfac = 1-am2 endif ; have floor reflection fade according to lighting model ltfacr = tdr/td/@floorreflect if lds == 1234567890 ltfacr = 0 elseif ltfacr < 0 ltfacr = 0 elseif ltfacr > 1 ltfacr = 1 endif if ltfacr>krf ltfacr = krf endif ; ltfacr = ltfacr*ltfac ; apply floor and floor reflection coloring if @reflect == true && tdr > 0 && tdr < ro if @flrtype == "Checkerboard" if floormodr == 0 colorf = blend(colorf,@flrcolor,krf-ltfacr) else colorf = blend(colorf,@flrcolor2,krf-ltfacr) endif elseif @flrtype == "Plain" colorf = blend(colorf,@flrcolor,krf-ltfacr) else if fractalmodr == 0 fractalcolor = @icolor colorf = blend(colorf,fractalcolor,krf-ltfacr) else fractalcolor = gradient((fractalmodr/mxi)^@spread+@shift) colorf = blend(colorf,fractalcolor,krf-ltfacr) endif endif endif if d > td && td > 0 && ltfac >= 0 if @flrtype == "Checkerboard" if floormod == 0 colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) elseif floormod == 1 colorf = blend(@flrcolor2,rgb(0,0,0),ltfac+am2) endif elseif @flrtype == "Plain" colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) else if fractalmod == 0 fractalcolor = @icolor colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) elseif fractalmod == -1 && @solid #solid = true else fractalcolor = gradient((fractalmod/mxi)^@spread+@shift) colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) endif endif endif if @reflectf && @floor && rof != 1e10 && d > td if @colorPreset == "Gradient" color1 = gradient(colrRF/2) else color1 = blend(colorMap[rangeNumRF,1], blend(colorMap[rangeNumRF,0], \ @hcolor,hvalRF), colorPosRF) endif colorf = blend(color1, colorf,(1-@blendvalf)) endif #color = blend(colorf, amcolor, ambient) default: title="Formula Ray Trace" param version caption = "Formula Version" default = 201 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam heading caption = "Formula Ray Trace" endheading $ifdef VER40 heading text="Ray Tracing with Shadows, Reflections and Transparency. \ Direct Coloring options added by Ken Childress. \ Use with Pixel formula in mt.ufm or Pixel offset in reb.ufm" endheading heading text="DO NOT USE PAN AND ZOOM! Because the Ray tracing algorithm depends \ upon the camera position, the position of the image on the screen does \ not correspond to the 'Center' and 'Magnification' values on the\ 'Location' tab. Use 'Function scale' to change the size of the image, \ and use 'X Final Translation' and 'Y Final Translation' to reposition \ the image. These parameters are in the 'Rotations and Translations' \ section. " endheading $else heading caption="Ray Tracing with Shadows, Transparency and Reflections." endheading heading caption="Direct Coloring options added by Ken Childress." endheading heading caption="Use with Pixel formula in mt.ufm" endheading render=false $endif param solid caption="solid background?" default=false visible= !@floor||@applymapping||@fbound || @mask || @rmask endparam $ifdef VER40 heading text = "Use 'Apply Mapping' if you want to apply a transform to the \ image." endheading $endif param applyMapping caption = "Apply Mapping" default = false hint = "Use 'Apply Mapping' if you want to apply a transform to the \ image." endparam heading caption = "Function Parameters" endheading param function caption = "Function" default = 0 enum = "Astrodal Ellipsoid" "Banchoff Klein Bottle" "Bent Horns" \ "Bohemian Dome" "Bow Tie" "Boy Surface" "Catalan's Surface" \ "Cinquefoil Knot" "Corkscrew" "Cresent" "Cross Cap" \ "Dini's Surface" "Eight Knot" "Enneper's Surface" \ "Fano Planes" "Figure 8 Torus" "Fish Surface" "Granny Knot" \ "Hennenberg's Surface" \ "Hyperbolic Helicoid" "Klein Bottle" "Knot 4" "Kuen's Surface" \ "Lemniscape" "Limpet Torus" "Lissajous Knots" "Maeder's Owl" \ "Mandala" "Mobius Band" "Pisot Triaxial" "Saddle Torus" \ "Seashell" "Sine Surface" "Slippers Surface" "Spherical Harmonics" \ "Stiletto Surface" "SuperShape" "Swallowtail" "Toroidal Spiral" \ "Tractrix" "Trefoil Knot" "Triangular Trefoil" "Triaxial Hexatorus" \ "Triaxial Teardrop" "Triaxial Tritorus" "Twisted Fano" \ "Twisted Heart" "Twisted Pipe" "Twisted Triaxial" "Verrill Surface" \ "Whitney Umbrella" "Wiwianka" endparam float param m0radius caption = "Sphere radius" default = 0.4 visible = @function == "Mandala" endparam float param m0fscale caption = "Function scale" default = 0.1 visible = @function == "Mandala" endparam float param m0xmax caption = "Max X" default = 16.0 visible = @function == "Mandala" endparam float param m0xmin caption = "Min X" default = -8.0 visible = @function == "Mandala" endparam float param m0ymax caption = "Max Y" default = 12.56 visible = @function == "Mandala" endparam float param m0ymin caption = "Min Y" default = 0.0 visible = @function == "Mandala" endparam float param m0xstep caption = "X increment" default = 0.15 visible = @function == "Mandala" endparam float param m0ystep caption = "Y increment" default = 0.1 visible = @function == "Mandala" endparam float param m1radius caption = "Sphere radius" default = 0.03 visible = @function == "Wiwianka" endparam float param m1fscale caption = "Function scale" default = 1.5 visible = @function == "Wiwianka" endparam float param m1xmax caption = "Max X" default = 1.0 visible = @function == "Wiwianka" endparam float param m1xmin caption = "Min X" default = 0.0 visible = @function == "Wiwianka" endparam float param m1ymax caption = "Max Y" default = 2.0 visible = @function == "Wiwianka" endparam float param m1ymin caption = "Min Y" default = 0.0 visible = @function == "Wiwianka" endparam float param m1xstep caption = "X increment" default = 0.0075 visible = @function == "Wiwianka" endparam float param m1ystep caption = "Y increment" default = 0.05 visible = @function == "Wiwianka" endparam float param m2radius caption = "Sphere radius" default = 0.04 visible = @function == "Banchoff Klein Bottle" endparam float param m2fscale caption = "Function scale" default = 0.75 visible = @function == "Banchoff Klein Bottle" endparam float param m2xmax caption = "Max X" default = 9.56 visible = @function == "Banchoff Klein Bottle" endparam float param m2xmin caption = "Min X" default = 0.0 visible = @function == "Banchoff Klein Bottle" endparam float param m2ymax caption = "Max Y" default = 6.28 visible = @function == "Banchoff Klein Bottle" endparam float param m2ymin caption = "Min Y" default = 0.0 visible = @function == "Banchoff Klein Bottle" endparam float param m2xstep caption = "X increment" default = 0.1 visible = @function == "Banchoff Klein Bottle" endparam float param m2ystep caption = "Y increment" default = 0.02 visible = @function == "Banchoff Klein Bottle" endparam float param bana caption = "Parameter a" default = 1.414213 visible = @function == "Banchoff Klein Bottle" endparam float param banb caption = "Parameter b" default = 2.0 visible = @function == "Banchoff Klein Bottle" endparam float param banc caption = "Parameter c" default = 1.0 visible = @function == "Banchoff Klein Bottle" endparam float param m3radius caption = "Sphere radius" default = 0.01 visible = @function == "Seashell" endparam float param m3fscale caption = "Function scale" default = 3.0 visible = @function == "Seashell" endparam float param m3xmax caption = "Max X" default = 6.28 visible = @function == "Seashell" endparam float param m3xmin caption = "Min X" default = 0.0 visible = @function == "Seashell" endparam float param m3ymax caption = "Max Y" default = 6.28 visible = @function == "Seashell" endparam float param m3ymin caption = "Min Y" default = 0.0 visible = @function == "Seashell" endparam float param m3xstep caption = "X increment" default = 0.1 visible = @function == "Seashell" endparam float param m3ystep caption = "Y increment" default = 0.05 visible = @function == "Seashell" endparam float param seaa caption = "param a" default = 0.2 visible = @function == "Seashell" endparam float param seab caption = "param b" default = 1.0 visible = @function == "Seashell" endparam float param seac caption = "param c" default = 0.1 visible = @function == "Seashell" endparam float param sean caption = "param n" default = 2.0 visible = @function == "Seashell" endparam float param m4radius caption = "Sphere radius" default = 0.02 visible = @function == "Mobius Band" endparam float param m4fscale caption = "Function scale" default = 1.5 visible = @function == "Mobius Band" endparam float param m4xmax caption = "Max X" default = 6.28 visible = @function == "Mobius Band" endparam float param m4xmin caption = "Min X" default = 0.0 visible = @function == "Mobius Band" endparam float param m4ymax caption = "Max Y" default = 0.3 visible = @function == "Mobius Band" endparam float param m4ymin caption = "Min Y" default = -0.3 visible = @function == "Mobius Band" endparam float param m4xstep caption = "X increment" default = 0.05 visible = @function == "Mobius Band" endparam float param m4ystep caption = "Y increment" default = 0.05 visible = @function == "Mobius Band" endparam float param m5radius caption = "Sphere radius" default = 0.01 visible = @function == "Astrodal Ellipsoid" endparam float param m5fscale caption = "Function scale" default = 1.8 visible = @function == "Astrodal Ellipsoid" endparam float param m5xmax caption = "Max X" default = 3.14 visible = @function == "Astrodal Ellipsoid" endparam float param m5xmin caption = "Min X" default = -3.14 visible = @function == "Astrodal Ellipsoid" endparam float param m5ymax caption = "Max Y" default = 3.14 visible = @function == "Astrodal Ellipsoid" endparam float param m5ymin caption = "Min Y" default = -3.14 visible = @function == "Astrodal Ellipsoid" endparam float param m5xstep caption = "X increment" default = 0.02 visible = @function == "Astrodal Ellipsoid" endparam float param m5ystep caption = "Y increment" default = 0.1 visible = @function == "Astrodal Ellipsoid" endparam float param aa caption = "param a" default = 1.0 visible = @function == "Astrodal Ellipsoid" endparam float param ab caption = "param b" default = 1.0 visible = @function == "Astrodal Ellipsoid" endparam float param ac caption = "param c" default = 1.0 visible = @function == "Astrodal Ellipsoid" endparam float param m6radius caption = "Sphere radius" default = 0.02 visible = @function == "Bohemian Dome" endparam float param m6fscale caption = "Function scale" default = 1.0 visible = @function == "Bohemian Dome" endparam float param m6xmax caption = "Max X" default = 6.28 visible = @function == "Bohemian Dome" endparam float param m6xmin caption = "Min X" default = 0.0 visible = @function == "Bohemian Dome" endparam float param m6ymax caption = "Max Y" default = 6.28 visible = @function == "Bohemian Dome" endparam float param m6ymin caption = "Min Y" default = 0.0 visible = @function == "Bohemian Dome" endparam float param m6xstep caption = "X increment" default = 0.02 visible = @function == "Bohemian Dome" endparam float param m6ystep caption = "Y increment" default = 0.07 visible = @function == "Bohemian Dome" endparam float param ba caption = "param a" default = 0.5 visible = @function == "Bohemian Dome" endparam float param bb caption = "param b" default = 1.5 visible = @function == "Bohemian Dome" endparam float param bc caption = "param c" default = 1.0 visible = @function == "Bohemian Dome" endparam float param m7radius caption = "Sphere radius" default = 0.02 visible = @function == "Boy Surface" endparam float param m7fscale caption = "Function scale" default = 1.0 visible = @function == "Boy Surface" endparam float param m7xmax caption = "Max X" default = 6.28 visible = @function == "Boy Surface" endparam float param m7xmin caption = "Min X" default = 0.0 visible = @function == "Boy Surface" endparam float param m7ymax caption = "Max Y" default = 6.28 visible = @function == "Boy Surface" endparam float param m7ymin caption = "Min Y" default = 0.0 visible = @function == "Boy Surface" endparam float param m7xstep caption = "X increment" default = 0.02 visible = @function == "Boy Surface" endparam float param m7ystep caption = "Y increment" default = 0.02 visible = @function == "Boy Surface" endparam float param m8radius caption = "Sphere radius" default = 0.02 visible = @function == "Dini's Surface" endparam float param m8fscale caption = "Function scale" default = 1.0 visible = @function == "Dini's Surface" endparam float param m8xmax caption = "Max X" default = 12.56 visible = @function == "Dini's Surface" endparam float param m8xmin caption = "Min X" default = 0.0 visible = @function == "Dini's Surface" endparam float param m8ymax caption = "Max Y" default = 2.0 visible = @function == "Dini's Surface" endparam float param m8ymin caption = "Min Y" default = 0.001 visible = @function == "Dini's Surface" endparam float param m8xstep caption = "X increment" default = 0.1 visible = @function == "Dini's Surface" endparam float param m8ystep caption = "Y increment" default = 0.01 visible = @function == "Dini's Surface" endparam float param da caption = "param a" default = 1.0 visible = @function == "Dini's Surface" endparam float param db caption = "param b" default = 0.2 visible = @function == "Dini's Surface" endparam float param m9radius caption = "Sphere radius" default = 0.1 visible = @function == "Enneper's Surface" endparam float param m9fscale caption = "Function scale" default = 0.25 visible = @function == "Enneper's Surface" endparam float param m9xmax caption = "Max X" default = 2.0 visible = @function == "Enneper's Surface" endparam float param m9xmin caption = "Min X" default = -2.0 visible = @function == "Enneper's Surface" endparam float param m9ymax caption = "Max Y" default = 2.0 visible = @function == "Enneper's Surface" endparam float param m9ymin caption = "Min Y" default = -2.0 visible = @function == "Enneper's Surface" endparam float param m9xstep caption = "X increment" default = 0.05 visible = @function == "Enneper's Surface" endparam float param m9ystep caption = "Y increment" default = 0.01 visible = @function == "Enneper's Surface" endparam float param m10radius caption = "Sphere radius" default = 0.015 visible = @function == "Kuen's Surface" endparam float param m10fscale caption = "Function scale" default = 1.0 visible = @function == "Kuen's Surface" endparam float param m10xmax caption = "Max X" default = 4.0 visible = @function == "Kuen's Surface" endparam float param m10xmin caption = "Min X" default = -4.0 visible = @function == "Kuen's Surface" endparam float param m10ymax caption = "Max Y" default = 3.09 visible = @function == "Kuen's Surface" endparam float param m10ymin caption = "Min Y" default = 0.05 visible = @function == "Kuen's Surface" endparam float param m10xstep caption = "X increment" default = 0.04 visible = @function == "Kuen's Surface" endparam float param m10ystep caption = "Y increment" default = 0.02 visible = @function == "Kuen's Surface" endparam float param m11radius caption = "Sphere radius" default = 0.05 visible = @function == "Swallowtail" endparam float param m11fscale caption = "Function scale" default = 0.4 visible = @function == "Swallowtail" endparam float param m11xmax caption = "Max X" default = 2.0 visible = @function == "Swallowtail" endparam float param m11xmin caption = "Min X" default = -2.0 visible = @function == "Swallowtail" endparam float param m11ymax caption = "Max Y" default = 0.8 visible = @function == "Swallowtail" endparam float param m11ymin caption = "Min Y" default = -0.8 visible = @function == "Swallowtail" endparam float param m11xstep caption = "X increment" default = 0.04 visible = @function == "Swallowtail" endparam float param m11ystep caption = "Y increment" default = 0.02 visible = @function == "Swallowtail" endparam float param m12radius caption = "Sphere radius" default = 0.2 visible = @function == "Catalan's Surface" endparam float param m12fscale caption = "Function scale" default = 0.1 visible = @function == "Catalan's Surface" endparam float param m12xmax caption = "Max X" default = 6.28 visible = @function == "Catalan's Surface" endparam float param m12xmin caption = "Min X" default = -6.28 visible = @function == "Catalan's Surface" endparam float param m12ymax caption = "Max Y" default = 3.14 visible = @function == "Catalan's Surface" endparam float param m12ymin caption = "Min Y" default = -3.14 visible = @function == "Catalan's Surface" endparam float param m12xstep caption = "X increment" default = 0.02 visible = @function == "Catalan's Surface" endparam float param m12ystep caption = "Y increment" default = 0.1 visible = @function == "Catalan's Surface" endparam float param m13radius caption = "Sphere radius" default = 0.1 visible = @function == "Hennenberg's Surface" endparam float param m13fscale caption = "Function scale" default = 0.2 visible = @function == "Hennenberg's Surface" endparam float param m13xmax caption = "Max X" default = 1.0 visible = @function == "Hennenberg's Surface" endparam float param m13xmin caption = "Min X" default = -1.0 visible = @function == "Hennenberg's Surface" endparam float param m13ymax caption = "Max Y" default = 3.0 visible = @function == "Hennenberg's Surface" endparam float param m13ymin caption = "Min Y" default = -3.0 visible = @function == "Hennenberg's Surface" endparam float param m13xstep caption = "X increment" default = 0.025 visible = @function == "Hennenberg's Surface" endparam float param m13ystep caption = "Y increment" default = 0.01 visible = @function == "Hennenberg's Surface" endparam float param m14radius caption = "Sphere radius" default = 0.02 visible = @function == "Corkscrew" endparam float param m14fscale caption = "Function scale" default = 1.0 visible = @function == "Corkscrew" endparam float param m14xmax caption = "Max X" default = 3.14 visible = @function == "Corkscrew" endparam float param m14xmin caption = "Min X" default = -3.14 visible = @function == "Corkscrew" endparam float param m14ymax caption = "Max Y" default = 3.14 visible = @function == "Corkscrew" endparam float param m14ymin caption = "Min Y" default = -3.14 visible = @function == "Corkscrew" endparam float param m14xstep caption = "X increment" default = 0.1 visible = @function == "Corkscrew" endparam float param m14ystep caption = "Y increment" default = 0.01 visible = @function == "Corkscrew" endparam float param ta caption = "param a" default = 1.0 visible = @function == "Corkscrew" endparam float param tb caption = "param b" default = 0.5 visible = @function == "Corkscrew" endparam float param m15radius caption = "Sphere radius" default = 0.015 visible = @function == "Hyperbolic Helicoid" endparam float param m15fscale caption = "Function scale" default = 1.7 visible = @function == "Hyperbolic Helicoid" endparam float param m15xmax caption = "Max X" default = 6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15xmin caption = "Min X" default = -6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15ymax caption = "Max Y" default = 6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15ymin caption = "Min Y" default = -6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15xstep caption = "X increment" default = 0.005 visible = @function == "Hyperbolic Helicoid" endparam float param m15ystep caption = "Y increment" default = 0.2 visible = @function == "Hyperbolic Helicoid" endparam float param tau caption = "torsion" default = 6.0 visible = @function == "Hyperbolic Helicoid" endparam float param m16radius caption = "Sphere radius" default = 0.02 visible = @function == "Sine Surface" endparam float param m16fscale caption = "Function scale" default = 1 visible = @function == "Sine Surface" endparam float param m16xmax caption = "Max X" default = 3.14 visible = @function == "Sine Surface" endparam float param m16xmin caption = "Min X" default = -3.14 visible = @function == "Sine Surface" endparam float param m16ymax caption = "Max Y" default = 3.14 visible = @function == "Sine Surface" endparam float param m16ymin caption = "Min Y" default = -3.14 visible = @function == "Sine Surface" endparam float param m16xstep caption = "X increment" default = 0.1 visible = @function == "Sine Surface" endparam float param m16ystep caption = "Y increment" default = 0.01 visible = @function == "Sine Surface" endparam float param sa caption = "parameter a" default = 1.0 visible = @function == "Sine Surface" endparam float param m17radius caption = "Sphere radius" default = 0.5 visible = @function == "Trefoil Knot" endparam float param m17fscale caption = "Function scale" default = 0.5 visible = @function == "Trefoil Knot" endparam float param m17xmax caption = "Max X" default = 6.28 visible = @function == "Trefoil Knot" endparam float param m17xmin caption = "Min X" default = -0.01 visible = @function == "Trefoil Knot" endparam float param m17ymax caption = "Max Y" default = 0.01 visible = @function == 99 endparam float param m17ymin caption = "Min Y" default = 0 visible = @function == 99 endparam float param m17xstep caption = "X increment" default = 0.005 visible = @function == "Trefoil Knot" endparam float param m17ystep caption = "Y increment" default = 0.01 visible = @function == 99 endparam float param m18radius caption = "Sphere radius" default = 0.05 visible = @function == "Lissajous Knots" endparam float param m18fscale caption = "Function scale" default = 1 visible = @function == "Lissajous Knots" endparam float param m18xmax caption = "Max X" default = 6.28 visible = @function == "Lissajous Knots" endparam float param m18xmin caption = "Min X" default = 0 visible = @function == "Lissajous Knots" endparam float param m18ymax caption = "Max Y" default = 0.01 visible = @function == 99 endparam float param m18ymin caption = "Min Y" default = 0 visible = @function == 99 endparam float param m18xstep caption = "X increment" default = 0.005 visible = @function == "Lissajous Knots" endparam float param m18ystep caption = "Y increment" default = 0.01 visible = @function == 99 endparam int param na caption = "Integer a" default = 2 visible = @function == "Lissajous Knots" endparam int param nb caption = "Integer b" default = 3 visible = @function == "Lissajous Knots" endparam int param nc caption = "Integer c" default = 5 visible = @function == "Lissajous Knots" endparam float param la caption = "param a" default = 0.5 visible = @function == "Lissajous Knots" endparam float param lb caption = "param b" default = 0.5 visible = @function == "Lissajous Knots" endparam float param lc caption = "param c" default = -0.5 visible = @function == "Lissajous Knots" endparam float param m19radius caption = "Sphere radius" default = 0.05 visible = @function == "Toroidal Spiral" endparam float param m19fscale caption = "Function scale" default = 0.6 visible = @function == "Toroidal Spiral" endparam float param m19xmax caption = "Max X" default = 6.3 visible = @function == "Toroidal Spiral" endparam float param m19xmin caption = "Min X" default = 0 visible = @function == "Toroidal Spiral" endparam float param m19ymax caption = "Max Y" default = 0.01 visible = @function == 99 endparam float param m19ymin caption = "Min Y" default = 0 visible = @function == 99 endparam float param m19xstep caption = "X increment" default = 0.005 visible = @function == "Toroidal Spiral" endparam float param m19ystep caption = "Y increment" default = 0.01 visible = @function == 99 endparam int param nts caption = "Integer a" default = 5 visible = @function == "Toroidal Spiral" endparam float param tsa caption = "param a" default = 2 visible = @function == "Toroidal Spiral" endparam int param numcoil caption = "# of coils" default = 3 visible = @function == "Toroidal Spiral" endparam float param m20radius caption = "Sphere radius" default = 0.5 visible = @function == "Klein Bottle" endparam float param m20fscale caption = "Function scale" default = 0.1 visible = @function == "Klein Bottle" endparam float param m20xmax caption = "Max X" default = 6.28 visible = @function == "Klein Bottle" endparam float param m20xmin caption = "Min X" default = 0 visible = @function == "Klein Bottle" endparam float param m20ymax caption = "Max Y" default = 6.28 visible = @function == "Klein Bottle" endparam float param m20ymin caption = "Min Y" default = 0 visible = @function == "Klein Bottle" endparam float param m20xstep caption = "X increment" default = 0.05 visible = @function == "Klein Bottle" endparam float param m20ystep caption = "Y increment" default = 0.1 visible = @function == "Klein Bottle" endparam float param m21radius caption = "Sphere radius" default = 0.05 visible = @function == "Triangular Trefoil" endparam float param m21fscale caption = "Function scale" default = 0.4 visible = @function == "Triangular Trefoil" endparam float param m21xmax caption = "Max X" default = 3.14 visible = @function == "Triangular Trefoil" endparam float param m21xmin caption = "Min X" default = -3.14 visible = @function == "Triangular Trefoil" endparam float param m21ymax caption = "Max Y" default = 3.14 visible = @function == "Triangular Trefoil" endparam float param m21ymin caption = "Min Y" default = -3.14 visible = @function == "Triangular Trefoil" endparam float param m21xstep caption = "X increment" default = 0.02 visible = @function == "Triangular Trefoil" endparam float param m21ystep caption = "Y increment" default = 0.1 visible = @function == "Triangular Trefoil" endparam float param m22radius caption = "Sphere radius" default = 0.1 visible = @function == "Bent Horns" endparam float param m22fscale caption = "Function scale" default = 0.25 visible = @function == "Bent Horns" endparam float param m22xmax caption = "Max X" default = 3.14 visible = @function == "Bent Horns" endparam float param m22xmin caption = "Min X" default = -3.14 visible = @function == "Bent Horns" endparam float param m22ymax caption = "Max Y" default = 6.28 visible = @function == "Bent Horns" endparam float param m22ymin caption = "Min Y" default = -6.28 visible = @function == "Bent Horns" endparam float param m22xstep caption = "X increment" default = 0.02 visible = @function == "Bent Horns" endparam float param m22ystep caption = "Y increment" default = 0.1 visible = @function == "Bent Horns" endparam float param m23radius caption = "Sphere radius" default = 0.025 visible = @function == "Pisot Triaxial" endparam float param m23fscale caption = "Function scale" default = 0.75 visible = @function == "Pisot Triaxial" endparam float param m23xmax caption = "Max X" default = 6.28 visible = @function == "Pisot Triaxial" endparam float param m23xmin caption = "Min X" default = 0 visible = @function == "Pisot Triaxial" endparam float param m23ymax caption = "Max Y" default = 6.28 visible = @function == "Pisot Triaxial" endparam float param m23ymin caption = "Min Y" default = 0 visible = @function == "Pisot Triaxial" endparam float param m23xstep caption = "X increment" default = 0.02 visible = @function == "Pisot Triaxial" endparam float param m23ystep caption = "Y increment" default = 0.1 visible = @function == "Pisot Triaxial" endparam float param m24radius caption = "Sphere radius" default = 0.025 visible = @function == "Spherical Harmonics" endparam float param m24fscale caption = "Function scale" default = 0.75 visible = @function == "Spherical Harmonics" endparam float param m24xmax caption = "Max X" default = 3.14 visible = @function == "Spherical Harmonics" endparam float param m24xmin caption = "Min X" default = 0 visible = @function == "Spherical Harmonics" endparam float param m24ymax caption = "Max Y" default = 6.28 visible = @function == "Spherical Harmonics" endparam float param m24ymin caption = "Min Y" default = 0 visible = @function == "Spherical Harmonics" endparam float param m24xstep caption = "X increment" default = 0.01 visible = @function == "Spherical Harmonics" endparam float param m24ystep caption = "Y increment" default = 0.02 visible = @function == "Spherical Harmonics" endparam int param m1 caption = "Harmonic #1" default = 2 visible = @function == "Spherical Harmonics" endparam int param m2 caption = "Harmonic #2" default = 3 visible = @function == "Spherical Harmonics" endparam int param m3 caption = "Harmonic #3" default =3 visible = @function == "Spherical Harmonics" endparam int param m4 caption = "Harmonic #4" default = 4 visible = @function == "Spherical Harmonics" endparam int param m5 caption = "Harmonic #5" default = 4 visible = @function == "Spherical Harmonics" endparam int param m6 caption = "Harmonic #6" default = 2 visible = @function == "Spherical Harmonics" endparam int param m7 caption = "Harmonic #7" default = 5 visible = @function == "Spherical Harmonics" endparam int param m8 caption = "Harmonic #8" default = 3 visible = @function == "Spherical Harmonics" endparam float param m25radius caption = "Sphere radius" default = 0.005 visible = @function == "Slippers Surface" endparam float param m25fscale caption = "Function scale" default = 3 visible = @function == "Slippers Surface" endparam float param m25xmax caption = "Max X" default = 6.28 visible = @function == "Slippers Surface" endparam float param m25xmin caption = "Min X" default = 0 visible = @function == "Slippers Surface" endparam float param m25ymax caption = "Max Y" default = 6.28 visible = @function == "Slippers Surface" endparam float param m25ymin caption = "Min Y" default = 0 visible = @function == "Slippers Surface" endparam float param m25xstep caption = "X increment" default = 0.02 visible = @function == "Slippers Surface" endparam float param m25ystep caption = "Y increment" default = 0.02 visible = @function == "Slippers Surface" endparam float param m26radius caption = "Sphere radius" default = 0.01 visible = @function == "SuperShape" endparam float param m26fscale caption = "Function scale" default = 1.5 visible = @function == "SuperShape" endparam float param m26xmax caption = "Max X" default = 3.14 visible = @function == "SuperShape" endparam float param m26xmin caption = "Min X" default = -3.14 visible = @function == "SuperShape" endparam float param m26ymax caption = "Max Y" default = 6.28 visible = @function == "SuperShape" endparam float param m26ymin caption = "Min Y" default = -6.28 visible = @function == "SuperShape" endparam float param m26xstep caption = "X increment" default = 0.02 visible = @function == "SuperShape" endparam float param m26ystep caption = "Y increment" default = 0.02 visible = @function == "SuperShape" endparam float param ssa caption = "parameter a" default = 1.0 visible = @function == "SuperShape" endparam float param ssb caption = "parameter b" default = 1.0 visible = @function == "SuperShape" endparam float param ssm caption = "parameter m" default = 7.0 visible = @function == "SuperShape" endparam float param ssn1 caption = "parameter n1" default = 0.2 visible = @function == "SuperShape" endparam float param ssn2 caption = "parameter n2" default = 1.7 visible = @function == "SuperShape" endparam float param ssn3 caption = "parameter n3" default = 1.7 visible = @function == "SuperShape" endparam float param m27radius caption = "Sphere radius" default = 0.007 visible = @function == "Fano Planes" endparam float param m27fscale caption = "Function scale" default = 1.5 visible = @function == "Fano Planes" endparam float param m27xmax caption = "Max X" default = 1.0 visible = @function == "Fano Planes" endparam float param m27xmin caption = "Min X" default = 0.0 visible = @function == "Fano Planes" endparam float param m27ymax caption = "Max Y" default = 2.0 visible = @function == "Fano Planes" endparam float param m27ymin caption = "Min Y" default = 0.0 visible = @function == "Fano Planes" endparam float param m27xstep caption = "X increment" default = 0.002 visible = @function == "Fano Planes" endparam float param m27ystep caption = "Y increment" default = 0.01 visible = @function == "Fano Planes" endparam float param m28radius caption = "Sphere radius" default = 0.007 visible = @function == "Twisted Fano" endparam float param m28fscale caption = "Function scale" default = 1.5 visible = @function == "Twisted Fano" endparam float param m28xmax caption = "Max X" default = 1.0 visible = @function == "Twisted Fano" endparam float param m28xmin caption = "Min X" default = 0.0 visible = @function == "Twisted Fano" endparam float param m28ymax caption = "Max Y" default = 2.0 visible = @function == "Twisted Fano" endparam float param m28ymin caption = "Min Y" default = 0.0 visible = @function == "Twisted Fano" endparam float param m28xstep caption = "X increment" default = 0.002 visible = @function == "Twisted Fano" endparam float param m28ystep caption = "Y increment" default = 0.01 visible = @function == "Twisted Fano" endparam float param m29radius caption = "Sphere radius" default = 0.03 visible = @function == "Cresent" endparam float param m29fscale caption = "Function scale" default = 0.6 visible = @function == "Cresent" endparam float param m29xmax caption = "Max X" default = 1.0 visible = @function == "Cresent" endparam float param m29xmin caption = "Min X" default = 0.0 visible = @function == "Cresent" endparam float param m29ymax caption = "Max Y" default = 1.0 visible = @function == "Cresent" endparam float param m29ymin caption = "Min Y" default = 0.0 visible = @function == "Cresent" endparam float param m29xstep caption = "X increment" default = 0.005 visible = @function == "Cresent" endparam float param m29ystep caption = "Y increment" default = 0.005 visible = @function == "Cresent" endparam float param m30radius caption = "Sphere radius" default = 0.01 visible = @function == "Twisted Triaxial" endparam float param m30fscale caption = "Function scale" default = 1.8 visible = @function == "Twisted Triaxial" endparam float param m30xmax caption = "Max X" default = 3.14 visible = @function == "Twisted Triaxial" endparam float param m30xmin caption = "Min X" default = -3.14 visible = @function == "Twisted Triaxial" endparam float param m30ymax caption = "Max Y" default = 3.14 visible = @function == "Twisted Triaxial" endparam float param m30ymin caption = "Min Y" default = -3.14 visible = @function == "Twisted Triaxial" endparam float param m30xstep caption = "X increment" default = 0.05 visible = @function == "Twisted Triaxial" endparam float param m30ystep caption = "Y increment" default = 0.02 visible = @function == "Twisted Triaxial" endparam float param m31radius caption = "Sphere radius" default = 0.015 visible = @function == "Maeder's Owl" endparam float param m31fscale caption = "Function scale" default = 1.25 visible = @function == "Maeder's Owl" endparam float param m31xmax caption = "Max X" default = 12.56 visible = @function == "Maeder's Owl" endparam float param m31xmin caption = "Min X" default = 0.0 visible = @function == "Maeder's Owl" endparam float param m31ymax caption = "Max Y" default = 1.0 visible = @function == "Maeder's Owl" endparam float param m31ymin caption = "Min Y" default = 0.0 visible = @function == "Maeder's Owl" endparam float param m31xstep caption = "X increment" default = 0.02 visible = @function == "Maeder's Owl" endparam float param m31ystep caption = "Y increment" default = 0.02 visible = @function == "Maeder's Owl" endparam float param m32radius caption = "Sphere radius" default = 0.01 visible = @function == "Stiletto Surface" endparam float param m32fscale caption = "Function scale" default = 1.8 visible = @function == "Stiletto Surface" endparam float param m32xmax caption = "Max X" default = 6.28 visible = @function == "Stiletto Surface" endparam float param m32xmin caption = "Min X" default = 0.0 visible = @function == "Stiletto Surface" endparam float param m32ymax caption = "Max Y" default = 6.28 visible = @function == "Stiletto Surface" endparam float param m32ymin caption = "Min Y" default = 0.0 visible = @function == "Stiletto Surface" endparam float param m32xstep caption = "X increment" default = 0.02 visible = @function == "Stiletto Surface" endparam float param m32ystep caption = "Y increment" default = 0.02 visible = @function == "Stiletto Surface" endparam float param m33radius caption = "Sphere radius" default = 0.03 visible = @function == "Verrill Surface" endparam float param m33fscale caption = "Function scale" default = 0.5 visible = @function == "Verrill Surface" endparam float param m33xmax caption = "Max X" default = 1.0 visible = @function == "Verrill Surface" endparam float param m33xmin caption = "Min X" default = 0.5 visible = @function == "Verrill Surface" endparam float param m33ymax caption = "Max Y" default = 6.28 visible = @function == "Verrill Surface" endparam float param m33ymin caption = "Min Y" default = 0.0 visible = @function == "Verrill Surface" endparam float param m33xstep caption = "X increment" default = 0.005 visible = @function == "Verrill Surface" endparam float param m33ystep caption = "Y increment" default = 0.02 visible = @function == "Verrill Surface" endparam float param m34radius caption = "Sphere radius" default = 0.03 visible = @function == "Twisted Heart" endparam float param m34fscale caption = "Function scale" default = 0.6 visible = @function == "Twisted Heart" endparam float param m34xmax caption = "Max X" default = 3.14 visible = @function == "Twisted Heart" endparam float param m34xmin caption = "Min X" default = 0.0 visible = @function == "Twisted Heart" endparam float param m34ymax caption = "Max Y" default = 3.14 visible = @function == "Twisted Heart" endparam float param m34ymin caption = "Min Y" default = -3.14 visible = @function == "Twisted Heart" endparam float param m34xstep caption = "X increment" default = 0.05 visible = @function == "Twisted Heart" endparam float param m34ystep caption = "Y increment" default = 0.02 visible = @function == "Twisted Heart" endparam float param m35radius caption = "Sphere radius" default = 0.03 visible = @function == "Figure 8 Torus" endparam float param m35fscale caption = "Function scale" default = 0.8 visible = @function == "Figure 8 Torus" endparam float param m35xmax caption = "Max X" default = 3.14 visible = @function == "Figure 8 Torus" endparam float param m35xmin caption = "Min X" default = -3.14 visible = @function == "Figure 8 Torus" endparam float param m35ymax caption = "Max Y" default = 3.14 visible = @function == "Figure 8 Torus" endparam float param m35ymin caption = "Min Y" default = -3.14 visible = @function == "Figure 8 Torus" endparam float param m35xstep caption = "X increment" default = 0.05 visible = @function == "Figure 8 Torus" endparam float param m35ystep caption = "Y increment" default = 0.02 visible = @function == "Figure 8 Torus" endparam float param ftc caption = "parameter c" default = 1.0 visible = @function == "Figure 8 Torus" endparam float param m36radius caption = "Sphere radius" default = 0.01 visible = @function == "Triaxial Teardrop" endparam float param m36fscale caption = "Function scale" default = 3.0 visible = @function == "Triaxial Teardrop" endparam float param m36xmax caption = "Max X" default = 3.14 visible = @function == "Triaxial Teardrop" endparam float param m36xmin caption = "Min X" default = 0.0 visible = @function == "Triaxial Teardrop" endparam float param m36ymax caption = "Max Y" default = 6.28 visible = @function == "Triaxial Teardrop" endparam float param m36ymin caption = "Min Y" default = 0.0 visible = @function == "Triaxial Teardrop" endparam float param m36xstep caption = "X increment" default = 0.02 visible = @function == "Triaxial Teardrop" endparam float param m36ystep caption = "Y increment" default = 0.05 visible = @function == "Triaxial Teardrop" endparam float param m37radius caption = "Sphere radius" default = 0.01 visible = @function == "Lemniscape" endparam float param m37fscale caption = "Function scale" default = 2.0 visible = @function == "Lemniscape" endparam float param m37xmax caption = "Max X" default = 3.14 visible = @function == "Lemniscape" endparam float param m37xmin caption = "Min X" default = 0.0 visible = @function == "Lemniscape" endparam float param m37ymax caption = "Max Y" default = 3.14 visible = @function == "Lemniscape" endparam float param m37ymin caption = "Min Y" default = 0.0 visible = @function == "Lemniscape" endparam float param m37xstep caption = "X increment" default = 0.02 visible = @function == "Lemniscape" endparam float param m37ystep caption = "Y increment" default = 0.02 visible = @function == "Lemniscape" endparam float param m38radius caption = "Sphere radius" default = 0.01 visible = @function == "Tractrix" endparam float param m38fscale caption = "Function scale" default = 1.0 visible = @function == "Tractrix" endparam float param m38xmax caption = "Max X" default = 3.14 visible = @function == "Tractrix" endparam float param m38xmin caption = "Min X" default = -3.14 visible = @function == "Tractrix" endparam float param m38ymax caption = "Max Y" default = 3.14 visible = @function == "Tractrix" endparam float param m38ymin caption = "Min Y" default = -3.14 visible = @function == "Tractrix" endparam float param m38xstep caption = "X increment" default = 0.03 visible = @function == "Tractrix" endparam float param m38ystep caption = "Y increment" default = 0.03 visible = @function == "Tractrix" endparam float param m39radius caption = "Sphere radius" default = 0.02 visible = @function == "Triaxial Tritorus" endparam float param m39fscale caption = "Function scale" default = 0.9 visible = @function == "Triaxial Tritorus" endparam float param m39xmax caption = "Max X" default = 3.14 visible = @function == "Triaxial Tritorus" endparam float param m39xmin caption = "Min X" default = -3.14 visible = @function == "Triaxial Tritorus" endparam float param m39ymax caption = "Max Y" default = 3.14 visible = @function == "Triaxial Tritorus" endparam float param m39ymin caption = "Min Y" default = -3.14 visible = @function == "Triaxial Tritorus" endparam float param m39xstep caption = "X increment" default = 0.05 visible = @function == "Triaxial Tritorus" endparam float param m39ystep caption = "Y increment" default = 0.05 visible = @function == "Triaxial Tritorus" endparam float param m40radius caption = "Sphere radius" default = 0.03 visible = @function == "Saddle Torus" endparam float param m40fscale caption = "Function scale" default = 0.5 visible = @function == "Saddle Torus" endparam float param m40xmax caption = "Max X" default = 6.28 visible = @function == "Saddle Torus" endparam float param m40xmin caption = "Min X" default = 0.0 visible = @function == "Saddle Torus" endparam float param m40ymax caption = "Max Y" default = 6.28 visible = @function == "Saddle Torus" endparam float param m40ymin caption = "Min Y" default = 0.0 visible = @function == "Saddle Torus" endparam float param m40xstep caption = "X increment" default = 0.1 visible = @function == "Saddle Torus" endparam float param m40ystep caption = "Y increment" default = 0.01 visible = @function == "Saddle Torus" endparam float param m41radius caption = "Sphere radius" default = 0.025 visible = @function == "Limpet Torus" endparam float param m41fscale caption = "Function scale" default = 0.75 visible = @function == "Limpet Torus" endparam float param m41xmax caption = "Max X" default = 6.28 visible = @function == "Limpet Torus" endparam float param m41xmin caption = "Min X" default = 0.0 visible = @function == "Limpet Torus" endparam float param m41ymax caption = "Max Y" default = 6.28 visible = @function == "Limpet Torus" endparam float param m41ymin caption = "Min Y" default = 0.0 visible = @function == "Limpet Torus" endparam float param m41xstep caption = "X increment" default = 0.03 visible = @function == "Limpet Torus" endparam float param m41ystep caption = "Y increment" default = 0.03 visible = @function == "Limpet Torus" endparam float param m42radius caption = "Sphere radius" default = 0.025 visible = @function == "Bow Tie" endparam float param m42fscale caption = "Function scale" default = 0.75 visible = @function == "Bow Tie" endparam float param m42xmax caption = "Max X" default = 6.28 visible = @function == "Bow Tie" endparam float param m42xmin caption = "Min X" default = 0.0 visible = @function == "Bow Tie" endparam float param m42ymax caption = "Max Y" default = 6.28 visible = @function == "Bow Tie" endparam float param m42ymin caption = "Min Y" default = 0.0 visible = @function == "Bow Tie" endparam float param m42xstep caption = "X increment" default = 0.03 visible = @function == "Bow Tie" endparam float param m42ystep caption = "Y increment" default = 0.03 visible = @function == "Bow Tie" endparam float param m43radius caption = "Sphere radius" default = 0.015 visible = @function == "Cross Cap" endparam float param m43fscale caption = "Function scale" default = 1.5 visible = @function == "Cross Cap" endparam float param m43xmax caption = "Max X" default = 6.28 visible = @function == "Cross Cap" endparam float param m43xmin caption = "Min X" default = 0.0 visible = @function == "Cross Cap" endparam float param m43ymax caption = "Max Y" default = 1.571 visible = @function == "Cross Cap" endparam float param m43ymin caption = "Min Y" default = 0.0 visible = @function == "Cross Cap" endparam float param m43xstep caption = "X increment" default = 0.03 visible = @function == "Cross Cap" endparam float param m43ystep caption = "Y increment" default = 0.03 visible = @function == "Cross Cap" endparam float param m44radius caption = "Sphere radius" default = 0.01 visible = @function == "Whitney Umbrella" endparam float param m44fscale caption = "Function scale" default = 2.5 visible = @function == "Whitney Umbrella" endparam float param m44xmax caption = "Max X" default = 3.14 visible = @function == "Whitney Umbrella" endparam float param m44xmin caption = "Min X" default = 0.0 visible = @function == "Whitney Umbrella" endparam float param m44ymax caption = "Max Y" default = 6.28 visible = @function == "Whitney Umbrella" endparam float param m44ymin caption = "Min Y" default = 0.0 visible = @function == "Whitney Umbrella" endparam float param m44xstep caption = "X increment" default = 0.05 visible = @function == "Whitney Umbrella" endparam float param m44ystep caption = "Y increment" default = 0.02 visible = @function == "Whitney Umbrella" endparam float param m45radius caption = "Sphere radius" default = 0.02 visible = @function == "Triaxial Hexatorus" endparam float param m45fscale caption = "Function scale" default = 0.75 visible = @function == "Triaxial Hexatorus" endparam float param m45xmax caption = "Max X" default = 6.28 visible = @function == "Triaxial Hexatorus" endparam float param m45xmin caption = "Min X" default = 0.0 visible = @function == "Triaxial Hexatorus" endparam float param m45ymax caption = "Max Y" default = 6.28 visible = @function == "Triaxial Hexatorus" endparam float param m45ymin caption = "Min Y" default = 0.0 visible = @function == "Triaxial Hexatorus" endparam float param m45xstep caption = "X increment" default = 0.05 visible = @function == "Triaxial Hexatorus" endparam float param m45ystep caption = "Y increment" default = 0.05 visible = @function == "Triaxial Hexatorus" endparam float param m46radius caption = "Sphere radius" default = 0.005 visible = @function == "Fish Surface" endparam float param m46fscale caption = "Function scale" default = 2.5 visible = @function == "Fish Surface" endparam float param m46xmax caption = "Max X" default = 3.14 visible = @function == "Fish Surface" endparam float param m46xmin caption = "Min X" default = 0.0 visible = @function == "Fish Surface" endparam float param m46ymax caption = "Max Y" default = 6.28 visible = @function == "Fish Surface" endparam float param m46ymin caption = "Min Y" default = 0.0 visible = @function == "Fish Surface" endparam float param m46xstep caption = "X increment" default = 0.03 visible = @function == "Fish Surface" endparam float param m46ystep caption = "Y increment" default = 0.01 visible = @function == "Fish Surface" endparam float param m47radius caption = "Sphere radius" default = 0.02 visible = @function == "Twisted Pipe" endparam float param m47fscale caption = "Function scale" default = 0.6 visible = @function == "Twisted Pipe" endparam float param m47xmax caption = "Max X" default = 6.28 visible = @function == "Twisted Pipe" endparam float param m47xmin caption = "Min X" default = 0.0 visible = @function == "Twisted Pipe" endparam float param m47ymax caption = "Max Y" default = 6.28 visible = @function == "Twisted Pipe" endparam float param m47ymin caption = "Min Y" default = 0.0 visible = @function == "Twisted Pipe" endparam float param m47xstep caption = "X increment" default = 0.02 visible = @function == "Twisted Pipe" endparam float param m47ystep caption = "Y increment" default = 0.02 visible = @function == "Twisted Pipe" endparam float param m48radius caption = "Sphere radius" default = 0.1 visible = @function == "Knot 4" endparam float param m48fscale caption = "Function scale" default = 0.6 visible = @function == "Knot 4" endparam float param m48xmax caption = "Max X" default = 3.14 visible = @function == "Knot 4" endparam float param m48xmin caption = "Min X" default = 0.0 visible = @function == "Knot 4" endparam float param m48ymax caption = "Max Y" default = 0.01 visible = @function == 99 endparam float param m48ymin caption = "Min Y" default = 0.0 visible = @function == 99 endparam float param m48xstep caption = "X increment" default = 0.0005 visible = @function == "Knot 4" endparam float param m48ystep caption = "Y increment" default = 0.01 visible = @function == 99 endparam float param m49radius caption = "Sphere radius" default = 1.0 visible = @function == "Eight Knot" endparam float param m49fscale caption = "Function scale" default = 0.08 visible = @function == "Eight Knot" endparam float param m49xmax caption = "Max X" default = 6.28 visible = @function == "Eight Knot" endparam float param m49xmin caption = "Min X" default = 0.0 visible = @function == "Eight Knot" endparam float param m49ymax caption = "Max Y" default = 0.01 visible = @function == 99 endparam float param m49ymin caption = "Min Y" default = 0.0 visible = @function == 99 endparam float param m49xstep caption = "X increment" default = 0.00314 visible = @function == "Eight Knot" endparam float param m49ystep caption = "Y increment" default = 0.01 visible = @function == 99 endparam float param m50radius caption = "Sphere radius" default = 0.15 visible = @function == "Cinquefoil Knot" endparam float param m50fscale caption = "Function scale" default = 0.4 visible = @function == "Cinquefoil Knot" endparam float param m50xmax caption = "Max X" default = 3.14 visible = @function == "Cinquefoil Knot" endparam float param m50xmin caption = "Min X" default = 0.0 visible = @function == "Cinquefoil Knot" endparam float param m50ymax caption = "Max Y" default = 0.01 visible = @function == 99 endparam float param m50ymin caption = "Min Y" default = 0.0 visible = @function == 99 endparam float param m50xstep caption = "X increment" default = 0.005 visible = @function == "Cinquefoil Knot" endparam float param m50ystep caption = "Y increment" default = 0.01 visible = @function == 99 endparam int param ck caption = "Parameter k" default = 2 visible = @function == "Cinquefoil Knot" endparam float param m51radius caption = "Sphere radius" default = 5 visible = @function == "Granny Knot" endparam float param m51fscale caption = "Function scale" default = 0.01 visible = @function == "Granny Knot" endparam float param m51xmax caption = "Max X" default = 6.28 visible = @function == "Granny Knot" endparam float param m51xmin caption = "Min X" default = 0.0 visible = @function == "Granny Knot" endparam float param m51ymax caption = "Max Y" default = 0.01 visible = @function == 99 endparam float param m51ymin caption = "Min Y" default = 0.0 visible = @function == 99 endparam float param m51xstep caption = "X increment" default = 0.001 visible = @function == "Granny Knot" endparam float param m51ystep caption = "Y increment" default = 0.01 visible = @function == 99 endparam $ifdef VER40 heading caption = "Rotations & Translations" expanded = false endheading heading text = "Z Rotation is on the \ Location Tab." endheading $else heading caption = "Rotations & Translations" endheading heading caption = "Z Rotation is on the" endheading heading caption = "Location Tab." endheading $endif param xangle caption = "X Axis Rotation" default = 30.0 hint = "This is the fixed (horizontal) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param zangle caption = "Y Axis Rotation" default = 30.0 hint = "This is the fixed (vertical) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param rotoffx caption = "Rotation Center X Offset" default = 0.0 endparam param rotoffy caption = "Rotation Center Y Offset" default = 0.0 endparam param rotoffz caption = "Rotation Center Z Offset" default = 0.0 endparam param transx caption = "X Final Translation" default = 0.0 endparam param transy caption = "Y Final Translation" default = -0.15 endparam param transz caption = "Z Final Translation" default = 0.0 endparam ;-------------------------------------------------------------------- ; Color Settings ;-------------------------------------------------------------------- heading caption = "Color Settings" endheading param colorPreset caption = "Color Preset" enum = "Gradient" "Custom" "Generate" "Default" "Default 12" \ "Default 16" "Default 24" "Color Wheel 12" "Alhambra 8" \ "Belvedere 8" "Bouquet 8" "Color Switch 8" "Evening Sky 8" \ "Fantasia 8" "Flowering Orchard 8" "Morning Sky 8" "Pastel 8" \ "Pastel Rainbow 8" "Showtime 8" "Soleil 8" "Chill 8" \ "Cloud Nine 8" "La Terra 8" "Santa Fe 8" "Spring 8" "Summer 8" \ "Fall 8" "Winter 8" "Mojave 8" "Gold/Green 8" "Gold/Green Alt 8" \ "Gold/Silver 8" "Gold/Silver Alt 8" "Purple/Yellow 8" \ "Purple/Yellow Alt 8" "Silver/Blue 8" "Silver/Blue Alt 8" \ "Fourth of July 3" "Blue/Silver 2" "Blue/White 2" "Cyan/Magenta 2" \ "Cyan/Yellow 2" "Gold/Green 2" "Purple/Yellow 2" "Red/Tan 2" default = 2 hint = "Use 'Gradient' for colors from the gradient. \ Use 'Custom' to set your own color ranges. \ Use 'Default' for the default colors. \ Use 'Generate' to create 3D-like colors from the \ gradient (allows using the gradient randomize function). \ Use any of the other predefined settings for those colors." endparam param customize caption = "Show/Customize" default = false hint = "Check to customize the selected color preset. NOTE: If you \ modify the default values for any of the range(s), you cannot \ get back to the default values for the range(s) you modify \ unless you reload the UCL." visible = (@colorPreset != "Gradient") && (@colorPreset != "Generate") \ && (@colorPreset != "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Custom ;-------------------------------------------------------------------- heading caption = " Custom Color Settings" visible = (@colorPreset == "Custom") endheading color param colorMax1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMin1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMax2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMin2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMax3 caption = "Color Range 3 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMin3 caption = "Color Range 3 Low" default = rgb(100/255,36/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMax4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMin4 caption = "Color Range 4 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMax5 caption = "Color Range 5 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMin5 caption = "Color Range 5 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMax6 caption = "Color Range 6 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMin6 caption = "Color Range 6 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMax7 caption = "Color Range 7 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMin7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMax8 caption = "Color Range 8 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param colorMin8 caption = "Color Range 8 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param customMax9 caption = "Color Range 9 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMin9 caption = "Color Range 9 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMax10 caption = "Color Range 10 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMin10 caption = "Color Range 10 Low" default = rgb(94/255,18/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMax11 caption = "Color Range 11 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMin11 caption = "Color Range 11 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMax12 caption = "Color Range 12 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMin12 caption = "Color Range 12 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMax13 caption = "Color Range 13 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMin13 caption = "Color Range 13 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMax14 caption = "Color Range 14 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMin14 caption = "Color Range 14 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMax15 caption = "Color Range 15 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMin15 caption = "Color Range 15 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMax16 caption = "Color Range 16 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMin16 caption = "Color Range 16 Low" default = rgb(69/255,0/255,82/255) hint = "Specifies the color at the low end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMax17 caption = "Color Range 17 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMin17 caption = "Color Range 17 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMax18 caption = "Color Range 18 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMin18 caption = "Color Range 18 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMax19 caption = "Color Range 19 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMin19 caption = "Color Range 19 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMax20 caption = "Color Range 20 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMin20 caption = "Color Range 20 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMax21 caption = "Color Range 21 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMin21 caption = "Color Range 21 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMax22 caption = "Color Range 22 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMin22 caption = "Color Range 22 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMax23 caption = "Color Range 23 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMin23 caption = "Color Range 23 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMax24 caption = "Color Range 24 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam color param customMin24 caption = "Color Range 24 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default ;-------------------------------------------------------------------- heading caption = " Default Settings" visible = (@customize && @colorPreset == "Default") endheading color param defaultMax1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax2 caption = "Color Range 2 High" default = rgb(252/255,0/255,172/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin2 caption = "Color Range 2 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax3 caption = "Color Range 3 High" default = rgb(252/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax4 caption = "Color Range 4 High" default = rgb(252/255,128/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin4 caption = "Color Range 4 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax5 caption = "Color Range 5 High" default = rgb(252/255,252/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin5 caption = "Color Range 5 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax6 caption = "Color Range 6 High" default = rgb(0/255,252/255,128/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin7 caption = "Color Range 7 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax8 caption = "Color Range 8 High" default = rgb(64/255,64/255,252/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 12 ;-------------------------------------------------------------------- heading caption = " Default 12 Color Settings" visible = (@customize && @colorPreset == "Default 12") endheading color param default12Max1 caption = "Color Range 1 High" default = rgb(255/255,85/255,253/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min1 caption = "Color Range 1 Low" default = rgb(98/255,0/255,76/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max2 caption = "Color Range 2 High" default = rgb(252/255,0/255,143/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min2 caption = "Color Range 2 Low" default = rgb(98/255,0/255,54/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max4 caption = "Color Range 4 High" default = rgb(255/255,97/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min4 caption = "Color Range 4 Low" default = rgb(104/255,27/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min5 caption = "Color Range 5 Low" default = rgb(110/255,54/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max6 caption = "Color Range 6 High" default = rgb(255/255,248/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min6 caption = "Color Range 6 Low" default = rgb(102/255,60/255,6/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,58/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min7 caption = "Color Range 7 Low" default = rgb(0/255,76/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,205/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min8 caption = "Color Range 8 Low" default = rgb(0/255,89/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max9 caption = "Color Range 9 High" default = rgb(0/255,194/255,255/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min9 caption = "Color Range 9 Low" default = rgb(0/255,80/255,92/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max10 caption = "Color Range 10 High" default = rgb(35/255,109/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min10 caption = "Color Range 10 Low" default = rgb(0/255,4/255,102/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max11 caption = "Color Range 11 High" default = rgb(149/255,53/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min11 caption = "Color Range 11 Low" default = rgb(53/255,0/255,96/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max12 caption = "Color Range 12 High" default = rgb(195/255,0/255,252/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min12 caption = "Color Range 12 Low" default = rgb(58/255,0/255,84/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 16 ;-------------------------------------------------------------------- heading caption = " Default 16 Color Settings" visible = (@customize && @colorPreset == "Default 16") endheading color param default16Max1 caption = "Color Range 1 High" default = rgb(255/255,31/255,114/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min1 caption = "Color Range 1 Low" default = rgb(94/255,0/255,40/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max3 caption = "Color Range 3 High" default = rgb(255/255,78/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min3 caption = "Color Range 3 Low" default = rgb(88/255,27/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max4 caption = "Color Range 4 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min4 caption = "Color Range 4 Low" default = rgb(90/255,30/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,31/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min5 caption = "Color Range 5 Low" default = rgb(88/255,38/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min6 caption = "Color Range 6 Low" default = rgb(96/255,57/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max7 caption = "Color Range 7 High" default = rgb(170/255,255/255,37/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min7 caption = "Color Range 7 Low" default = rgb(41/255,68/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,94/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min8 caption = "Color Range 8 Low" default = rgb(0/255,62/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max9 caption = "Color Range 9 High" default = rgb(0/255,238/255,203/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min9 caption = "Color Range 9 Low" default = rgb(0/255,64/255,54/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max10 caption = "Color Range 10 High" default = rgb(11/255,166/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min10 caption = "Color Range 10 Low" default = rgb(0/255,38/255,78/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max11 caption = "Color Range 11 High" default = rgb(0/255,68/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min11 caption = "Color Range 11 Low" default = rgb(0/255,20/255,88/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max12 caption = "Color Range 12 High" default = rgb(99/255,0/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min12 caption = "Color Range 12 Low" default = rgb(47/255,0/255,94/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max13 caption = "Color Range 13 High" default = rgb(145/255,0/255,255/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min13 caption = "Color Range 13 Low" default = rgb(69/255,0/255,102/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max14 caption = "Color Range 14 High" default = rgb(221/255,0/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min14 caption = "Color Range 14 Low" default = rgb(86/255,0/255,100/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max15 caption = "Color Range 15 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min15 caption = "Color Range 15 Low" default = rgb(90/255,0/255,75/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max16 caption = "Color Range 16 High" default = rgb(255/255,0/255,140/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min16 caption = "Color Range 16 Low" default = rgb(96/255,0/255,60/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 24 ;-------------------------------------------------------------------- heading caption = " Default 24 Color Settings" visible = (@customize && @colorPreset == "Default 24") endheading color param default24Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min2 caption = "Color Range 2 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max3 caption = "Color Range 3 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max4 caption = "Color Range 4 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max5 caption = "Color Range 5 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min5 caption = "Color Range 5 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max6 caption = "Color Range 6 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min6 caption = "Color Range 6 Low" default = rgb(96/255,27/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max7 caption = "Color Range 7 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min7 caption = "Color Range 7 Low" default = rgb(100/255,38/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min8 caption = "Color Range 8 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max9 caption = "Color Range 9 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min9 caption = "Color Range 9 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max10 caption = "Color Range 10 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min10 caption = "Color Range 10 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max11 caption = "Color Range 11 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min11 caption = "Color Range 11 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max12 caption = "Color Range 12 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min12 caption = "Color Range 12 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max13 caption = "Color Range 13 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min13 caption = "Color Range 13 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max14 caption = "Color Range 14 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min14 caption = "Color Range 14 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max15 caption = "Color Range 15 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min15 caption = "Color Range 15 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max16 caption = "Color Range 16 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min16 caption = "Color Range 16 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max17 caption = "Color Range 17 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min17 caption = "Color Range 17 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max18 caption = "Color Range 18 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min18 caption = "Color Range 18 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max19 caption = "Color Range 19 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min19 caption = "Color Range 19 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max20 caption = "Color Range 20 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min20 caption = "Color Range 20 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max21 caption = "Color Range 21 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min21 caption = "Color Range 21 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max22 caption = "Color Range 22 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min22 caption = "Color Range 22 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max23 caption = "Color Range 23 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min23 caption = "Color Range 23 Low" default = rgb(64/255,0/255,76/255) hint = "Specifies the color at the low end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max24 caption = "Color Range 24 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min24 caption = "Color Range 24 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Wheel 12 ;-------------------------------------------------------------------- heading caption = " Color Wheel 12 Settings" visible = (@customize && @colorPreset == "Color Wheel 12") endheading color param colorWheel12Max1 caption = "Color Range 1 High" default = rgb(142/255,117/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min1 caption = "Color Range 1 Low" default = rgb(52/255,0/255,100/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max2 caption = "Color Range 2 High" default = rgb(224/255,9/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,84/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max4 caption = "Color Range 4 High" default = rgb(252/255,167/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min4 caption = "Color Range 4 Low" default = rgb(95/255,54/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max5 caption = "Color Range 5 High" default = rgb(190/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min5 caption = "Color Range 5 Low" default = rgb(63/255,84/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max6 caption = "Color Range 6 High" default = rgb(0/255,231/255,213/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min6 caption = "Color Range 6 Low" default = rgb(4/255,62/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max7 caption = "Color Range 7 High" default = rgb(182/255,27/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min7 caption = "Color Range 7 Low" default = rgb(53/255,0/255,92/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max8 caption = "Color Range 8 High" default = rgb(255/255,33/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min8 caption = "Color Range 8 Low" default = rgb(80/255,0/255,53/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max9 caption = "Color Range 9 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min9 caption = "Color Range 9 Low" default = rgb(101/255,25/255,21/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max10 caption = "Color Range 10 High" default = rgb(255/255,241/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min10 caption = "Color Range 10 Low" default = rgb(88/255,69/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max11 caption = "Color Range 11 High" default = rgb(0/255,248/255,103/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min11 caption = "Color Range 11 Low" default = rgb(0/255,83/255,15/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max12 caption = "Color Range 12 High" default = rgb(27/255,119/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min12 caption = "Color Range 12 Low" default = rgb(0/255,31/255,92/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Alhambra 8 ;-------------------------------------------------------------------- heading caption = " Alhambra 8 Settings" visible = (@customize && @colorPreset == "Alhambra 8") endheading color param alhambra8Max1 caption = "Color Range 1 High" default = rgb(15/255,222/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min1 caption = "Color Range 1 Low" default = rgb(0/255,43/255,52/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max2 caption = "Color Range 2 High" default = rgb(255/255,204/255,75/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min2 caption = "Color Range 2 Low" default = rgb(92/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max3 caption = "Color Range 3 High" default = rgb(188/255,152/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min3 caption = "Color Range 3 Low" default = rgb(41/255,0/255,70/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max4 caption = "Color Range 4 High" default = rgb(255/255,155/255,109/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min4 caption = "Color Range 4 Low" default = rgb(95/255,36/255,14/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max5 caption = "Color Range 5 High" default = rgb(121/255,180/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min5 caption = "Color Range 5 Low" default = rgb(0/255,47/255,91/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max6 caption = "Color Range 6 High" default = rgb(255/255,131/255,126/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min6 caption = "Color Range 6 Low" default = rgb(104/255,20/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max7 caption = "Color Range 7 High" default = rgb(33/255,255/255,220/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min7 caption = "Color Range 7 Low" default = rgb(0/255,67/255,49/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max8 caption = "Color Range 8 High" default = rgb(255/255,177/255,93/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min8 caption = "Color Range 8 Low" default = rgb(100/255,44/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Belvedere 8 ;-------------------------------------------------------------------- heading caption = " Belvedere 8 Settings" visible = (@customize && @colorPreset == "Belvedere 8") endheading color param belvedere8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min1 caption = "Color Range 1 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min2 caption = "Color Range 2 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max3 caption = "Color Range 3 High" default = rgb(123/255,201/255,254/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min3 caption = "Color Range 3 Low" default = rgb(0/255,45/255,68/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max4 caption = "Color Range 4 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min4 caption = "Color Range 4 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max5 caption = "Color Range 5 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min5 caption = "Color Range 5 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max6 caption = "Color Range 6 High" default = rgb(0/255,255/255,217/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min6 caption = "Color Range 6 Low" default = rgb(0/255,54/255,46/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max7 caption = "Color Range 7 High" default = rgb(255/255,20/255,70/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min7 caption = "Color Range 7 Low" default = rgb(100/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max8 caption = "Color Range 8 High" default = rgb(95/255,84/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,89/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Bouquet 8 ;-------------------------------------------------------------------- heading caption = " Bouquet 8 Settings" visible = (@customize && @colorPreset == "Bouquet 8") endheading color param bouquet8Max1 caption = "Color Range 1 High" default = rgb(0/255,255/255,131/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min1 caption = "Color Range 1 Low" default = rgb(0/255,84/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max2 caption = "Color Range 2 High" default = rgb(52/255,255/255,198/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min2 caption = "Color Range 2 Low" default = rgb(0/255,82/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max3 caption = "Color Range 3 High" default = rgb(0/255,244/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min3 caption = "Color Range 3 Low" default = rgb(0/255,64/255,74/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max4 caption = "Color Range 4 High" default = rgb(180/255,169/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min4 caption = "Color Range 4 Low" default = rgb(40/255,12/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max5 caption = "Color Range 5 High" default = rgb(251/255,148/255,230/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min5 caption = "Color Range 5 Low" default = rgb(100/255,20/255,67/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max6 caption = "Color Range 6 High" default = rgb(255/255,101/255,140/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min6 caption = "Color Range 6 Low" default = rgb(84/255,15/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max7 caption = "Color Range 7 High" default = rgb(255/255,149/255,111/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min7 caption = "Color Range 7 Low" default = rgb(77/255,36/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max8 caption = "Color Range 8 High" default = rgb(255/255,252/255,125/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min8 caption = "Color Range 8 Low" default = rgb(95/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Switch 8 ;-------------------------------------------------------------------- heading caption = " Color Switch 8 Settings" visible = (@customize && @colorPreset == "Color Switch 8") endheading color param colorSwitch8Max1 caption = "Color Range 1 High" default = rgb(255/255,33/255,52/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min1 caption = "Color Range 1 Low" default = rgb(90/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max2 caption = "Color Range 2 High" default = rgb(61/255,136/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,82/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,44/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min3 caption = "Color Range 3 Low" default = rgb(0/255,70/255,7/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max4 caption = "Color Range 4 High" default = rgb(255/255,131/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min4 caption = "Color Range 4 Low" default = rgb(105/255,40/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max5 caption = "Color Range 5 High" default = rgb(255/255,27/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min5 caption = "Color Range 5 Low" default = rgb(104/255,0/255,78/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max6 caption = "Color Range 6 High" default = rgb(168/255,87/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min6 caption = "Color Range 6 Low" default = rgb(35/255,0/255,58/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min7 caption = "Color Range 7 Low" default = rgb(0/255,60/255,60/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,38/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min8 caption = "Color Range 8 Low" default = rgb(90/255,90/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Evening Sky 8 ;-------------------------------------------------------------------- heading caption = " Evening Sky 8 Settings" visible = (@customize && @colorPreset == "Evening Sky 8") endheading color param eveningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,238/255,222/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min1 caption = "Color Range 1 Low" default = rgb(50/255,35/255,35/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max2 caption = "Color Range 2 High" default = rgb(255/255,226/255,85/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min2 caption = "Color Range 2 Low" default = rgb(85/255,54/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max3 caption = "Color Range 3 High" default = rgb(249/255,148/255,216/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min3 caption = "Color Range 3 Low" default = rgb(79/255,20/255,57/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max4 caption = "Color Range 4 High" default = rgb(159/255,159/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min4 caption = "Color Range 4 Low" default = rgb(22/255,16/255,54/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,175/255,79/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min5 caption = "Color Range 5 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max6 caption = "Color Range 6 High" default = rgb(124/255,190/255,251/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min6 caption = "Color Range 6 Low" default = rgb(13/255,40/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max7 caption = "Color Range 7 High" default = rgb(255/255,111/255,123/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min7 caption = "Color Range 7 Low" default = rgb(57/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max8 caption = "Color Range 8 High" default = rgb(111/255,255/255,245/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min8 caption = "Color Range 8 Low" default = rgb(0/255,60/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fantasia 8 ;-------------------------------------------------------------------- heading caption = " Fantasia 8 Settings" visible = (@customize && @colorPreset == "Fantasia 8") endheading color param fantasia8Max1 caption = "Color Range 1 High" default = rgb(255/255,230/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min1 caption = "Color Range 1 Low" default = rgb(102/255,81/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max2 caption = "Color Range 2 High" default = rgb(230/255,78/255,208/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min2 caption = "Color Range 2 Low" default = rgb(104/255,0/255,52/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max3 caption = "Color Range 3 High" default = rgb(180/255,119/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min3 caption = "Color Range 3 Low" default = rgb(56/255,0/255,82/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max4 caption = "Color Range 4 High" default = rgb(0/255,228/255,150/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min4 caption = "Color Range 4 Low" default = rgb(0/255,50/255,30/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max5 caption = "Color Range 5 High" default = rgb(131/255,148/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min5 caption = "Color Range 5 Low" default = rgb(38/255,31/255,85/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max6 caption = "Color Range 6 High" default = rgb(255/255,182/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min6 caption = "Color Range 6 Low" default = rgb(76/255,40/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max7 caption = "Color Range 7 High" default = rgb(252/255,0/255,113/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min7 caption = "Color Range 7 Low" default = rgb(84/255,0/255,34/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max8 caption = "Color Range 8 High" default = rgb(0/255,232/255,249/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min8 caption = "Color Range 8 Low" default = rgb(0/255,64/255,78/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Flowering Orchard 8 ;-------------------------------------------------------------------- heading caption = " Flowering Orchard 8 Settings" visible = (@customize && @colorPreset == "Flowering Orchard 8") endheading color param floweringOrchard8Max1 caption = "Color Range 1 High" default = rgb(255/255,188/255,213/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min1 caption = "Color Range 1 Low" default = rgb(132/255,30/255,66/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max2 caption = "Color Range 2 High" default = rgb(240/255,135/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min2 caption = "Color Range 2 Low" default = rgb(70/255,0/255,59/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max3 caption = "Color Range 3 High" default = rgb(255/255,75/255,153/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min3 caption = "Color Range 3 Low" default = rgb(104/255,15/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max4 caption = "Color Range 4 High" default = rgb(71/255,213/255,119/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min4 caption = "Color Range 4 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max5 caption = "Color Range 5 High" default = rgb(255/255,102/255,209/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min5 caption = "Color Range 5 Low" default = rgb(116/255,10/255,86/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max6 caption = "Color Range 6 High" default = rgb(154/255,199/255,51/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min6 caption = "Color Range 6 Low" default = rgb(28/255,44/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max7 caption = "Color Range 7 High" default = rgb(255/255,162/255,228/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min7 caption = "Color Range 7 Low" default = rgb(110/255,0/255,55/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max8 caption = "Color Range 8 High" default = rgb(255/255,201/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min8 caption = "Color Range 8 Low" default = rgb(145/255,20/255,54/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Morning Sky 8 ;-------------------------------------------------------------------- heading caption = " Morning Sky 8 Settings" visible = (@customize && @colorPreset == "Morning Sky 8") endheading color param morningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,178/255,217/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min1 caption = "Color Range 1 Low" default = rgb(79/255,29/255,57/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max2 caption = "Color Range 2 High" default = rgb(107/255,246/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min2 caption = "Color Range 2 Low" default = rgb(13/255,70/255,75/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max3 caption = "Color Range 3 High" default = rgb(255/255,199/255,137/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min3 caption = "Color Range 3 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max4 caption = "Color Range 4 High" default = rgb(241/255,245/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min4 caption = "Color Range 4 Low" default = rgb(16/255,24/255,46/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,177/255,188/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min5 caption = "Color Range 5 Low" default = rgb(54/255,14/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max6 caption = "Color Range 6 High" default = rgb(248/255,236/255,236/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min6 caption = "Color Range 6 Low" default = rgb(49/255,38/255,35/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max7 caption = "Color Range 7 High" default = rgb(129/255,201/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min7 caption = "Color Range 7 Low" default = rgb(0/255,56/255,70/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min8 caption = "Color Range 8 Low" default = rgb(89/255,76/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel 8 ;-------------------------------------------------------------------- heading caption = " Pastel 8 Settings" visible = (@customize && @colorPreset == "Pastel 8") endheading color param pastel8Max1 caption = "Color Range 1 High" default = rgb(147/255,255/255,193/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min1 caption = "Color Range 1 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max2 caption = "Color Range 2 High" default = rgb(147/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max3 caption = "Color Range 3 High" default = rgb(148/255,148/255,253/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min3 caption = "Color Range 3 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max4 caption = "Color Range 4 High" default = rgb(199/255,149/255,253/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max5 caption = "Color Range 5 High" default = rgb(255/255,147/255,221/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min5 caption = "Color Range 5 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max6 caption = "Color Range 6 High" default = rgb(254/255,148/255,148/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min6 caption = "Color Range 6 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max7 caption = "Color Range 7 High" default = rgb(255/255,202/255,147/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min7 caption = "Color Range 7 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,147/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min8 caption = "Color Range 8 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel Rainbow 8 ;-------------------------------------------------------------------- heading caption = " Pastel Rainbow 8 Settings" visible = (@customize && @colorPreset == "Pastel Rainbow 8") endheading color param pastelRainbow8Max1 caption = "Color Range 1 High" default = rgb(242/255,246/255,174/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min1 caption = "Color Range 1 Low" default = rgb(20/255,48/255,12/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max2 caption = "Color Range 2 High" default = rgb(182/255,242/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min2 caption = "Color Range 2 Low" default = rgb(20/255,44/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max3 caption = "Color Range 3 High" default = rgb(202/255,202/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min3 caption = "Color Range 3 Low" default = rgb(36/255,36/255,48/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max4 caption = "Color Range 4 High" default = rgb(255/255,170/255,170/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min4 caption = "Color Range 4 Low" default = rgb(89/255,0/255,24/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max5 caption = "Color Range 5 High" default = rgb(255/255,246/255,178/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min5 caption = "Color Range 5 Low" default = rgb(40/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max6 caption = "Color Range 6 High" default = rgb(255/255,238/255,206/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min6 caption = "Color Range 6 Low" default = rgb(52/255,16/255,40/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max7 caption = "Color Range 7 High" default = rgb(214/255,222/255,161/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min7 caption = "Color Range 7 Low" default = rgb(4/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max8 caption = "Color Range 8 High" default = rgb(255/255,230/255,246/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min8 caption = "Color Range 8 Low" default = rgb(70/255,50/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Showtime 8 ;-------------------------------------------------------------------- heading caption = " Showtime 8 Settings" visible = (@customize && @colorPreset == "Showtime 8") endheading color param showtime8Max1 caption = "Color Range 1 High" default = rgb(241/255,53/255,82/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min1 caption = "Color Range 1 Low" default = rgb(88/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max2 caption = "Color Range 2 High" default = rgb(255/255,121/255,52/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min2 caption = "Color Range 2 Low" default = rgb(107/255,29/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max3 caption = "Color Range 3 High" default = rgb(253/255,168/255,67/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min3 caption = "Color Range 3 Low" default = rgb(97/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max4 caption = "Color Range 4 High" default = rgb(255/255,231/255,21/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min4 caption = "Color Range 4 Low" default = rgb(140/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max5 caption = "Color Range 5 High" default = rgb(58/255,219/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min5 caption = "Color Range 5 Low" default = rgb(0/255,36/255,83/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max6 caption = "Color Range 6 High" default = rgb(9/255,116/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min6 caption = "Color Range 6 Low" default = rgb(33/255,30/255,81/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max7 caption = "Color Range 7 High" default = rgb(105/255,71/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min7 caption = "Color Range 7 Low" default = rgb(36/255,0/255,76/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max8 caption = "Color Range 8 High" default = rgb(187/255,32/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min8 caption = "Color Range 8 Low" default = rgb(50/255,0/255,56/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Soleil 8 ;-------------------------------------------------------------------- heading caption = " Soleil 8 Settings" visible = (@customize && @colorPreset == "Soleil 8") endheading color param soleil8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,35/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min1 caption = "Color Range 1 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max2 caption = "Color Range 2 High" default = rgb(255/255,209/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min2 caption = "Color Range 2 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max3 caption = "Color Range 3 High" default = rgb(231/255,237/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min3 caption = "Color Range 3 Low" default = rgb(54/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max4 caption = "Color Range 4 High" default = rgb(255/255,141/255,49/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min4 caption = "Color Range 4 Low" default = rgb(92/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,156/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min5 caption = "Color Range 5 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max6 caption = "Color Range 6 High" default = rgb(255/255,158/255,17/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min6 caption = "Color Range 6 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,217/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min7 caption = "Color Range 7 Low" default = rgb(76/255,41/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max8 caption = "Color Range 8 High" default = rgb(255/255,184/255,53/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min8 caption = "Color Range 8 Low" default = rgb(76/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Chill 8 ;-------------------------------------------------------------------- heading caption = " Chill 8 Settings" visible = (@customize && @colorPreset == "Chill 8") endheading color param chillMax1 caption = "Color Range 1 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin1 caption = "Color Range 1 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax2 caption = "Color Range 2 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax3 caption = "Color Range 3 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin3 caption = "Color Range 3 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax4 caption = "Color Range 4 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax5 caption = "Color Range 5 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin5 caption = "Color Range 5 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax6 caption = "Color Range 6 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax7 caption = "Color Range 7 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin7 caption = "Color Range 7 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax8 caption = "Color Range 8 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cloud Nine 8 ;-------------------------------------------------------------------- heading caption = " Cloud Nine 8 Settings" visible = (@customize && @colorPreset == "Cloud Nine 8") endheading color param cloudNineMax1 caption = "Color Range 1 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin1 caption = "Color Range 1 Low" default = rgb(143/255,60/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax2 caption = "Color Range 2 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin2 caption = "Color Range 2 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax3 caption = "Color Range 3 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin3 caption = "Color Range 3 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax4 caption = "Color Range 4 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin4 caption = "Color Range 4 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax5 caption = "Color Range 5 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin5 caption = "Color Range 5 Low" default = rgb(140/255,63/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax6 caption = "Color Range 6 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin6 caption = "Color Range 6 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax7 caption = "Color Range 7 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin7 caption = "Color Range 7 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax8 caption = "Color Range 8 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin8 caption = "Color Range 8 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for La Terra 8 ;-------------------------------------------------------------------- heading caption = " La Terra 8 Settings" visible = (@customize && @colorPreset == "La Terra 8") endheading color param laTerraMax1 caption = "Color Range 1 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin1 caption = "Color Range 1 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax2 caption = "Color Range 2 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin2 caption = "Color Range 2 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax3 caption = "Color Range 3 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin3 caption = "Color Range 3 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax4 caption = "Color Range 4 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin4 caption = "Color Range 4 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax5 caption = "Color Range 5 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin5 caption = "Color Range 5 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax6 caption = "Color Range 6 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin6 caption = "Color Range 6 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax7 caption = "Color Range 7 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin7 caption = "Color Range 7 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax8 caption = "Color Range 8 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin8 caption = "Color Range 8 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Santa Fe 8 ;-------------------------------------------------------------------- heading caption = " Santa Fe 8 Settings" visible = (@customize && @colorPreset == "Santa Fe 8") endheading color param santaFe8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min1 caption = "Color Range 1 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max2 caption = "Color Range 2 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max3 caption = "Color Range 3 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min3 caption = "Color Range 3 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max4 caption = "Color Range 4 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min4 caption = "Color Range 4 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min5 caption = "Color Range 5 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max6 caption = "Color Range 6 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max7 caption = "Color Range 7 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min7 caption = "Color Range 7 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min8 caption = "Color Range 8 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Spring 8 ;-------------------------------------------------------------------- heading caption = " Spring 8 Settings" visible = (@customize && @colorPreset == "Spring 8") endheading color param spring8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min1 caption = "Color Range 1 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max2 caption = "Color Range 2 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max3 caption = "Color Range 3 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min3 caption = "Color Range 3 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max4 caption = "Color Range 4 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min5 caption = "Color Range 5 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max6 caption = "Color Range 6 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min6 caption = "Color Range 6 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max7 caption = "Color Range 7 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min7 caption = "Color Range 7 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max8 caption = "Color Range 8 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min8 caption = "Color Range 8 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Summer 8 ;-------------------------------------------------------------------- heading caption = " Summer 8 Settings" visible = (@customize && @colorPreset == "Summer 8") endheading color param summer8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min1 caption = "Color Range 1 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max2 caption = "Color Range 2 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min3 caption = "Color Range 3 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max4 caption = "Color Range 4 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min5 caption = "Color Range 5 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max6 caption = "Color Range 6 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min6 caption = "Color Range 6 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min7 caption = "Color Range 7 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max8 caption = "Color Range 8 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fall 8 ;-------------------------------------------------------------------- heading caption = " Fall 8 Settings" visible = (@customize && @colorPreset == "Fall 8") endheading color param fall8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min1 caption = "Color Range 1 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max2 caption = "Color Range 2 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min2 caption = "Color Range 2 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max3 caption = "Color Range 3 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min3 caption = "Color Range 3 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max4 caption = "Color Range 4 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min4 caption = "Color Range 4 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min5 caption = "Color Range 5 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max6 caption = "Color Range 6 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min6 caption = "Color Range 6 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max7 caption = "Color Range 7 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min7 caption = "Color Range 7 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max8 caption = "Color Range 8 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min8 caption = "Color Range 8 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Winter 8 ;-------------------------------------------------------------------- heading caption = " Winter 8 Settings" visible = (@customize && @colorPreset == "Winter 8") endheading color param winter8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min1 caption = "Color Range 1 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max2 caption = "Color Range 2 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min2 caption = "Color Range 2 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max3 caption = "Color Range 3 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min3 caption = "Color Range 3 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max4 caption = "Color Range 4 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min4 caption = "Color Range 4 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min5 caption = "Color Range 5 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max6 caption = "Color Range 6 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min6 caption = "Color Range 6 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max7 caption = "Color Range 7 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min7 caption = "Color Range 7 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max8 caption = "Color Range 8 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min8 caption = "Color Range 8 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Mojave 8 ;-------------------------------------------------------------------- heading caption = " Mojave 8 Settings" visible = (@customize && @colorPreset == "Mojave 8") endheading color param mojave8Max1 caption = "Color Range 1 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min1 caption = "Color Range 1 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max2 caption = "Color Range 2 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min2 caption = "Color Range 2 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max3 caption = "Color Range 3 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min3 caption = "Color Range 3 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max4 caption = "Color Range 4 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min4 caption = "Color Range 4 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max5 caption = "Color Range 5 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min5 caption = "Color Range 5 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max6 caption = "Color Range 6 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min6 caption = "Color Range 6 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max7 caption = "Color Range 7 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min7 caption = "Color Range 7 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max8 caption = "Color Range 8 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min8 caption = "Color Range 8 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green 8 Settings" visible = (@customize && @colorPreset == "Gold/Green 8") endheading color param goldGreen8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max5 caption = "Color Range 5 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min5 caption = "Color Range 5 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max7 caption = "Color Range 7 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min7 caption = "Color Range 7 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Green Alt 8") endheading color param goldGreenAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max4 caption = "Color Range 4 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver 8") endheading color param goldSilver8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min5 caption = "Color Range 5 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min7 caption = "Color Range 7 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endheading color param goldSilverAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min2 caption = "Color Range 2 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min4 caption = "Color Range 4 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 8") endheading color param purpleYellow8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max2 caption = "Color Range 2 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min2 caption = "Color Range 2 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max4 caption = "Color Range 4 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min5 caption = "Color Range 5 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min7 caption = "Color Range 7 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow Alt 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow Alt 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endheading color param purpleYellowAlt8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min4 caption = "Color Range 4 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max5 caption = "Color Range 5 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min5 caption = "Color Range 5 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max7 caption = "Color Range 7 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min7 caption = "Color Range 7 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue 8") endheading color param silverBlue8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min4 caption = "Color Range 4 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max5 caption = "Color Range 5 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min5 caption = "Color Range 5 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max7 caption = "Color Range 7 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue Alt 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue Alt 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endheading color param silverBlueAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max4 caption = "Color Range 4 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min5 caption = "Color Range 5 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min7 caption = "Color Range 7 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fourth of July 3 ;-------------------------------------------------------------------- heading caption = " Fourth of July 3 Settings" visible = (@customize && @colorPreset == "Fourth of July 3") endheading color param fourthOfJuly3Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min1 caption = "Color Range 1 Low" default = rgb(128/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min3 caption = "Color Range 3 Low" default = rgb(128/255,128/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/Silver 2 ;-------------------------------------------------------------------- heading caption = " Blue/Silver 2 Settings" visible = (@customize && @colorPreset == "Blue/Silver 2") endheading color param blueSilver2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/White 2 ;-------------------------------------------------------------------- heading caption = " Blue/White 2 Settings" visible = (@customize && @colorPreset == "Blue/White 2") endheading color param blueWhite2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min2 caption = "Color Range 2 Low" default = rgb(124/255,124/255,124/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Magenta 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Magenta 2 Settings" visible = (@customize && @colorPreset == "Cyan/Magenta 2") endheading color param cyanMagenta2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Max2 caption = "Color Range 2 High" default = rgb(255/255,128/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Yellow 2 Settings" visible = (@customize && @colorPreset == "Cyan/Yellow 2") endheading color param cyanYellow2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 2 ;-------------------------------------------------------------------- heading caption = " Gold/Green 2 Settings" visible = (@customize && @colorPreset == "Gold/Green 2") endheading color param goldGreen2Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 2 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 2") endheading color param purpleYellow2Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Red/Tan 2 ;-------------------------------------------------------------------- heading caption = " Red/Tan 2 Settings" visible = (@customize && @colorPreset == "Red/Tan 2") endheading color param redTan2Max1 caption = "Color Range 1 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min1 caption = "Color Range 1 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Max2 caption = "Color Range 2 High" default = rgb(255/255,208/255,152/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min2 caption = "Color Range 2 Low" default = rgb(128/255,108/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam param highlight_type caption = "Color Highlight Type" default = 1 enum = "none" "linear" "log" "exponential" hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param extent caption = "Highlight Extent" default = 0.05 min = 0.0 max = 0.5 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param hblend caption = "Highlight power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam color param hcolor caption = "Highlight color" default = rgb(255/255,255/255,255/255) visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param scale caption = "color scale adj" default = 1.0 endparam float param cblend caption = "color blend power" default = 3.0 visible = @colorPreset != "Gradient" endparam param method caption = "color method" enum = "main index" "position" "index u" "index v" "index u+v" default = 2 endparam param adj caption = "color methd adj" default = 1.0 endparam float param luminanceUpper caption = "Lum. Upper Value" default = 0.6 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the upper value \ when generating the ranges from the gradient. This value \ is used with the brighter end of the color range." visible = (@colorPreset == "Generate") endparam float param luminanceLower caption = "Lum. Lower Value" default = 0.1 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the lower value \ when generating the ranges from the gradient. This value \ is used with the darker end of the color range." visible = (@colorPreset == "Generate") endparam int param totalColors caption = "# Colors in Gradient" default = 8 min = 1 max = 24 visible = (@colorPreset == "Gradient") endparam int param ncolor caption = "# Colors to Use" default = 8 min = 1 max = 24 visible = (@colorPreset != "Generate") endparam int param colorRanges caption = "Number of Ranges" default = 8 min = 1 max = 24 hint = "The number of color ranges (1..24)." visible = (@colorPreset == "Custom") endparam int param numRanges caption = "Number of Ranges" default = 8 min = 100 max = 10000 hint = "The number of color ranges." visible = (@colorPreset == "Generate") endparam param perturbRanges caption = "Perturb Ranges" enum = "None" "Even/Odd" "1st Half / 2nd Half" "8 Range Custom" default = 0 hint = "Modify the way the ranges are assigned to the elements. \ 'None' = Assign in Order (0 1 2 3 4 5 6 7); 'Even Odd' = \ Assign Even Ranges, then Odd Ranges (0 2 4 6 1 3 5 7); \ '1st Half / 2nd Half' = Assign from first half of range, \ then 2nd half (0 4 1 5 2 6 3 7); '8 Range Custom' = Assign \ the ordering by entering digits 1-8. Only works for ranges \ with 8 colors." visible = ((@colorPreset == "Custom" && @colorRanges >= 3) || \ (@colorPreset == "Generate" && @numRanges >= 3) || \ (@colorPreset != "Custom" && @colorPreset != "Generate" && \ @colorPreset != "Gradient")) endparam int param rangeOrder caption = "Range Order" default = 12345678 min = 11111111 max = 88888888 hint = "Specify the color range ordering. Use digits 1-8 to specify \ the order the ranges will be used. For example, to reverse \ the ordering, specify 87654321. To alternate, use 13572468. \ If color map or preset is defined that does not contain exactly \ 8 ranges, then this parameter will not have any effect." visible = (@perturbRanges == "8 Range Custom") endparam int param colorOffset caption = "Range Offset" default = 0 min = 0 hint = "This is used to rotate the color ranges. The offset can \ range from 0 to 23, where 23 is the maximum number of ranges \ that can be specified using the 'Generate' Color Preset." visible = (@colorPreset != "Gradient") endparam $ifdef VER40 heading caption = "Camera Settings" expanded = false endheading heading text = "Camera Origin" endheading $else heading caption = " Camera Origin" endheading $endif float param camerax caption = " X" default = 0.5 endparam float param cameray caption = " Y" default = -1.4 endparam float param cameraz caption = " Z" default = 10 endparam $ifdef VER40 heading text = "Camera Point At" endheading $else heading caption = " Camera Point At" endheading $endif float param cpointx caption = " X" default = 1.0 endparam float param cpointy caption = " Y" default = 0.7 endparam float param vplane caption = " Z" default = 2.0 endparam heading caption = "Illumination" endheading param ltype caption = "Light type" default = 1 enum = "Point source" "Spotlight" "Infinite light" endparam param angle caption = "Light Rotation" default = -60 hint = "Gives the rotation of the light source, in degrees." visible=@ltype == "Infinite light" endparam param elevation caption = "Light Elevation" default = 60 hint = "Gives the elevation of the light source, in degrees." visible=@ltype == "Infinite light" endparam $ifdef VER40 heading text = "Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lpointx caption = " X" default = 1 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lpointy caption = " Y" default = 3 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lplane caption = " Z" default = 5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam $ifdef VER40 heading text = "Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lightx caption = " X" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lighty caption = " Y" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lightz caption = " Z" default = 0.0 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param spotrad caption = "Spotlight radius" default = 0.25 visible=@ltype=="Spotlight" endparam param spottype caption = "Spotlight focus" default = 0 enum = "Set focus" "Sharp" visible=@ltype=="Spotlight" endparam float param setfocus default = 1.0 visible=@ltype=="Spotlight"&& @spottype == "Set focus" endparam float param sdis caption = "Sphere brightness" default = 2.0 visible=@ltype=="Point source" || @ltype=="Spotlight" endparam float param dis caption = "Floor brightness" default = 1.0 visible=@floor==true && (@ltype=="Point source" || @ltype=="Spotlight") endparam param ambient caption = "Ambient light" default = 0.05 max = 1.0 min = 0.0 endparam color param amcolor caption = "Ambient color" default = rgb(192/255,192/255,192/255) endparam float param am caption = "Shadow level" default = 0.4 min = 0.0 max = 1.0 endparam heading caption = "Reflection parameters" endheading bool param reflect caption = "Show reflections" default = false endparam float param kr caption = "Reflect param" default = 1.0 min = 0.0 max = 1.0 visible=@reflect==true endparam float param krf caption = "Floor reflect param" default = 0.2 min = 0.0 max = 1.0 visible=@reflect==true endparam float param floorreflect caption = "Floor reflect dist" default = 1.0 visible=@reflect==true endparam param blendval caption = "Blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflect==true endparam param rblend caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @reflect==true endparam float param hrblend caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @reflect==true endparam param reflectf caption="Reflection off floor" default = false visible = @reflect==true endparam param blendvalf caption = "Floor blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflectf==true endparam heading caption = "Transparency parameters" endheading bool param tparent caption = "Set transparency" default = false endparam param tparentval caption = "Transparency (0-1)" default = 0.5 min = 0.0 max = 1.0 visible=@tparent==true endparam param rfi caption = "Refractive index" default = 1.5 min = 1.0 max = 4 visible=@tparent==true endparam float param krt caption = "Refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param krft caption = "Floor refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param floorrefract caption = "Floor refract dist" default = 1.0 visible=@tparent==true endparam param rblendt caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @tparent==true endparam float param hrblendt caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @tparent==true endparam param tmerge caption = "Refract merge mode" enum = "Normal" "Screen" "Hard Light" "Lighten" "Addition" default = 0 visible=@tparent==true endparam $ifdef VER40 heading text = "More realistic transparent coloring can often be obtained \ by switching colors." visible=@tparent==true && @colorPreset != "Gradient" endheading $endif bool param switch caption = "switch colors" default = false visible=@tparent==true && @colorPreset != "Gradient" endparam heading caption = "Floor Settings" endheading bool param floor caption ="Add floor" default = false endparam float param fa caption = "X direction" default = 0.0 visible=@floor==true endparam float param fb caption = "Y direction" default = 1.0 visible=@floor==true endparam float param fc caption = "Z direction" default = 0.0 visible=@floor==true endparam float param fd caption = "Position" default = -0.9 visible=@floor==true endparam heading caption = "Floor Patterns" endheading param flrtype caption = "Floor Type" default = 0 enum = "Checkerboard" "Fractal" "Plain" visible=@floor==true endparam float param checkscale caption = "Pattern scale" default = 0.3 max = 1.0 min = 0.01 visible=@floor==true && @flrtype != "Plain" endparam complex param poffset caption = "Pattern offset" default = (0,0) visible=@floor==true && @flrtype != "Plain" endparam param fctltype caption = "Fractal Type" default = 4 enum = "Barnsley" "Cayley Julia" "Gopalsamy" "Julia" "Mandelbrot" "Newton" "Phoenix" visible=@floor==true && @flrtype == "Fractal" endparam color param flrcolor caption = "Floor color #1" default = rgba(0/255,0/255,139/255,1) visible=@floor==true && (@flrtype == "Checkerboard" || @flrtype == "Plain") endparam color param flrcolor2 caption = "Floor color #2" default = rgba(176/255,224/255,230/255,1) visible=@floor==true && @flrtype == "Checkerboard" endparam param cmethod caption = "Converge method" default = 2 enum = "Halley" "Householder" "Newton" "Schroder" visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam param color_mode caption = "Color mode" default = 0 enum = "Distance" "Iteration" visible=@floor==true && @flrtype == "Fractal" && @colormethod != "Exponential smoothing" endparam param colormethod caption = "Trap" enum = "Exponential smoothing" "Simple traps" "Orbit traps" default = 0 visible=@floor==true && @flrtype == "Fractal" endparam param traptype caption = "Trap type" enum = "Arachnida2" "Archimedes" "Atzema spiral" "Butterfly" "Cardoid" \ "Ceil_floor" "Cf_plus" "Conchoid" "Cycloid" "Ellipse Catacaustic" \ "Gear" "Lemniscate" "Log spiral" "Maltese cross" "Product" "Quotient1" \ "Quotient2" "Rose" "Rose of Troy" "Serpentine" "Sum" "Tr_plus" \ "Trefoil" "Trifolium" "Trisectrix of Maclaurin" "Trunc_round" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" endparam param traptype2 caption = "Trap type" enum = "Astroid" "Box" "Cross" "Diamond" "Egg" "Heart" "Hyperbola" "Hypercross" \ "Lines" "Mirrored waves" "Pinch" "Point" "Spiral"\ "Radial waves" "Rectangle" "Ring" "Waves" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param pa caption = "Polar parameter" default = 0.2 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Lemniscate" ||@traptype == "Cardoid" \ ||@traptype == "Conchoid"||@traptype == "Log spiral"|| \ @traptype == "Rose"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Butterfly"||@traptype == "Gear" \ ||@traptype == "Arachnida2"||@traptype == "Maltese cross" \ ||@traptype == "Trifolium"||@traptype == "Serpentine" \ ||@traptype == "Trefoil"||@traptype == "Trisectrix of Maclaurin" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pb caption = "2nd polar parameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Conchoid"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Gear"||@traptype == "Serpentine" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pc caption = "3rd Polar parameter" default = 0.05 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && @traptype == "Rose of Troy" endparam param pn caption = "Polar integer" default = 3 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Gear" || @traptype == "Arachnida2") endparam param diameter caption = "Trap diameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Ring" || @traptype2 == "Egg" || \ @traptype2 == "Hyperbola" || @traptype2 == "Lines" ||\ @traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves"|| @traptype2 == "Spiral"\ || @traptype2 == "Heart") endparam param torder caption = "Trap order" default = 4.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Pinch" ||@traptype2 == "Egg" || \ @traptype2 == "Astroid" ||@traptype2 == "Waves"|| \ @traptype2 == "Mirrored Waves" || @traptype2 == "Radial Waves") endparam param tfreq caption = "Trap frequency" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves") endparam bool param mask caption = "Use mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam $ifdef VER40 heading text = "'Reverse mask' overrides 'Mask'." visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endheading $endif bool param rmask caption = "Use reverse mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param threshold caption = "Mask threshold" default = 0.1 visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param tcenter caption = "Trap center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param tasp caption = "Trap aspect" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param trot caption = "Trap rotation" default = 0.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam color param icolor caption = "Inside color" default = rgb(0,0,0) visible=@floor==true && @flrtype == "Fractal" endparam int param miter caption = "Maximum iterations" default = 100 visible=@floor==true && @flrtype == "Fractal" endparam complex param seed caption = "Seed" default = (-0.75,0.2) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Julia" endparam complex param cseed caption = "Seed" default = (0.360968017578125,0.00074462890625) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param phseed caption = "Seed" default = (0.56667, -0.5) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Phoenix" endparam complex param gseed caption = "Seed" default = (-0.19, -0.19) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Gopalsamy" endparam complex param bseed caption = "Seed" default = (1.025, 0.9875) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Barnsley" endparam complex param p1 caption = "Newton power" default = (3.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param mp1 caption = "Power" default = (2.0,0.0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Mandelbrot" || \ @fctltype == "Julia") endparam complex param p2 caption = "Newton root" default = (1.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param fmcenter caption = "Fractal center" default = (-0.5,0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Mandelbrot" endparam complex param fccenter caption = "Fractal center" default = (-0.0005781248605,0.0022031248985) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param fcenter caption = "Fractal center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Julia" || \ @fctltype == "Newton" || @fctltype == "Phoenix" || @fctltype == "Barnsley" \ || @fctltype == "Gopalsamy") endparam float param fmag caption = "Fractal magnification" default = 1.0 visible=@floor==true && @flrtype == "Fractal" endparam float param bailout caption = "Bailout" default = 10000 visible=@floor==true && @flrtype == "Fractal" endparam float param spread caption = "Color spread" default = 0.5 visible=@floor==true && @flrtype == "Fractal" endparam float param shift caption = "Color shift" default = 0.0 visible=@floor==true && @flrtype == "Fractal" endparam bool param fbound caption ="Floor boundaries?" default = false visible=@floor==true endparam float param leftbound caption ="Left boundary" default = 0.05 visible=@floor==true && @fbound == true endparam float param rightbound caption ="Right boundary" default = 0.95 visible=@floor==true && @fbound == true endparam float param topbound caption ="Top boundary" default = 2.0 visible=@floor==true && @fbound == true endparam float param bottombound caption ="Bottom boundary" default = -2.0 visible=@floor==true && @fbound == true endparam } simpletraps_Enhanced { ; Ron Barnett, March 2002 ; added some texture options inspired by work of Dennis Magar ; further enhancements July 2004 ; Progressive parameters added November 2004 ; More functions added December 2004 and misc bug fixes ; July 2006: added dual traps based upon code by Damien Jones, and additional ; trap options. Iteration options expanded to include 'iterations to skip' and ; 'pattern repeat'. The last option determines how many times the trap/skip ; pattern is repeated ; trap and distance modulator functions added September 2006 ; Added Toby Marshall's Morph parameters and Decimal texturing, ; PopGnarl texturing and Geometrix texturing and more merge options. ; Some of the textures Toby used were originally developed by Michèle Dessureault (popgnarl and decimal). ; September 2006 init: float pd = 0 complex tz = 0 complex z1 = 0 float texture_dec = 0 float texture_gna = 0 float texture_tr = 0 float texture = 0 float d1 = 0 float d2 = 0 float f1 = 0 float f2 = 0 float ftemp = 0 float d = 0 complex cd = 0 complex z2 = 0 float distance = 0 float distances[2] complex mf_p[2] float oldd = 0 complex oldf_p = 0 complex i = (0,1) ; convenient variable for imaginary number complex skew[2] skew[0] = i^(@skewA/90) skew[1] = i^(@skewB/90) complex skewstep[2] skewstep[0] = i^(@skewAstep/90) skewstep[1] = i^(@skewBstep/90) int types[2] if @version == "0" types[0] = @type else types[0] = @typeA types[1] = @typeB endif int distvar[2] if @version == "0" distvar[0] = @distvar else distvar[0] = @distvarA distvar[1] = @distvarB endif float pa[2] if @version == "0" pa[0] = @a else pa[0] = @aA pa[1] = @aB endif float pb[2] if @version == "0" pb[0] = @b else pb[0] = @bA pb[1] = @bB endif float pc[2] if @version == "0" pc[0] = @cp else pc[0] = @cpA pc[1] = @cpB endif complex rot[2] rot[0] = i^(@angA/90) rot[1] = i^(@angB/90) float oldang = @ang int pn[2] if @version == "0" pn[0] = @pn else pn[0] = @pnA pn[1] = @pnB endif int t2[2] if @version == "0" t2[0] = @t2 else t2[0] = @t2A t2[1] = @t2B endif bool absval[2] if @version == "0" absval[0] = @absval else absval[0] = @absvalA absval[1] = @absvalB endif bool negroot[2] if @version == "0" negroot[0] = @negroot else negroot[0] = @negrootA negroot[1] = @negrootB endif float psa1[2] if @version == "0" psa1[0] = @sa1 else psa1[0] = @sa1A psa1[1] = @sa1B endif float psa2[2] if @version == "0" psa2[0] = @sa2 else psa2[0] = @sa2A psa2[1] = @sa2B endif float psa3[2] if @version == "0" psa3[0] = @sa3 else psa3[0] = @sa3A psa3[1] = @sa3B endif float psa4[2] if @version == "0" psa4[0] = @sa4 else psa4[0] = @sa4A psa4[1] = @sa4B endif float psa5[2] if @version == "0" psa5[0] = @sa5 else psa5[0] = @sa5A psa5[1] = @sa5B endif float psa6[2] if @version == "0" psa6[0] = @sa6 else psa6[0] = @sa6A psa6[1] = @sa6B endif float psa7[2] if @version == "0" psa7[0] = @sa7 else psa7[0] = @sa7A psa7[1] = @sa7B endif complex rotstep[2] rotstep[0] = i^(@rotA/90) rotstep[1] = i^(@rotB/90) float oldangstep = @rot complex ppower[2] if @version == "0" ppower[0] = @apwr else ppower[0] = @apwrA ppower[1] = @apwrB endif complex incppower[2] if @version == "0" incppower[0] = @papwr else incppower[0] = @papwrA incppower[1] = @papwrB endif float ar[2] if @version == "0" ar[0] = @ar else ar[0] = @arA ar[1] = @arB endif complex start[2] if @version == "0" start[0] = @start else start[0] = @startA start[1] = @startB endif complex incstart[2] incstart[0] = @incstartA incstart[1] = @incstartB complex offset[2] if @version == "0" offset[0] = @offset else offset[0] = @offsetA offset[1] = @offsetB endif complex incoff[2] incoff[0] = @incoffA incoff[1] = @incoffB bool movecenter[2] if @version == "0" movecenter[0] = @movecenter else movecenter[0] = @movecenterA movecenter[1] = @movecenterB endif complex movecenteramt[2] movecenteramt[0] = @movecenteramtA movecenteramt[1] = @movecenteramtB float polar1[2] if @version == "0" polar1[0] = @polar1 else polar1[0] = @polar1A polar1[1] = @polar1B endif float polar2[2] if @version == "0" polar2[0] = @polar2 else polar2[0] = @polar2A polar2[1] = @polar2B endif float polar3[2] if @version == "0" polar3[0] = @polar3 else polar3[0] = @polar3A polar3[1] = @polar3B endif float isa1[2] if @version == "0" isa1[0] = @isa1 else isa1[0] = @isa1A isa1[1] = @isa1B endif float isa2[2] if @version == "0" isa2[0] = @isa2 else isa2[0] = @isa2A isa2[1] = @isa2B endif float isa3[2] if @version == "0" isa3[0] = @isa3 else isa3[0] = @isa3A isa3[1] = @isa3B endif float isa4[2] if @version == "0" isa4[0] = @isa4 else isa4[0] = @isa4A isa4[1] = @isa4B endif float isa5[2] if @version == "0" isa5[0] = @isa5 else isa5[0] = @isa5A isa5[1] = @isa5B endif float isa6[2] if @version == "0" isa6[0] = @isa6 else isa6[0] = @isa6A isa6[1] = @isa6B endif float isa7[2] if @version == "0" isa7[0] = @isa7 else isa7[0] = @isa7A isa7[1] = @isa7B endif float par[2] if @version == "0" par[0] = @par else par[0] = @parA par[1] = @parB endif float min_dist = 1e+318 if @trap_mode == 5 || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 \ || @trap_mode == 9 min_dist = 0 endif bool trapped = false float x = 0 float y = 0 float rr = 0 float theta = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 complex w = 0 complex ww = 0 float t = 0 float sum = 0.0 float freq = 1.0 float exptrap_p = 0 float exptrap_z = 1 complex f_p = 0 float distsum = 0 float distave = 0 complex trap_z = 0 complex trap_p = 0 int trap_iter = 0 int max_iter = 0 int iter = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif if @version == "0" trap = @trap msk = @mask rmask = @rmask IF (@mask == true) && (@rmask == true) msk = false ENDIF endif complex af1 = 0.0 complex af2 = 0.0 complex astroid = 0.0 float fx = 0 float fy = 0 float trapangle = 0 complex qa = 0 complex qb = 0 complex qc = 0 complex qy = 0 complex qx = 0 complex cx = 0 complex cy = 0 int skip = 0 int patnum = 0 if @version == "0" skip = @skip if @no_of_iters == 0 max_iter = #maxiter else max_iter = skip + @no_of_iters endif else if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif endif if @no_of_iters == 0 max_iter = #maxiter endif int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF complex p = xx + flip(yy) ; Toby's Morph code complex z2m = (0,0) complex z3 = (0,0) complex z4 = (0,0) complex z1tp = (0,0) complex z1tq = (0,0) complex qw = (0,0) complex er = (0,0) complex ty = (0,0) complex nuvar = (0,0) loop: ; Toby's Morph code complex z1t = #z if @showm if @tha2 == false qw = @nufunc(z1t-@tw)^@exp3 er = @nufunc2((z1t-@tw2)^@exp1) ty = @nufunc3((z1t-@tw3)^@exp2) if @change == "1" z1t = @nufunc(z1t-@tw)^@exp1 elseif @change == "2" z1t = qw+er elseif @change == "3" z1t = qw-er elseif @change == "4" z1t = qw*er elseif @change == "5" z1t = qw/er elseif @change == "6" z1t = qw^er elseif @change == "7" if @op == "+" z1t = qw+(er+ty) elseif @op == "-" z1t = qw+(er-ty) elseif @op == "*" z1t = qw+(er*ty) elseif @op == "/" z1t = qw+(er/ty) elseif @op == "^" z1t = qw+(er^ty) endif elseif @change == "8" if @op == "+" z1t = qw-(er+ty) elseif @op == "-" z1t = qw-(er-ty) elseif @op == "*" z1t = qw-(er*ty) elseif @op == "/" z1t = qw-(er/ty) elseif @op == "^" z1t = qw-(er^ty) endif elseif @change == "9" if @op == "+" z1t = qw*(er+ty) elseif @op == "-" z1t = qw*(er-ty) elseif @op == "*" z1t = qw*(er*ty) elseif @op == "/" z1t = qw*(er/ty) elseif @op == "^" z1t = qw*(er^ty) endif elseif @change == "10" if @op == "+" z1t = qw/(er+ty) elseif @op == "-" z1t = qw/(er-ty) elseif @op == "*" z1t = qw/(er*ty) elseif @op == "/" z1t = qw/(er/ty) elseif @op == "^" z1t = qw/(er^ty) endif elseif @change == "11" if @op == "+" z1t = qw^(er+ty) elseif @op == "-" z1t = qw^(er-ty) elseif @op == "*" z1t = qw^(er*ty) elseif @op == "/" z1t = qw^(er/ty) elseif @op == "^" z1t = qw^(er^ty) endif endif else if @zchange1 == "|z|" z2m = |z1t| elseif @zchange1 == "atan2(z)" z2m = atan2(z1t) elseif @zchange1 == "real(z)" z2m = real(z1t) elseif @zchange1 == "imag(z)" z2m = imag(z1t) endif if @zchange2 == "|z|" z3 = |z1t| elseif @zchange2 == "atan2(z)" z3 = atan2(z1t) elseif @zchange2 == "real(z)" z3 = real(z1t) elseif @zchange2 == "imag(z)" z3 = imag(z1t) endif if @zchange3 == "|z|" z4 = |z1t| elseif @zchange3 == "atan2(z)" z4 = atan2(z1t) elseif @zchange3 == "real(z)" z4 = real(z1t) elseif @zchange3 == "imag(z)" z4 = imag(z1t) endif aa = @nufunc((z1t-@tw)+@nufunc4(z2m-@tw4)^@exp4) bb = @nufunc((z1t-@tw)-@nufunc4(z2m-@tw4)^@exp4) cc = @nufunc4((z2m-@tw4)^@exp4-@nufunc(z1t-@tw)) ff = real((z3-@tw5)^@exp5) dd = @nufunc5(ff) jj = (z4-@tw6) kk = (z1t-@tw2) oo = (z1t-@tw3) gg = @nufunc2(kk) hh = @nufunc6(jj)^@exp6 ppp = @nufunc3(oo) if @mmode == "z+|z|" nuvar = aa elseif @mmode == "z-|z|" nuvar = bb elseif @mmode == "|z|-z" nuvar = cc endif if @change == "1" z1t = nuvar^@exp1 elseif @change == "2" if @mmode2 == "z+|z|" z1t = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif elseif @change == "3" if @mmode2 == "z+|z|" z1t = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif elseif @change == "4" if @mmode2 == "z+|z|" z1t = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif elseif @change == "5" if @mmode2 == "z+|z|" z1t = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif elseif @change == "6" if @mmode2 == "z+|z|" z1t = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif elseif @change == "7" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "8" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "9" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "10" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "11" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif endif endif endif int j = 0 exptrap_z = exptrap_z + exp(-cabs(#z)) while j <= @trapnum if movecenter[j] && iter == 0 offset[j] = offset[j] + #pixel*movecenteramt[j] endif ; increment parameters pa[j] = pa[j] + polar1[j] pb[j] = pb[j] + polar2[j] pc[j] = pc[j] + polar3[j] psa1[j] = psa1[j] + isa1[j] psa2[j] = psa2[j] + isa2[j] psa3[j] = psa3[j] + isa3[j] psa4[j] = psa4[j] + isa4[j] psa5[j] = psa5[j] + isa5[j] psa6[j] = psa6[j] + isa6[j] psa7[j] = psa7[j] + isa7[j] ar[j] = ar[j] + par[j] rot[j] = rot[j]*rotstep[j] skew[j] = skew[j]*skewstep[j] if @version == "0" offset[j] = offset[j] + @offx + flip(@offy) start[j] = start[j] + @incstartx + flip(@incstarty) oldang = oldang + oldangstep*180/(2*#pi) else offset[j] = offset[j] + incoff[j] start[j] = start[j] + incstart[j] endif ppower[j] = ppower[j] + incppower[j] ; complex z1 = (#z+offset[j])*(1-@weight) + p*@weight z1 = (z1t+offset[j])*(1-@weight) + p*@weight if @version == "0" trapangle = trapangle + oldang*180/(2*#pi) fx = real(z1)*cos(trapangle) - imag(z1)*sin(trapangle) fy = imag(z1)*cos(trapangle) + real(z1)*sin(trapangle) z1 = fx + flip(fy) else z1 = z1*rot[j] endif z1 = real(z1*skew[j]) + flip(imag(z1)) x = real(z1)+real(offset[j]) y = imag(z1)*@mod+imag(offset[j]) ; z2 = real(#z) + flip(imag(#z)*@mod) z2 = real(z1t) + flip(imag(z1t)*@mod) IF types[j] == 0 f_p = z1 -(imag(z2)+flip(real(z2)))+start[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 5*abs(real(z1)+imag(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif ELSEIF types[j] == 1 f_p = z1 - real(z2)*imag(z2)+start[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 100*abs(real(z1)*imag(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif ELSEIF types[j] == 2 f_p = z1 - real(z2)/imag(z2)+start[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 3*abs(real(z1)/imag(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif ELSEIF types[j] == 3 f_p = z1 - imag(z2)/real(z2)+start[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = abs(imag(z1)/real(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif ELSEIF types[j] == 4 f_p = z1 - (ceil(real(z2))+ flip(floor(imag(z2))))+start[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = abs(real(z1)-ceil(real(z1)))+abs(imag(z1)-floor(imag(z1))) IF @trapvar == 1 d = 25*abs(d*d - d) ELSEIF @trapvar == 2 d = 25*abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 10*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 10*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif ELSEIF types[j] == 5 f_p = z1 - (round(real(z2))+ flip(trunc(imag(z2))))+start[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 3*(abs(real(z1)-round(real(z1)))+abs(imag(z1)-trunc(imag(z1)))) IF @trapvar == 1 d = 2*abs(d*d - d) ELSEIF @trapvar == 2 d = 2*abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 5*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 3*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif ELSEIF types[j] == 6 f_p = z1 - (ceil(real(z2))+ flip(floor(imag(z2))))+start[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = real(z1)-ceil(real(z1))+imag(z1)-floor(imag(z1)) IF @trapvar == 1 d = 5*abs(d*d - d) ELSEIF @trapvar == 2 d = 5*abs(d*d*d - d) ELSEIF @trapvar == 3 d = 5*abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 5*abs(d - |f_p|) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = abs(d) + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif IF d < 0 d = 1e+318 ENDIF ELSEIF types[j] == 7 f_p = z1 - (round(real(z2))+ flip(trunc(imag(z2))))+start[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = real(z1)-round(real(z1))+imag(z1)-trunc(imag(z1)) IF @trapvar == 1 d = 5*abs(d*d - d) ELSEIF @trapvar == 2 d = 5*abs(d*d*d - d) ELSEIF @trapvar == 3 d = 5*abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 5*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 5*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = abs(d) + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif IF d < 0 d = 1e+318 ENDIF ELSEIF types[j] == 8 IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF f1 = 0 f2 = 1 d1 =real(z1)-f2 WHILE d1 > 0 ftemp = f2 f2 = f1 + f2 f1 = ftemp d1 = real(z1)-f2 ENDWHILE d = real(z1)-f1 ; which fibonacci number is closest IF d < abs(d1) d1 = d ENDIF f1 = 0 f2 = 1 d2 = imag(z1)-f2 WHILE d2 > 0 ftemp = f2 f2 = f1 + f2 f1 = ftemp d2 = imag(z1)-f2 ENDWHILE d = real(z1)-f1 ; which fibonacci number is closest IF d < abs(d2) d2 = d ENDIF d = 5*(abs(d1) + abs(d2)) f_p = z1 - (d1 + flip(d2))+start[j] IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif ELSEIF types[j] == 9 if j == 0 IF distvar[j] == 74 ; Sum f_p = z1 -(@fn4A(pa[j]*real(z2))+flip(@fn5A(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 28 ; Difference f_p = z1 -(@fn4A(pa[j]*real(z2))-flip(@fn5A(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 62 ; Product f_p = z1 -(@fn4A(pa[j]*real(z2))*flip(@fn5A(pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 65 ; Quotient 1 f_p = z1 -(@fn4A(pa[j]*real(z2))/flip(@fn5A(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 66 ; Quotient 2 f_p = z1 -(flip(@fn5A(0.2*pb[j]*imag(z2)))/@fn4A(pa[j]*real(z2)))+start[j] ELSEIF distvar[j] == 36 ; Exp 1 f_p = z1 -(@fn4A(pa[j]*real(z2))^flip(@fn5A(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 37 ; Exp 2 f_p = z1 -(flip(@fn5A(0.2*pb[j]*imag(z2)))^@fn4A(pa[j]*real(z2)))+start[j] endif else IF distvar[j] == 74 ; Sum f_p = z1 -(@fn4B(pa[j]*real(z2))+flip(@fn5B(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 28 ; Difference f_p = z1 -(@fn4B(pa[j]*real(z2))-flip(@fn5B(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 62 ; Product f_p = z1 -(@fn4B(pa[j]*real(z2))*flip(@fn5B(pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 65 ; Quotient 1 f_p = z1 -(@fn4B(pa[j]*real(z2))/flip(@fn5B(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 66 ; Quotient 2 f_p = z1 -(flip(@fn5B(0.2*pb[j]*imag(z2)))/@fn4B(pa[j]*real(z2)))+start[j] ELSEIF distvar[j] == 36 ; Exp 1 f_p = z1 -(@fn4B(pa[j]*real(z2))^flip(@fn5B(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 37 ; Exp 2 f_p = z1 -(flip(@fn5B(0.2*pb[j]*imag(z2)))^@fn4B(pa[j]*real(z2)))+start[j] endif endif if @version == "0" IF distvar[j] == 74 ; Sum f_p = z1 -(@fn4(pa[j]*real(z2))+flip(@fn5(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 28 ; Difference f_p = z1 -(@fn4(pa[j]*real(z2))-flip(@fn5(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 62 ; Product f_p = z1 -(@fn4(pa[j]*real(z2))*flip(@fn5(pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 65 ; Quotient 1 f_p = z1 -(@fn4(pa[j]*real(z2))/flip(@fn5(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 66 ; Quotient 2 f_p = z1 -(flip(@fn5(0.2*pb[j]*imag(z2)))/@fn4(pa[j]*real(z2)))+start[j] ELSEIF distvar[j] == 36 ; Exp 1 f_p = z1 -(@fn4(pa[j]*real(z2))^flip(@fn5(0.2*pb[j]*imag(z2))))+start[j] ELSEIF distvar[j] == 37 ; Exp 2 f_p = z1 -(flip(@fn5(0.2*pb[j]*imag(z2)))^@fn4(pa[j]*real(z2)))+start[j] endif endif IF distvar[j] == 47 ; Lemniscate IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]*(cos(2*theta))^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 12 ; Cardiod IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]*(1-cos(theta)) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 19 ; Conchoid IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.1*(pa[j] + pb[j]*cos(theta))/cos(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 23 ; Cycloid IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = cabs(z1 + offset[j]) if j == 0 f_p = z1 -(@fn4A(rr*(theta-sin(theta)))+flip(@fn5A(rr*(1-cos(theta)))))+start[j] else f_p = z1 -(@fn4B(rr*(theta-sin(theta)))+flip(@fn5B(rr*(1-cos(theta)))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*(theta-sin(theta)))+flip(@fn5(rr*(1-cos(theta)))))+start[j] endif ELSEIF distvar[j] == 3 ; Archimedes IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]*theta if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 52 ; Log spiral IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = exp(pa[j]*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 67 ; Rose IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]*cos(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 9 ; Bifolium IF t2[j] == 1 theta = atan(imag(z2)/(real(z2))) ELSE theta = atan2(imag(z2)/(real(z2))) ENDIF rr = 4*pa[j]*sin(theta)*sin(theta)*cos(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 4 ; Astroid IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF if j == 0 af1 = @afn1A(theta)^real(ppower[j]) af2 = @afn2A(theta)^imag(ppower[j]) else af1 = @afn1B(theta)^real(ppower[j]) af2 = @afn2B(theta)^imag(ppower[j]) endif if @version == "0" af1 = @afn1(theta)^real(ppower[j]) af2 = @afn2(theta)^imag(ppower[j]) endif astroid = ar[j]*(af1 + flip(af2)) f_p = z1 - astroid + start[j] ELSEIF distvar[j] == 17 ; Cissoid of Diocles IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.2*pa[j]*sin(theta)*tan(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 18 ; Cochleoid IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 1.25*pa[j]*sin(theta)/theta if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 38 ; Folium of Descartes IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.3*pa[j]*tan(theta)/(cos(theta)*(1+tan(theta)^3)) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 48 ; Limacon of Pascal IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.05*pb[j] + pa[j]*cos(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 51 ; Lituus IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.25*pa[j]/theta^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 55 ; Nephroid IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF if j == 0 af1 = 3*@afn1A(theta) - @afn1A(theta/3) af2 = 3*@afn2A(theta) - @afn2A(theta/3) else af1 = 3*@afn1B(theta) - @afn1B(theta/3) af2 = 3*@afn2B(theta) - @afn2B(theta/3) endif af1 = 3*@afn1(theta) - @afn1(theta/3) af2 = 3*@afn2(theta) - @afn2(theta/3) if @version == "0" endif astroid = 0.5*pa[j]*(af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 73 ; Strophoid IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.1*pb[j]*sin(pa[j]-2*theta)/sin(pa[j]-theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 84 ; Witch of Agnesi IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = 2*cotan(theta) af2 = 1-cos(2*theta) astroid = 0.1*pa[j]*(af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 22 ; Curtate Cycloid IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF if j == 0 af1 = pa[j]*theta - 0.1*pb[j]*@afn2A(theta) af2 = pa[j] - 0.1*pb[j]*@afn1A(theta) else af1 = pa[j]*theta - 0.1*pb[j]*@afn2B(theta) af2 = pa[j] - 0.1*pb[j]*@afn1B(theta) endif if @version == "0" af1 = pa[j]*theta - 0.1*pb[j]*@afn2(theta) af2 = pa[j] - 0.1*pb[j]*@afn1(theta) endif astroid = af1 + flip(af2) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 34 ; Epicycloid IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF if j == 0 af1 = (5*pa[j]+pb[j])*@afn1A(theta) - pb[j]*@afn1A((5*pa[j]+pb[j])*theta/pb[j]) af2 = (5*pa[j]+pb[j])*@afn2A(theta) - pb[j]*@afn2A((5*pa[j]+pb[j])*theta/pb[j]) else af1 = (5*pa[j]+pb[j])*@afn1B(theta) - pb[j]*@afn1B((5*pa[j]+pb[j])*theta/pb[j]) af2 = (5*pa[j]+pb[j])*@afn2B(theta) - pb[j]*@afn2B((5*pa[j]+pb[j])*theta/pb[j]) endif if @version == "0" af1 = (5*pa[j]+pb[j])*@afn1(theta) - pb[j]*@afn1((5*pa[j]+pb[j])*theta/pb[j]) af2 = (5*pa[j]+pb[j])*@afn2(theta) - pb[j]*@afn2((5*pa[j]+pb[j])*theta/pb[j]) endif astroid = 0.1*(af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 33 ; Ellipse Evolute IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF if j == 0 af1 = (pa[j]^2-(0.7*pb[j])^2)/pa[j]*@afn1A(theta)^(real(ppower[j])) af2 = ((0.7*pb[j])^2-pa[j]^2)/(0.7*pb[j])*@afn2A(theta)^(imag(ppower[j])) else af1 = (pa[j]^2-(0.7*pb[j])^2)/pa[j]*@afn1B(theta)^(real(ppower[j])) af2 = ((0.7*pb[j])^2-pa[j]^2)/(0.7*pb[j])*@afn2B(theta)^(imag(ppower[j])) endif if @version == "0" af1 = (pa[j]^2-(0.7*pb[j])^2)/pa[j]*@afn1(theta)^(real(ppower[j])) af2 = ((0.7*pb[j])^2-pa[j]^2)/(0.7*pb[j])*@afn2(theta)^(imag(ppower[j])) endif astroid = 0.1*(af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 77 ; Tractrix IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF if j == 0 af1 = pa[j]*(log(tan(theta/2))-@afn1A(theta)) af2 = pa[j]*@afn2A(theta) else af1 = pa[j]*(log(tan(theta/2))-@afn1B(theta)) af2 = pa[j]*@afn2B(theta) endif if @version == "0" af1 = pa[j]*(log(tan(theta/2))-@afn1(theta)) af2 = pa[j]*@afn2(theta) endif astroid = 0.25*(af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 43 ; Kampyle of Eudoxus IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.02*pa[j]/cos(theta)^2 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 16 ; Circle Catacaustic IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = 2*pb[j]*(1-3*2*pb[j]*cos(theta)+2*2*pb[j]*cos(theta)^3)/(-(1+2*(2*pb[j])^2)+3*2*pb[j]*cos(theta)) af2 = 2*(2*pb[j])^2*sin(theta)^3/(1+2*(2*pb[j])^2-3*2*pb[j]*cos(theta)) astroid = pa[j]*(af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 25 ; Deltoid Catacaustic IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF if j == 0 af1 = 3*@afn1A(theta) + @afn1A(3*theta+#pi/2*pb[j]) - @afn1A(#pi/2*pb[j]) af2 = 3*@afn2A(theta) + @afn2A(3*theta+#pi/2*pb[j]) - @afn2A(#pi/2*pb[j]) else af1 = 3*@afn1B(theta) + @afn1B(3*theta+#pi/2*pb[j]) - @afn1B(#pi/2*pb[j]) af2 = 3*@afn2B(theta) + @afn2B(3*theta+#pi/2*pb[j]) - @afn2B(#pi/2*pb[j]) endif if @version == "0" af1 = 3*@afn1(theta) + @afn1(3*theta+#pi/2*pb[j]) - @afn1(#pi/2*pb[j]) af2 = 3*@afn2(theta) + @afn2(3*theta+#pi/2*pb[j]) - @afn2(#pi/2*pb[j]) endif astroid = 0.25*pa[j]*(af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 32 ; Ellipse Catacaustic IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = 4*pa[j]*(pa[j]-pb[j])*(pa[j]*pb[j])*sin(theta)^3/(pa[j]^2+pb[j]^2+(pb[j]^2-pa[j]^2)*cos(2*theta)) af2 = 4*pb[j]*(pb[j]^2-pa[j]^2)*cos(theta)^3/(pa[j]^2+pb[j]^2+3*(pb[j]^2-pa[j]^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 53 ; Log Spiral Catacaustic IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = 0.2*pb[j]*exp(0.1*pb[j]*theta)*(0.1*pb[j]*cos(theta)-sin(theta))/(1+(0.1*pb[j])^2) af2 = 0.2*pb[j]*exp(0.1*pb[j]*theta)*(0.1*pb[j]*cos(theta)+sin(theta))/(1+(0.1*pb[j])^2) astroid = pa[j]*(af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 11 ; Butterfly IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.25*pa[j]*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 39 ; Gear Curve IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = (0.25*pa[j]+1/(5*pb[j])*tanh(5*pb[j]*sin(pn[j]*theta)))*cos(theta) af2 = (0.25*pa[j]+1/(5*pb[j])*tanh(5*pb[j]*sin(pn[j]*theta)))*sin(theta) astroid = (af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 1 ; Arachnida 1 IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.25*pa[j]*sin(pn[j]*theta)/sin((pn[j]-1)*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 2 ; Arachnida 2 IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.25*pa[j]*sin(pn[j]*theta)/sin((pn[j]+1)*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 14 ; Cayley's Sextic IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 1.5*pa[j]*cos(theta)^3 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 24 ; Cycloid of Seva IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.5*pa[j]*(1+2*cos(2*theta)) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 26 ; Devil's Curve IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = (((0.5*pa[j]*sin(theta))^2-(0.2*pb[j]*cos(theta))^2)/(sin(theta)^2-cos(theta)^2))^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 31 ; Eight Curve IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]*cos(theta)^(-2)*cos(2*theta)^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 35 ; Epispiral IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.25*pa[j]/cos(pn[j]*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 41 ; Hipopede IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = (0.5*pb[j]*(0.5*pa[j]-(0.5*pb[j])^2*cos(theta)))^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 54 ; Maltese Cross IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.2*pa[j]/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 56 ; Ophiuride IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = (0.01*pb[j]*sin(theta)-pa[j]*cos(theta))*tan(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 63 ; Quadratrix of Hippias IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]*theta/sin(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 59 ; Poinsot Spiral 1 IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]/cosh(pn[j]*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 60 ; Poinsot Spiral 2 IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]/sinh(pn[j]*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 64 ; Quadrifolium IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]*sin(2*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 69 ; Scarabaeus IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.25*pb[j]*cos(2*theta)-0.5*pa[j]*cos(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 70 ; Semicubical Parabola IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.005*pa[j]*tan(theta)^2/cos(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 75 ; Swastika Curve IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.25*pa[j]*(sin(theta)*cos(theta)/(sin(theta)^4-cos(theta)^4))^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 81 ; Trifolium IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = -pa[j]*cos(3*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 83 ; Tschirnhausen Cubic IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]/cos(theta/3)^3 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 7 ; Bicorn IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = pa[j]*sin(theta) af2 = pa[j]*cos(theta)^2*(2+cos(theta))/(3+sin(theta)^2) astroid = (af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 21 ; Cruciform IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = 0.1*pa[j]/cos(theta) af2 = 0.02*pb[j]/sin(theta) astroid = (af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 46 ; Knot Curve cy = imag(z2) qa = 1 qb = -2 qc = 1 - 3*cy^2 - 2*cy^3 if negroot[j] == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa[j]*(qx + flip(cy))+start[j] ELSEIF distvar[j] == 0 ; Ampersand qa = 4 qb = 6*real(z2)^2 - 3*real(z2) - 3 qc = 6*real(z2)^4 - 13*real(z2)^3 + 19*real(z2)^2 if negroot[j] == true qy = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qy = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa[j]*(real(z2) + flip(qy))+start[j] ELSEIF distvar[j] == 6 ; Bean IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF if j == 0 af1 = pa[j]*(@afn1A(theta)^real(ppower[j]) + @afn2A(theta)^imag(ppower[j])) f_p = z1 -(@fn4A(af1*cos(theta))+flip(@fn5A(af1*sin(theta))))+start[j] else af1 = pa[j]*(@afn1B(theta)^real(ppower[j]) + @afn2B(theta)^imag(ppower[j])) f_p = z1 -(@fn4B(af1*cos(theta))+flip(@fn5B(af1*sin(theta))))+start[j] endif if @version == "0" af1 = pa[j]*(@afn1(theta)^real(ppower[j]) + @afn2(theta)^imag(ppower[j])) f_p = z1 -(@fn4(af1*cos(theta))+flip(@fn5(af1*sin(theta))))+start[j] endif ELSEIF distvar[j] == 8 ; Bicuspid cy = imag(z2) qa = 1 qb = -2*(0.05*pb[j])^2 qc = (0.05*pb[j])^4 - (cy^2 - (0.05*pb[j])^2)^2 if negroot[j] == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - 2.25*pa[j]*(qx + flip(cy))+start[j] ELSEIF distvar[j] == 10 ; Bow IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = 0.1*pa[j]*(1-tan(theta)^2)*cos(theta) af2 = 0.1*pb[j]*(1-tan(theta)^2)*sin(theta) astroid = (af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 13 ; Cassini Ovals IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF if negroot[j] == true rr = 0.5*pa[j]*(cos(2*theta)-((pb[j]*0.1/(pa[j]*0.5))^4-sin(2*theta)^2)^0.5)^0.5 else rr = 0.5*pa[j]*(cos(2*theta)+((pb[j]*0.1/(pa[j]*0.5))^4-sin(2*theta)^2)^0.5)^0.5 endif if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 15 ; Circle IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]*sin(theta)^2 + 0.2*pb[j]*cos(theta)^2 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 79 ; Trident cx = real(z2) cy = cx^2 + 0.1*pb[j]/cx f_p = z1 - 0.1*pa[j]*(cx + flip(cy))+start[j] ELSEIF distvar[j] == 72 cy = imag(z2) ; Stirrup Curve qa = 1 qb = -2 qc = 1-cy^2*(cy-1)*(cy-2)*(cy+5) if negroot[j] == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa[j]*(qx + flip(cy))+start[j] ELSEIF distvar[j] == 27 ; Diamond if j == 0 f_p = z1 - pa[j]*@safnA(abs((real(z2)*psa1[j]))+abs((flip(imag(z2))^psa2[j]))-1)+start[j] if @version == "0" f_p = z1 - pa[j]*@safn(abs((real(z2)*psa1[j]))+abs((flip(imag(z2))^psa2[j]))-1)+start[j] endif else f_p = z1 - pa[j]*@safnB(abs((real(z2)*psa1[j]))+abs((flip(imag(z2))^psa2[j]))-1)+start[j] endif ELSEIF distvar[j] == 30 ; Dumbbell Curve cx = real(z2) cy = (cx^4 - cx^6)^0.5 f_p = z1 - 4*pa[j]*(cx + flip(cy))+start[j] ELSEIF distvar[j] == 76 ; Teardrop Curve IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = pa[j]*cos(theta) af2 = 0.5*pb[j]*sin(theta)*sin(theta/2)^(pn[j]-1) astroid = (af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 40 ; Happy Accident if j == 0 f_p = z1 - 15*pa[j]*@safnA((((real(z2)*psa4[j])^(1+psa2[j]))+ \ (flip(imag(z2))^2*psa3[j]))*atan2((flip(imag(z2))^psa7[j])* \ (real(z2)^psa5[j]))-psa1[j]* \ (flip(imag(z2))^psa6[j]))+start[j] else f_p = z1 - 15*pa[j]*@safnB((((real(z2)*psa4[j])^(1+psa2[j]))+ \ (flip(imag(z2))^2*psa3[j]))*atan2((flip(imag(z2))^psa7[j])* \ (real(z2)^psa5[j]))-psa1[j]* \ (flip(imag(z2))^psa6[j]))+start[j] endif if @version == "0" f_p = z1 - 15*pa[j]*@safn((((real(z2)*psa4[j])^(1+psa2[j]))+ \ (flip(imag(z2))^2*psa3[j]))*atan2((flip(imag(z2))^psa7[j])* \ (real(z2)^psa5[j]))-psa1[j]* \ (flip(imag(z2))^psa6[j]))+start[j] endif ELSEIF distvar[j] == 42 ; Hyperbola IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.35*pa[j]*(1/cos(2*theta))^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 44 ; Kappa Curve IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.1*pa[j]*tan(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 58 ; Piriform IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = 0.1*pa[j]*(1+sin(theta)) af2 = 0.1*pb[j]*cos(theta)*(1+sin(theta)) astroid = (af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 45 ; Keratoid Cusp cx = real(z2) qa = 1 qb = -cx^2 qc = -cx^5 if negroot[j] == true qy = (-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa) else qy = (-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa) endif f_p = z1 - 2.5*pa[j]*(cx + flip(qy))+start[j] ELSEIF distvar[j] == 71 ; Serpentine Curve IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = 0.2*pa[j]*cotan(theta) af2 = 0.2*pb[j]*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 49 ; Line cx = real(z2) cy = cx f_p = z1 - 3*pa[j]*(cx + flip(cy)) ELSEIF distvar[j] == 50 ;Links Curve cx = real(z2) qa = 1 qb = 2*cx^2-6*cx qc = cx^4-2*cx^3+cx^2 if negroot[j] == true qy = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qy = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa[j]*(cx + flip(qy))+start[j] ELSEIF distvar[j] == 57 ; Parabola cy = imag(z2) cx = 10*pb[j]*cy^2 f_p = z1 - 0.65*pa[j]*(cx + flip(cy))+start[j] ELSEIF distvar[j] == 78 ; Trefoil IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.1*pa[j]/cos(3*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 80 ; Trident of Descartes cx = real(z2) cy = (cx-0.2*pb[j])*(cx+0.2*pb[j])*(cx-0.4*pb[j])/cx f_p = z1 - pa[j]*(cx + flip(cy))+start[j] ELSEIF distvar[j] == 82 ; Trisectrix of Maclaurin IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = 0.5*pa[j]*sin(3*theta)/sin(2*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 5 ; Atzema Spiral IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF af1 = 0.5*pa[j]*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*pb[j]*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) f_p = z1 - astroid+start[j] ELSEIF distvar[j] == 68 ; Rose of Troy IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pc[j]*(1+10*pa[j]*sin(4*pb[j]*theta)) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 20 ; Cotes' Spiral IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]/cosh(pb[j]*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 29 ; Dipole Curve IF t2[j] == 1 theta = atan(imag(z2)/real(z2)) ELSE theta = atan2(imag(z2)/real(z2)) ENDIF rr = pa[j]*(cos(theta))^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif ELSEIF distvar[j] == 61 ; Polytrope cx = real(z2) cy = 1/cx^pn[j] f_p = z1 - 0.00005*pa[j]*(cx + flip(cy))+start[j] ENDIF IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF distvar[j] == 74 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(pa[j]*real(z1)) + flip(@fn5A(0.2*pb[j]*imag(z1))))) else cd = cabs(z2) - cabs((@fn4B(pa[j]*real(z1)) + flip(@fn5B(0.2*pb[j]*imag(z1))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(pa[j]*real(z1)) + flip(@fn5(0.2*pb[j]*imag(z1))))) endif ELSE if j == 0 cd = z2 - (@fn4A(real(pa[j]*z1)) - flip(@fn5A(0.2*pb[j]*imag(z1)))) else cd = z2 - (@fn4B(real(pa[j]*z1)) - flip(@fn5B(0.2*pb[j]*imag(z1)))) endif if @version == "0" cd = z2 - (@fn4(real(pa[j]*z1)) - flip(@fn5(0.2*pb[j]*imag(z1)))) endif ENDIF ELSEIF distvar[j] == 28 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(pa[j]*real(z1)) - flip(@fn5A(0.2*pb[j]*imag(z1))))) else cd = cabs(z2) - cabs((@fn4B(pa[j]*real(z1)) - flip(@fn5B(0.2*pb[j]*imag(z1))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(pa[j]*real(z1)) - flip(@fn5(0.2*pb[j]*imag(z1))))) endif ELSE if j == 0 cd = z2 - (@fn4A(real(pa[j]*z1)) + flip(@fn5A(0.2*pb[j]*imag(z1)))) else cd = z2 - (@fn4B(real(pa[j]*z1)) + flip(@fn5B(0.2*pb[j]*imag(z1)))) endif if @version == "0" cd = z2 - (@fn4(real(pa[j]*z1)) + flip(@fn5(0.2*pb[j]*imag(z1)))) endif ENDIF ELSEIF distvar[j] == 62 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(pa[j]*real(z1))*flip(@fn5A(pb[j]*imag(z1))))) else cd = cabs(z2) - cabs((@fn4B(pa[j]*real(z1))*flip(@fn5B(pb[j]*imag(z1))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(pa[j]*real(z1))*flip(@fn5(pb[j]*imag(z1))))) endif ELSE if j == 0 cd = z2 - @fn4A((pa[j]*real(z1))*flip(@fn5A(pb[j]*imag(z1)))) else cd = z2 - @fn4B((pa[j]*real(z1))*flip(@fn5B(pb[j]*imag(z1)))) endif if @version == "0" cd = z2 - @fn4((pa[j]*real(z1))*flip(@fn5(pb[j]*imag(z1)))) endif ENDIF ELSEIF distvar[j] == 65 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(pa[j]*real(z1))/flip(@fn5A(0.2*pb[j]*imag(z1))))) else cd = cabs(z2) - cabs((@fn4B(pa[j]*real(z1))/flip(@fn5B(0.2*pb[j]*imag(z1))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(pa[j]*real(z1))/flip(@fn5(0.2*pb[j]*imag(z1))))) endif ELSE if j == 0 cd = z2 - (@fn4A(pa[j]*real(z1))/flip(@fn5A(0.2*pb[j]*imag(z1)))) else cd = z2 - (@fn4B(pa[j]*real(z1))/flip(@fn5B(0.2*pb[j]*imag(z1)))) endif if @version == "0" cd = z2 - (@fn4(pa[j]*real(z1))/flip(@fn5(0.2*pb[j]*imag(z1)))) endif ENDIF ELSEIF distvar[j] == 66 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((flip(@fn5A(0.2*pb[j]*imag(z1)))/@fn4A(pa[j]*real(z1)))) else cd = cabs(z2) - cabs((flip(@fn5B(0.2*pb[j]*imag(z1)))/@fn4B(pa[j]*real(z1)))) endif if @version == "0" cd = cabs(z2) - cabs((flip(@fn5(0.2*pb[j]*imag(z1)))/@fn4(pa[j]*real(z1)))) endif ELSE if j == 0 cd = z2 - flip((@fn5A(0.2*pb[j]*imag(z1)))/@fn4A(pa[j]*real(z1))) else cd = z2 - flip((@fn5B(0.2*pb[j]*imag(z1)))/@fn4B(pa[j]*real(z1))) endif if @version == "0" cd = z2 - flip((@fn5(0.2*pb[j]*imag(z1)))/@fn4(pa[j]*real(z1))) endif ENDIF ELSEIF distvar[j] == 36 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(pa[j]*real(z1))^flip(@fn5A(0.2*pb[j]*imag(z1))))) else cd = cabs(z2) - cabs((@fn4B(pa[j]*real(z1))^flip(@fn5B(0.2*pb[j]*imag(z1))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(pa[j]*real(z1))^flip(@fn5(0.2*pb[j]*imag(z1))))) endif ELSE if j == 0 cd = z2 - (@fn4A(pa[j]*real(z1))^flip(@fn5A(0.2*pb[j]*imag(z1)))) else cd = z2 - (@fn4B(pa[j]*real(z1))^flip(@fn5B(0.2*pb[j]*imag(z1)))) endif if @version == "0" cd = z2 - (@fn4(pa[j]*real(z1))^flip(@fn5(0.2*pb[j]*imag(z1)))) endif ENDIF ELSEIF distvar[j] == 37 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((flip(@fn5A(0.2*pb[j]*imag(z1)))^@fn4A(pa[j]*real(z1)))) else cd = cabs(z2) - cabs((flip(@fn5B(0.2*pb[j]*imag(z1)))^@fn4B(pa[j]*real(z1)))) endif if @version == "0" cd = cabs(z2) - cabs((flip(@fn5(0.2*pb[j]*imag(z1)))^@fn4(pa[j]*real(z1)))) endif ELSE if j == 0 cd = z2 - (flip(@fn5A(0.2*pb[j]*imag(z1)))^@fn4A(pa[j]*real(z1))) else cd = z2 - (flip(@fn5B(0.2*pb[j]*imag(z1)))^@fn4B(pa[j]*real(z1))) endif if @version == "0" cd = z2 - (flip(@fn5(0.2*pb[j]*imag(z1)))^@fn4(pa[j]*real(z1))) endif ENDIF endif IF distvar[j] == 47 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*(cos(2*theta))^0.5 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta)) + flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta)) + flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 12 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*(1-cos(theta)) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta)) + flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta)) + flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 19 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.1*(pa[j] + pb[j]*cos(theta))/cos(theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta)) + flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta)) + flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 23 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = cabs(z1 + offset[j]) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*(theta-sin(theta))) + flip(@fn5A(rr*(1-cos(theta)))))) else cd = cabs(z2) - cabs((@fn4B(rr*(theta-sin(theta))) + flip(@fn5B(rr*(1-cos(theta)))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*(theta-sin(theta))) + flip(@fn5(rr*(1-cos(theta)))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*(theta-sin(theta))) - flip(@fn5A(rr*(1-cos(theta))))) else cd = z2 - (@fn4B(rr*(theta-sin(theta))) - flip(@fn5B(rr*(1-cos(theta))))) endif if @version == "0" cd = z2 - (@fn4(rr*(theta-sin(theta))) - flip(@fn5(rr*(1-cos(theta))))) endif ENDIF ELSEIF distvar[j] == 3 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*theta IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta)) + flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta)) + flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 52 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = exp(pa[j]*theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta)) + flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta)) + flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 67 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*cos(theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 9 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 4*pa[j]*sin(theta)*sin(theta)*cos(theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 4 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if j == 0 af1 = @afn1A(theta)^real(ppower[j]) af2 = @afn2A(theta)^imag(ppower[j]) else af1 = @afn1B(theta)^real(ppower[j]) af2 = @afn2B(theta)^imag(ppower[j]) endif if @version == "0" af1 = @afn1(theta)^real(ppower[j]) af2 = @afn2(theta)^imag(ppower[j]) endif astroid = ar[j]*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 17 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.2*pa[j]*sin(theta)*tan(theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 18 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 1.25*pa[j]*sin(theta)/theta IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 38 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.3*pa[j]*tan(theta)/(cos(theta)*(1+tan(theta)^3)) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 48 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.05*pb[j] + pa[j]*cos(theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 51 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa[j]/theta^0.5 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 55 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if j == 0 af1 = 3*@afn1A(theta) - @afn1A(theta/3) af2 = 3*@afn2A(theta) - @afn2A(theta/3) else af1 = 3*@afn1B(theta) - @afn1B(theta/3) af2 = 3*@afn2B(theta) - @afn2B(theta/3) endif if @version == "0" af1 = 3*@afn1(theta) - @afn1(theta/3) af2 = 3*@afn2(theta) - @afn2(theta/3) endif astroid = 0.5*pa[j]*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 73 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.1*pb[j]*sin(pa[j]-2*theta)/sin(pa[j]-theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 84 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 2*cotan(theta) af2 = 1-cos(2*theta) astroid = 0.1*pa[j]*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 22 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if j == 0 af1 = pa[j]*theta - 0.1*pb[j]*@afn2A(theta) af2 = pa[j] - 0.1*pb[j]*@afn1A(theta) else af1 = pa[j]*theta - 0.1*pb[j]*@afn2B(theta) af2 = pa[j] - 0.1*pb[j]*@afn1B(theta) endif if @version == "0" af1 = pa[j]*theta - 0.1*pb[j]*@afn2(theta) af2 = pa[j] - 0.1*pb[j]*@afn1(theta) endif astroid = af1 + flip(af2) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 34 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if j == 0 af1 = (5*pa[j]+pb[j])*@afn1A(theta) - pb[j]*@afn1A((5*pa[j]+pb[j])*theta/pb[j]) af2 = (5*pa[j]+pb[j])*@afn2A(theta) - pb[j]*@afn2A((5*pa[j]+pb[j])*theta/pb[j]) else af1 = (5*pa[j]+pb[j])*@afn1B(theta) - pb[j]*@afn1B((5*pa[j]+pb[j])*theta/pb[j]) af2 = (5*pa[j]+pb[j])*@afn2B(theta) - pb[j]*@afn2B((5*pa[j]+pb[j])*theta/pb[j]) endif if @version == "0" af1 = (5*pa[j]+pb[j])*@afn1(theta) - pb[j]*@afn1((5*pa[j]+pb[j])*theta/pb[j]) af2 = (5*pa[j]+pb[j])*@afn2(theta) - pb[j]*@afn2((5*pa[j]+pb[j])*theta/pb[j]) endif astroid = 0.1*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 33 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if j == 0 af1 = (pa[j]^2-(0.7*pb[j])^2)/pa[j]*@afn1A(theta)^(real(ppower[j])) af2 = ((0.7*pb[j])^2-pa[j]^2)/(0.7*pb[j])*@afn2A(theta)^(imag(ppower[j])) else af1 = (pa[j]^2-(0.7*pb[j])^2)/pa[j]*@afn1B(theta)^(real(ppower[j])) af2 = ((0.7*pb[j])^2-pa[j]^2)/(0.7*pb[j])*@afn2B(theta)^(imag(ppower[j])) endif if @version == "0" af1 = (pa[j]^2-(0.7*pb[j])^2)/pa[j]*@afn1(theta)^(real(ppower[j])) af2 = ((0.7*pb[j])^2-pa[j]^2)/(0.7*pb[j])*@afn2(theta)^(imag(ppower[j])) endif astroid = 0.1*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 77 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if j == 0 af1 = pa[j]*(log(tan(theta/2))-@afn1A(theta)) af2 = pa[j]*@afn2A(theta) else af1 = pa[j]*(log(tan(theta/2))-@afn1B(theta)) af2 = pa[j]*@afn2B(theta) endif if @version == "0" af1 = pa[j]*(log(tan(theta/2))-@afn1(theta)) af2 = pa[j]*@afn2(theta) endif astroid = 0.25*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 43 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.02*pa[j]/cos(theta)^2 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 16 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 2*pb[j]*(1-3*2*pb[j]*cos(theta)+2*2*pb[j]*cos(theta)^3)/(-(1+2*(2*pb[j])^2)+3*2*pb[j]*cos(theta)) af2 = 2*(2*pb[j])^2*sin(theta)^3/(1+2*(2*pb[j])^2-3*2*pb[j]*cos(theta)) astroid = pa[j]*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 25 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if j == 0 af1 = 3*@afn1A(theta) + @afn1A(3*theta+#pi/2*pb[j]) - @afn1A(#pi/2*pb[j]) af2 = 3*@afn2A(theta) + @afn2A(3*theta+#pi/2*pb[j]) - @afn2A(#pi/2*pb[j]) else af1 = 3*@afn1B(theta) + @afn1B(3*theta+#pi/2*pb[j]) - @afn1B(#pi/2*pb[j]) af2 = 3*@afn2B(theta) + @afn2B(3*theta+#pi/2*pb[j]) - @afn2B(#pi/2*pb[j]) endif if @version == "0" af1 = 3*@afn1(theta) + @afn1(3*theta+#pi/2*pb[j]) - @afn1(#pi/2*pb[j]) af2 = 3*@afn2(theta) + @afn2(3*theta+#pi/2*pb[j]) - @afn2(#pi/2*pb[j]) endif astroid = 0.25*pa[j]*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 32 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 4*pa[j]*(pa[j]-pb[j])*(pa[j]*pb[j])*sin(theta)^3/(pa[j]^2+pb[j]^2+(pb[j]^2-pa[j]^2)*cos(2*theta)) af2 = 4*pb[j]*(pb[j]^2-pa[j]^2)*cos(theta)^3/(pa[j]^2+pb[j]^2+3*(pb[j]^2-pa[j]^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 53 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.2*pb[j]*exp(0.1*pb[j]*theta)*(0.1*pb[j]*cos(theta)-sin(theta))/(1+(0.1*pb[j])^2) af2 = 0.2*pb[j]*exp(0.1*pb[j]*theta)*(0.1*pb[j]*cos(theta)+sin(theta))/(1+(0.1*pb[j])^2) astroid = pa[j]*(af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 11 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa[j]*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 39 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = (0.25*pa[j]+1/(5*pb[j])*tanh(5*pb[j]*sin(pn[j]*theta)))*cos(theta) af2 = (0.25*pa[j]+1/(5*pb[j])*tanh(5*pb[j]*sin(pn[j]*theta)))*sin(theta) astroid = (af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 1 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa[j]*sin(pn[j]*theta)/sin((pn[j]-1)*theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 2 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa[j]*sin(pn[j]*theta)/sin((pn[j]+1)*theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 14 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 1.5*pa[j]*cos(theta)^3 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 24 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.5*pa[j]*(1+2*cos(2*theta)) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 26 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = (((0.5*pa[j]*sin(theta))^2-(0.2*pb[j]*cos(theta))^2)/(sin(theta)^2-cos(theta)^2))^0.5 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 31 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*cos(theta)^(-2)*cos(2*theta)^0.5 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 35 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa[j]/cos(pn[j]*theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 41 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = (0.5*pb[j]*(0.5*pa[j]-(0.5*pb[j])^2*cos(theta)))^0.5 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 54 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.2*pa[j]/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 56 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = (0.01*pb[j]*sin(theta)-pa[j]*cos(theta))*tan(theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 63 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*theta/sin(theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 59 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]/cosh(pn[j]*theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 60 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]/sinh(pn[j]*theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 64 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*sin(2*theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 69 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pb[j]*cos(2*theta)-0.5*pa[j]*cos(theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 70 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*(cos(2*pb[j]*theta))^(1/(2*pb[j])) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 75 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa[j]*(sin(theta)*cos(theta)/(sin(theta)^4-cos(theta)^4))^0.5 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 81 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = -pa[j]*cos(3*theta) IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 83 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]/cos(theta/3)^3 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 7 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = pa[j]*sin(theta) af2 = pa[j]*cos(theta)^2*(2+cos(theta))/(3+sin(theta)^2) astroid = (af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 21 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.1*pa[j]/cos(theta) af2 = 0.02*pb[j]/sin(theta) astroid = (af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 46 cy = y qa = 1 qb = -2 qc = 1 - 3*cy^2 - 2*cy^3 if negroot[j] == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif IF absval[j] == true cd = cabs(z2) - cabs(pa[j]*(qx + flip(cy))) ELSE cd = z2 - pa[j]*(qx + flip(cy)) ENDIF ELSEIF distvar[j] == 0 qa = 4 qb = 6*x^2 - 3*x - 3 qc = 6*x^4 - 13*x^3 + 19*x^2 if negroot[j] == true qy = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qy = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif IF absval[j] == true cd = cabs(z2) - cabs(pa[j]*(x + flip(qy))) ELSE cd = z2 - pa[j]*(x + flip(qy)) ENDIF ELSEIF distvar[j] == 6 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if j == 0 af1 = pa[j]*(@afn1A(theta)^real(ppower[j]) + @afn2A(theta)^imag(ppower[j])) else af1 = pa[j]*(@afn1B(theta)^real(ppower[j]) + @afn2B(theta)^imag(ppower[j])) endif if @version == "0" af1 = pa[j]*(@afn1(theta)^real(ppower[j]) + @afn2(theta)^imag(ppower[j])) endif IF absval[j] == true if j == 0 cd = cabs(z2) - cabs(@fn4A(af1*cos(theta)) + flip(@fn5A(af1*sin(theta)))) else cd = cabs(z2) - cabs(@fn4B(af1*cos(theta)) + flip(@fn5B(af1*sin(theta)))) endif if @version == "0" cd = cabs(z2) - cabs(@fn4(af1*cos(theta)) + flip(@fn5(af1*sin(theta)))) endif ELSE if j == 0 cd = z2 - @fn4A(af1*cos(theta)) - flip(@fn5A(af1*sin(theta))) else cd = z2 - @fn4B(af1*cos(theta)) - flip(@fn5B(af1*sin(theta))) endif if @version == "0" cd = z2 - @fn4(af1*cos(theta)) - flip(@fn5(af1*sin(theta))) endif ENDIF ELSEIF distvar[j] == 8 cy = y qa = 1 qb = -2*(0.05*pb[j])^2 qc = (0.05*pb[j])^4 - (cy^2 - (0.05*pb[j])^2)^2 if negroot[j] == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif IF absval[j] == true cd = cabs(z2) - cabs(2.25*pa[j]*(qx + flip(cy))) ELSE cd = z2 - 2.25*pa[j]*(qx + flip(cy)) ENDIF ELSEIF distvar[j] == 10 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.1*pa[j]*(1-tan(theta)^2)*cos(theta) af2 = 0.1*pb[j]*(1-tan(theta)^2)*sin(theta) astroid = (af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 13 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if negroot[j] == true rr = 0.5*pa[j]*(cos(2*theta)-((pb[j]*0.1/(pa[j]*0.5))^4-sin(2*theta)^2)^0.5)^0.5 else rr = 0.5*pa[j]*(cos(2*theta)+((pb[j]*0.1/(pa[j]*0.5))^4-sin(2*theta)^2)^0.5)^0.5 endif IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 15 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*sin(theta)^2 + 0.2*pb[j]*cos(theta)^2 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 79 cx = x cy = cx^2 + 0.1*pb[j]/cx IF absval[j] == true cd = cabs(z2) - cabs(0.1*pa[j]*(cx + flip(cy))) ELSE cd = z2 - 0.1*pa[j]*(cx + flip(cy)) ENDIF ELSEIF distvar[j] == 72 cy = y qa = 1 qb = -2 qc = 1-cy^2*(cy-1)*(cy-2)*(cy+5) if negroot[j] == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa[j]*(qx + flip(cy))+start[j] IF absval[j] == true cd = cabs(z2) - cabs(pa[j]*(qx + flip(cy))) ELSE cd = z2 - pa[j]*(qx + flip(cy)) ENDIF ELSEIF distvar[j] == 27 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs(pa[j]*@safnA(abs((real(z1)*psa1[j]))+abs((flip(imag(z1))^psa2[j]))-1)) if @version == "0" cd = cabs(z2) - cabs(pa[j]*@safn(abs((real(z1)*psa1[j]))+abs((flip(imag(z1))^psa2[j]))-1)) endif else cd = cabs(z2) - cabs(pa[j]*@safnB(abs((real(z1)*psa1[j]))+abs((flip(imag(z1))^psa2[j]))-1)) endif ELSE if j == 0 cd = z2 - pa[j]*@safnA(abs((real(z1)*psa1[j]))+abs((flip(imag(z1))^psa2[j]))-1) if @version == "0" cd = z2 - pa[j]*@safn(abs((real(z1)*psa1[j]))+abs((flip(imag(z1))^psa2[j]))-1) endif else cd = z2 - pa[j]*@safnB(abs((real(z1)*psa1[j]))+abs((flip(imag(z1))^psa2[j]))-1) endif ENDIF ELSEIF distvar[j] == 30 cx = x cy = (cx^4 - cx^6)^0.5 IF absval[j] == true cd = cabs(z2) - cabs(4*pa[j]*(cx + flip(cy))) ELSE cd = z2 - 4*pa[j]*(cx + flip(cy)) ENDIF ELSEIF distvar[j] == 76 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = pa[j]*cos(theta) af2 = 0.5*pb[j]*sin(theta)*sin(theta/2)^(pn[j]-1) astroid = (af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 40 IF absval[j] == true if j == 0 cd = cabs(z2) - cabs(15*pa[j]*@safnA((((real(z1)*psa4[j])^(1+psa2[j]))+ \ (flip(imag(z1))^2*psa3[j]))*atan2((flip(imag(z1))^psa7[j])* \ (real(z1)^psa5[j]))-psa1[j]* \ (flip(imag(z1))^psa6[j]))) else cd = cabs(z2) - cabs(15*pa[j]*@safnB((((real(z1)*psa4[j])^(1+psa2[j]))+ \ (flip(imag(z1))^2*psa3[j]))*atan2((flip(imag(z1))^psa7[j])* \ (real(z1)^psa5[j]))-psa1[j]* \ (flip(imag(z1))^psa6[j]))) endif if @version == "0" cd = cabs(z2) - cabs(15*pa[j]*@safn((((real(z1)*psa4[j])^(1+psa2[j]))+ \ (flip(imag(z1))^2*psa3[j]))*atan2((flip(imag(z1))^psa7[j])* \ (real(z1)^psa5[j]))-psa1[j]* \ (flip(imag(z1))^psa6[j]))) endif ELSE if j == 0 cd = z2 - 15*pa[j]*@safnA((((real(z1)*psa4[j])^(1+psa2[j]))+ \ (flip(imag(z1))^2*psa3[j]))*atan2((flip(imag(z1))^psa7[j])* \ (real(z1)^psa5[j]))-psa1[j]* \ (flip(imag(z1))^psa6[j])) else cd = z2 - 15*pa[j]*@safnB((((real(z1)*psa4[j])^(1+psa2[j]))+ \ (flip(imag(z1))^2*psa3[j]))*atan2((flip(imag(z1))^psa7[j])* \ (real(z1)^psa5[j]))-psa1[j]* \ (flip(imag(z1))^psa6[j])) endif if @version == "0" cd = z2 - 15*pa[j]*@safn((((real(z1)*psa4[j])^(1+psa2[j]))+ \ (flip(imag(z1))^2*psa3[j]))*atan2((flip(imag(z1))^psa7[j])* \ (real(z1)^psa5[j]))-psa1[j]* \ (flip(imag(z1))^psa6[j])) endif ENDIF ELSEIF distvar[j] == 42 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.35*pa[j]*(1/cos(2*theta))^0.5 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 44 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.1*pa[j]*tan(theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 58 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.1*pa[j]*(1+sin(theta)) af2 = 0.1*pb[j]*cos(theta)*(1+sin(theta)) astroid = (af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 45 cx = x qa = 1 qb = -cx^2 qc = -cx^5 if negroot[j] == true qy = (-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa) else qy = (-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa) endif IF absval[j] == true cd = cabs(z2) - cabs(2.5*pa[j]*(cx + flip(qy))) ELSE cd = z2 - 2.5*pa[j]*(cx + flip(qy)) ENDIF ELSEIF distvar[j] == 71 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.2*pa[j]*cotan(theta) af2 = 0.2*pb[j]*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 49 cx = x cy = cx IF absval[j] == true cd = cabs(z2) - cabs(3*pa[j]*(cx + flip(cy))) ELSE cd = z2 - 3*pa[j]*(cx + flip(cy)) ENDIF ELSEIF distvar[j] == 50 cx = x qa = 1 qb = 2*cx^2-6*cx qc = cx^4-2*cx^3+cx^2 if negroot[j] == true qy = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qy = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif IF absval[j] == true cd = cabs(z2) - cabs(pa[j]*(cx + flip(qy))) ELSE cd = z2 - pa[j]*(cx + flip(qy)) ENDIF ELSEIF distvar[j] == 57 cy = y cx = 10*pb[j]*cy^2 IF absval[j] == true cd = cabs(z2) - cabs(0.65*pa[j]*(cx + flip(cy))) ELSE cd = z2 - 0.65*pa[j]*(cx + flip(cy)) ENDIF ELSEIF distvar[j] == 78 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.1*pa[j]/cos(3*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 80 cx = x cy = (cx-0.2*pb[j])*(cx+0.2*pb[j])*(cx-0.4*pb[j])/cx IF absval[j] == true cd = cabs(z2) - cabs(pa[j]*(cx + flip(cy))) ELSE cd = z2 - pa[j]*(cx + flip(cy)) ENDIF ELSEIF distvar[j] == 82 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.5*pa[j]*sin(3*theta)/sin(2*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 5 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.5*pa[j]*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*pb[j]*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) IF absval[j] == true cd = cabs(z2) - cabs(astroid) ELSE cd = z2 - astroid ENDIF ELSEIF distvar[j] == 68 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pc[j]*(1+10*pa[j]*sin(4*pb[j]*theta)) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 20 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]/cosh(pb[j]*theta) if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 29 IF t2[j] == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa[j]*(cos(theta))^2 if j == 0 f_p = z1 -(@fn4A(rr*cos(theta))+flip(@fn5A(rr*sin(theta))))+start[j] else f_p = z1 -(@fn4B(rr*cos(theta))+flip(@fn5B(rr*sin(theta))))+start[j] endif if @version == "0" f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+start[j] endif IF absval[j] == true if j == 0 cd = cabs(z2) - cabs((@fn4A(rr*cos(theta))+ flip(@fn5A(rr*sin(theta))))) else cd = cabs(z2) - cabs((@fn4B(rr*cos(theta))+ flip(@fn5B(rr*sin(theta))))) endif if @version == "0" cd = cabs(z2) - cabs((@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta))))) endif ELSE if j == 0 cd = z2 - (@fn4A(rr*cos(theta)) - flip(@fn5A(rr*sin(theta)))) else cd = z2 - (@fn4B(rr*cos(theta)) - flip(@fn5B(rr*sin(theta)))) endif if @version == "0" cd = z2 - (@fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta)))) endif ENDIF ELSEIF distvar[j] == 61 cx = x cy = 1/cx^pn[j] IF absval[j] == true cd = cabs(z2) - cabs(0.00005*pa[j]*(cx + flip(cy))) ELSE cd = z2 - 0.00005*pa[j]*(cx + flip(cy)) ENDIF ENDIF cd = @dmod*cd d = cabs(cd) IF @trapvar == 1 d = cabs(cd*cd - cd) ELSEIF @trapvar == 2 d = cabs(cd*cd*cd - cd) ELSEIF @trapvar == 3 d = cabs(cd*cd*cd -cd*cd +cd) ELSEIF @trapvar == 4 d = cabs(cd - |f_p|) ELSEIF @trapvar == 5 d = cabs(cd - fn3(f_p)) ELSEIF @trapvar == 6 if @version == "0" d = 25*cabs(z1-f_p)/cabs(d-f_p) else d = cabs(25*(z1-f_p)*(d/10-f_p)) endif ELSEIF @trapvar == 7 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) else d = cabs(fn3(f_p)*(d/10-z1+f_p)) endif ELSEIF @trapvar == 8 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x+y)) else d = cabs(fn3(f_p)*(d/10-(x+y))) endif ELSEIF @trapvar == 9 if @version == "0" d = cabs(fn3(f_p))/abs(d/100-(x*y)) else d = cabs(fn3(f_p)*(d/10-(x*y))) endif ENDIF distsum = d + distsum if @version == "0" distave = distsum/iter else distave = distsum/exptrap_z endif ENDIF distances[j] = d mf_p[j] = f_p oldd = d oldf_p = f_p if (@trapnum == 1) if (@trapAweight == "A") ; elseif (@trapAweight == "-A") distances[0] = -distances[0] mf_p[0] = -mf_p[0] elseif (@trapAweight == "|A|") distances[0] = abs(distances[0]) mf_p[0] = abs(mf_p[0]) elseif (@trapAweight == "A*A") distances[0] = sqr(distances[0]) mf_p[0] = sqr(mf_p[0]) elseif (@trapAweight == "-A*A") distances[0] = -sqr(distances[0]) mf_p[0] = -sqr(mf_p[0]) elseif (@trapAweight == "A*A*A") distances[0] = sqr(distances[0])*distances[0] mf_p[0] = sqr(mf_p[0])*mf_p[0] elseif (@trapAweight == "-A*A*A") distances[0] = -sqr(distances[0])*distances[0] mf_p[0] = -sqr(mf_p[0])*mf_p[0] elseif (@trapAweight == "|A*A*A|") distances[0] = abs(sqr(distances[0])*distances[0]) mf_p[0] = abs(sqr(mf_p[0])*mf_p[0]) elseif (@trapAweight == "log(A)") distances[0] = log(distances[0]) mf_p[0] = log(mf_p[0]) elseif (@trapAweight == "exp(A)") distances[0] = exp(distances[0]) mf_p[0] = exp(mf_p[0]) elseif (@trapAweight == "sqrt(A)") distances[0] = sqrt(distances[0]) mf_p[0] = sqrt(mf_p[0]) elseif (@trapAweight == "A^(1/3)") distances[0] = (distances[0])^(1/3) mf_p[0] = (mf_p[0])^(1/3) endif if (@trapBweight == "B") ; elseif (@trapBweight == "-B") distances[1] = -distances[1] mf_p[1] = -mf_p[1] elseif (@trapBweight == "|B|") distances[1] = abs(distances[1]) mf_p[1] = abs(mf_p[1]) elseif (@trapBweight == "B*B") distances[1] = sqr(distances[1]) mf_p[1] = sqr(mf_p[1]) elseif (@trapBweight == "-B*B") distances[1] = -sqr(distances[1]) mf_p[1] = -sqr(mf_p[1]) elseif (@trapBweight == "B*B*B") distances[1] = sqr(distances[1])*distances[1] mf_p[1] = sqr(mf_p[1])*mf_p[1] elseif (@trapBweight == "-B*B*B") distances[1] = -sqr(distances[1])*distances[1] mf_p[1] = -sqr(mf_p[1])*mf_p[1] elseif (@trapBweight == "|B*B*B|") distances[1] = abs(sqr(distances[1])*distances[1]) mf_p[1] = abs(sqr(mf_p[1])*mf_p[1]) elseif (@trapBweight == "log(B)") distances[1] = log(distances[1]) mf_p[1] = log(mf_p[1]) elseif (@trapBweight == "exp(B)") distances[1] = exp(distances[1]) mf_p[1] = exp(mf_p[1]) elseif (@trapBweight == "sqrt(B)") distances[1] = sqrt(distances[1]) mf_p[1] = sqrt(mf_p[1]) elseif (@trapBweight == "B^(1/3)") distances[1] = (distances[1])^(1/3) mf_p[1] = (mf_p[1])^(1/3) endif endif if (@trapnum == 0) d = distances[0] f_p = mf_p[0] elseif (@trapnum == 1) if (@trapmerge == "min(A,B)") if (distances[0] < distances[1]) d = distances[0] else d = distances[1] endif if (cabs(mf_p[0]) < cabs(mf_p[1])) f_p = mf_p[0] else f_p = mf_p[1] endif elseif (@trapmerge == "max(A,B)") if (distances[0] > distances[1]) d = distances[0] else d = distances[1] endif if (cabs(mf_p[0]) > cabs(mf_p[1])) f_p = mf_p[0] else f_p = mf_p[1] endif elseif (@trapmerge == "A+B") d = distances[0] + distances[1] f_p = mf_p[0] + mf_p[1] elseif (@trapmerge == "A*B") d = distances[0] * distances[1] f_p = mf_p[0] * mf_p[1] elseif (@trapmerge == "A/B") d = distances[0] / distances[1] f_p = mf_p[0] / mf_p[1] elseif (@trapmerge == "B/A") d = distances[1] / distances[0] f_p = mf_p[1] / mf_p[0] elseif (@trapmerge == "1/(A*B)") d = 1 / (distances[0] * distances[1]) f_p = 1 / (mf_p[0] * mf_p[1]) elseif (@trapmerge == "A^B") d = distances[0] ^ distances[1] f_p = mf_p[0] ^ mf_p[1] elseif (@trapmerge == "B^A") d = distances[1] ^ distances[0] f_p = mf_p[1] ^ mf_p[0] elseif (@trapmerge == "A") d = distances[0] f_p = mf_p[0] elseif (@trapmerge == "B") d = distances[1] f_p = mf_p[1] elseif (@trapmerge == "|A-B|") d = abs(distances[0] - distances[1]) f_p = abs(mf_p[0]-mf_p[1]) elseif (@trapmerge == "Func(A) op Func(B)") if @mop == "+" d = real(@mfuncA(distances[0])) + real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) + @mfuncB(mf_p[1]) elseif @mop == "-" d = real(@mfuncA(distances[0])) - real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) - @mfuncB(mf_p[1]) elseif @mop == "*" d = real(@mfuncA(distances[0])) * real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) * @mfuncB(mf_p[1]) elseif @mop == "/" d = real(@mfuncA(distances[0])) / real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) / @mfuncB(mf_p[1]) elseif @mop == "^" d = real(@mfuncA(distances[0])) ^ real(@mfuncB(distances[1])) f_p = @mfuncA(mf_p[0]) ^ @mfuncB(mf_p[1]) endif elseif (@trapmerge == "A AND B") if (distances[0] < @width && distances[1] < @width) d = distances[0] else d = @width endif elseif (@trapmerge == "B AND A") if (distances[1] < @width && distances[0] < @width) d = distances[1] else d = @width endif elseif (@trapmerge == "A OR B") if (distances[0] < @width) d = distances[0] elseif (distances[1] < @width) d = distances[1] else d = @width endif elseif (@trapmerge == "B OR A") if (distances[1] < @width) d = distances[1] elseif (distances[0] < @width) d = distances[0] else d = @width endif elseif (@trapmerge == "A NOT B") if (distances[0] < @width && distances[1] >= @width) d = distances[0] else d = @width endif elseif (@trapmerge == "B NOT A") if (distances[1] < @width && distances[0] >= @width) d = distances[1] else d = @width endif endif if (@trapmergeabs) d = abs(d) endif endif j = j + 1 endwhile if !@distmerge d = oldd endif if !@f_pmerge f_p = oldf_p endif IF @trap_mode == 0 IF (iter >= skip && iter < max_iter) \ && d < min_dist min_dist = d + @edge distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 1 IF (iter >= skip && iter < max_iter) \ && !trapped && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 2 IF (iter >= skip && iter < max_iter) \ && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 3 d = cabs(f_p) IF (iter >= skip && iter < max_iter) \ && d < min_dist min_dist = d + @edge distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p ENDIF ENDIF IF @trap_mode == 4 IF (iter >= skip && iter < max_iter) \ && d < @width trapped = true min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p ENDIF endif IF @trap_mode == 5 IF (iter >= skip && iter < max_iter) \ && d > min_dist && d < @width trapped = true min_dist = d distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 \ || @trap_mode ==9 IF (iter >= skip && iter < max_iter) \ && d < @width trapped = true distance = distance + d trap_iter = iter trap_z = trap_z + #z trap_p = trap_p + f_p ENDIF ELSEIF @trap_mode == 10 || @trap_mode == 11 || @trap_mode == 12 \ || @trap_mode ==13 IF (iter >= skip && iter < max_iter) \ && !trapped && d < @width trapped = true distance = distance + d trap_iter = iter trap_z = trap_z + #z trap_p = trap_p + f_p ENDIF ENDIF iter = iter + 1 if @version == "1.1" if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif endif final: float zrzr = 0 float zizi = 0 float rzrz = 0 float iziz = 0 float r0r0 = 0 float i0i0 = 0 float r1r1 = 0 float i1i1 = 0 float azaz = 0 float bzbz = 0 float czcz = 0 float dzdz = 0 int iii = 0 float avav = 1 float xbxb = 1 float frfr = 0 float fifi = 0 float zaza = 0 float zzzz = 0 complex ptr = 0 if @addfbm == true w = fn2(fn1((trap_z+@tfbm*(xx+flip(yy)))*10^@pwr))*@ts else w = fn2(fn1((trap_z)*10^@pwr))*@ts endif ww = fn2(fn1((w - @fn6(w)))) + @toffset t = cabs(ww)*@tc t = (t - round(t))*@tweight ;decimal texture if @dectxt > 0 && @advd if @ztyp2 == "#z" tz = ((#z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Morph z" tz = ((f_p-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap z" tz = ((trap_p-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap #z" tz = ((trap_z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap dist" tz = ((distance-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Raw dist" tz = ((d-@txia2)*@txib2)^@txic2 endif if @dec_init == 0 pd = real(@fntx5(@fntx4(tz))^@exad4) elseif @dec_init == 1 pd = real(@fntx4(real(tz))^@exad4+@fntx5(imag(tz))^@exad5) elseif @dec_init == 2 pd = real(@fntx4(real(tz))^@exad4-@fntx5(imag(tz))^@exad5) elseif @dec_init == 3 pd = real(@fntx4(real(tz))^@exad4*@fntx5(imag(tz))^@exad5) elseif @dec_init == 4 pd = real(@fntx4(imag(tz))^@exad4-@fntx5(real(tz))^@exad5) elseif @dec_init == 5 pd = real(@fntx5(@fntx4(x))^@exad4) elseif @dec_init == 6 pd = real(@fntx5(@fntx4(y))^@exad4) elseif @dec_init == 7 pd = real(@fntx4(x)^@exad4+@fntx5(y)^@exad5) elseif @dec_init == 8 pd = real(@fntx4(x)^@exad4-@fntx5(y)^@exad5) elseif @dec_init == 9 pd = real(@fntx5(y)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 10 pd = real(@fntx4(x)^@exad4*@fntx5(y)^@exad5) elseif @dec_init == 11 pd = real(@fntx4(x)^@exad4/@fntx5(y)^@exad5) elseif @dec_init == 12 pd = real(@fntx5(y)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 13 pd = real(@fntx4(x)^@exad4^@fntx5(y)^@exad5) elseif @dec_init == 14 pd = real(@fntx5(y)^@exad4^@fntx4(x)^@exad5) elseif @dec_init == 15 pd = real(@fntx4(x)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 16 pd = real(@fntx4(x)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 17 pd = real(@fntx5(tz)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 18 pd = real(@fntx4(x)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 19 pd = real(@fntx4(x)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 20 pd = real(@fntx5(tz)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 21 pd = real(@fntx4(y)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 22 pd = real(@fntx4(y)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 23 pd = real(@fntx5(tz)^@exad4-@fntx4(y)^@exad5) elseif @dec_init == 24 pd = real(@fntx4(y)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 25 pd = real(@fntx4(y)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 26 pd = real(@fntx5(tz)^@exad4/@fntx4(y)^@exad5) endif if @dec_type == 0 pd = pd-ceil(pd*@dec_scale)/@dec_scale elseif @dec_type == 1 pd = pd-floor(pd*@dec_scale)/@dec_scale elseif @dec_type == 2 pd = pd-trunc(pd*@dec_scale)/@dec_scale elseif @dec_type == 3 pd = pd-round(pd*@dec_scale)/@dec_scale elseif @dec_type == 4 pd = pd-real(@fndec(pd*@dec_scale))/@dec_scale elseif @dec_type == 5 pd = pd-round(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 6 pd = pd-round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 7 pd = pd+round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 8 pd = pd-round(pd*@dec_scale)/@dec_scale-trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 9 pd = pd-round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 10 pd = pd+round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 11 pd = pd-trunc(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 12 pd = pd-trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 13 pd = pd+trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 14 pd = pd-trunc(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 15 pd = pd-trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 16 pd = pd+trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 17 pd = pd-ceil(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 18 pd = pd-ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 19 pd = pd+ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale)/@dec_scale2 endif if @dec_size != 0 pd = pd/@dec_size endif texture_dec = @dectxt*pd if @dec_limit !=0 texture_dec= texture_dec%@dec_limit endif if @dec_sgn == true texture_dec = abs(texture_dec) endif texture_dec = 10 * texture_dec * @decamt endif ; popgnarl texture if (@gnarl_amt != 0)&& @advpg if @ztyp3 == "#z" tz = ((#z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Morph z" tz = ((f_p-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap z" tz = ((trap_p-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap #z" tz = ((trap_z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap dist" tz = ((distance-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Raw dist" tz = ((d-@txia3)*@txib3)^@txic3 endif if @gnarl_init == 0 p = @fntx7(@fntx6(tz))^@exad6 elseif @gnarl_init == 1 p = @fntx6(real(tz))^@exad6+@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 2 p = @fntx6(real(tz))^@exad6-@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 3 p = @fntx6(real(tz))^@exad6*@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 4 p = @fntx6(imag(tz))^@exad6-@fntx7(real(tz))^@exad7 elseif @gnarl_init == 5 p = @fntx7(@fntx6(x))^@exad6 elseif @gnarl_init == 6 p = @fntx7(@fntx6(y))^@exad6 elseif @gnarl_init == 7 p = @fntx6(x)^@exad6+@fntx7(y)^@exad7 elseif @gnarl_init == 8 p = @fntx6(x)^@exad6-@fntx7(y)^@exad7 elseif @gnarl_init == 9 p = @fntx7(y)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 10 p = @fntx6(x)^@exad6*@fntx7(y)^@exad7 elseif @gnarl_init == 11 p = @fntx6(x)^@exad6/@fntx7(y)^@exad7 elseif @gnarl_init == 12 p = @fntx7(y)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 13 p = @fntx6(x)^@exad6^@fntx7(y)^@exad7 elseif @gnarl_init == 14 p = @fntx7(y)^@exad6^@fntx6(x)^@exad7 elseif @gnarl_init == 15 p = @fntx6(x)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 16 p = @fntx6(x)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 17 p = @fntx7(tz)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 18 p = @fntx6(x)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 19 p = @fntx6(x)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 20 p = @fntx7(tz)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 21 p = @fntx6(y)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 22 p = @fntx6(y)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 23 p = @fntx7(tz)^@exad6-@fntx6(y)^@exad7 elseif @gnarl_init == 24 p = @fntx6(y)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 25 p = @fntx6(y)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 26 p = @fntx7(tz)^@exad6/@fntx6(y)^@exad7 elseif @gnarl_init == 27 p = @fntx7(@fntx6(#pixel))^@exad6 endif if @gnarl_scaling == 0 p = p-ceil(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 1 p = p-floor(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 2 p = p-trunc(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 3 p = p-round(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 4 p = p-real(@fngnarl(p*@gnarl_scale))/@gnarl_scale elseif @gnarl_scaling == 5 p = p-round(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 6 p = p-round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 7 p = p+round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 8 p = p-round(p*@gnarl_scale)/@gnarl_scale-trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 9 p = p-round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 10 p = p+round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 11 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 12 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 13 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 14 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 15 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 16 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 17 p = p-ceil(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 18 p = p-ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 19 p = p+ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale)/@gnarl_scale2 endif if @gnarl_size != 0 p = p/@gnarl_size endif xx = real(p) yy = imag(p) float xOld = 0 int iter3 = @gnarl_octaves while (iter3 > 0) iter3 = iter3-1 xOld = xx if @gnarl_form == 0 xx = xx - sin(yy + sin(yy)) yy = yy - sin(xOld + sin(xOld)) elseif @gnarl_form == 1 xx = xx - sin(yy + log(yy + cos(yy))) yy = yy - sin(xOld + log(xOld + cos(xOld))) elseif @gnarl_form == 2 xx = xx - sin(yy + cos(yy)) yy = yy - sin(xOld + cos(xOld)) elseif @gnarl_form == 3 xx = xx - sin(yy + log(yy + tan(yy))) yy = yy - sin(xOld + log(xOld + tan(xOld))) elseif @gnarl_form == 4 xx = xx - sin(yy + log(yy + sin(yy))) yy = yy - sin(xOld + log(xOld + sin(xOld))) endif endwhile if (@gnarl_type == 0) texture_gna = real(@fng(xx)) elseif (@gnarl_type == 1) texture_gna = real(@fng(yy)) elseif (@gnarl_type == 2) texture_gna = real(@fng(xx+yy)) elseif (@gnarl_type == 3) texture_gna = real(@fng(xx*yy)) elseif (@gnarl_type == 4) texture_gna = real(@fng(xx-yy)) elseif (@gnarl_type == 5) texture_gna = real(@fng(xx/yy)) elseif (@gnarl_type == 6) texture_gna = real(@fng(yy/xx)) elseif (@gnarl_type == 7) texture_gna = real(@fng(xx^yy)) elseif (@gnarl_type == 8) texture_gna = real(@fng(yy^xx)) elseif (@gnarl_type == 9) texture_gna = real(@fng(1/xx)) elseif (@gnarl_type == 10) texture_gna = real(@fng(1/yy)) elseif (@gnarl_type == 11) texture_gna = atan2(xx+i*yy)/(2*#pi) if (texture_gna < 0) texture_gna = texture_gna + 1 endif elseif (@gnarl_type == 12) texture_gna = |xx+i*yy| elseif (@gnarl_type == 13) texture_gna = (xx+yy+|xx+i*yy|)/3 elseif (@gnarl_type == 14) texture_gna = (xx*yy*|xx+i*yy|)^(1/3) endif if @gnarl_limit !=0 texture_gna= 10 * (texture_gna%@gnarl_limit) * @gnarl_amt endif endif ;geometrix texture if (@trtxt != 0) && @advtr if @ztyp5 == "#z" tz = ((#z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Morph z" tz = ((f_p-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap z" tz = ((trap_p-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap #z" tz = ((trap_z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap dist" tz = ((distance-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Raw dist" tz = ((d-@trxia)*@trxib)^@trxic endif if @trinit == 0 ptr = (@fntx11(@fntx10(tz))^@exad10) elseif @trinit == 1 ptr = (@fntx10(real(tz))^@exad10+@fntx11(imag(tz))^@exad11) elseif @trinit == 2 ptr = (@fntx10(real(tz))^@exad10-@fntx11(imag(tz))^@exad11) elseif @trinit == 3 ptr = (@fntx10(real(tz))^@exad10*@fntx11(imag(tz))^@exad11) elseif @trinit == 4 ptr = (@fntx10(imag(tz))^@exad10-@fntx11(real(tz))^@exad11) elseif @trinit == 5 ptr = (@fntx11(@fntx10(x))^@exad10) elseif @trinit == 6 ptr = (@fntx11(@fntx10(y))^@exad10) elseif @trinit == 7 ptr = (@fntx10(x)^@exad10+@fntx11(y)^@exad11) elseif @trinit == 8 ptr = (@fntx10(x)^@exad10-@fntx11(y)^@exad11) elseif @trinit == 9 ptr = (@fntx11(y)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 10 ptr = (@fntx10(x)^@exad10*@fntx11(y)^@exad11) elseif @trinit == 11 ptr = (@fntx10(x)^@exad10/@fntx11(y)^@exad11) elseif @trinit == 12 ptr = (@fntx11(y)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 13 ptr = (@fntx10(x)^@exad10^@fntx11(y)^@exad11) elseif @trinit == 14 ptr = (@fntx11(y)^@exad11^@fntx10(x)^@exad10) elseif @trinit == 15 ptr = (@fntx10(x)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 16 ptr = (@fntx10(x)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 17 ptr = (@fntx11(tz)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 18 ptr = (@fntx10(x)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 19 ptr = (@fntx10(x)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 20 ptr = (@fntx11(tz)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 21 ptr = (@fntx10(y)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 22 ptr = (@fntx10(y)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 23 ptr = (@fntx11(tz)^@exad11-@fntx10(y)^@exad10) elseif @trinit == 24 ptr = (@fntx10(y)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 25 ptr = (@fntx10(y)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 26 ptr = (@fntx11(tz)^@exad11/@fntx10(y)^@exad10) endif endif if @advtr zrzr = real(@fnzr(ptr))*@scc zizi = imag(@fnzi(ptr))*@scc rzrz = floor(zrzr) iziz = floor(zizi) r0r0 = rzrz - 1 i0i0 = iziz - 1 r1r1 = rzrz + 1 i1i1 = iziz + 1 azaz = cabs(@fn1tx(r0r0) + @fn2tx(i0i0)) azaz = cabs(@fn3tx(azaz)) azaz = (azaz % @shad1 * 2) bzbz = cabs(@fn1tx(r1r1) + @fn2tx(i0i0)) bzbz = cabs(@fn3tx(bzbz)) bzbz = (bzbz % @shad2 * 2) czcz = cabs(@fn1tx(r1r1) + @fn2tx(i1i1)) czcz = cabs(@fn3tx(czcz)) czcz = (czcz % @shad3 * 2) dzdz = cabs(@fn1tx(r0r0) + @fn2tx(i1i1)) dzdz = cabs(@fn3tx(dzdz)) dzdz = (dzdz % @shad4 * 2) iii = 1 repeat avav = avav / (@trp1 * 2) xbxb = xbxb / (@trp2 * 2) frfr = rzrz + avav fifi = iziz + avav zaza = (azaz + bzbz + czcz + dzdz) / (@trp3 * 4) zzzz = zzzz * xbxb + zaza if (zrzr > frfr) if (zizi > fifi) rzrz = frfr iziz = fifi azaz = zzzz else rzrz = frfr dzdz = zzzz endif else if (zizi > fifi) iziz = fifi bzbz = zzzz else czcz = zzzz endif endif iii = iii + 1 until iii >= @freq texture_tr = (zaza-trunc(zaza*2)^@exp)*@trtxt if @geo_limit != 0 texture_tr = ((zaza-trunc(zaza)^@exp*2)% @geo_limit)*@trtxt endif if @geo_sgn == true texture_tr = abs(texture_tr) endif endif texture = (texture_dec+texture_gna+texture_tr)*@txamt/6000 if @trap_mode == 7 || @trap_mode == 11 distance = distance + cabs(trap_p) endif if @trap_mode == 8 || @trap_mode == 12 distance = distance + cabs(trap_z) endif if @trap_mode == 9 || @trap_mode == 13 distance = distance + (cabs(trap_z) + cabs(trap_p))/2 endif IF (@trap_mode == 1 || @trap_mode == 2 || @trap_mode == 5 \ || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 || \ @trap_mode == 9 || @trap_mode == 10 || @trap_mode == 11 \ || @trap_mode == 12 || @trap_mode == 13) \ || (@trap_mode == 4) IF !trapped && @back == true #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2 && @trap_mode != 5 \ && @trap_mode != 6 && @trap_mode != 7 && @trap_mode != 8 \ && @trap_mode != 9 && @trap_mode != 10 && @trap_mode != 11 \ && @trap_mode != 12 && @trap_mode != 13 \ || (@trap_mode==4)) && trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ENDIF ENDIF IF rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture ENDIF ENDIF default: title = "Simple Traps Enhanced" helpfile = "Simple Traps Enhanced.chm" heading caption = "Simple Traps Enhanced" endheading $ifdef VER40 heading text = "This is a general coloring formula with 94 trap \ functions and 9 variants for each function." endheading heading text = "Some of the code is based upon appoaches of Mark Townsend and Damien Jones. \ The Morph code and the code for Decimal texturing, Popgnarl texturing \ and Geometrix texturing is from Toby Marshall. Some of the textures Toby used \ were originally developed by Michèle Dessureault (popgnarl and decimal)." endheading $else heading caption = "This is a general coloring" endheading heading caption = "formula with 94 trap" endheading heading caption = "functions and 9 variants" endheading heading caption = "for each function." endheading $endif param version caption = "Version number" enum = "0" "1.1" default = 1 hint = "This is for backwards compatibility with old versions \ of the formula. If an old upr does not perform correctly, \ change the value to '0'. DO NOT CHANGE THE DEFAULT VALUE FOR NEW UPRS!" endparam $ifdef VER40 heading text = "If your old upr does perform correctly, change the default 'Version \ number' to '0'. DO NOT CHANGE THE DEFAULT VALUE FOR NEW UPRS!" endheading $else heading caption = "If your old upr does perform correctly," endheading heading caption = "change the default 'Version number'" endheading heading caption = "to '0'. DO NOT CHANGE THE DEFAULT VALUE FOR NEW UPRS!" endheading $endif bool param expert caption = "Expert mode" default = false visible = @version == "1.1" endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" "Farthest" \ "Sum" "Weighted Sum" "Weighted Sum 2" "Weighted Sum 3" \ "Sum 2" "Weighted Sum 4" "Weighted Sum 5" "Weighted Sum 6" endparam float param edge caption = "Edge effect" default = 0.0 visible = @trap_mode == 0 || @trap_mode == 3 endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" "6" "7" "8" "9" endparam float param mod caption = "Trap modulator" default = 1.0 endparam func fn3 caption = "Trap var function" default = cos() visible = @trapvar==5 ||@trapvar==7 || @trapvar==8 || @trapvar==9 endfunc param width caption = "Trap width" default = 0.1 endparam float param dmod caption = "Distance modifier" default = 1.0 visible = @typeA == 9 && @typeB == 9 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3) && @version == "1.1" endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible=(@trap_mode == 0 || @trap_mode == 3) && @version == "0" endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible=(@trap_mode == 0 || @trap_mode == 3) && @version == "0" endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible=(@trap_mode == 0 || @trap_mode == 3) && @version == "0" endparam param back caption = "Solid Background" default = true visible=(@trap_mode == 1 || @trap_mode == 2 || @trap_mode == 5 \ || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 || \ @trap_mode == 9 || @trap_mode == 10 || @trap_mode == 11 \ || @trap_mode == 12 || @trap_mode == 13) || (@trap_mode == 4) endparam param trapnum caption = "Number of Traps" default = 0 enum = "1" "2" hint = "This is the number of traps to use." visible = @expert&& @version == "1.1" endparam bool param alliter caption = "Use all iterations" default = true visible = @expert&& @version == "1.1" endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter && @expert) || @version == "0" endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit. With a value \ of 0 the formula will use all iterations." default = 0 min = 0 visible = (!@alliter && @expert) || @version == "0" endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter && @expert&& @version == "1.1" endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && @expert&& @version == "1.1" endparam heading caption = "Trap Merging" visible = @trapnum == 1 && @expert&& @version == "1.1" endheading param trapAweight caption = "Trap A Weight" default = 0 enum = "A" "-A" "|A|" "A*A" "-A*A" "A*A*A" "-A*A*A" "|A*A*A|" "log(A)" \ "exp(A)" "sqrt(A)" "A^(1/3)" hint = "Sets the weight for this trap." visible = @trapnum == 1 && @expert &&@version == "1.1" endparam param trapBweight caption = "Trap B Weight" default = 0 enum = "B" "-B" "|B|" "B*B" "-B*B" "B*B*B" "-B*B*B" "|B*B*B|" "log(B)" \ "exp(B)" "sqrt(B)" "B^(1/3)" hint = "Sets the weight for this trap." visible = @trapnum == 1 && @expert&&@version == "1.1" endparam param trapmerge caption = "Merge Mode" default = 0 enum = "min(A,B)" "max(A,B)" "A+B" "A*B" "A/B" "B/A" "1/(A*B)" "A^B" "B^A" \ "|A-B|" "Func(A) op Func(B)" "A" "B" "A AND B" "B AND A" "A OR B" \ "B OR A" "A NOT B" "B NOT A" hint = "Sets the merge method for the traps" visible = @trapnum == 1 && @expert&&@version == "1.1" endparam func mfuncA caption = "Merge func A" default = ident() visible = @trapnum == 1 && @expert && @trapmerge == "Func(A) op Func(B)"\ &&@version == "1.1" endfunc func mfuncB caption = "Merge func B" default = atan() visible = @trapnum == 1 && @expert && @trapmerge == "Func(A) op Func(B)" \ &&@version == "1.1" endfunc param mop caption = "Merge operator" default = 2 enum = "+" "-" "*" "/" "^" visible = @trapnum == 1 && @expert && @trapmerge == "Func(A) op Func(B)"\ &&@version == "1.1" endparam param trapmergeabs caption = "No Negative Distances" default = false hint = "If set, converts negative combined trap distances to positive." visible = @trapnum == 1 && @expert&& @version == "1.1" endparam bool param distmerge caption = "Merge distance" default = true visible = @trapnum == 1 && @expert&& @version == "1.1" endparam bool param f_pmerge caption = "Merge trap metric" default = false visible = @trapnum == 1 && @expert && (@color_mode == 6 || \ @color_mode == 7 || @color_mode == 8 || @color_mode == 9 \ || @color_mode == 10)&& @version == "1.1" hint = "This affects only certain color modes. It can be used with \ interesting results with 'Merge distance' turned off." endparam heading caption = "Trap Parameters" visible = @trapnum == 0 endheading heading caption = "Trap A Parameters" visible = @trapnum == 1 && @expert&& @version == "1.1" endheading param typeA caption = "Trap Type" default = 9 enum = "sum" "product" "quotient1" "quotient2" \ "ceil_floor" "trunc_round" "cf_plus" \ "tr_plus" "fibonacci" "functions" visible = @version == "1.1" endparam param distvarA caption = "Distance variants" default = 1 enum = "Ampersand" "Arachnida 1" "Arachnida 2" "Archimedes" \ "Astroid" "Atzema Spiral" "Bean" "Bicorn" "Bicuspid" \ "Bifolium" "Bow" "Butterfly" "Cardiod" "Cassini Ovals" \ "Cayley's Sextic" "Circle" "Circle Catacaustic" \ "Cissoid of Diocles" "Cochleoid" "Conchoid" "Cotes' Spiral" \ "Cruciform" "Curtate Cycloid" "Cycloid" "Cycloid of Seva" \ "Deltoid Catacaustic" "Devil's Curve" "Diamond" "Difference" \ "Dipole Curve" "Dumbbell Curve" "Eight Curve" "Ellipse Catacaustic" \ "Ellipse Evolute" "Epicycloid" "Epispiral" "Exp1" "Exp2" \ "Folium of Descartes" "Gear Curve" "Happy Accident" \ "Hipopede" "Hyperbola" "Kampyle of Eudoxus" "Kappa Curve" \ "Keratoid Cusp" "Knot Curve" "Lemniscate" "Limacon of Pascal" \ "Line" "Links Curve" "Lituus" "Log spiral" "Log Spiral Catacaustic" \ "Maltese Cross" "Nephroid" "Ophiuride" "Parabola" "Piriform" \ "Poinsot Spiral 1" "Poinsot Spiral 2" "Polytrope" "Product" \ "Quadratrix of Hippias" "Quadrifolium" "Quotient1" \ "Quotient2" "Rose" "Rose of Troy" "Scarabaeus" "Semicubical Parabola" \ "Serpentine Curve" "Stirrup Curve" "Strophoid" "Sum" \ "Swastika Curve" "Teardrop Curve" "Tractrix" "Trefoil" \ "Trident" "Trident of Descartes" "Trifolium" "Trisectrix of Maclaurin" \ "Tschirnhausen Cubic" "Witch of Agnesi" visible=@TypeA==9 && @version == "1.1" endparam param aA caption = "Polar parameter" default = 0.2 hint = "Affects spread and scale of trap" visible=(@distvarA=="Sum" ||@distvarA=="Difference" ||@distvarA=="Product" || @distvarA=="Quotient1" \ ||@distvarA=="Quotient2" ||@distvarA=="Exp1" ||@distvarA=="Exp2" \ || @distvarA=="Lemniscate" || @distvarA=="Cardiod" || @distvarA=="Conchoid" || @distvarA=="Archimedes" \ || @distvarA=="Log spiral" || @distvarA=="Rose" || @distvarA=="Bifolium" || @distvarA=="Cissoid of Diocles" \ || @distvarA=="Cochleoid" || @distvarA=="Folium of Descartes" || @distvarA=="Limacon of Pascal" || @distvarA=="Lituus" \ || @distvarA=="Nephroid" || @distvarA=="Strophoid" || @distvarA=="Witch of Agnesi" || @distvarA=="Curtate Cycloid" \ || @distvarA=="Epicycloid" || @distvarA=="Ellipse Evolute" || @distvarA=="Tractrix" || @distvarA=="Kampyle of Eudoxus" \ || @distvarA=="Circle Catacaustic" || @distvarA=="Deltoid Catacaustic" || @distvarA=="Ellipse Catacaustic" || @distvarA=="Log Spiral Catacaustic" \ || @distvarA=="Butterfly" || @distvarA=="Gear Curve" || @distvarA=="Arachnida 1" || @distvarA=="Arachnida 2" \ || @distvarA=="Cayley's Sextic" || @distvarA=="Cycloid of Seva" || @distvarA=="Devil's Curve" || @distvarA=="Eight Curve" \ || @distvarA=="Epispiral" || @distvarA=="Hipopede" || @distvarA=="Maltese Cross" || @distvarA=="Ophiuride" \ || @distvarA=="Quadratrix of Hippias" || @distvarA=="Poinsot Spiral 1" || @distvarA=="Poinsot Spiral 2" || @distvarA=="Quadrifolium" \ || @distvarA=="Scarabaeus" || @distvarA=="Semicubical Parabola" || @distvarA=="Swastika Curve" || @distvarA=="Trifolium" \ || @distvarA=="Tschirnhausen Cubic" || @distvarA=="Bicorn" || @distvarA=="Cruciform" || @distvarA=="Knot Curve" \ || @distvarA=="Ampersand" || @distvarA=="Bean" || @distvarA=="Bicuspid" || @distvarA=="Bow" \ || @distvarA=="Cassini Ovals" || @distvarA=="Circle" || @distvarA=="Trident" || @distvarA=="Stirrup Curve" \ || @distvarA=="Diamond" || @distvarA=="Dumbbell Curve" || @distvarA=="Teardrop Curve" || @distvarA=="Happy Accident" \ || @distvarA=="Hyperbola" || @distvarA=="Kappa Curve" || @distvarA=="Piriform" || @distvarA=="Keratoid Cusp" \ || @distvarA=="Serpentine Curve" || @distvarA=="Line" || @distvarA=="Links Curve" || @distvarA=="Parabola" \ || @distvarA=="Trefoil" || @distvarA=="Trident of Descartes" || @distvarA=="Trisectrix of Maclaurin" || @distvarA=="Atzema Spiral" \ || @distvarA=="Rose of Troy" || @distvarA=="Cotes' Spiral" || @distvarA=="Dipole Curve" || @distvarA=="Polytrope") \ && @typeA == 9&& @version == "1.1" endparam param bA caption = "2nd Polar parameter" default = 1.0 hint = "Affects shape and scale of trap." visible=(@distvarA=="Sum" ||@distvarA=="Difference" ||@distvarA=="Product" || @distvarA=="Quotient1" \ ||@distvarA=="Quotient2" ||@distvarA=="Exp1" ||@distvarA=="Exp2" \ || @distvarA=="Conchoid" || @distvarA=="Limacon of Pascal" || @distvarA=="Strophoid" || @distvarA=="Curtate Cycloid" \ || @distvarA=="Epicycloid" || @distvarA=="Ellipse Evolute" || @distvarA=="Circle Catacaustic" || @distvarA=="Deltoid Catacaustic" \ || @distvarA=="Ellipse Catacaustic" || @distvarA=="Log Spiral Catacaustic" || @distvarA=="Gear Curve" || @distvarA=="Devil's Curve" \ || @distvarA=="Hipopede" || @distvarA=="Ophiuride" || @distvarA=="Scarabaeus" || @distvarA=="Cruciform" \ || @distvarA=="Bicuspid" || @distvarA=="Bow" || @distvarA=="Cassini Ovals" || @distvarA=="Circle" \ || @distvarA=="Trident" || @distvarA=="Teardrop Curve" || @distvarA=="Piriform" || @distvarA=="Serpentine Curve" \ || @distvarA=="Parabola" || @distvarA=="Trident of Descartes" || @distvarA=="Atzema Spiral" || @distvarA=="Rose of Troy" \ || @distvarA=="Cotes' Spiral") && @typeA == 9&& @version == "1.1" endparam param cpA caption = "3rd Polar parameter" default = 0.05 visible=@distvarA=="Rose of Troy"&& @version == "1.1" endparam param pnA caption = "Polar integer" default = 3 visible=(@distvarA=="Gear Curve" || @distvarA=="Arachnida 1" || @distvarA=="Arachnida 2" || @distvarA=="Epispiral" \ || @distvarA=="Poinsot Spiral 1" || @distvarA=="Poinsot Spiral 2" || @distvarA=="Teardrop Curve" || @distvarA=="Polytrope") \ && @version == "1.1" && @typeA == 9 endparam param t2A caption = "Angle type" default = 1 enum = "Atan2" "Atan" visible=(@distvarA=="Lemniscate" || @distvarA=="Cardiod" || @distvarA=="Conchoid" || @distvarA=="Cycloid" \ || @distvarA=="Cycloid" || @distvarA=="Log spiral" || @distvarA=="Rose" || @distvarA=="Bifolium" \ || @distvarA=="Astroid" || @distvarA=="Cissoid of Diocles" || @distvarA=="Cochleoid" || @distvarA=="Folium of Descartes" \ || @distvarA=="Limacon of Pascal" || @distvarA=="Lituus" || @distvarA=="Nephroid" \ || @distvarA=="Strophoid" || @distvarA=="Witch of Agnesi" || @distvarA=="Curtate Cycloid" || @distvarA=="Epicycloid" \ || @distvarA=="Ellipse Evolute" || @distvarA=="Tractrix" || @distvarA=="Kampyle of Eudoxus" || @distvarA=="Circle Catacaustic" \ || @distvarA=="Deltoid Catacaustic" || @distvarA=="Ellipse Catacaustic" || @distvarA=="Log Spiral Catacaustic" || @distvarA=="Butterfly" \ || @distvarA=="Gear Curve" || @distvarA=="Arachnida 1" || @distvarA=="Arachnida 2" || @distvarA=="Cayley's Sextic" \ || @distvarA=="Cycloid of Seva" || @distvarA=="Devil's Curve" || @distvarA=="Eight Curve" || @distvarA=="Epispiral" \ || @distvarA=="Hipopede" || @distvarA=="Maltese Cross" || @distvarA=="Ophiuride" || @distvarA=="Quadratrix of Hippias" \ || @distvarA=="Poinsot Spiral 1" || @distvarA=="Poinsot Spiral 2" || @distvarA=="Quadrifolium" || @distvarA=="Scarabaeus" \ || @distvarA=="Semicubical Parabola" || @distvarA=="Swastika Curve" || @distvarA=="Trifolium" || @distvarA=="Tschirnhausen Cubic" \ || @distvarA=="Bicorn" || @distvarA=="Cruciform" || @distvarA=="Bean" || @distvarA=="Bow" \ || @distvarA=="Cassini Ovals" || @distvarA=="Circle" || @distvarA=="Teardrop Curve" || @distvarA=="Hyperbola" \ || @distvarA=="Kappa Curve" || @distvarA=="Piriform" || @distvarA=="Serpentine Curve" || @distvarA=="Trefoil" \ || @distvarA=="Trisectrix of Maclaurin" || @distvarA=="Atzema Spiral" || @distvarA=="Rose of Troy" || @distvarA=="Cotes' Spiral" \ || @distvarA=="Dipole Curve")&& @version == "1.1" endparam param absvalA caption = "Absolute Value" default = true visible=@typeA==9 && @trap_mode != 3&& @version == "1.1" endparam param negrootA caption = "Quad Neg Root" default = false visible=@version == "1.1" &&@typeA==9 && (@distvarA == "Knot Curve" || @distvarA == "Ampersand" || @distvarA == 59 \ || @distvarA=="Cassini Ovals" || @distvarA=="Stirrup Curve" || @distvarA == "Keratoid Cusp" || @distvarA=="Links Curve") endparam func fn4A caption = "Real Function" default = ident() visible=@typeA==9 && @distvarA != "Astroid" && @distvarA != "Nephroid" && @distvarA != "Witch of Agnesi" \ && @distvarA != "Curtate Cycloid" && @distvarA != "Epicycloid" && @distvarA != "Ellipse Evolute" && @distvarA != "Tractrix" \ && @distvarA != "Circle Catacaustic" && @distvarA != "Deltoid Catacaustic" && @distvarA != "Ellipse Catacaustic" && @distvarA != "Log Spiral Catacaustic" \ && @distvarA != "Gear Curve" && @distvarA != "Bicorn" && @distvarA != "Cruciform" && @distvarA != "Knot Curve" \ && @distvarA != "Ampersand" && @distvarA != "Bicuspid" && @distvarA != "Bow" \ && @distvarA != "Trident" && @distvarA != "Stirrup Curve" \ && @distvarA != "Diamond" && @distvarA != "Dumbbell Curve" && @distvarA != "Teardrop Curve" && @distvarA != "Happy Accident" \ && @distvarA != "Piriform" && @distvarA != "Keratoid Cusp" && @distvarA != "Serpentine Curve" && @distvarA != "Line" \ && @distvarA != "Links Curve" && @distvarA != "Parabola" && @distvarA != "Trident of Descartes" && @distvarA != "Atzema Spiral" \ && @distvarA != "Polytrope"&& @version == "1.1" endfunc func fn5A caption = "Imaginary Function" default = ident() visible=@typeA==9 && @distvarA != "Astroid" && @distvarA != "Nephroid" && @distvarA != "Witch of Agnesi" \ && @distvarA != "Curtate Cycloid" && @distvarA != "Epicycloid" && @distvarA != "Ellipse Evolute" && @distvarA != "Tractrix" \ && @distvarA != "Circle Catacaustic" && @distvarA != "Deltoid Catacaustic" && @distvarA != "Ellipse Catacaustic" && @distvarA != "Log Spiral Catacaustic" \ && @distvarA != "Gear Curve" && @distvarA != "Bicorn" && @distvarA != "Cruciform" && @distvarA != "Knot Curve" \ && @distvarA != "Ampersand" && @distvarA != "Bicuspid" && @distvarA != "Bow" \ && @distvarA != "Trident" && @distvarA != "Stirrup Curve" \ && @distvarA != "Diamond" && @distvarA != "Dumbbell Curve" && @distvarA != "Teardrop Curve" && @distvarA != "Happy Accident" \ && @distvarA != "Piriform" && @distvarA != "Keratoid Cusp" && @distvarA != "Serpentine Curve" && @distvarA != "Line" \ && @distvarA != "Links Curve" && @distvarA != "Parabola" && @distvarA != "Trident of Descartes" && @distvarA != "Atzema Spiral" \ && @distvarA != "Polytrope"&& @version == "1.1" endfunc param sa1A caption = "Adjuster 1" default = 1.0 visible = (@distvarA == "Diamond" || @distvarA == "Happy Accident")&& @version == "1.1" endparam param sa2A caption = "Adjuster 2" default = 1.0 visible = (@distvarA == "Diamond" || @distvarA == "Happy Accident")&& @version == "1.1" endparam param sa3A caption = "Adjuster 3" default = 1.0 visible = @distvarA == "Happy Accident"&& @version == "1.1" endparam param sa4A caption = "Adjuster 4" default = 1.0 visible = @distvarA == "Happy Accident" && @version == "1.1" endparam param sa5A caption = "Adjuster 5" default = 1.0 visible = @distvarA == "Happy Accident"&& @version == "1.1" endparam param sa6A caption = "Adjuster 6" default = 1.0 visible = @distvarA == "Happy Accident" && @version == "1.1" endparam param sa7A caption = "Adjuster 7" default = 1.0 visible = @distvarA == "Happy Accident" && @version == "1.1" endparam param arA caption = "Astroid Radius" default = 0.2 visible=@distvarA=="Astroid"&& @version == "1.1" endparam param apwrA caption = "Power" default = (3.0,3.0) visible=(@distvarA=="Astroid" || @distvarA=="Ellipse Evolute" || @distvarA=="Bean") \ && @version == "1.1" endparam func afn1A caption = "Polar Fn 1" default = cos() visible=(@distvarA=="Astroid" || @distvarA=="Nephroid" || @distvarA=="Curtate Cycloid" || @distvarA=="Epicycloid" \ || @distvarA=="Ellipse Evolute" || @distvarA=="Tractrix" || @distvarA=="Deltoid Catacaustic" || @distvarA=="Bean") \ && @version == "1.1" endfunc func afn2A caption = "Polar Fn 2" default = sin() visible=(@distvarA=="Astroid" || @distvarA=="Nephroid" || @distvarA=="Curtate Cycloid" || @distvarA=="Epicycloid" \ || @distvarA=="Ellipse Evolute" || @distvarA=="Tractrix" || @distvarA=="Deltoid Catacaustic" || @distvarA=="Bean") \ && @version == "1.1" endfunc func safnA caption = "Adjuster Fn" default = ident() visible= (@distvarA == "Diamond" || @distvarA == "Happy Accident")&& @version == "1.1" endfunc float param angA caption = "Trap rotation" default = 0.0 visible = @version == "1.1" endparam param skewA caption = "Trap Skew" default = 0.0 visible = @version == "1.1" endparam param startA caption = "Starting offset" default = (0.0,0.0) visible=(@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9) \ && @version == "1.1" endparam param offsetA caption = "Trap offset" default = (0.0,0.0) visible = @version == "1.1" endparam param movecenterA caption = "Move offset" default = false visible = @version == "1.1" endparam complex param movecenteramtA caption = "Move amount" default = (1,0) visible = @version == "1.1" && @movecenterA endparam param type caption = "Trap Type" default = 9 enum = "sum" "product" "quotient1" "quotient2" \ "ceil_floor" "trunc_round" "cf_plus" \ "tr_plus" "fibonacci" "functions" visible = @version == "0" endparam param distvar caption = "Distance variants" default = 1 enum = "Ampersand" "Arachnida 1" "Arachnida 2" "Archimedes" \ "Astroid" "Atzema Spiral" "Bean" "Bicorn" "Bicuspid" \ "Bifolium" "Bow" "Butterfly" "Cardiod" "Cassini Ovals" \ "Cayley's Sextic" "Circle" "Circle Catacaustic" \ "Cissoid of Diocles" "Cochleoid" "Conchoid" "Cotes' Spiral" \ "Cruciform" "Curtate Cycloid" "Cycloid" "Cycloid of Seva" \ "Deltoid Catacaustic" "Devil's Curve" "Diamond" "Difference" \ "Dipole Curve" "Dumbbell Curve" "Eight Curve" "Ellipse Catacaustic" \ "Ellipse Evolute" "Epicycloid" "Epispiral" "Exp1" "Exp2" \ "Folium of Descartes" "Gear Curve" "Happy Accident" \ "Hipopede" "Hyperbola" "Kampyle of Eudoxus" "Kappa Curve" \ "Keratoid Cusp" "Knot Curve" "Lemniscate" "Limacon of Pascal" \ "Line" "Links Curve" "Lituus" "Log spiral" "Log Spiral Catacaustic" \ "Maltese Cross" "Nephroid" "Ophiuride" "Parabola" "Piriform" \ "Poinsot Spiral 1" "Poinsot Spiral 2" "Polytrope" "Product" \ "Quadratrix of Hippias" "Quadrifolium" "Quotient1" \ "Quotient2" "Rose" "Rose of Troy" "Scarabaeus" "Semicubical Parabola" \ "Serpentine Curve" "Stirrup Curve" "Strophoid" "Sum" \ "Swastika Curve" "Teardrop Curve" "Tractrix" "Trefoil" \ "Trident" "Trident of Descartes" "Trifolium" "Trisectrix of Maclaurin" \ "Tschirnhausen Cubic" "Witch of Agnesi" visible=@Type==9 && @version == "0" endparam param a caption = "Polar parameter" default = 0.2 hint = "Affects spread and scale of trap" visible=(@distvar=="Sum" ||@distvar=="Difference" ||@distvar=="Product" || @distvar=="Quotient1" \ ||@distvar=="Quotient2" ||@distvar=="Exp1" ||@distvar=="Exp2" \ || @distvar=="Lemniscate" || @distvar=="Cardiod" || @distvar=="Conchoid" || @distvar=="Archimedes" \ || @distvar=="Log spiral" || @distvar=="Rose" || @distvar=="Bifolium" || @distvar=="Cissoid of Diocles" \ || @distvar=="Cochleoid" || @distvar=="Folium of Descartes" || @distvar=="Limacon of Pascal" || @distvar=="Lituus" \ || @distvar=="Nephroid" || @distvar=="Strophoid" || @distvar=="Witch of Agnesi" || @distvar=="Curtate Cycloid" \ || @distvar=="Epicycloid" || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Kampyle of Eudoxus" \ || @distvar=="Circle Catacaustic" || @distvar=="Deltoid Catacaustic" || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" \ || @distvar=="Butterfly" || @distvar=="Gear Curve" || @distvar=="Arachnida 1" || @distvar=="Arachnida 2" \ || @distvar=="Cayley's Sextic" || @distvar=="Cycloid of Seva" || @distvar=="Devil's Curve" || @distvar=="Eight Curve" \ || @distvar=="Epispiral" || @distvar=="Hipopede" || @distvar=="Maltese Cross" || @distvar=="Ophiuride" \ || @distvar=="Quadratrix of Hippias" || @distvar=="Poinsot Spiral 1" || @distvar=="Poinsot Spiral 2" || @distvar=="Quadrifolium" \ || @distvar=="Scarabaeus" || @distvar=="Semicubical Parabola" || @distvar=="Swastika Curve" || @distvar=="Trifolium" \ || @distvar=="Tschirnhausen Cubic" || @distvar=="Bicorn" || @distvar=="Cruciform" || @distvar=="Knot Curve" \ || @distvar=="Ampersand" || @distvar=="Bean" || @distvar=="Bicuspid" || @distvar=="Bow" \ || @distvar=="Cassini Ovals" || @distvar=="Circle" || @distvar=="Trident" || @distvar=="Stirrup Curve" \ || @distvar=="Diamond" || @distvar=="Dumbbell Curve" || @distvar=="Teardrop Curve" || @distvar=="Happy Accident" \ || @distvar=="Hyperbola" || @distvar=="Kappa Curve" || @distvar=="Piriform" || @distvar=="Keratoid Cusp" \ || @distvar=="Serpentine Curve" || @distvar=="Line" || @distvar=="Links Curve" || @distvar=="Parabola" \ || @distvar=="Trefoil" || @distvar=="Trident of Descartes" || @distvar=="Trisectrix of Maclaurin" || @distvar=="Atzema Spiral" \ || @distvar=="Rose of Troy" || @distvar=="Cotes' Spiral" || @distvar=="Dipole Curve" || @distvar=="Polytrope") \ && @type == 9 && @version == "0" endparam param b caption = "2nd Polar parameter" default = 1.0 hint = "Affects shape and scale of trap." visible=(@distvar=="Sum" ||@distvar=="Difference" ||@distvar=="Product" || @distvar=="Quotient1" \ ||@distvar=="Quotient2" ||@distvar=="Exp1" ||@distvar=="Exp2" \ || @distvar=="Conchoid" || @distvar=="Limacon of Pascal" || @distvar=="Strophoid" || @distvar=="Curtate Cycloid" \ || @distvar=="Epicycloid" || @distvar=="Ellipse Evolute" || @distvar=="Circle Catacaustic" || @distvar=="Deltoid Catacaustic" \ || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" || @distvar=="Gear Curve" || @distvar=="Devil's Curve" \ || @distvar=="Hipopede" || @distvar=="Ophiuride" || @distvar=="Scarabaeus" || @distvar=="Cruciform" \ || @distvar=="Bicuspid" || @distvar=="Bow" || @distvar=="Cassini Ovals" || @distvar=="Circle" \ || @distvar=="Trident" || @distvar=="Teardrop Curve" || @distvar=="Piriform" || @distvar=="Serpentine Curve" \ || @distvar=="Parabola" || @distvar=="Trident of Descartes" || @distvar=="Atzema Spiral" || @distvar=="Rose of Troy" \ || @distvar=="Cotes' Spiral") && @type == 9 && @version == "0" endparam param cp caption = "3rd Polar parameter" default = 0.05 visible=@distvar=="Rose of Troy" && @version == "0" endparam param pn caption = "Polar integer" default = 3 visible=(@distvar=="Gear Curve" || @distvar=="Arachnida 1" || @distvar=="Arachnida 2" || @distvar=="Epispiral" \ || @distvar=="Poinsot Spiral 1" || @distvar=="Poinsot Spiral 2" || @distvar=="Teardrop Curve" || @distvar=="Polytrope") \ && @version == "0" && @type == 9 endparam param t2 caption = "Angle type" default = 1 enum = "Atan2" "Atan" visible=(@distvar=="Lemniscate" || @distvar=="Cardiod" || @distvar=="Conchoid" || @distvar=="Cycloid" \ || @distvar=="Cycloid" || @distvar=="Log spiral" || @distvar=="Rose" || @distvar=="Bifolium" \ || @distvar=="Astroid" || @distvar=="Cissoid of Diocles" || @distvar=="Cochleoid" || @distvar=="Folium of Descartes" \ || @distvar=="Limacon of Pascal" || @distvar=="Lituus" || @distvar=="Nephroid" \ || @distvar=="Strophoid" || @distvar=="Witch of Agnesi" || @distvar=="Curtate Cycloid" || @distvar=="Epicycloid" \ || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Kampyle of Eudoxus" || @distvar=="Circle Catacaustic" \ || @distvar=="Deltoid Catacaustic" || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" || @distvar=="Butterfly" \ || @distvar=="Gear Curve" || @distvar=="Arachnida 1" || @distvar=="Arachnida 2" || @distvar=="Cayley's Sextic" \ || @distvar=="Cycloid of Seva" || @distvar=="Devil's Curve" || @distvar=="Eight Curve" || @distvar=="Epispiral" \ || @distvar=="Hipopede" || @distvar=="Maltese Cross" || @distvar=="Ophiuride" || @distvar=="Quadratrix of Hippias" \ || @distvar=="Poinsot Spiral 1" || @distvar=="Poinsot Spiral 2" || @distvar=="Quadrifolium" || @distvar=="Scarabaeus" \ || @distvar=="Semicubical Parabola" || @distvar=="Swastika Curve" || @distvar=="Trifolium" || @distvar=="Tschirnhausen Cubic" \ || @distvar=="Bicorn" || @distvar=="Cruciform" || @distvar=="Bean" || @distvar=="Bow" \ || @distvar=="Cassini Ovals" || @distvar=="Circle" || @distvar=="Teardrop Curve" || @distvar=="Hyperbola" \ || @distvar=="Kappa Curve" || @distvar=="Piriform" || @distvar=="Serpentine Curve" || @distvar=="Trefoil" \ || @distvar=="Trisectrix of Maclaurin" || @distvar=="Atzema Spiral" || @distvar=="Rose of Troy" || @distvar=="Cotes' Spiral" \ || @distvar=="Dipole Curve")&& @version == "0" endparam param absval caption = "Absolute Value" default = true visible=@type==9 && @trap_mode != 3&& @version == "0" endparam param negroot caption = "Quad Neg Root" default = false visible=@type==9 && (@distvar == "Knot Curve" || @distvar == "Ampersand" || @distvar == 59 \ || @distvar=="Cassini Ovals" || @distvar=="Stirrup Curve" || @distvar == "Keratoid Cusp" || @distvar=="Links Curve") \ && @version == "0" endparam func fn4 caption = "Real Function" default = ident() visible=(@type==9 && @distvar != "Astroid" && @distvar != "Nephroid" && @distvar != "Witch of Agnesi" \ && @distvar != "Curtate Cycloid" && @distvar != "Epicycloid" && @distvar != "Ellipse Evolute" && @distvar != "Tractrix" \ && @distvar != "Circle Catacaustic" && @distvar != "Deltoid Catacaustic" && @distvar != "Ellipse Catacaustic" && @distvar != "Log Spiral Catacaustic" \ && @distvar != "Gear Curve" && @distvar != "Bicorn" && @distvar != "Cruciform" && @distvar != "Knot Curve" \ && @distvar != "Ampersand" && @distvar != "Bicuspid" && @distvar != "Bow" \ && @distvar != "Trident" && @distvar != "Stirrup Curve" \ && @distvar != "Diamond" && @distvar != "Dumbbell Curve" && @distvar != "Teardrop Curve" && @distvar != "Happy Accident" \ && @distvar != "Piriform" && @distvar != "Keratoid Cusp" && @distvar != "Serpentine Curve" && @distvar != "Line" \ && @distvar != "Links Curve" && @distvar != "Parabola" && @distvar != "Trident of Descartes" && @distvar != "Atzema Spiral" \ && @distvar != "Polytrope")&& @version == "0" endfunc func fn5 caption = "Imaginary Function" default = ident() visible=(@type==9 && @distvar != "Astroid" && @distvar != "Nephroid" && @distvar != "Witch of Agnesi" \ && @distvar != "Curtate Cycloid" && @distvar != "Epicycloid" && @distvar != "Ellipse Evolute" && @distvar != "Tractrix" \ && @distvar != "Circle Catacaustic" && @distvar != "Deltoid Catacaustic" && @distvar != "Ellipse Catacaustic" && @distvar != "Log Spiral Catacaustic" \ && @distvar != "Gear Curve" && @distvar != "Bicorn" && @distvar != "Cruciform" && @distvar != "Knot Curve" \ && @distvar != "Ampersand" && @distvar != "Bicuspid" && @distvar != "Bow" \ && @distvar != "Trident" && @distvar != "Stirrup Curve" \ && @distvar != "Diamond" && @distvar != "Dumbbell Curve" && @distvar != "Teardrop Curve" && @distvar != "Happy Accident" \ && @distvar != "Piriform" && @distvar != "Keratoid Cusp" && @distvar != "Serpentine Curve" && @distvar != "Line" \ && @distvar != "Links Curve" && @distvar != "Parabola" && @distvar != "Trident of Descartes" && @distvar != "Atzema Spiral" \ && @distvar != "Polytrope")&& @version == "0" endfunc param sa1 caption = "Adjuster 1" default = 1.0 visible = (@distvar == "Diamond" || @distvar == "Happy Accident")&& @version == "0" endparam param sa2 caption = "Adjuster 2" default = 1.0 visible = (@distvar == "Diamond" || @distvar == "Happy Accident") && @version == "0" endparam param sa3 caption = "Adjuster 3" default = 1.0 visible = @distvar == "Happy Accident"&& @version == "0" endparam param sa4 caption = "Adjuster 4" default = 1.0 visible = @distvar == "Happy Accident"&& @version == "0" endparam param sa5 caption = "Adjuster 5" default = 1.0 visible = @distvar == "Happy Accident"&& @version == "0" endparam param sa6 caption = "Adjuster 6" default = 1.0 visible = @distvar == "Happy Accident"&& @version == "0" endparam param sa7 caption = "Adjuster 7" default = 1.0 visible = @distvar == "Happy Accident"&& @version == "0" endparam param ar caption = "Astroid Radius" default = 0.2 visible=@distvar=="Astroid"&& @version == "0" endparam param apwr caption = "Power" default = (3.0,3.0) visible=(@distvar=="Astroid" || @distvar=="Ellipse Evolute" || @distvar=="Bean") \ && @version == "0" endparam func afn1 caption = "Polar Fn 1" default = cos() visible=(@distvar=="Astroid" || @distvar=="Nephroid" || @distvar=="Curtate Cycloid" || @distvar=="Epicycloid" \ || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Deltoid Catacaustic" || @distvar=="Bean") \ && @version == "0" endfunc func afn2 caption = "Polar Fn 2" default = sin() visible=(@distvar=="Astroid" || @distvar=="Nephroid" || @distvar=="Curtate Cycloid" || @distvar=="Epicycloid" \ || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Deltoid Catacaustic" || @distvar=="Bean") \ && @version == "0" endfunc func safn caption = "Adjuster Fn" default = ident() visible= (@distvar == "Diamond" || @distvar == "Happy Accident") && @version == "0" endfunc float param ang caption = "Trap rotation" default = 0.0 visible = @version == "0" endparam param start caption = "Starting offset" default = (0.0,0.0) visible=(@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9) \ && @version == "0" endparam param offset caption = "Trap offset" default = (0.0,0.0) visible = @version == "0" endparam param movecenter caption = "Move offset" default = false visible = @version == "0" endparam heading caption = "Progressive Parameters" visible = (@trapnum == 0 && @expert) || @version == "0" endheading heading caption = "Progressive A Parameters" visible = @trapnum == 1 && @expert endheading param polar1A caption = "Inc polar1" default = 0.0 visible=@expert && (@distvarA=="Sum" ||@distvarA=="Difference" ||@distvarA=="Product" || @distvarA=="Quotient1" \ ||@distvarA=="Quotient2" ||@distvarA=="Exp1" ||@distvarA=="Exp2" \ || @distvarA=="Lemniscate" || @distvarA=="Cardiod" || @distvarA=="Conchoid" || @distvarA=="Archimedes" \ || @distvarA=="Log spiral" || @distvarA=="Rose" || @distvarA=="Bifolium" || @distvarA=="Cissoid of Diocles" \ || @distvarA=="Cochleoid" || @distvarA=="Folium of Descartes" || @distvarA=="Limacon of Pascal" || @distvarA=="Lituus" \ || @distvarA=="Nephroid" || @distvarA=="Strophoid" || @distvarA=="Witch of Agnesi" || @distvarA=="Curtate Cycloid" \ || @distvarA=="Epicycloid" || @distvarA=="Ellipse Evolute" || @distvarA=="Tractrix" || @distvarA=="Kampyle of Eudoxus" \ || @distvarA=="Circle Catacaustic" || @distvarA=="Deltoid Catacaustic" || @distvarA=="Ellipse Catacaustic" || @distvarA=="Log Spiral Catacaustic" \ || @distvarA=="Butterfly" || @distvarA=="Gear Curve" || @distvarA=="Arachnida 1" || @distvarA=="Arachnida 2" \ || @distvarA=="Cayley's Sextic" || @distvarA=="Cycloid of Seva" || @distvarA=="Devil's Curve" || @distvarA=="Eight Curve" \ || @distvarA=="Epispiral" || @distvarA=="Hipopede" || @distvarA=="Maltese Cross" || @distvarA=="Ophiuride" \ || @distvarA=="Quadratrix of Hippias" || @distvarA=="Poinsot Spiral 1" || @distvarA=="Poinsot Spiral 2" || @distvarA=="Quadrifolium" \ || @distvarA=="Scarabaeus" || @distvarA=="Semicubical Parabola" || @distvarA=="Swastika Curve" || @distvarA=="Trifolium" \ || @distvarA=="Tschirnhausen Cubic" || @distvarA=="Bicorn" || @distvarA=="Cruciform" || @distvarA=="Knot Curve" \ || @distvarA=="Ampersand" || @distvarA=="Bean" || @distvarA=="Bicuspid" || @distvarA=="Bow" \ || @distvarA=="Cassini Ovals" || @distvarA=="Circle" || @distvarA=="Trident" || @distvarA=="Stirrup Curve" \ || @distvarA=="Diamond" || @distvarA=="Dumbbell Curve" || @distvarA=="Teardrop Curve" || @distvarA=="Happy Accident" \ || @distvarA=="Hyperbola" || @distvarA=="Kappa Curve" || @distvarA=="Piriform" || @distvarA=="Keratoid Cusp" \ || @distvarA=="Serpentine Curve" || @distvarA=="Line" || @distvarA=="Links Curve" || @distvarA=="Parabola" \ || @distvarA=="Trefoil" || @distvarA=="Trident of Descartes" || @distvarA=="Trisectrix of Maclaurin" || @distvarA=="Atzema Spiral" \ || @distvarA=="Rose of Troy" || @distvarA=="Cotes' Spiral" || @distvarA=="Dipole Curve" || @distvarA=="Polytrope") \ && @typeA == 9&& @version == "1.1" endparam param polar2A caption = "Inc polar2" default = 0.0 visible=@expert && (@distvarA=="Sum" ||@distvarA=="Difference" ||@distvarA=="Product" || @distvarA=="Quotient1" \ ||@distvarA=="Quotient2" ||@distvarA=="Exp1" ||@distvarA=="Exp2" \ || @distvarA=="Conchoid" || @distvarA=="Limacon of Pascal" || @distvarA=="Strophoid" || @distvarA=="Curtate Cycloid" \ || @distvarA=="Epicycloid" || @distvarA=="Ellipse Evolute" || @distvarA=="Circle Catacaustic" || @distvarA=="Deltoid Catacaustic" \ || @distvarA=="Ellipse Catacaustic" || @distvarA=="Log Spiral Catacaustic" || @distvarA=="Gear Curve" || @distvarA=="Devil's Curve" \ || @distvarA=="Hipopede" || @distvarA=="Ophiuride" || @distvarA=="Scarabaeus" || @distvarA=="Cruciform" \ || @distvarA=="Bicuspid" || @distvarA=="Bow" || @distvarA=="Cassini Ovals" || @distvarA=="Circle" \ || @distvarA=="Trident" || @distvarA=="Teardrop Curve" || @distvarA=="Piriform" || @distvarA=="Serpentine Curve" \ || @distvarA=="Parabola" || @distvarA=="Trident of Descartes" || @distvarA=="Atzema Spiral" || @distvarA=="Rose of Troy" \ || @distvarA=="Cotes' Spiral")&& @typeA == 9&& @version == "1.1" endparam param polar3A caption = "Inc polar3" default = 0.0 visible=@distvarA=="Rose of Troy" && @expert&& @version == "1.1" endparam param isa1A caption = "Inc Adjuster 1" default = 0.0 visible = @expert && (@distvarA=="Diamond" \ || @distvarA=="Happy Accident")&& @version == "1.1" endparam param isa2A caption = "Inc Adjuster 2" default = 0.0 visible = @expert && (@distvarA=="Diamond" \ || @distvarA=="Happy Accident")&& @version == "1.1" endparam param isa3A caption = "Inc Adjuster 3" default = 0.0 visible = @expert && (@distvarA=="Happy Accident")&& @version == "1.1" endparam param isa4A caption = "Inc Adjuster 4" default = 0.0 visible = @expert && (@distvarA=="Happy Accident")&& @version == "1.1" endparam param isa5A caption = "Inc Adjuster 5" default = 0.0 visible = @expert && (@distvarA=="Happy Accident")&& @version == "1.1" endparam param isa6A caption = "Inc Adjuster 6" default = 0.0 visible = @expert && (@distvarA=="Happy Accident")&& @version == "1.1" endparam param isa7A caption = "Inc Adjuster 7" default = 0.0 visible = @expert && (@distvarA=="Happy Accident")&& @version == "1.1" endparam param parA caption = "Inc Astroid Radius" default = 0.0 visible=@distvarA=="Astroid" && @expert&& @version == "1.1" endparam param papwrA caption = "Inc power" default = (0,0) visible = @expert && (@distvarA=="Astroid" || @distvarA=="Ellipse Evolute" || @distvarA=="Bean") \ && @version == "1.1" endparam param rotA caption = "Inc trap rotation" default = 0.0 visible=@expert&& @version == "1.1" endparam float param skewAstep caption = "Inc skew" default = 0 visible = @expert&& @version == "1.1" endparam complex param incstartA caption = "Inc starting offset" default = (0,0) visible=(@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9) \ && @expert&& @version == "1.1" endparam complex param incoffA caption = "Inc trap offset" default = (0,0) visible=@expert&& @version == "1.1" endparam param polar1 caption = "Inc polar1" default = 0.0 visible=(@distvar=="Sum" ||@distvar=="Difference" ||@distvar=="Product" || @distvar=="Quotient1" \ ||@distvar=="Quotient2" ||@distvar=="Exp1" ||@distvar=="Exp2" \ || @distvar=="Lemniscate" || @distvar=="Cardiod" || @distvar=="Conchoid" || @distvar=="Archimedes" \ || @distvar=="Log spiral" || @distvar=="Rose" || @distvar=="Bifolium" || @distvar=="Cissoid of Diocles" \ || @distvar=="Cochleoid" || @distvar=="Folium of Descartes" || @distvar=="Limacon of Pascal" || @distvar=="Lituus" \ || @distvar=="Nephroid" || @distvar=="Strophoid" || @distvar=="Witch of Agnesi" || @distvar=="Curtate Cycloid" \ || @distvar=="Epicycloid" || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Kampyle of Eudoxus" \ || @distvar=="Circle Catacaustic" || @distvar=="Deltoid Catacaustic" || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" \ || @distvar=="Butterfly" || @distvar=="Gear Curve" || @distvar=="Arachnida 1" || @distvar=="Arachnida 2" \ || @distvar=="Cayley's Sextic" || @distvar=="Cycloid of Seva" || @distvar=="Devil's Curve" || @distvar=="Eight Curve" \ || @distvar=="Epispiral" || @distvar=="Hipopede" || @distvar=="Maltese Cross" || @distvar=="Ophiuride" \ || @distvar=="Quadratrix of Hippias" || @distvar=="Poinsot Spiral 1" || @distvar=="Poinsot Spiral 2" || @distvar=="Quadrifolium" \ || @distvar=="Scarabaeus" || @distvar=="Semicubical Parabola" || @distvar=="Swastika Curve" || @distvar=="Trifolium" \ || @distvar=="Tschirnhausen Cubic" || @distvar=="Bicorn" || @distvar=="Cruciform" || @distvar=="Knot Curve" \ || @distvar=="Ampersand" || @distvar=="Bean" || @distvar=="Bicuspid" || @distvar=="Bow" \ || @distvar=="Cassini Ovals" || @distvar=="Circle" || @distvar=="Trident" || @distvar=="Stirrup Curve" \ || @distvar=="Diamond" || @distvar=="Dumbbell Curve" || @distvar=="Teardrop Curve" || @distvar=="Happy Accident" \ || @distvar=="Hyperbola" || @distvar=="Kappa Curve" || @distvar=="Piriform" || @distvar=="Keratoid Cusp" \ || @distvar=="Serpentine Curve" || @distvar=="Line" || @distvar=="Links Curve" || @distvar=="Parabola" \ || @distvar=="Trefoil" || @distvar=="Trident of Descartes" || @distvar=="Trisectrix of Maclaurin" || @distvar=="Atzema Spiral" \ || @distvar=="Rose of Troy" || @distvar=="Cotes' Spiral" || @distvar=="Dipole Curve" || @distvar=="Polytrope") \ && @type == 9&& @version == "0" endparam param polar2 caption = "Inc polar2" default = 0.0 visible=(@distvar=="Sum" ||@distvar=="Difference" ||@distvar=="Product" || @distvar=="Quotient1" \ ||@distvar=="Quotient2" ||@distvar=="Exp1" ||@distvar=="Exp2" \ || @distvar=="Conchoid" || @distvar=="Limacon of Pascal" || @distvar=="Strophoid" || @distvar=="Curtate Cycloid" \ || @distvar=="Epicycloid" || @distvar=="Ellipse Evolute" || @distvar=="Circle Catacaustic" || @distvar=="Deltoid Catacaustic" \ || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" || @distvar=="Gear Curve" || @distvar=="Devil's Curve" \ || @distvar=="Hipopede" || @distvar=="Ophiuride" || @distvar=="Scarabaeus" || @distvar=="Cruciform" \ || @distvar=="Bicuspid" || @distvar=="Bow" || @distvar=="Cassini Ovals" || @distvar=="Circle" \ || @distvar=="Trident" || @distvar=="Teardrop Curve" || @distvar=="Piriform" || @distvar=="Serpentine Curve" \ || @distvar=="Parabola" || @distvar=="Trident of Descartes" || @distvar=="Atzema Spiral" || @distvar=="Rose of Troy" \ || @distvar=="Cotes' Spiral")&& @type == 9&& @version == "0" endparam param polar3 caption = "Inc polar3" default = 0.0 visible=@distvar=="Rose of Troy" && @version == "0" endparam param isa1 caption = "Inc Adjuster 1" default = 0.0 visible = (@distvarA=="Diamond" \ || @distvar=="Happy Accident")&& @version == "0" endparam param isa2 caption = "Inc Adjuster 2" default = 0.0 visible = (@distvar=="Diamond" \ || @distvar=="Happy Accident")&& @version == "0" endparam param isa3 caption = "Inc Adjuster 3" default = 0.0 visible = (@distvar=="Happy Accident")&& @version == "0" endparam param isa4 caption = "Inc Adjuster 4" default = 0.0 visible = (@distvar=="Happy Accident")&& @version == "0" endparam param isa5 caption = "Inc Adjuster 5" default = 0.0 visible = (@distvar=="Happy Accident")&& @version == "0" endparam param isa6 caption = "Inc Adjuster 6" default = 0.0 visible = (@distvar=="Happy Accident")&& @version == "0" endparam param isa7 caption = "Inc Adjuster 7" default = 0.0 visible = (@distvar=="Happy Accident")&& @version == "0" endparam param par caption = "Inc Astroid Radius" default = 0.0 visible=@distvar=="Astroid" && @version == "0" endparam param papwr caption = "Inc power" default = (0,0) visible = (@distvar=="Astroid" || @distvar=="Ellipse Evolute" || @distvar=="Bean") \ && @version == "0" endparam param rot caption = "Inc trap rotation" default = 0.0 visible=@version == "0" endparam param incstartx caption = "Inc starting x offset" default = 0.0 visible=((@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9)) \ && @version == "0" endparam param incstarty caption = "Inc starting y offset" default = 0.0 visible=((@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9)) \ && @version == "0" endparam param offx caption = "Inc x trap offset" default = 0.0 visible=@version == "0" endparam param offy caption = "Inc y trap offset" default = 0.0 visible=@version == "0" endparam heading caption = "Trap B Parameters" visible = @trapnum == 1 && @expert endheading param typeB caption = "Trap Type" default = 9 enum = "sum" "product" "quotient1" "quotient2" \ "ceil_floor" "trunc_round" "cf_plus" \ "tr_plus" "fibonacci" "functions" visible = @trapnum == 1 && @expert endparam param distvarB caption = "Distance variants" default = 1 enum = "Ampersand" "Arachnida 1" "Arachnida 2" "Archimedes" \ "Astroid" "Atzema Spiral" "Bean" "Bicorn" "Bicuspid" \ "Bifolium" "Bow" "Butterfly" "Cardiod" "Cassini Ovals" \ "Cayley's Sextic" "Circle" "Circle Catacaustic" \ "Cissoid of Diocles" "Cochleoid" "Conchoid" "Cotes' Spiral" \ "Cruciform" "Curtate Cycloid" "Cycloid" "Cycloid of Seva" \ "Deltoid Catacaustic" "Devil's Curve" "Diamond" "Difference" \ "Dipole Curve" "Dumbbell Curve" "Eight Curve" "Ellipse Catacaustic" \ "Ellipse Evolute" "Epicycloid" "Epispiral" "Exp1" "Exp2" \ "Folium of Descartes" "Gear Curve" "Happy Accident" \ "Hipopede" "Hyperbola" "Kampyle of Eudoxus" "Kappa Curve" \ "Keratoid Cusp" "Knot Curve" "Lemniscate" "Limacon of Pascal" \ "Line" "Links Curve" "Lituus" "Log spiral" "Log Spiral Catacaustic" \ "Maltese Cross" "Nephroid" "Ophiuride" "Parabola" "Piriform" \ "Poinsot Spiral 1" "Poinsot Spiral 2" "Polytrope" "Product" \ "Quadratrix of Hippias" "Quadrifolium" "Quotient1" \ "Quotient2" "Rose" "Rose of Troy" "Scarabaeus" "Semicubical Parabola" \ "Serpentine Curve" "Stirrup Curve" "Strophoid" "Sum" \ "Swastika Curve" "Teardrop Curve" "Tractrix" "Trefoil" \ "Trident" "Trident of Descartes" "Trifolium" "Trisectrix of Maclaurin" \ "Tschirnhausen Cubic" "Witch of Agnesi" visible=@TypeB==9 && @trapnum == 1 && @expert endparam param aB caption = "Polar parameter" default = 0.2 hint = "Affects spread and scale of trap" visible=(@distvarB=="Sum" ||@distvarB=="Difference" ||@distvarB=="Product" || @distvarB=="Quotient1" \ ||@distvarB=="Quotient2" ||@distvarB=="Exp1" ||@distvarB=="Exp2" \ || @distvarB=="Lemniscate" || @distvarB=="Cardiod" || @distvarB=="Conchoid" || @distvarB=="Archimedes" \ || @distvarB=="Log spiral" || @distvarB=="Rose" || @distvarB=="Bifolium" || @distvarB=="Cissoid of Diocles" \ || @distvarB=="Cochleoid" || @distvarB=="Folium of Descartes" || @distvarB=="Limacon of Pascal" || @distvarB=="Lituus" \ || @distvarB=="Nephroid" || @distvarB=="Strophoid" || @distvarB=="Witch of Agnesi" || @distvarB=="Curtate Cycloid" \ || @distvarB=="Epicycloid" || @distvarB=="Ellipse Evolute" || @distvarB=="Tractrix" || @distvarB=="Kampyle of Eudoxus" \ || @distvarB=="Circle Catacaustic" || @distvarB=="Deltoid Catacaustic" || @distvarB=="Ellipse Catacaustic" || @distvarB=="Log Spiral Catacaustic" \ || @distvarB=="Butterfly" || @distvarB=="Gear Curve" || @distvarB=="Arachnida 1" || @distvarB=="Arachnida 2" \ || @distvarB=="Cayley's Sextic" || @distvarB=="Cycloid of Seva" || @distvarB=="Devil's Curve" || @distvarB=="Eight Curve" \ || @distvarB=="Epispiral" || @distvarB=="Hipopede" || @distvarB=="Maltese Cross" || @distvarB=="Ophiuride" \ || @distvarB=="Quadratrix of Hippias" || @distvarB=="Poinsot Spiral 1" || @distvarB=="Poinsot Spiral 2" || @distvarB=="Quadrifolium" \ || @distvarB=="Scarabaeus" || @distvarB=="Semicubical Parabola" || @distvarB=="Swastika Curve" || @distvarB=="Trifolium" \ || @distvarB=="Tschirnhausen Cubic" || @distvarB=="Bicorn" || @distvarB=="Cruciform" || @distvarB=="Knot Curve" \ || @distvarB=="Ampersand" || @distvarB=="Bean" || @distvarB=="Bicuspid" || @distvarB=="Bow" \ || @distvarB=="Cassini Ovals" || @distvarB=="Circle" || @distvarB=="Trident" || @distvarB=="Stirrup Curve" \ || @distvarB=="Diamond" || @distvarB=="Dumbbell Curve" || @distvarB=="Teardrop Curve" || @distvarB=="Happy Accident" \ || @distvarB=="Hyperbola" || @distvarB=="Kappa Curve" || @distvarB=="Piriform" || @distvarB=="Keratoid Cusp" \ || @distvarB=="Serpentine Curve" || @distvarB=="Line" || @distvarB=="Links Curve" || @distvarB=="Parabola" \ || @distvarB=="Trefoil" || @distvarB=="Trident of Descartes" || @distvarB=="Trisectrix of Maclaurin" || @distvarB=="Atzema Spiral" \ || @distvarB=="Rose of Troy" || @distvarB=="Cotes' Spiral" || @distvarB=="Dipole Curve" || @distvarB=="Polytrope") \ && @typeB == 9 && @trapnum == 1 && @expert endparam param bB caption = "2nd Polar parameter" default = 1.0 hint = "Affects shape and scale of trap." visible=(@distvarB=="Sum" ||@distvarB=="Difference" ||@distvarB=="Product" || @distvarB=="Quotient1" \ ||@distvarB=="Quotient2" ||@distvarB=="Exp1" ||@distvarB=="Exp2" \ || @distvarB=="Conchoid" || @distvarB=="Limacon of Pascal" || @distvarB=="Strophoid" || @distvarB=="Curtate Cycloid" \ || @distvarB=="Epicycloid" || @distvarB=="Ellipse Evolute" || @distvarB=="Circle Catacaustic" || @distvarB=="Deltoid Catacaustic" \ || @distvarB=="Ellipse Catacaustic" || @distvarB=="Log Spiral Catacaustic" || @distvarB=="Gear Curve" || @distvarB=="Devil's Curve" \ || @distvarB=="Hipopede" || @distvarB=="Ophiuride" || @distvarB=="Scarabaeus" || @distvarB=="Cruciform" \ || @distvarB=="Bicuspid" || @distvarB=="Bow" || @distvarB=="Cassini Ovals" || @distvarB=="Circle" \ || @distvarB=="Trident" || @distvarB=="Teardrop Curve" || @distvarB=="Piriform" || @distvarB=="Serpentine Curve" \ || @distvarB=="Parabola" || @distvarB=="Trident of Descartes" || @distvarB=="Atzema Spiral" || @distvarB=="Rose of Troy" \ || @distvarB=="Cotes' Spiral") && @typeB == 9 && @trapnum == 1 && @expert endparam param cpB caption = "3rd Polar parameter" default = 0.05 visible=@distvarB=="Rose of Troy"&& @trapnum == 1 && @expert endparam param pnB caption = "Polar integer" default = 3 visible=(@distvarB=="Gear Curve" || @distvarB=="Arachnida 1" || @distvarB=="Arachnida 2" || @distvarB=="Epispiral" \ || @distvarB=="Poinsot Spiral 1" || @distvarB=="Poinsot Spiral 2" || @distvarB=="Teardrop Curve" || @distvarB=="Polytrope") \ && @trapnum == 1 && @expert && @typeB == 9 endparam param t2B caption = "Angle type" default = 1 enum = "Atan2" "Atan" visible=(@distvarB=="Lemniscate" || @distvarB=="Cardiod" || @distvarB=="Conchoid" || @distvarB=="Cycloid" \ || @distvarB=="Cycloid" || @distvarB=="Log spiral" || @distvarB=="Rose" || @distvarB=="Bifolium" \ || @distvarB=="Astroid" || @distvarB=="Cissoid of Diocles" || @distvarB=="Cochleoid" || @distvarB=="Folium of Descartes" \ || @distvarB=="Limacon of Pascal" || @distvarB=="Lituus" || @distvarB=="Nephroid" \ || @distvarB=="Strophoid" || @distvarB=="Witch of Agnesi" || @distvarB=="Curtate Cycloid" || @distvarB=="Epicycloid" \ || @distvarB=="Ellipse Evolute" || @distvarB=="Tractrix" || @distvarB=="Kampyle of Eudoxus" || @distvarB=="Circle Catacaustic" \ || @distvarB=="Deltoid Catacaustic" || @distvarB=="Ellipse Catacaustic" || @distvarB=="Log Spiral Catacaustic" || @distvarB=="Butterfly" \ || @distvarB=="Gear Curve" || @distvarB=="Arachnida 1" || @distvarB=="Arachnida 2" || @distvarB=="Cayley's Sextic" \ || @distvarB=="Cycloid of Seva" || @distvarB=="Devil's Curve" || @distvarB=="Eight Curve" || @distvarB=="Epispiral" \ || @distvarB=="Hipopede" || @distvarB=="Maltese Cross" || @distvarB=="Ophiuride" || @distvarB=="Quadratrix of Hippias" \ || @distvarB=="Poinsot Spiral 1" || @distvarB=="Poinsot Spiral 2" || @distvarB=="Quadrifolium" || @distvarB=="Scarabaeus" \ || @distvarB=="Semicubical Parabola" || @distvarB=="Swastika Curve" || @distvarB=="Trifolium" || @distvarB=="Tschirnhausen Cubic" \ || @distvarB=="Bicorn" || @distvarB=="Cruciform" || @distvarB=="Bean" || @distvarB=="Bow" \ || @distvarB=="Cassini Ovals" || @distvarB=="Circle" || @distvarB=="Teardrop Curve" || @distvarB=="Hyperbola" \ || @distvarB=="Kappa Curve" || @distvarB=="Piriform" || @distvarB=="Serpentine Curve" || @distvarB=="Trefoil" \ || @distvarB=="Trisectrix of Maclaurin" || @distvarB=="Atzema Spiral" || @distvarB=="Rose of Troy" || @distvarB=="Cotes' Spiral" \ || @distvarB=="Dipole Curve")&& @trapnum == 1 && @expert endparam param absvalB caption = "Absolute Value" default = true visible=@typeB==9 && @trap_mode != 3&& @trapnum == 1 && @expert endparam param negrootB caption = "Quad Neg Root" default = false visible=(@typeB==9 && (@distvarB == "Knot Curve" || @distvarB == "Ampersand" || @distvarB == 59 \ || @distvarB=="Cassini Ovals" || @distvarB=="Stirrup Curve" || @distvarB == "Keratoid Cusp" || @distvarB=="Links Curve"))\ && @trapnum == 1 && @expert endparam func fn4B caption = "Real Function" default = ident() visible=(@typeB==9 && @distvarB != "Astroid" && @distvarB != "Nephroid" && @distvarB != "Witch of Agnesi" \ && @distvarB != "Curtate Cycloid" && @distvarB != "Epicycloid" && @distvarB != "Ellipse Evolute" && @distvarB != "Tractrix" \ && @distvarB != "Circle Catacaustic" && @distvarB != "Deltoid Catacaustic" && @distvarB != "Ellipse Catacaustic" && @distvarB != "Log Spiral Catacaustic" \ && @distvarB != "Gear Curve" && @distvarB != "Bicorn" && @distvarB != "Cruciform" && @distvarB != "Knot Curve" \ && @distvarB != "Ampersand" && @distvarB != "Bicuspid" && @distvarB != "Bow" \ && @distvarB != "Trident" && @distvarB != "Stirrup Curve" \ && @distvarB != "Diamond" && @distvarB != "Dumbbell Curve" && @distvarB != "Teardrop Curve" && @distvarB != "Happy Accident" \ && @distvarB != "Piriform" && @distvarB != "Keratoid Cusp" && @distvarB != "Serpentine Curve" && @distvarB != "Line" \ && @distvarB != "Links Curve" && @distvarB != "Parabola" && @distvarB != "Trident of Descartes" && @distvarB != "Atzema Spiral" \ && @distvarB != "Polytrope")&& @trapnum == 1 && @expert endfunc func fn5B caption = "Imaginary Function" default = ident() visible=(@typeB==9 && @distvarB != "Astroid" && @distvarB != "Nephroid" && @distvarB != "Witch of Agnesi" \ && @distvarB != "Curtate Cycloid" && @distvarB != "Epicycloid" && @distvarB != "Ellipse Evolute" && @distvarB != "Tractrix" \ && @distvarB != "Circle Catacaustic" && @distvarB != "Deltoid Catacaustic" && @distvarB != "Ellipse Catacaustic" && @distvarB != "Log Spiral Catacaustic" \ && @distvarB != "Gear Curve" && @distvarB != "Bicorn" && @distvarB != "Cruciform" && @distvarB != "Knot Curve" \ && @distvarB != "Ampersand" && @distvarB != "Bicuspid" && @distvarB != "Bow" \ && @distvarB != "Trident" && @distvarB != "Stirrup Curve" \ && @distvarB != "Diamond" && @distvarB != "Dumbbell Curve" && @distvarB != "Teardrop Curve" && @distvarB != "Happy Accident" \ && @distvarB != "Piriform" && @distvarB != "Keratoid Cusp" && @distvarB != "Serpentine Curve" && @distvarB != "Line" \ && @distvarB != "Links Curve" && @distvarB != "Parabola" && @distvarB != "Trident of Descartes" && @distvarB != "Atzema Spiral" \ && @distvarB != "Polytrope")&& @trapnum == 1 && @expert endfunc param sa1B caption = "Adjuster 1" default = 1.0 visible = (@distvarB == "Diamond" || @distvarB == "Happy Accident") \ && @trapnum == 1 && @expert endparam param sa2B caption = "Adjuster 2" default = 1.0 visible = (@distvarB == "Diamond" || @distvarB == "Happy Accident") \ && @trapnum == 1 && @expert endparam param sa3B caption = "Adjuster 3" default = 1.0 visible = @distvarB == "Happy Accident"&& @trapnum == 1 && @expert endparam param sa4B caption = "Adjuster 4" default = 1.0 visible = @distvarB == "Happy Accident"&& @trapnum == 1 && @expert endparam param sa5B caption = "Adjuster 5" default = 1.0 visible = @distvarB == "Happy Accident"&& @trapnum == 1 && @expert endparam param sa6B caption = "Adjuster 6" default = 1.0 visible = @distvarB == "Happy Accident"&& @trapnum == 1 && @expert endparam param sa7B caption = "Adjuster 7" default = 1.0 visible = @distvarB == "Happy Accident"&& @trapnum == 1 && @expert endparam param arB caption = "Astroid Radius" default = 0.2 visible=@distvarB=="Astroid"&& @trapnum == 1 && @expert endparam param apwrB caption = "Power" default = (3.0,3.0) visible=(@distvarB=="Astroid" || @distvarB=="Ellipse Evolute" || @distvarB=="Bean") \ && @trapnum == 1 && @expert endparam func afn1B caption = "Polar Fn 1" default = cos() visible=(@distvarB=="Astroid" || @distvarB=="Nephroid" || @distvarB=="Curtate Cycloid" || @distvarB=="Epicycloid" \ || @distvarB=="Ellipse Evolute" || @distvarB=="Tractrix" || @distvarB=="Deltoid Catacaustic" || @distvarB=="Bean")\ && @trapnum == 1 && @expert endfunc func afn2B caption = "Polar Fn 2" default = sin() visible=(@distvarB=="Astroid" || @distvarB=="Nephroid" || @distvarB=="Curtate Cycloid" || @distvarB=="Epicycloid" \ || @distvarB=="Ellipse Evolute" || @distvarB=="Tractrix" || @distvarB=="Deltoid Catacaustic" || @distvarB=="Bean") \ && @trapnum == 1 && @expert endfunc func safnB caption = "Adjuster Fn" default = ident() visible= (@distvarB == "Diamond" || @distvarB == "Happy Accident") \ && @trapnum == 1 && @expert endfunc float param angB caption = "Trap rotation" default = 0.0 visible = @trapnum == 1 && @expert endparam param skewB caption = "Trap Skew" default = 0.0 visible = @trapnum == 1 && @expert endparam complex param startB caption = "Starting offset" default = (0.0,0.0) visible=(@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9) \ && @trapnum == 1 && @expert endparam complex param offsetB caption = "Trap offset" default = (0.0,0.0) visible = @trapnum == 1 && @expert endparam bool param movecenterB caption = "Move offset" default = false visible = @trapnum == 1 && @expert endparam complex param movecenteramtB caption = "Move amount" default = (1,0) visible = @version == "1.1" && @movecenterB && @trapnum == 1 && @expert endparam heading caption = "Progressive B Parameters" visible = @trapnum == 1 && @expert endheading param polar1B caption = "Inc polar1" default = 0.0 visible=(@expert && (@distvarB=="Sum" ||@distvarB=="Difference" ||@distvarB=="Product" || @distvarB=="Quotient1" \ ||@distvarB=="Quotient2" ||@distvarB=="Exp1" ||@distvarB=="Exp2" \ || @distvarB=="Lemniscate" || @distvarB=="Cardiod" || @distvarB=="Conchoid" || @distvarB=="Archimedes" \ || @distvarB=="Log spiral" || @distvarB=="Rose" || @distvarB=="Bifolium" || @distvarB=="Cissoid of Diocles" \ || @distvarB=="Cochleoid" || @distvarB=="Folium of Descartes" || @distvarB=="Limacon of Pascal" || @distvarB=="Lituus" \ || @distvarB=="Nephroid" || @distvarB=="Strophoid" || @distvarB=="Witch of Agnesi" || @distvarB=="Curtate Cycloid" \ || @distvarB=="Epicycloid" || @distvarB=="Ellipse Evolute" || @distvarB=="Tractrix" || @distvarB=="Kampyle of Eudoxus" \ || @distvarB=="Circle Catacaustic" || @distvarB=="Deltoid Catacaustic" || @distvarB=="Ellipse Catacaustic" || @distvarB=="Log Spiral Catacaustic" \ || @distvarB=="Butterfly" || @distvarB=="Gear Curve" || @distvarB=="Arachnida 1" || @distvarB=="Arachnida 2" \ || @distvarB=="Cayley's Sextic" || @distvarB=="Cycloid of Seva" || @distvarB=="Devil's Curve" || @distvarB=="Eight Curve" \ || @distvarB=="Epispiral" || @distvarB=="Hipopede" || @distvarB=="Maltese Cross" || @distvarB=="Ophiuride" \ || @distvarB=="Quadratrix of Hippias" || @distvarB=="Poinsot Spiral 1" || @distvarB=="Poinsot Spiral 2" || @distvarB=="Quadrifolium" \ || @distvarB=="Scarabaeus" || @distvarB=="Semicubical Parabola" || @distvarB=="Swastika Curve" || @distvarB=="Trifolium" \ || @distvarB=="Tschirnhausen Cubic" || @distvarB=="Bicorn" || @distvarB=="Cruciform" || @distvarB=="Knot Curve" \ || @distvarB=="Ampersand" || @distvarB=="Bean" || @distvarB=="Bicuspid" || @distvarB=="Bow" \ || @distvarB=="Cassini Ovals" || @distvarB=="Circle" || @distvarB=="Trident" || @distvarB=="Stirrup Curve" \ || @distvarB=="Diamond" || @distvarB=="Dumbbell Curve" || @distvarB=="Teardrop Curve" || @distvarB=="Happy Accident" \ || @distvarB=="Hyperbola" || @distvarB=="Kappa Curve" || @distvarB=="Piriform" || @distvarB=="Keratoid Cusp" \ || @distvarB=="Serpentine Curve" || @distvarB=="Line" || @distvarB=="Links Curve" || @distvarB=="Parabola" \ || @distvarB=="Trefoil" || @distvarB=="Trident of Descartes" || @distvarB=="Trisectrix of Maclaurin" || @distvarB=="Atzema Spiral" \ || @distvarB=="Rose of Troy" || @distvarB=="Cotes' Spiral" || @distvarB=="Dipole Curve" || @distvarB=="Polytrope") \ && @typeB == 9) && @trapnum == 1 endparam param polar2B caption = "Inc polar2" default = 0.0 visible=(@expert && (@distvarB=="Sum" ||@distvarB=="Difference" ||@distvarB=="Product" || @distvarB=="Quotient1" \ ||@distvarB=="Quotient2" ||@distvarB=="Exp1" ||@distvarB=="Exp2" \ || @distvarB=="Conchoid" || @distvarB=="Limacon of Pascal" || @distvarB=="Strophoid" || @distvarB=="Curtate Cycloid" \ || @distvarB=="Epicycloid" || @distvarB=="Ellipse Evolute" || @distvarB=="Circle Catacaustic" || @distvarB=="Deltoid Catacaustic" \ || @distvarB=="Ellipse Catacaustic" || @distvarB=="Log Spiral Catacaustic" || @distvarB=="Gear Curve" || @distvarB=="Devil's Curve" \ || @distvarB=="Hipopede" || @distvarB=="Ophiuride" || @distvarB=="Scarabaeus" || @distvarB=="Cruciform" \ || @distvarB=="Bicuspid" || @distvarB=="Bow" || @distvarB=="Cassini Ovals" || @distvarB=="Circle" \ || @distvarB=="Trident" || @distvarB=="Teardrop Curve" || @distvarB=="Piriform" || @distvarB=="Serpentine Curve" \ || @distvarB=="Parabola" || @distvarB=="Trident of Descartes" || @distvarB=="Atzema Spiral" || @distvarB=="Rose of Troy" \ || @distvarB=="Cotes' Spiral")&& @typeB == 9) && @trapnum == 1 endparam param polar3B caption = "Inc polar3" default = 0.0 visible=@distvarB=="Rose of Troy" && @trapnum == 1 && @expert endparam param isa1B caption = "Inc Adjuster 1" default = 0.0 visible = @expert && (@distvarB=="Diamond" \ || @distvarB=="Happy Accident") && @trapnum == 1 endparam param isa2B caption = "Inc Adjuster 2" default = 0.0 visible = @expert && (@distvarB=="Diamond" \ || @distvarB=="Happy Accident") && @trapnum == 1 endparam param isa3B caption = "Inc Adjuster 3" default = 0.0 visible = @expert && (@distvarB=="Happy Accident") && @trapnum == 1 endparam param isa4B caption = "Inc Adjuster 4" default = 0.0 visible = @expert && (@distvarB=="Happy Accident") && @trapnum == 1 endparam param isa5B caption = "Inc Adjuster 5" default = 0.0 visible = @expert && (@distvarB=="Happy Accident") && @trapnum == 1 endparam param isa6B caption = "Inc Adjuster 6" default = 0.0 visible = @expert && (@distvarB=="Happy Accident") && @trapnum == 1 endparam param isa7B caption = "Inc Adjuster 7" default = 0.0 visible = @expert && (@distvarB=="Happy Accident") && @trapnum == 1 endparam param parB caption = "Inc Astroid Radius" default = 0.0 visible=@distvarB=="Astroid" && @expert && @trapnum == 1 endparam param papwrB caption = "Inc power" default = (0,0) visible = @expert && (@distvarB=="Astroid" || @distvarB=="Ellipse Evolute" \ || @distvarB=="Bean")&& @trapnum == 1 endparam param rotB caption = "Inc trap rotation" default = 0.0 visible=@expert&& @trapnum == 1 endparam float param skewBstep caption = "Inc skew" default = 0 visible = @expert&& @trapnum == 1 endparam complex param incstartB caption = "Inc starting offset" default = (0,0) visible=(@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9) \ && @expert&& @trapnum == 1 endparam complex param incoffB caption = "Inc trap offset" default = (0,0) visible=@expert&& @trapnum == 1 endparam heading caption = "fBm Parameters" visible = @expert || @version == "0" endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @expert || @version == "0" endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @expert || @version == "0" endparam param fbm caption = "fBm Transfer Weight" default = 0.0 min = 0.0 visible = @expert || @version == "0" endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @expert || @version == "0" endparam param nscale caption = "fBm Scale" default = 0 hint = "This is the overall scale of the noise." visible = @expert || @version == "0" endparam param fbmf caption = "fBm Final Weight" default = 10.0 visible = @expert || @version == "0" endparam heading caption = "Texture Parameters" visible = @expert || @version == "0" endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @expert || @version == "0" endparam param tweight caption = "Texture weight" default = 0.0 visible = @expert || @version == "0" endparam param ts caption = "Texture scale" default = 100.0 visible = @expert || @version == "0" endparam param tc caption = "Texture modifier" default = 5.0 visible = @expert || @version == "0" endparam param pwr caption = "Texture power" default = 0.25 visible = @expert || @version == "0" endparam param addfbm caption = "Add fBm" default = false visible=@expert || @version == "0" endparam param tfbm caption = "fBm Amount" default = 1.0 visible=@addfbm==true&& (@expert || @version == "0") endparam func fn1 caption = "Texture Function 1" default = sqr() visible = @expert || @version == "0" endfunc func fn2 caption = "Texture Function 2" default = acos() visible = @expert || @version == "0" endfunc func fn6 caption = "Texture Function 3" default = round() visible = @expert || @version == "0" endfunc heading caption = "Morph Parameters" visible = (@change == 0 && @exp1 == (1,0) && @exp2 == (1,0) \ && @exp3 == (1,0) && @tw == (0,0) && @tw2 == (0,0) && @tw3 == \ (0,0) && @tha2 == false)&& @expert endheading heading caption = "Morph Parameters [active]" visible = (@change != 0 || @exp1 != (1,0) || @exp2 != (1,0) || \ @exp3 != (1,0) || @tw != (0,0) || @tw2 != (0,0) || \ @tw3 != (0,0) || @tha2 == true)&& @expert endheading param showm caption = "Morph Parameters" hint = "Additional shaping parameters and functions." default = false visible = @expert endparam param tha2 caption = "Morph -> Morph II" default = false visible = @showm&& @expert endparam param change caption = "Morph" enum = "1""2""3""4""5""6""7""8""9""10""11" default = 0 visible = @showm && @expert endparam param mmode caption = "Z1 Mode" enum = "z+|z|""z-|z|""|z|-z" default = 0 hint = "Defines relationship of z1 to z in 1st z block" visible = @showm && @tha2 && @expert endparam param zchange1 caption = "Z1 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z1 variable " visible = @showm && @tha2 && @expert endparam param mmode2 caption = "Z2 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z2 to z in 2nd z block" visible = @showm && @tha2 && @change > 0 && @expert endparam param zchange2 caption = "Z2 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z2 variable " visible = @showm && @tha2 && @change > 0 && @expert endparam param mmode3 caption = "Z3 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z3 to z in 3rd z block" visible = @showm && @tha2 && @change > 5 && @expert endparam param zchange3 caption = "Z3 type" enum = "|z|""atan2(z)""real(z)""imag(z)" hint = "Determines the character of z3 variable " default = 0 visible = @showm && @tha2 && @change > 5 && @expert endparam complex param exp1 caption = "Bias 1" default = (1,0) visible = @showm && @expert endparam complex param exp3 caption = "Bias 2" default = (1,0) visible = @showm && @change > 0 && @expert endparam complex param exp2 caption = "Bias 3" default = (1,0) visible = @showm && @change > 5&& @expert endparam complex param exp4 caption = "Bias Z1" default = (1,0) visible = @tha2 && @showm && @expert endparam complex param exp5 caption = "Bias Z2" default = (1,0) visible = @tha2 && @showm && @change > 0 && @expert endparam complex param exp6 caption = "Bias Z3" default = (1,0) visible = @tha2 && @showm && @change > 5 && @expert endparam complex param tw caption = "Twist 1" default = (0,0) visible = @showm && @expert endparam complex param tw2 caption = "Twist 2" default = (0,0) visible = @showm && @change > 0 && @expert endparam complex param tw3 caption = "Twist 3" default = (0,0) visible = @showm && @change > 5 && @expert endparam complex param tw4 caption = "Twist Z1" default = (0,0) visible = @tha2 && @showm && @expert endparam complex param tw5 caption = "Twist Z2" default = (0,0) visible = @tha2 && @showm && @change > 0 && @expert endparam complex param tw6 caption = "Twist Z3" default = (0,0) visible = @tha2 && @showm && @change > 5 && @expert endparam param op caption = "Operator" enum = "+""-""*""/""^" default = 0 visible = @showm && @change > 5&& @expert endparam func nufunc caption = "Morph function 1" default = ident() visible = @showm&& @expert endfunc func nufunc2 caption = "Morph function 2" default = ident () visible = @showm && @change > 0&& @expert endfunc func nufunc3 caption = "Morph function 3" default = ident () visible = @showm && @change > 5 && @expert endfunc func nufunc4 caption = "Morph function Z1" default = ident () visible = @tha2 && @showm && @expert endfunc func nufunc5 caption = "Morph function Z2" default = zero () visible = @tha2 && @showm && @change > 0 && @expert endfunc func nufunc6 caption = "Morph function Z3" default = zero () visible = @tha2 && @showm && @change > 5 && @expert endfunc heading caption = "Toby's Texture Parameters" visible = @expert endheading param advt caption = "Texture Parameters" default = true visible = false endparam float param txamt caption = "Overall Tx Percent" default = 100.0 hint = "Controls the amount of \ Random, fBm, Decimal, Popgnarl and Additional \ texture applied cumulatively." visible = @advt && @expert endparam heading caption = "Decimal" visible = @advt && @decamt == 0 && @expert endheading heading caption = "Decimal [active]" visible = @advt && @decamt != 0 && @expert endheading param advd caption = "Decimal Texturing" default = false visible = @advt && @expert endparam float param decamt caption = "Decimal Tx Amount" default = 0.0 visible = @advt && @advd && @expert endparam param dec_init caption = "Decimal Initialisation" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advd && @expert endparam param ztyp2 caption = "Init z type" enum = "#z""Morph z""Trap z""Trap #z""Trap dist" "Raw dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Decimal Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && \ @expert endparam func fntx4 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Decimal Initialization'" visible = @advt && @advd && @expert endfunc func fntx5 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Decimal Initialization'" visible = @advt && @advd && @expert endfunc param dec_type caption = "Decimal Type" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advd && @expert endparam func fndec caption = "Type Function" default = atanh () hint = "Active when 'Decimal Type' = 'All Functions'" visible = @advt && @advd && @dec_type == 4 && @expert endfunc complex param txia2 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && @expert endparam complex param txib2 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && @expert endparam complex param txic2 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && @expert endparam float param dec_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Decimal Type'" visible = @advt && @advd && @expert endparam float param dec_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present) defined in 'Decimal Type'" visible = @advt && @advd && @dec_type > 4 && @expert endparam float param dectxt caption = "Decimal Depth" default = 1.0 hint = "Changes the amount and to some extent \ the pattern of the texture." visible = @advt && @advd && @expert endparam float param dec_limit caption = "Decimal Limit" default = 2.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advd && @expert endparam complex param exad4 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 1st (or only) variable present defined in \ 'Decimal Initialization'" visible = @advt && @advd && @expert endparam complex param exad5 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 2nd variable (when present) defined in \ 'Decimal Initialization'" visible = @advt && @advd && !(@dec_init == 0 ||@dec_init == 5 || \ @dec_init == 6) && @expert endparam float param dec_size caption = "Decimal Size" default = 1.0 visible = @advt && @advd && @expert endparam param dec_sgn caption = "Apply Decimal Sign?" default = true visible = @advt && @advd && @expert endparam heading caption = "Popgnarl" visible = @advt && @gnarl_amt == 0 && @expert endheading heading caption = "Popgnarl [active]" visible = @advt && @gnarl_amt != 0 && @expert endheading param advpg caption = "Popgnarl Texturing" default = false visible = @advt && @expert endparam float param gnarl_amt caption = "Popgnarl Amount" default = 0.0 min = 0.0 visible = @advt && @advpg && @expert endparam param gnarl_init caption = "Popgnarl Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advpg && @expert endparam param ztyp3 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Trap dist" "Raw dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Popgnarl Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam func fntx6 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg && @expert endfunc func fntx7 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg && @expert endfunc complex param txia3 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam complex param txib3 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam complex param txic3 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam complex param exad6 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 1st (or only) variable defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && @expert endparam complex param exad7 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 2nd variable (when present) defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && !(@gnarl_init == 0 || @gnarl_init == 5 || \ @gnarl_init == 6 || @gnarl_init == 21) && @expert endparam param gnarl_type caption = "Popgnarl Mode" enum = "real" "imag" "real+imag" "real*imag" "real-imag" \ "real/imag" "imag/real" "real^imag" "imag^real" \ "1/real" "1/imag" "angle" "magnitude" "arith. mean" \ "geom. mean" visible = @advt && @advpg && @expert endparam func fng caption = "Mode Function" default = abs() hint = "Acts on the variables in 'Popgnarl Mode'" visible = @advt && @advpg && @gnarl_type < 11 && @expert endfunc param gnarl_scaling caption = "Popgnarl Scaling" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advpg && @expert endparam func fngnarl caption = "Scaling Function" default = atanh () visible = @advt && @advpg && @gnarl_scaling == 4 && @expert endfunc float param gnarl_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @expert endparam float param gnarl_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present)defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @gnarl_scaling > 4 && @expert endparam param gnarl_form caption = "Popgnarl Formula" enum = "gnarl" "popcorn" "popsicle" "tannous" "narlog" visible = @advt && @advpg && @expert endparam float param gnarl_limit caption = "Popgnarl Limit" default = 1.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advpg && @expert endparam float param gnarl_size caption = "Popgnarl Size" default = 1.0 visible = @advt && @advpg && @expert endparam int param gnarl_octaves caption = "Popgnarl Octaves" default = 5 min = 1 visible = @advt && @advpg && @expert endparam heading caption = "Geometrix" visible = @advt && @trtxt == 0&& @expert endheading heading caption = "Geometrix [active]" visible = @advt && @trtxt != 0 && @expert endheading param advtr caption = "Geometrix Texturing" default = false visible = @advt && @expert endparam float param trtxt caption = "Geometrix Tx Amt" default = 0.0 visible = @advt && @advtr&& @expert endparam param trinit caption = "Geometrix Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advtr&& @expert endparam param ztyp5 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Trap dist" "Raw dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Geometrix Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam func fntx10 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr && @expert endfunc func fntx11 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr && @expert endfunc complex param trxia caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam complex param trxib caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam complex param trxic caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam complex param exad10 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'Geometrix Initialization'" visible = @advt && @advtr&& @expert endparam complex param exad11 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'Geometrix Initialization'" visible = @advt && @advtr && !(@trinit == 0 ||@trinit == 5 || @trinit == 6 ||\ @trinit == 21)&& @expert endparam float param exp caption = "Contrast" default = 0.6 visible = @advt && @advtr && @expert hint = "Higher values intensify the contrast between texture sections. If \ you find burned-out areas of texture try lowering this value" endparam float param scc caption = "Density" default = 1.0 hint = "Higher values create finer detail in the texture" visible = @advt && @advtr && @expert endparam float param trp1 caption = "Scale" default = 1 visible = @advt && @advtr&& @expert hint = "Densest texture is at '1'. Try other values and increase the \ 'Density' value to achieve different texture patterns" endparam float param freq caption = "Definition 1" default = 10 visible = @advt && @advtr && @expert hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition and/or complexity" endparam float param trp2 caption = "Definition 2" default = .7 hint = "Works interactively with other 'Definition' params. Lower values \ yield more texture definition" visible = @advt && @advtr&& @expert endparam float param trp3 caption = "Definition 3" default = .7 hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition" visible = @advt && @advtr && @expert endparam float param shad1 caption = "Shading 1" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam float param shad2 caption = "Shading 2" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam float param shad3 caption = "Shading 3" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam float param shad4 caption = "Shading 4" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam func fnzr caption = "Z function 1" default = ident() visible = @advt && @advtr && @expert endfunc func fnzi caption = "Z function 2" default = ident() visible = @advt && @advtr && @expert endfunc func fn1tx caption = "Real function" default = sqrt() visible = @advt && @advtr && @expert endfunc func fn2tx caption = "Imag function" default = ident() visible = @advt && @advtr&& @expert endfunc func fn3tx caption = "Overall function" default = asin() visible = @advt && @advtr&& @expert endfunc float param geo_limit caption = "Geometrix Limit" default = 0.0 hint = "Low values limit texture contrast. Zero is 'off'" visible = @advt && @advtr&& @expert endparam bool param geo_sgn caption = "Soften Texture" default = false visible = @advt && @advtr&& @expert endparam } simpletraps_EnhancedII {; Ron Barnett, July 2005 ; simpletraps_Enhanced with coloring methods by ; Ken Childress added global: ; Color range variables and initialization. color colorMap [200, 2] int ranges = 8 int colorsUsed = 0 int offset = 0 if (@colorPreset == "Gradient") colorsUsed = @ncolor elseif (@colorPreset == "Generate") colorsUsed = @numRanges elseif (@colorPreset == "Custom") colorsUsed = @colorRanges else colorsUsed = @ncolor endif if (@colorPreset == "Gradient") ; Use the gradient for the color ranges. ranges = @totalColors offset = 0 elseif (@colorPreset == "Custom") ; User specified custom range. ; Initial values by Toby Marshall. colorMap [0,0] = @colorMax1, colorMap [0,1] = @colorMin1 colorMap [1,0] = @colorMax2, colorMap [1,1] = @colorMin2 colorMap [2,0] = @colorMax3, colorMap [2,1] = @colorMin3 colorMap [3,0] = @colorMax4, colorMap [3,1] = @colorMin4 colorMap [4,0] = @colorMax5, colorMap [4,1] = @colorMin5 colorMap [5,0] = @colorMax6, colorMap [5,1] = @colorMin6 colorMap [6,0] = @colorMax7, colorMap [6,1] = @colorMin7 colorMap [7,0] = @colorMax8, colorMap [7,1] = @colorMin8 colorMap [8,0] = @customMax9, colorMap [8,1] = @customMin9 colorMap [9,0] = @customMax10, colorMap [9,1] = @customMin10 colorMap [10,0] = @customMax11, colorMap [10,1] = @customMin11 colorMap [11,0] = @customMax12, colorMap [11,1] = @customMin12 colorMap [12,0] = @customMax13, colorMap [12,1] = @customMin13 colorMap [13,0] = @customMax14, colorMap [13,1] = @customMin14 colorMap [14,0] = @customMax15, colorMap [14,1] = @customMin15 colorMap [15,0] = @customMax16, colorMap [15,1] = @customMin16 colorMap [16,0] = @customMax17, colorMap [16,1] = @customMin17 colorMap [17,0] = @customMax18, colorMap [17,1] = @customMin18 colorMap [18,0] = @customMax19, colorMap [18,1] = @customMin19 colorMap [19,0] = @customMax20, colorMap [19,1] = @customMin20 colorMap [20,0] = @customMax21, colorMap [20,1] = @customMin21 colorMap [21,0] = @customMax22, colorMap [21,1] = @customMin22 colorMap [22,0] = @customMax23, colorMap [22,1] = @customMin23 colorMap [23,0] = @customMax24, colorMap [23,1] = @customMin24 ranges = @colorRanges offset = @colorOffset elseif (@colorPreset == "Generate") ; Compute the color ranges using the gradient. ranges = 0 offset = @colorOffset while ranges < @numRanges color gradientColor = gradient(ranges/@numRanges) colorMap [ranges,0] = hsl(hue(gradientColor), sat(gradientColor), @luminanceUpper) colorMap [ranges,1] = hsl(hue(gradientColor), sat(gradientColor), @luminanceLower) ranges = ranges + 1 endwhile elseif (@colorPreset == "Default") ; colorMap [0,0] = @defaultMax1, colorMap [0,1] = @defaultMin1 colorMap [1,0] = @defaultMax2, colorMap [1,1] = @defaultMin2 colorMap [2,0] = @defaultMax3, colorMap [2,1] = @defaultMin3 colorMap [3,0] = @defaultMax4, colorMap [3,1] = @defaultMin4 colorMap [4,0] = @defaultMax5, colorMap [4,1] = @defaultMin5 colorMap [5,0] = @defaultMax6, colorMap [5,1] = @defaultMin6 colorMap [6,0] = @defaultMax7, colorMap [6,1] = @defaultMin7 colorMap [7,0] = @defaultMax8, colorMap [7,1] = @defaultMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Default 12") ; Created by Toby Marshall. colorMap [0,0] = @default12Max1, colorMap [0,1] = @default12Min1 colorMap [1,0] = @default12Max2, colorMap [1,1] = @default12Min2 colorMap [2,0] = @default12Max3, colorMap [2,1] = @default12Min3 colorMap [3,0] = @default12Max4, colorMap [3,1] = @default12Min4 colorMap [4,0] = @default12Max5, colorMap [4,1] = @default12Min5 colorMap [5,0] = @default12Max6, colorMap [5,1] = @default12Min6 colorMap [6,0] = @default12Max7, colorMap [6,1] = @default12Min7 colorMap [7,0] = @default12Max8, colorMap [7,1] = @default12Min8 colorMap [8,0] = @default12Max9, colorMap [8,1] = @default12Min9 colorMap [9,0] = @default12Max10, colorMap [9,1] = @default12Min10 colorMap [10,0] = @default12Max11, colorMap [10,1] = @default12Min11 colorMap [11,0] = @default12Max12, colorMap [11,1] = @default12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Default 16") ; Created by Toby Marshall. colorMap [0,0] = @default16Max1, colorMap [0,1] = @default16Min1 colorMap [1,0] = @default16Max2, colorMap [1,1] = @default16Min2 colorMap [2,0] = @default16Max3, colorMap [2,1] = @default16Min3 colorMap [3,0] = @default16Max4, colorMap [3,1] = @default16Min4 colorMap [4,0] = @default16Max5, colorMap [4,1] = @default16Min5 colorMap [5,0] = @default16Max6, colorMap [5,1] = @default16Min6 colorMap [6,0] = @default16Max7, colorMap [6,1] = @default16Min7 colorMap [7,0] = @default16Max8, colorMap [7,1] = @default16Min8 colorMap [8,0] = @default16Max9, colorMap [8,1] = @default16Min9 colorMap [9,0] = @default16Max10, colorMap [9,1] = @default16Min10 colorMap [10,0] = @default16Max11, colorMap [10,1] = @default16Min11 colorMap [11,0] = @default16Max12, colorMap [11,1] = @default16Min12 colorMap [12,0] = @default16Max13, colorMap [12,1] = @default16Min13 colorMap [13,0] = @default16Max14, colorMap [13,1] = @default16Min14 colorMap [14,0] = @default16Max15, colorMap [14,1] = @default16Min15 colorMap [15,0] = @default16Max16, colorMap [15,1] = @default16Min16 ranges = 16 offset = @colorOffset elseif (@colorPreset == "Default 24") ; Created by Toby Marshall. colorMap [0,0] = @default24Max1, colorMap [0,1] = @default24Min1 colorMap [1,0] = @default24Max2, colorMap [1,1] = @default24Min2 colorMap [2,0] = @default24Max3, colorMap [2,1] = @default24Min3 colorMap [3,0] = @default24Max4, colorMap [3,1] = @default24Min4 colorMap [4,0] = @default24Max5, colorMap [4,1] = @default24Min5 colorMap [5,0] = @default24Max6, colorMap [5,1] = @default24Min6 colorMap [6,0] = @default24Max7, colorMap [6,1] = @default24Min7 colorMap [7,0] = @default24Max8, colorMap [7,1] = @default24Min8 colorMap [8,0] = @default24Max9, colorMap [8,1] = @default24Min9 colorMap [9,0] = @default24Max10, colorMap [9,1] = @default24Min10 colorMap [10,0] = @default24Max11, colorMap [10,1] = @default24Min11 colorMap [11,0] = @default24Max12, colorMap [11,1] = @default24Min12 colorMap [12,0] = @default24Max13, colorMap [12,1] = @default24Min13 colorMap [13,0] = @default24Max14, colorMap [13,1] = @default24Min14 colorMap [14,0] = @default24Max15, colorMap [14,1] = @default24Min15 colorMap [15,0] = @default24Max16, colorMap [15,1] = @default24Min16 colorMap [16,0] = @default24Max17, colorMap [16,1] = @default24Min17 colorMap [17,0] = @default24Max18, colorMap [17,1] = @default24Min18 colorMap [18,0] = @default24Max19, colorMap [18,1] = @default24Min19 colorMap [19,0] = @default24Max20, colorMap [19,1] = @default24Min20 colorMap [20,0] = @default24Max21, colorMap [20,1] = @default24Min21 colorMap [21,0] = @default24Max22, colorMap [21,1] = @default24Min22 colorMap [22,0] = @default24Max23, colorMap [22,1] = @default24Min23 colorMap [23,0] = @default24Max24, colorMap [23,1] = @default24Min24 ranges = 24 offset = @colorOffset elseif (@colorPreset == "Color Wheel 12") ; Created by Toby Marshall. colorMap [0,0] = @colorWheel12Max1, colorMap [0,1] = @colorWheel12Min1 colorMap [1,0] = @colorWheel12Max2, colorMap [1,1] = @colorWheel12Min2 colorMap [2,0] = @colorWheel12Max3, colorMap [2,1] = @colorWheel12Min3 colorMap [3,0] = @colorWheel12Max4, colorMap [3,1] = @colorWheel12Min4 colorMap [4,0] = @colorWheel12Max5, colorMap [4,1] = @colorWheel12Min5 colorMap [5,0] = @colorWheel12Max6, colorMap [5,1] = @colorWheel12Min6 colorMap [6,0] = @colorWheel12Max7, colorMap [6,1] = @colorWheel12Min7 colorMap [7,0] = @colorWheel12Max8, colorMap [7,1] = @colorWheel12Min8 colorMap [8,0] = @colorWheel12Max9, colorMap [8,1] = @colorWheel12Min9 colorMap [9,0] = @colorWheel12Max10, colorMap [9,1] = @colorWheel12Min10 colorMap [10,0] = @colorWheel12Max11, colorMap [10,1] = @colorWheel12Min11 colorMap [11,0] = @colorWheel12Max12, colorMap [11,1] = @colorWheel12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Alhambra 8") ; Created by Toby Marshall. colorMap [0,0] = @alhambra8Max1, colorMap [0,1] = @alhambra8Min1 colorMap [1,0] = @alhambra8Max2, colorMap [1,1] = @alhambra8Min2 colorMap [2,0] = @alhambra8Max3, colorMap [2,1] = @alhambra8Min3 colorMap [3,0] = @alhambra8Max4, colorMap [3,1] = @alhambra8Min4 colorMap [4,0] = @alhambra8Max5, colorMap [4,1] = @alhambra8Min5 colorMap [5,0] = @alhambra8Max6, colorMap [5,1] = @alhambra8Min6 colorMap [6,0] = @alhambra8Max7, colorMap [6,1] = @alhambra8Min7 colorMap [7,0] = @alhambra8Max8, colorMap [7,1] = @alhambra8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Belvedere 8") ; Created by Toby Marshall. colorMap [0,0] = @belvedere8Max1, colorMap [0,1] = @belvedere8Min1 colorMap [1,0] = @belvedere8Max2, colorMap [1,1] = @belvedere8Min2 colorMap [2,0] = @belvedere8Max3, colorMap [2,1] = @belvedere8Min3 colorMap [3,0] = @belvedere8Max4, colorMap [3,1] = @belvedere8Min4 colorMap [4,0] = @belvedere8Max5, colorMap [4,1] = @belvedere8Min5 colorMap [5,0] = @belvedere8Max6, colorMap [5,1] = @belvedere8Min6 colorMap [6,0] = @belvedere8Max7, colorMap [6,1] = @belvedere8Min7 colorMap [7,0] = @belvedere8Max8, colorMap [7,1] = @belvedere8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Bouquet 8") ; Created by Toby Marshall. colorMap [0,0] = @bouquet8Max1, colorMap [0,1] = @bouquet8Min1 colorMap [1,0] = @bouquet8Max2, colorMap [1,1] = @bouquet8Min2 colorMap [2,0] = @bouquet8Max3, colorMap [2,1] = @bouquet8Min3 colorMap [3,0] = @bouquet8Max4, colorMap [3,1] = @bouquet8Min4 colorMap [4,0] = @bouquet8Max5, colorMap [4,1] = @bouquet8Min5 colorMap [5,0] = @bouquet8Max6, colorMap [5,1] = @bouquet8Min6 colorMap [6,0] = @bouquet8Max7, colorMap [6,1] = @bouquet8Min7 colorMap [7,0] = @bouquet8Max8, colorMap [7,1] = @bouquet8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Color Switch 8") ; Created by Toby Marshall. colorMap [0,0] = @colorSwitch8Max1, colorMap [0,1] = @colorSwitch8Min1 colorMap [1,0] = @colorSwitch8Max2, colorMap [1,1] = @colorSwitch8Min2 colorMap [2,0] = @colorSwitch8Max3, colorMap [2,1] = @colorSwitch8Min3 colorMap [3,0] = @colorSwitch8Max4, colorMap [3,1] = @colorSwitch8Min4 colorMap [4,0] = @colorSwitch8Max5, colorMap [4,1] = @colorSwitch8Min5 colorMap [5,0] = @colorSwitch8Max6, colorMap [5,1] = @colorSwitch8Min6 colorMap [6,0] = @colorSwitch8Max7, colorMap [6,1] = @colorSwitch8Min7 colorMap [7,0] = @colorSwitch8Max8, colorMap [7,1] = @colorSwitch8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Evening Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @eveningSky8Max1, colorMap [0,1] = @eveningSky8Min1 colorMap [1,0] = @eveningSky8Max2, colorMap [1,1] = @eveningSky8Min2 colorMap [2,0] = @eveningSky8Max3, colorMap [2,1] = @eveningSky8Min3 colorMap [3,0] = @eveningSky8Max4, colorMap [3,1] = @eveningSky8Min4 colorMap [4,0] = @eveningSky8Max5, colorMap [4,1] = @eveningSky8Min5 colorMap [5,0] = @eveningSky8Max6, colorMap [5,1] = @eveningSky8Min6 colorMap [6,0] = @eveningSky8Max7, colorMap [6,1] = @eveningSky8Min7 colorMap [7,0] = @eveningSky8Max8, colorMap [7,1] = @eveningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fantasia 8") ; Created by Toby Marshall. colorMap [0,0] = @fantasia8Max1, colorMap [0,1] = @fantasia8Min1 colorMap [1,0] = @fantasia8Max2, colorMap [1,1] = @fantasia8Min2 colorMap [2,0] = @fantasia8Max3, colorMap [2,1] = @fantasia8Min3 colorMap [3,0] = @fantasia8Max4, colorMap [3,1] = @fantasia8Min4 colorMap [4,0] = @fantasia8Max5, colorMap [4,1] = @fantasia8Min5 colorMap [5,0] = @fantasia8Max6, colorMap [5,1] = @fantasia8Min6 colorMap [6,0] = @fantasia8Max7, colorMap [6,1] = @fantasia8Min7 colorMap [7,0] = @fantasia8Max8, colorMap [7,1] = @fantasia8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Flowering Orchard 8") ; Created by Toby Marshall. colorMap [0,0] = @floweringOrchard8Max1, colorMap [0,1] = @floweringOrchard8Min1 colorMap [1,0] = @floweringOrchard8Max2, colorMap [1,1] = @floweringOrchard8Min2 colorMap [2,0] = @floweringOrchard8Max3, colorMap [2,1] = @floweringOrchard8Min3 colorMap [3,0] = @floweringOrchard8Max4, colorMap [3,1] = @floweringOrchard8Min4 colorMap [4,0] = @floweringOrchard8Max5, colorMap [4,1] = @floweringOrchard8Min5 colorMap [5,0] = @floweringOrchard8Max6, colorMap [5,1] = @floweringOrchard8Min6 colorMap [6,0] = @floweringOrchard8Max7, colorMap [6,1] = @floweringOrchard8Min7 colorMap [7,0] = @floweringOrchard8Max8, colorMap [7,1] = @floweringOrchard8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Morning Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @morningSky8Max1, colorMap [0,1] = @morningSky8Min1 colorMap [1,0] = @morningSky8Max2, colorMap [1,1] = @morningSky8Min2 colorMap [2,0] = @morningSky8Max3, colorMap [2,1] = @morningSky8Min3 colorMap [3,0] = @morningSky8Max4, colorMap [3,1] = @morningSky8Min4 colorMap [4,0] = @morningSky8Max5, colorMap [4,1] = @morningSky8Min5 colorMap [5,0] = @morningSky8Max6, colorMap [5,1] = @morningSky8Min6 colorMap [6,0] = @morningSky8Max7, colorMap [6,1] = @morningSky8Min7 colorMap [7,0] = @morningSky8Max8, colorMap [7,1] = @morningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel 8") ; colorMap [0,0] = @pastel8Max1, colorMap [0,1] = @pastel8Min1 colorMap [1,0] = @pastel8Max2, colorMap [1,1] = @pastel8Min2 colorMap [2,0] = @pastel8Max3, colorMap [2,1] = @pastel8Min3 colorMap [3,0] = @pastel8Max4, colorMap [3,1] = @pastel8Min4 colorMap [4,0] = @pastel8Max5, colorMap [4,1] = @pastel8Min5 colorMap [5,0] = @pastel8Max6, colorMap [5,1] = @pastel8Min6 colorMap [6,0] = @pastel8Max7, colorMap [6,1] = @pastel8Min7 colorMap [7,0] = @pastel8Max8, colorMap [7,1] = @pastel8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel Rainbow 8") ; Created by Angela Wilczynski. colorMap [0,0] = @pastelRainbow8Max1, colorMap [0,1] = @pastelRainbow8Min1 colorMap [1,0] = @pastelRainbow8Max2, colorMap [1,1] = @pastelRainbow8Min2 colorMap [2,0] = @pastelRainbow8Max3, colorMap [2,1] = @pastelRainbow8Min3 colorMap [3,0] = @pastelRainbow8Max4, colorMap [3,1] = @pastelRainbow8Min4 colorMap [4,0] = @pastelRainbow8Max5, colorMap [4,1] = @pastelRainbow8Min5 colorMap [5,0] = @pastelRainbow8Max6, colorMap [5,1] = @pastelRainbow8Min6 colorMap [6,0] = @pastelRainbow8Max7, colorMap [6,1] = @pastelRainbow8Min7 colorMap [7,0] = @pastelRainbow8Max8, colorMap [7,1] = @pastelRainbow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Showtime 8") ; Created by Toby Marshall. colorMap [0,0] = @showtime8Max1, colorMap [0,1] = @showtime8Min1 colorMap [1,0] = @showtime8Max2, colorMap [1,1] = @showtime8Min2 colorMap [2,0] = @showtime8Max3, colorMap [2,1] = @showtime8Min3 colorMap [3,0] = @showtime8Max4, colorMap [3,1] = @showtime8Min4 colorMap [4,0] = @showtime8Max5, colorMap [4,1] = @showtime8Min5 colorMap [5,0] = @showtime8Max6, colorMap [5,1] = @showtime8Min6 colorMap [6,0] = @showtime8Max7, colorMap [6,1] = @showtime8Min7 colorMap [7,0] = @showtime8Max8, colorMap [7,1] = @showtime8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Soleil 8") ; Created by Toby Marshall. colorMap [0,0] = @soleil8Max1, colorMap [0,1] = @soleil8Min1 colorMap [1,0] = @soleil8Max2, colorMap [1,1] = @soleil8Min2 colorMap [2,0] = @soleil8Max3, colorMap [2,1] = @soleil8Min3 colorMap [3,0] = @soleil8Max4, colorMap [3,1] = @soleil8Min4 colorMap [4,0] = @soleil8Max5, colorMap [4,1] = @soleil8Min5 colorMap [5,0] = @soleil8Max6, colorMap [5,1] = @soleil8Min6 colorMap [6,0] = @soleil8Max7, colorMap [6,1] = @soleil8Min7 colorMap [7,0] = @soleil8Max8, colorMap [7,1] = @soleil8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Chill 8") ; Created by Toby Marshall. colorMap [0,0] = @chillMax1, colorMap [0,1] = @chillMin1 colorMap [1,0] = @chillMax2, colorMap [1,1] = @chillMin2 colorMap [2,0] = @chillMax3, colorMap [2,1] = @chillMin3 colorMap [3,0] = @chillMax4, colorMap [3,1] = @chillMin4 colorMap [4,0] = @chillMax5, colorMap [4,1] = @chillMin5 colorMap [5,0] = @chillMax6, colorMap [5,1] = @chillMin6 colorMap [6,0] = @chillMax7, colorMap [6,1] = @chillMin7 colorMap [7,0] = @chillMax8, colorMap [7,1] = @chillMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Cloud Nine 8") ; Created by Toby Marshall. colorMap [0,0] = @cloudNineMax1, colorMap [0,1] = @cloudNineMin1 colorMap [1,0] = @cloudNineMax2, colorMap [1,1] = @cloudNineMin2 colorMap [2,0] = @cloudNineMax3, colorMap [2,1] = @cloudNineMin3 colorMap [3,0] = @cloudNineMax4, colorMap [3,1] = @cloudNineMin4 colorMap [4,0] = @cloudNineMax5, colorMap [4,1] = @cloudNineMin5 colorMap [5,0] = @cloudNineMax6, colorMap [5,1] = @cloudNineMin6 colorMap [6,0] = @cloudNineMax7, colorMap [6,1] = @cloudNineMin7 colorMap [7,0] = @cloudNineMax8, colorMap [7,1] = @cloudNineMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "La Terra 8") ; Created by Toby Marshall. colorMap [0,0] = @laTerraMax1, colorMap [0,1] = @laTerraMin1 colorMap [1,0] = @laTerraMax2, colorMap [1,1] = @laTerraMin2 colorMap [2,0] = @laTerraMax3, colorMap [2,1] = @laTerraMin3 colorMap [3,0] = @laTerraMax4, colorMap [3,1] = @laTerraMin4 colorMap [4,0] = @laTerraMax5, colorMap [4,1] = @laTerraMin5 colorMap [5,0] = @laTerraMax6, colorMap [5,1] = @laTerraMin6 colorMap [6,0] = @laTerraMax7, colorMap [6,1] = @laTerraMin7 colorMap [7,0] = @laTerraMax8, colorMap [7,1] = @laTerraMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Santa Fe 8") ; Created by Toby Marshall. colorMap [0,0] = @santaFe8Max1, colorMap [0,1] = @santaFe8Min1 colorMap [1,0] = @santaFe8Max2, colorMap [1,1] = @santaFe8Min2 colorMap [2,0] = @santaFe8Max3, colorMap [2,1] = @santaFe8Min3 colorMap [3,0] = @santaFe8Max4, colorMap [3,1] = @santaFe8Min4 colorMap [4,0] = @santaFe8Max5, colorMap [4,1] = @santaFe8Min5 colorMap [5,0] = @santaFe8Max6, colorMap [5,1] = @santaFe8Min6 colorMap [6,0] = @santaFe8Max7, colorMap [6,1] = @santaFe8Min7 colorMap [7,0] = @santaFe8Max8, colorMap [7,1] = @santaFe8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Spring 8") ; Created by Toby Marshall. colorMap [0,0] = @spring8Max1, colorMap [0,1] = @spring8Min1 colorMap [1,0] = @spring8Max2, colorMap [1,1] = @spring8Min2 colorMap [2,0] = @spring8Max3, colorMap [2,1] = @spring8Min3 colorMap [3,0] = @spring8Max4, colorMap [3,1] = @spring8Min4 colorMap [4,0] = @spring8Max5, colorMap [4,1] = @spring8Min5 colorMap [5,0] = @spring8Max6, colorMap [5,1] = @spring8Min6 colorMap [6,0] = @spring8Max7, colorMap [6,1] = @spring8Min7 colorMap [7,0] = @spring8Max8, colorMap [7,1] = @spring8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Summer 8") ; Created by Toby Marshall. colorMap [0,0] = @summer8Max1, colorMap [0,1] = @summer8Min1 colorMap [1,0] = @summer8Max2, colorMap [1,1] = @summer8Min2 colorMap [2,0] = @summer8Max3, colorMap [2,1] = @summer8Min3 colorMap [3,0] = @summer8Max4, colorMap [3,1] = @summer8Min4 colorMap [4,0] = @summer8Max5, colorMap [4,1] = @summer8Min5 colorMap [5,0] = @summer8Max6, colorMap [5,1] = @summer8Min6 colorMap [6,0] = @summer8Max7, colorMap [6,1] = @summer8Min7 colorMap [7,0] = @summer8Max8, colorMap [7,1] = @summer8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fall 8") ; Created by Toby Marshall. colorMap [0,0] = @fall8Max1, colorMap [0,1] = @fall8Min1 colorMap [1,0] = @fall8Max2, colorMap [1,1] = @fall8Min2 colorMap [2,0] = @fall8Max3, colorMap [2,1] = @fall8Min3 colorMap [3,0] = @fall8Max4, colorMap [3,1] = @fall8Min4 colorMap [4,0] = @fall8Max5, colorMap [4,1] = @fall8Min5 colorMap [5,0] = @fall8Max6, colorMap [5,1] = @fall8Min6 colorMap [6,0] = @fall8Max7, colorMap [6,1] = @fall8Min7 colorMap [7,0] = @fall8Max8, colorMap [7,1] = @fall8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Winter 8") ; Created by Toby Marshall. colorMap [0,0] = @winter8Max1, colorMap [0,1] = @winter8Min1 colorMap [1,0] = @winter8Max2, colorMap [1,1] = @winter8Min2 colorMap [2,0] = @winter8Max3, colorMap [2,1] = @winter8Min3 colorMap [3,0] = @winter8Max4, colorMap [3,1] = @winter8Min4 colorMap [4,0] = @winter8Max5, colorMap [4,1] = @winter8Min5 colorMap [5,0] = @winter8Max6, colorMap [5,1] = @winter8Min6 colorMap [6,0] = @winter8Max7, colorMap [6,1] = @winter8Min7 colorMap [7,0] = @winter8Max8, colorMap [7,1] = @winter8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Mojave 8") ; Created by Toby Marshall. colorMap [0,0] = @mojave8Max1, colorMap [0,1] = @mojave8Min1 colorMap [1,0] = @mojave8Max2, colorMap [1,1] = @mojave8Min2 colorMap [2,0] = @mojave8Max3, colorMap [2,1] = @mojave8Min3 colorMap [3,0] = @mojave8Max4, colorMap [3,1] = @mojave8Min4 colorMap [4,0] = @mojave8Max5, colorMap [4,1] = @mojave8Min5 colorMap [5,0] = @mojave8Max6, colorMap [5,1] = @mojave8Min6 colorMap [6,0] = @mojave8Max7, colorMap [6,1] = @mojave8Min7 colorMap [7,0] = @mojave8Max8, colorMap [7,1] = @mojave8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green 8") ; colorMap [0,0] = @goldGreen8Max1, colorMap [0,1] = @goldGreen8Min1 colorMap [1,0] = @goldGreen8Max2, colorMap [1,1] = @goldGreen8Min2 colorMap [2,0] = @goldGreen8Max3, colorMap [2,1] = @goldGreen8Min3 colorMap [3,0] = @goldGreen8Max4, colorMap [3,1] = @goldGreen8Min4 colorMap [4,0] = @goldGreen8Max5, colorMap [4,1] = @goldGreen8Min5 colorMap [5,0] = @goldGreen8Max6, colorMap [5,1] = @goldGreen8Min6 colorMap [6,0] = @goldGreen8Max7, colorMap [6,1] = @goldGreen8Min7 colorMap [7,0] = @goldGreen8Max8, colorMap [7,1] = @goldGreen8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green Alt 8") ; colorMap [0,0] = @goldGreenAlt8Max1, colorMap [0,1] = @goldGreenAlt8Min1 colorMap [1,0] = @goldGreenAlt8Max2, colorMap [1,1] = @goldGreenAlt8Min2 colorMap [2,0] = @goldGreenAlt8Max3, colorMap [2,1] = @goldGreenAlt8Min3 colorMap [3,0] = @goldGreenAlt8Max4, colorMap [3,1] = @goldGreenAlt8Min4 colorMap [4,0] = @goldGreenAlt8Max5, colorMap [4,1] = @goldGreenAlt8Min5 colorMap [5,0] = @goldGreenAlt8Max6, colorMap [5,1] = @goldGreenAlt8Min6 colorMap [6,0] = @goldGreenAlt8Max7, colorMap [6,1] = @goldGreenAlt8Min7 colorMap [7,0] = @goldGreenAlt8Max8, colorMap [7,1] = @goldGreenAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver 8") ; colorMap [0,0] = @goldSilver8Max1, colorMap [0,1] = @goldSilver8Min1 colorMap [1,0] = @goldSilver8Max2, colorMap [1,1] = @goldSilver8Min2 colorMap [2,0] = @goldSilver8Max3, colorMap [2,1] = @goldSilver8Min3 colorMap [3,0] = @goldSilver8Max4, colorMap [3,1] = @goldSilver8Min4 colorMap [4,0] = @goldSilver8Max5, colorMap [4,1] = @goldSilver8Min5 colorMap [5,0] = @goldSilver8Max6, colorMap [5,1] = @goldSilver8Min6 colorMap [6,0] = @goldSilver8Max7, colorMap [6,1] = @goldSilver8Min7 colorMap [7,0] = @goldSilver8Max8, colorMap [7,1] = @goldSilver8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue 8") ; colorMap [0,0] = @silverBlue8Max1, colorMap [0,1] = @silverBlue8Min1 colorMap [1,0] = @silverBlue8Max2, colorMap [1,1] = @silverBlue8Min2 colorMap [2,0] = @silverBlue8Max3, colorMap [2,1] = @silverBlue8Min3 colorMap [3,0] = @silverBlue8Max4, colorMap [3,1] = @silverBlue8Min4 colorMap [4,0] = @silverBlue8Max5, colorMap [4,1] = @silverBlue8Min5 colorMap [5,0] = @silverBlue8Max6, colorMap [5,1] = @silverBlue8Min6 colorMap [6,0] = @silverBlue8Max7, colorMap [6,1] = @silverBlue8Min7 colorMap [7,0] = @silverBlue8Max8, colorMap [7,1] = @silverBlue8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue Alt 8") ; colorMap [0,0] = @silverBlueAlt8Max1, colorMap [0,1] = @silverBlueAlt8Min1 colorMap [1,0] = @silverBlueAlt8Max2, colorMap [1,1] = @silverBlueAlt8Min2 colorMap [2,0] = @silverBlueAlt8Max3, colorMap [2,1] = @silverBlueAlt8Min3 colorMap [3,0] = @silverBlueAlt8Max4, colorMap [3,1] = @silverBlueAlt8Min4 colorMap [4,0] = @silverBlueAlt8Max5, colorMap [4,1] = @silverBlueAlt8Min5 colorMap [5,0] = @silverBlueAlt8Max6, colorMap [5,1] = @silverBlueAlt8Min6 colorMap [6,0] = @silverBlueAlt8Max7, colorMap [6,1] = @silverBlueAlt8Min7 colorMap [7,0] = @silverBlueAlt8Max8, colorMap [7,1] = @silverBlueAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver Alt 8") ; colorMap [0,0] = @goldSilverAlt8Max1, colorMap [0,1] = @goldSilverAlt8Min1 colorMap [1,0] = @goldSilverAlt8Max2, colorMap [1,1] = @goldSilverAlt8Min2 colorMap [2,0] = @goldSilverAlt8Max3, colorMap [2,1] = @goldSilverAlt8Min3 colorMap [3,0] = @goldSilverAlt8Max4, colorMap [3,1] = @goldSilverAlt8Min4 colorMap [4,0] = @goldSilverAlt8Max5, colorMap [4,1] = @goldSilverAlt8Min5 colorMap [5,0] = @goldSilverAlt8Max6, colorMap [5,1] = @goldSilverAlt8Min6 colorMap [6,0] = @goldSilverAlt8Max7, colorMap [6,1] = @goldSilverAlt8Min7 colorMap [7,0] = @goldSilverAlt8Max8, colorMap [7,1] = @goldSilverAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 8") ; colorMap [0,0] = @purpleYellow8Max1, colorMap [0,1] = @purpleYellow8Min1 colorMap [1,0] = @purpleYellow8Max2, colorMap [1,1] = @purpleYellow8Min2 colorMap [2,0] = @purpleYellow8Max3, colorMap [2,1] = @purpleYellow8Min3 colorMap [3,0] = @purpleYellow8Max4, colorMap [3,1] = @purpleYellow8Min4 colorMap [4,0] = @purpleYellow8Max5, colorMap [4,1] = @purpleYellow8Min5 colorMap [5,0] = @purpleYellow8Max6, colorMap [5,1] = @purpleYellow8Min6 colorMap [6,0] = @purpleYellow8Max7, colorMap [6,1] = @purpleYellow8Min7 colorMap [7,0] = @purpleYellow8Max8, colorMap [7,1] = @purpleYellow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow Alt 8") ; colorMap [0,0] = @purpleYellowAlt8Max1, colorMap [0,1] = @purpleYellowAlt8Min1 colorMap [1,0] = @purpleYellowAlt8Max2, colorMap [1,1] = @purpleYellowAlt8Min2 colorMap [2,0] = @purpleYellowAlt8Max3, colorMap [2,1] = @purpleYellowAlt8Min3 colorMap [3,0] = @purpleYellowAlt8Max4, colorMap [3,1] = @purpleYellowAlt8Min4 colorMap [4,0] = @purpleYellowAlt8Max5, colorMap [4,1] = @purpleYellowAlt8Min5 colorMap [5,0] = @purpleYellowAlt8Max6, colorMap [5,1] = @purpleYellowAlt8Min6 colorMap [6,0] = @purpleYellowAlt8Max7, colorMap [6,1] = @purpleYellowAlt8Min7 colorMap [7,0] = @purpleYellowAlt8Max8, colorMap [7,1] = @purpleYellowAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fourth of July 3") ; colorMap [0,0] = @fourthOfJuly3Max1, colorMap [0,1] = @fourthOfJuly3Min1 colorMap [1,0] = @fourthOfJuly3Max2, colorMap [1,1] = @fourthOfJuly3Min2 colorMap [2,0] = @fourthOfJuly3Max3, colorMap [2,1] = @fourthOfJuly3Min3 ranges = 3 offset = @colorOffset elseif (@colorPreset == "Blue/Silver 2") ; colorMap [0,0] = @blueSilver2Max1, colorMap [0,1] = @blueSilver2Min1 colorMap [1,0] = @blueSilver2Max2, colorMap [1,1] = @blueSilver2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Blue/White 2") ; colorMap [0,0] = @blueWhite2Max1, colorMap [0,1] = @blueWhite2Min1 colorMap [1,0] = @blueWhite2Max2, colorMap [1,1] = @blueWhite2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Magenta 2") ; colorMap [0,0] = @cyanMagenta2Max1, colorMap [0,1] = @cyanMagenta2Min1 colorMap [1,0] = @cyanMagenta2Max2, colorMap [1,1] = @cyanMagenta2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Yellow 2") ; colorMap [0,0] = @cyanYellow2Max1, colorMap [0,1] = @cyanYellow2Min1 colorMap [1,0] = @cyanYellow2Max2, colorMap [1,1] = @cyanYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Gold/Green 2") ; colorMap [0,0] = @goldGreen2Max1, colorMap [0,1] = @goldGreen2Min1 colorMap [1,0] = @goldGreen2Max2, colorMap [1,1] = @goldGreen2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 2") ; colorMap [0,0] = @purpleYellow2Max1, colorMap [0,1] = @purpleYellow2Min1 colorMap [1,0] = @purpleYellow2Max2, colorMap [1,1] = @purpleYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Red/Tan 2") ; colorMap [0,0] = @redTan2Max1, colorMap [0,1] = @redTan2Min1 colorMap [1,0] = @redTan2Max2, colorMap [1,1] = @redTan2Min2 ranges = 2 offset = @colorOffset endif if (@perturbRanges == "8 Range Custom" && ranges == 8) ; If we are using 8 ranges, then take into account ; the rangeOrdering parameter. int range[8] ; Convert range ordering from 12345678 to .12345678 float ordering = @rangeOrder / 100000000 ; Convert .12345678 to 1.2345678 ordering = ordering * 10 ; Get the first digit int range[0] = trunc (ordering) ; Subract the first digit, i.e. 1.2345678 becomes .2345678 ordering = ordering - range[0] ; Get the second digit ordering = ordering * 10 int range[1] = trunc (ordering) ordering = ordering - range[1] ; Get the third digit ordering = ordering * 10 int range[2] = trunc (ordering) ordering = ordering - range[2] ; Get the fourth digit ordering = ordering * 10 int range[3] = trunc (ordering) ordering = ordering - range[3] ; Get the fifth digit ordering = ordering * 10 int range[4] = trunc (ordering) ordering = ordering - range[4] ; Get the sixth digit ordering = ordering * 10 int range[5] = trunc (ordering) ordering = ordering - range[5] ; Get the seventh digit ordering = ordering * 10 int range[6] = trunc (ordering) ordering = ordering - range[6] ; Get the eighth digit ordering = ordering * 10 int range[7] = round (ordering) ordering = ordering - range[7] ; Save the original order of the maps. color tempMap[8,2] tempMap[0,0] = colorMap[0,0], tempMap[0,1] = colorMap[0,1] tempMap[1,0] = colorMap[1,0], tempMap[1,1] = colorMap[1,1] tempMap[2,0] = colorMap[2,0], tempMap[2,1] = colorMap[2,1] tempMap[3,0] = colorMap[3,0], tempMap[3,1] = colorMap[3,1] tempMap[4,0] = colorMap[4,0], tempMap[4,1] = colorMap[4,1] tempMap[5,0] = colorMap[5,0], tempMap[5,1] = colorMap[5,1] tempMap[6,0] = colorMap[6,0], tempMap[6,1] = colorMap[6,1] tempMap[7,0] = colorMap[7,0], tempMap[7,1] = colorMap[7,1] ; Reorder the maps according to the rangeOrder parameter. colorMap[0,0] = tempMap[range[0]-1,0], colorMap[0,1] = tempMap[range[0]-1,1] colorMap[1,0] = tempMap[range[1]-1,0], colorMap[1,1] = tempMap[range[1]-1,1] colorMap[2,0] = tempMap[range[2]-1,0], colorMap[2,1] = tempMap[range[2]-1,1] colorMap[3,0] = tempMap[range[3]-1,0], colorMap[3,1] = tempMap[range[3]-1,1] colorMap[4,0] = tempMap[range[4]-1,0], colorMap[4,1] = tempMap[range[4]-1,1] colorMap[5,0] = tempMap[range[5]-1,0], colorMap[5,1] = tempMap[range[5]-1,1] colorMap[6,0] = tempMap[range[6]-1,0], colorMap[6,1] = tempMap[range[6]-1,1] colorMap[7,0] = tempMap[range[7]-1,0], colorMap[7,1] = tempMap[range[7]-1,1] endif ; init: float d1 = 0 float d2 = 0 float f1 = 0 float f2 = 0 float ftemp = 0 float d = 0 complex cd = 0 float distance = 0 float min_dist = 1e+318 if @trap_mode == 5 || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 \ || @trap_mode == 9 min_dist = 0 endif bool trapped = false float x = 0 float y = 0 float rr = 0 float theta = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 complex w = 0 complex ww = 0 float t = 0 float sum = 0.0 float freq = 1.0 float exptrap_p = 0 float exptrap_z = 1 complex f_p = 0 float distsum = 0 float distave = 0 complex trap_z = 0 complex trap_p = 0 int trap_iter = 0 int max_iter = 0 int iter = 0 bool msk = @mask complex af1 = 0.0 complex af2 = 0.0 complex astroid = 0.0 float fx = 0 float fy = 0 float trapangle = 0 complex off = 0 float pa = 0 float pb = 0 float pc = 0 complex ppower = (0,0) float psa1 = 0 float psa2 = 0 float psa3 = 0 float psa4 = 0 float psa5 = 0 float psa6 = 0 float psa7 = 0 complex qa = 0 complex qb = 0 complex qc = 0 complex qy = 0 complex qx = 0 complex cx = 0 complex cy = 0 complex pstart = 0 float colorfactor = 0 float colorPos = 0 float colr = 0 int rangenum = 0 float extent = 1 - @extent float hval = 0 IF @no_of_iters == 0 max_iter = #maxiter - @skip ELSE max_iter = @skip + @no_of_iters ENDIF IF (@mask == true) && (@rmask == true) msk = false ENDIF int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF loop: exptrap_z = exptrap_z + exp(-cabs(#z)) if iter == 0 trapangle = @ang*180/(2*#pi) off = @offset if @movecenter == true off = off + #pixel endif pa = @a pb = @b pc = @cp pstart = @start ppower = @apwr psa1 = @sa1 psa2 = @sa2 psa3 = @sa3 psa4 = @sa4 psa5 = @sa5 psa6 = @sa6 psa7 = @sa7 endif if @increment == true trapangle = trapangle + @rot*180/(2*#pi) off = off + @offx + flip(@offy) pstart = pstart + @incstartx + flip(@incstarty) pa = pa + @polar1 pb = pb + @polar2 pc = pc + @polar3 ppower = ppower + @papwr psa1 = psa1 + @isa1 psa2 = psa2 + @isa2 psa3 = psa3 + @isa3 psa4 = psa4 + @isa4 psa5 = psa5 + @isa5 psa6 = psa6 + @isa6 psa7 = psa7 + @isa7 endif complex z1 = (#z+off)*(1-@weight) + (xx + flip(yy))*@weight fx = real(z1)*cos(trapangle) - imag(z1)*sin(trapangle) fy = imag(z1)*cos(trapangle) + real(z1)*sin(trapangle) z1 = fx + flip(fy) x = real(z1)+real(off) y = imag(z1)+imag(off) IF @type == 0 f_p = z1 -(imag(#z)+flip(real(#z)))+pstart IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 5*abs(real(z1)+imag(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(z1-f_p)/cabs(d/5-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/5-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/5-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/5-(x*y)) ENDIF distsum = d + distsum distave = distsum/(iter+1) ELSEIF @type == 1 f_p = z1 - real(#z)*imag(#z)+pstart IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 100*abs(real(z1)*imag(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(z1-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/100-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/100-(x*y)) ENDIF distsum = d + distsum distave = distsum/(iter+1) ELSEIF @type == 2 f_p = z1 - real(#z)/imag(#z)+pstart IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 3*abs(real(z1)/imag(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(z1-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/3-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/3-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/3-(x*y)) ENDIF distsum = d + distsum distave = distsum/(iter+1) ELSEIF @type == 3 f_p = z1 - imag(#z)/real(#z)+pstart IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = abs(imag(z1)/real(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(z1-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d-(x*y)) ENDIF distsum = d + distsum distave = distsum/(iter+1) ELSEIF @type == 4 f_p = z1 - (ceil(real(#z))+ flip(floor(imag(#z))))+pstart IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = abs(real(z1)-ceil(real(z1)))+abs(imag(z1)-floor(imag(z1))) IF @trapvar == 1 d = 25*abs(d*d - d) ELSEIF @trapvar == 2 d = 25*abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 10*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 10*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(#z-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d-(x*y)) ENDIF distsum = d + distsum distave = distsum/(iter+1) ELSEIF @type == 5 f_p = z1 - (round(real(#z))+ flip(trunc(imag(#z))))+pstart IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 3*(abs(real(z1)-round(real(z1)))+abs(imag(z1)-trunc(imag(z1)))) IF @trapvar == 1 d = 2*abs(d*d - d) ELSEIF @trapvar == 2 d = 2*abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 5*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 3*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = cabs(#z-f_p)/cabs(d/3-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/3-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/3-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/3-(x*y)) ENDIF distsum = d + distsum distave = distsum/(iter+1) ELSEIF @type == 6 f_p = z1 - (ceil(real(#z))+ flip(floor(imag(#z))))+pstart IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = real(z1)-ceil(real(z1))+imag(z1)-floor(imag(z1)) IF @trapvar == 1 d = 5*abs(d*d - d) ELSEIF @trapvar == 2 d = 5*abs(d*d*d - d) ELSEIF @trapvar == 3 d = 5*abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 5*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 5*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 5*cabs(#z-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d-(x*y)) ENDIF distsum = abs(d) + distsum distave = distsum/(iter+1) IF d < 0 d = 1e+318 ENDIF ELSEIF @type == 7 f_p = z1 - (round(real(#z))+ flip(trunc(imag(#z))))+pstart IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = real(z1)-round(real(z1))+imag(z1)-trunc(imag(z1)) IF @trapvar == 1 d = 5*abs(d*d - d) ELSEIF @trapvar == 2 d = 5*abs(d*d*d - d) ELSEIF @trapvar == 3 d = 5*abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 5*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 5*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 5*cabs(#z-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d-(x*y)) ENDIF distsum = abs(d) + distsum distave = distsum/(iter+1) IF d < 0 d = 1e+318 ENDIF ELSEIF @type == 8 IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF f1 = 0 f2 = 1 d1 =real(z1)-f2 WHILE d1 > 0 ftemp = f2 f2 = f1 + f2 f1 = ftemp d1 = real(z1)-f2 ENDWHILE d = real(z1)-f1 ; which fibonacci number is closest IF d < abs(d1) d1 = d ENDIF f1 = 0 f2 = 1 d2 = imag(z1)-f2 WHILE d2 > 0 ftemp = f2 f2 = f1 + f2 f1 = ftemp d2 = imag(z1)-f2 ENDWHILE d = real(z1)-f1 ; which fibonacci number is closest IF d < abs(d2) d2 = d ENDIF d = 5*(abs(d1) + abs(d2)) f_p = z1 - (d1 + flip(d2))+pstart IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = cabs(z1-f_p)/cabs(d/5-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/5-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/5-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/5-(x*y)) ENDIF distsum = d + distsum distave = distsum/(iter+1) ELSEIF @type == 9 IF @distvar=="Sum" ; Sum f_p = z1 -(@fn4(pa*real(#z))+flip(@fn5(0.2*pb*imag(#z))))+pstart ELSEIF @distvar =="Difference" ; Difference f_p = z1 -(@fn4(pa*real(#z))-flip(@fn5(0.2*pb*imag(#z))))+pstart ELSEIF @distvar =="Product" ; Product f_p = z1 -(@fn4(pa*real(#z))*flip(@fn5(pb*imag(#z))))+pstart ELSEIF @distvar=="Quotient1" ; Quotient 1 f_p = z1 -(@fn4(pa*real(#z))/flip(@fn5(0.2*pb*imag(#z))))+pstart ELSEIF @distvar=="Quotient2" ; Quotient 2 f_p = z1 -(flip(@fn5(0.2*pb*imag(#z)))/@fn4(pa*real(#z)))+pstart ELSEIF @distvar=="Exp1" ; Exp 1 f_p = z1 -(@fn4(pa*real(#z))^flip(@fn5(0.2*pb*imag(#z))))+pstart ELSEIF @distvar=="Exp2" ; Exp 2 f_p = z1 -(flip(@fn5(0.2*pb*imag(#z)))^@fn4(pa*real(#z)))+pstart endif IF @distvar=="Lemniscate" ; Lemniscate IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa*(cos(2*theta))^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Cardiod" ; Cardiod IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa*(1-cos(theta)) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Conchoid" ; Conchoid IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.1*(pa + pb*cos(theta))/cos(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Cycloid" ; Cycloid IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = cabs(z1 + @offset) f_p = z1 -(@fn4(rr*(theta-sin(theta)))+flip(@fn5(rr*(1-cos(theta)))))+pstart ELSEIF @distvar=="Archimedes" ; Archimedes IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa*theta f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Log spiral" ; Log spiral IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = exp(pa*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Rose" ; Rose IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa*cos(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Bifolium" ; Bifolium IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 4*pa*sin(theta)*sin(theta)*cos(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Astroid" ; Astroid IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = @afn1(theta)^real(ppower) af2 = @afn2(theta)^imag(ppower) astroid = @ar*(af1 + flip(af2)) f_p = z1 - astroid + pstart ELSEIF @distvar=="Cissoid of Diocles" ; Cissoid of Diocles IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.2*pa*sin(theta)*tan(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Cochleoid" ; Cochleoid IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 1.25*pa*sin(theta)/theta f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Folium of Descartes" ; Folium of Descartes IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.3*pa*tan(theta)/(cos(theta)*(1+tan(theta)^3)) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Limacon of Pascal" ; Limacon of Pascal IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.05*pb + pa*cos(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Lituus" ; Lituus IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.25*pa/theta^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Nephroid" ; Nephroid IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 3*@afn1(theta) - @afn1(theta/3) af2 = 3*@afn2(theta) - @afn2(theta/3) astroid = 0.5*pa*(af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Strophoid" ; Strophoid IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.1*pb*sin(pa-2*theta)/sin(pa-theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Witch of Agnesi" ; Witch of Agnesi IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 2*cotan(theta) af2 = 1-cos(2*theta) astroid = 0.1*pa*(af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Curtate Cycloid" ; Curtate Cycloid IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = pa*theta - 0.1*pb*@afn2(theta) af2 = pa - 0.1*pb*@afn1(theta) astroid = af1 + flip(af2) f_p = z1 - astroid+pstart ELSEIF @distvar=="Epicycloid" ; Epicycloid IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = (5*pa+pb)*@afn1(theta) - pb*@afn1((5*pa+pb)*theta/pb) af2 = (5*pa+pb)*@afn2(theta) - pb*@afn2((5*pa+pb)*theta/pb) astroid = 0.1*(af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Ellipse Evolute" ; Ellipse Evolute IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = (pa^2-(0.7*pb)^2)/pa*@afn1(theta)^(real(ppower)) af2 = ((0.7*pb)^2-pa^2)/(0.7*pb)*@afn2(theta)^(imag(ppower)) astroid = 0.1*(af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Tractrix" ; Tractrix IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = pa*(log(tan(theta/2))-@afn1(theta)) af2 = pa*@afn2(theta) astroid = 0.25*(af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Kampyle of Eudoxus" ; Kampyle of Eudoxus IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.02*pa/cos(theta)^2 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Circle Catacaustic" ; Circle Catacaustic IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 2*pb*(1-3*2*pb*cos(theta)+2*2*pb*cos(theta)^3)/(-(1+2*(2*pb)^2)+3*2*pb*cos(theta)) af2 = 2*(2*pb)^2*sin(theta)^3/(1+2*(2*pb)^2-3*2*pb*cos(theta)) astroid = pa*(af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Deltoid Catacaustic" ; Deltoid Catacaustic IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 3*@afn1(theta) + @afn1(3*theta+#pi/2*pb) - @afn1(#pi/2*pb) af2 = 3*@afn2(theta) + @afn2(3*theta+#pi/2*pb) - @afn2(#pi/2*pb) astroid = 0.25*pa*(af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Ellipse Catacaustic" ; Ellipse Catacaustic IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 4*pa*(pa-pb)*(pa*pb)*sin(theta)^3/(pa^2+pb^2+(pb^2-pa^2)*cos(2*theta)) af2 = 4*pb*(pb^2-pa^2)*cos(theta)^3/(pa^2+pb^2+3*(pb^2-pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Log Spiral Catacaustic" ; Log Spiral Catacaustic IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 0.2*pb*exp(0.1*pb*theta)*(0.1*pb*cos(theta)-sin(theta))/(1+(0.1*pb)^2) af2 = 0.2*pb*exp(0.1*pb*theta)*(0.1*pb*cos(theta)+sin(theta))/(1+(0.1*pb)^2) astroid = pa*(af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Butterfly" ; Butterfly IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.25*pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Gear Curve" ; Gear Curve IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = (0.25*pa+1/(5*pb)*tanh(5*pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*pa+1/(5*pb)*tanh(5*pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Arachnida 1" ; Arachnida 1 IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.25*pa*sin(@pn*theta)/sin((@pn-1)*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Arachnida 2" ; Arachnida 2 IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.25*pa*sin(@pn*theta)/sin((@pn+1)*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Cayley's Sextic" ; Cayley's Sextic IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 1.5*pa*cos(theta)^3 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Cycloid of Seva" ; Cycloid of Seva IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.5*pa*(1+2*cos(2*theta)) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Devil's Curve" ; Devil's Curve IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = (((0.5*pa*sin(theta))^2-(0.2*pb*cos(theta))^2)/(sin(theta)^2-cos(theta)^2))^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Eight Curve" ; Eight Curve IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa*cos(theta)^(-2)*cos(2*theta)^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Epispiral" ; Epispiral IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.25*pa/cos(@pn*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Hipopede" ; Hipopede IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = (0.5*pb*(0.5*pa-(0.5*pb)^2*cos(theta)))^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Maltese Cross" ; Maltese Cross IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.2*pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Ophiuride" ; Ophiuride IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = (0.01*pb*sin(theta)-pa*cos(theta))*tan(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Quadratrix of Hippias" ; Quadratrix of Hippias IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa*theta/sin(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Poinsot Spiral 1" ; Poinsot Spiral 1 IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa/cosh(@pn*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Poinsot Spiral 2" ; Poinsot Spiral 2 IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa/sinh(@pn*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Quadrifolium" ; Quadrifolium IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa*sin(2*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Scarabaeus" ; Scarabaeus IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.25*pb*cos(2*theta)-0.5*pa*cos(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Semicubical Parabola" ; Semicubical Parabola IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.005*pa*tan(theta)^2/cos(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Swastika Curve" ; Swastika Curve IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.25*pa*(sin(theta)*cos(theta)/(sin(theta)^4-cos(theta)^4))^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Trifolium" ; Trifolium IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = -pa*cos(3*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Tschirnhausen Cubic" ; Tschirnhausen Cubic IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa/cos(theta/3)^3 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Bicorn" ; Bicorn IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = pa*sin(theta) af2 = pa*cos(theta)^2*(2+cos(theta))/(3+sin(theta)^2) astroid = (af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Cruciform" ; Cruciform IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 0.1*pa/cos(theta) af2 = 0.02*pb/sin(theta) astroid = (af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Knot Curve" ; Knot Curve cy = imag(#z) qa = 1 qb = -2 qc = 1 - 3*cy^2 - 2*cy^3 if @negroot == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa*(qx + flip(cy)) ELSEIF @distvar=="Ampersand" ; Ampersand qa = 4 qb = 6*real(#z)^2 - 3*real(#z) - 3 qc = 6*real(#z)^4 - 13*real(#z)^3 + 19*real(#z)^2 if @negroot == true qy = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qy = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa*(real(#z) + flip(qy)) ELSEIF @distvar=="Bean" ; Bean IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = pa*(@afn1(theta)^real(@apwr) + @afn2(theta)^imag(@apwr)) f_p = z1 -(@fn4(af1*cos(theta))+flip(@fn5(af1*sin(theta))))+pstart ELSEIF @distvar=="Bicuspid" ; Bicuspid cy = imag(#z) qa = 1 qb = -2*(0.05*pb)^2 qc = (0.05*pb)^4 - (cy^2 - (0.05*pb)^2)^2 if @negroot == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - 2.25*pa*(qx + flip(cy)) ELSEIF @distvar=="Bow" ; Bow IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 0.1*pa*(1-tan(theta)^2)*cos(theta) af2 = 0.1*pb*(1-tan(theta)^2)*sin(theta) astroid = (af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Cassini Ovals" ; Cassini Ovals IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF if @negroot == true rr = 0.5*pa*(cos(2*theta)-((pb*0.1/(pa*0.5))^4-sin(2*theta)^2)^0.5)^0.5 else rr = 0.5*pa*(cos(2*theta)+((pb*0.1/(pa*0.5))^4-sin(2*theta)^2)^0.5)^0.5 endif f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Circle" ; Circle IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa*sin(theta)^2 + 0.2*pb*cos(theta)^2 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Trident" ; Trident cx = real(#z) cy = cx^2 + 0.1*pb/cx f_p = z1 - 0.1*pa*(cx + flip(cy)) ELSEIF @distvar =="Stirrup Curve" cy = imag(#z) ; Stirrup Curve qa = 1 qb = -2 qc = 1-cy^2*(cy-1)*(cy-2)*(cy+5) if @negroot == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa*(qx + flip(cy)) ELSEIF @distvar =="Diamond" ; Diamond f_p = z1 - pa*@safn(abs((real(#z)*psa1))+abs((flip(imag(#z))^psa2))-1) ELSEIF @distvar=="Dumbbell Curve" ; Dumbbell Curve cx = real(#z) cy = (cx^4 - cx^6)^0.5 f_p = z1 - 4*pa*(cx + flip(cy)) ELSEIF @distvar=="Teardrop Curve" ; Teardrop Curve IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = pa*cos(theta) af2 = 0.5*pb*sin(theta)*sin(theta/2)^(@pn-1) astroid = (af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Happy Accident" ; Happy Accident f_p = z1 - 15*pa*@safn((((real(#z)*psa4)^(1+psa2))+ \ (flip(imag(#z))^2*psa3))*atan2((flip(imag(#z))^psa7)* \ (real(#z)^psa5))-psa1* \ (flip(imag(#z))^psa6)) ELSEIF @distvar=="Hyperbola" ; Hyperbola IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.35*pa*(1/cos(2*theta))^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Kappa Curve" ; Kappa Curve IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.1*pa*tan(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Piriform" ; Piriform IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 0.1*pa*(1+sin(theta)) af2 = 0.1*pb*cos(theta)*(1+sin(theta)) astroid = (af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Keratoid Cusp" ; Keratoid Cusp cx = real(#z) qa = 1 qb = -cx^2 qc = -cx^5 if @negroot == true qy = (-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa) else qy = (-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa) endif f_p = z1 - 2.5*pa*(cx + flip(qy)) ELSEIF @distvar=="Serpentine Curve" ; Serpentine Curve IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 0.2*pa*cotan(theta) af2 = 0.2*pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Line" ; Line cx = real(#z) cy = cx f_p = z1 - 3*pa*(cx + flip(cy)) ELSEIF @distvar=="Links Curve" ;Links Curve cx = real(#z) qa = 1 qb = 2*cx^2-6*cx qc = cx^4-2*cx^3+cx^2 if @negroot == true qy = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qy = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa*(cx + flip(qy)) ELSEIF @distvar=="Parabola" ; Parabola cy = imag(#z) cx = 10*pb*cy^2 f_p = z1 - 0.65*pa*(cx + flip(cy)) ELSEIF @distvar=="Trefoil" ; Trefoil IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.1*pa/cos(3*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Trident of Descartes" ; Trident of Descartes cx = real(#z) cy = (cx-0.2*pb)*(cx+0.2*pb)*(cx-0.4*pb)/cx f_p = z1 - pa*(cx + flip(cy)) ELSEIF @distvar=="Trisectrix of Maclaurin" ; Trisectrix of Maclaurin IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = 0.5*pa*sin(3*theta)/sin(2*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Atzema Spiral" ; Atzema Spiral IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF af1 = 0.5*pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) f_p = z1 - astroid+pstart ELSEIF @distvar=="Rose of Troy" ; Rose of Troy IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pc*(1+10*pa*sin(4*pb*theta)) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Cotes' Spiral" ; Cotes' Spiral IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa/cosh(pb*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Dipole Curve" ; Dipole Curve IF @t2 == 1 theta = atan(imag(#z)/real(#z)) ELSE theta = atan2(imag(#z)/real(#z)) ENDIF rr = pa*(cos(theta))^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))+pstart ELSEIF @distvar=="Polytrope" ; Polytrope cx = real(#z) cy = 1/cx^@pn f_p = z1 - 0.00005*pa*(cx + flip(cy)) ENDIF IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @distvar=="Sum" IF @absval == true cd = cabs(#z) - cabs((@fn4(pa*real(z1)) + flip(@fn5(0.2*pb*imag(z1))))) ELSE cd = #z - (@fn4(real(pa*z1)) - flip(@fn5(0.2*pb*imag(z1)))) ENDIF ELSEIF @distvar =="Difference" IF @absval == true cd = cabs(#z) - cabs((@fn4(pa*real(z1)) - flip(@fn5(0.2*pb*imag(z1))))) ELSE cd = #z - (@fn4(pa*real(z1)) + flip(@fn5(0.2*pb*imag(z1)))) ENDIF ELSEIF @distvar =="Product" IF @absval == true cd = cabs(#z) - cabs((@fn4(pa*real(z1))*flip(@fn5(pb*imag(z1))))) ELSE cd = #z - @fn4((pa*real(z1))*flip(@fn5(pb*imag(z1)))) ENDIF ELSEIF @distvar=="Quotient1" IF @absval == true cd = cabs(#z) - cabs((@fn4(pa*real(z1))/flip(@fn5(0.2*pb*imag(z1))))) ELSE cd = #z - (@fn4(pa*real(z1))/flip(@fn5(0.2*pb*imag(z1)))) ENDIF ELSEIF @distvar=="Quotient2" IF @absval == true cd = cabs(#z) - cabs((flip(@fn5(0.2*pb*imag(z1)))/@fn4(pa*real(z1)))) ELSE cd = #z - flip((@fn5(0.2*pb*imag(z1)))/@fn4(pa*real(z1))) ENDIF ELSEIF @distvar=="Exp1" IF @absval == true cd = cabs(#z) - cabs((@fn4(pa*real(z1))^flip(@fn5(0.2*pb*imag(z1))))) ELSE cd = #z - (@fn4(pa*real(z1))^flip(@fn5(0.2*pb*imag(z1)))) ENDIF ELSEIF @distvar=="Exp2" IF @absval == true cd = cabs(#z) - cabs((flip(@fn5(0.2*pb*imag(z1)))^@fn4(pa*real(z1)))) ELSE cd = #z - (flip(@fn5(0.2*pb*imag(z1)))^@fn4(pa*real(z1))) ENDIF endif IF @distvar=="Lemniscate" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*(cos(2*theta))^0.5 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Cardiod" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*(1-cos(theta)) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Conchoid" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.1*(pa + pb*cos(theta))/cos(theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Cycloid" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = cabs(z1 + @offset) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*(theta-sin(theta))) - flip(@fn5(rr*(1-cos(theta))))) ELSE cd = #z - @fn4(rr*(theta-sin(theta))) - flip(@fn5(rr*(1-cos(theta)))) ENDIF ELSEIF @distvar=="Archimedes" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*theta IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Log spiral" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = exp(pa*theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Rose" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*cos(theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Bifolium" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 4*pa*sin(theta)*sin(theta)*cos(theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Astroid" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = @afn1(theta)^real(ppower) af2 = @afn2(theta)^imag(ppower) astroid = @ar*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Cissoid of Diocles" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.2*pa*sin(theta)*tan(theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Cochleoid" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 1.25*pa*sin(theta)/theta IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Folium of Descartes" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.3*pa*tan(theta)/(cos(theta)*(1+tan(theta)^3)) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Limacon of Pascal" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.05*pb + pa*cos(theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Lituus" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa/theta^0.5 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Nephroid" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 3*@afn1(theta) - @afn1(theta/3) af2 = 3*@afn2(theta) - @afn2(theta/3) astroid = 0.5*pa*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Strophoid" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.1*pb*sin(pa-2*theta)/sin(pa-theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Witch of Agnesi" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 2*cotan(theta) af2 = 1-cos(2*theta) astroid = 0.1*pa*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Curtate Cycloid" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = pa*theta - 0.1*pb*@afn2(theta) af2 = pa - 0.1*pb*@afn1(theta) astroid = af1 + flip(af2) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Epicycloid" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = (5*pa+pb)*@afn1(theta) - pb*@afn1((5*pa+pb)*theta/pb) af2 = (5*pa+pb)*@afn2(theta) - pb*@afn2((5*pa+pb)*theta/pb) astroid = 0.1*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Ellipse Evolute" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = (pa^2-(0.7*pb)^2)/pa*@afn1(theta)^(real(ppower)) af2 = ((0.7*pb)^2-pa^2)/(0.7*pb)*@afn2(theta)^(imag(ppower)) astroid = 0.1*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Tractrix" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = pa*(log(tan(theta/2))-@afn1(theta)) af2 = pa*@afn2(theta) astroid = 0.25*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Kampyle of Eudoxus" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.02*pa/cos(theta)^2 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Circle Catacaustic" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 2*pb*(1-3*2*pb*cos(theta)+2*2*pb*cos(theta)^3)/(-(1+2*(2*pb)^2)+3*2*pb*cos(theta)) af2 = 2*(2*pb)^2*sin(theta)^3/(1+2*(2*pb)^2-3*2*pb*cos(theta)) astroid = pa*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Deltoid Catacaustic" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 3*@afn1(theta) + @afn1(3*theta+#pi/2*pb) - @afn1(#pi/2*pb) af2 = 3*@afn2(theta) + @afn2(3*theta+#pi/2*pb) - @afn2(#pi/2*pb) astroid = 0.25*pa*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Ellipse Catacaustic" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 4*pa*(pa-pb)*(pa*pb)*sin(theta)^3/(pa^2+pb^2+(pb^2-pa^2)*cos(2*theta)) af2 = 4*pb*(pb^2-pa^2)*cos(theta)^3/(pa^2+pb^2+3*(pb^2-pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Log Spiral Catacaustic" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.2*pb*exp(0.1*pb*theta)*(0.1*pb*cos(theta)-sin(theta))/(1+(0.1*pb)^2) af2 = 0.2*pb*exp(0.1*pb*theta)*(0.1*pb*cos(theta)+sin(theta))/(1+(0.1*pb)^2) astroid = pa*(af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Butterfly" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Gear Curve" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = (0.25*pa+1/(5*pb)*tanh(5*pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*pa+1/(5*pb)*tanh(5*pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Arachnida 1" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa*sin(@pn*theta)/sin((@pn-1)*theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Arachnida 2" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa*sin(@pn*theta)/sin((@pn+1)*theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Cayley's Sextic" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 1.5*pa*cos(theta)^3 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Cycloid of Seva" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.5*pa*(1+2*cos(2*theta)) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Devil's Curve" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = (((0.5*pa*sin(theta))^2-(0.2*pb*cos(theta))^2)/(sin(theta)^2-cos(theta)^2))^0.5 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Eight Curve" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*cos(theta)^(-2)*cos(2*theta)^0.5 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Epispiral" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa/cos(@pn*theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Hipopede" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = (0.5*pb*(0.5*pa-(0.5*pb)^2*cos(theta)))^0.5 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Maltese Cross" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.2*pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Ophiuride" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = (0.01*pb*sin(theta)-pa*cos(theta))*tan(theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Quadratrix of Hippias" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*theta/sin(theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Poinsot Spiral 1" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa/cosh(@pn*theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Poinsot Spiral 2" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa/sinh(@pn*theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Quadrifolium" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*sin(2*theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Scarabaeus" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pb*cos(2*theta)-0.5*pa*cos(theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Semicubical Parabola" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*(cos(2*pb*theta))^(1/(2*pb)) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Swastika Curve" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.25*pa*(sin(theta)*cos(theta)/(sin(theta)^4-cos(theta)^4))^0.5 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Trifolium" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = -pa*cos(3*theta) IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Tschirnhausen Cubic" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa/cos(theta/3)^3 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta)) + flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta)) - flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Bicorn" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = pa*sin(theta) af2 = pa*cos(theta)^2*(2+cos(theta))/(3+sin(theta)^2) astroid = (af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Cruciform" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.1*pa/cos(theta) af2 = 0.02*pb/sin(theta) astroid = (af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Knot Curve" cy = y qa = 1 qb = -2 qc = 1 - 3*cy^2 - 2*cy^3 if @negroot == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif IF @absval == true cd = cabs(#z) - cabs(pa*(qx + flip(cy))) ELSE cd = #z - pa*(qx + flip(cy)) ENDIF ELSEIF @distvar=="Ampersand" qa = 4 qb = 6*x^2 - 3*x - 3 qc = 6*x^4 - 13*x^3 + 19*x^2 if @negroot == true qy = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qy = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif IF @absval == true cd = cabs(#z) - cabs(pa*(x + flip(qy))) ELSE cd = #z - pa*(x + flip(qy)) ENDIF ELSEIF @distvar=="Bean" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = pa*(@afn1(theta)^real(@apwr) + @afn2(theta)^imag(@apwr)) IF @absval == true cd = cabs(#z) - cabs(@fn4(af1*cos(theta))+ flip(@fn5(af1*sin(theta)))) ELSE cd = #z - @fn4(af1*cos(theta))- flip(@fn5(af1*sin(theta))) ENDIF ELSEIF @distvar=="Bicuspid" cy = y qa = 1 qb = -2*(0.05*pb)^2 qc = (0.05*pb)^4 - (cy^2 - (0.05*pb)^2)^2 if @negroot == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif IF @absval == true cd = cabs(#z) - cabs(2.25*pa*(qx + flip(cy))) ELSE cd = #z - 2.25*pa*(qx + flip(cy)) ENDIF ELSEIF @distvar=="Bow" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.1*pa*(1-tan(theta)^2)*cos(theta) af2 = 0.1*pb*(1-tan(theta)^2)*sin(theta) astroid = (af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Cassini Ovals" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF if @negroot == true rr = 0.5*pa*(cos(2*theta)-((pb*0.1/(pa*0.5))^4-sin(2*theta)^2)^0.5)^0.5 else rr = 0.5*pa*(cos(2*theta)+((pb*0.1/(pa*0.5))^4-sin(2*theta)^2)^0.5)^0.5 endif IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta))- flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Circle" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*sin(theta)^2 + 0.2*pb*cos(theta)^2 IF @absval == true cd = cabs(#z) - cabs(@fn4(rr*cos(theta))+ flip(@fn5(rr*sin(theta)))) ELSE cd = #z - @fn4(rr*cos(theta))- flip(@fn5(rr*sin(theta))) ENDIF ELSEIF @distvar=="Trident" cx = x cy = cx^2 + 0.1*pb/cx IF @absval == true cd = cabs(#z) - cabs(0.1*pa*(cx + flip(cy))) ELSE cd = #z - 0.1*pa*(cx + flip(cy)) ENDIF ELSEIF @distvar =="Stirrup Curve" cy = y qa = 1 qb = -2 qc = 1-cy^2*(cy-1)*(cy-2)*(cy+5) if @negroot == true qx = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qx = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif f_p = z1 - pa*(qx + flip(cy)) IF @absval == true cd = cabs(#z) - cabs(pa*(qx + flip(cy))) ELSE cd = #z - pa*(qx + flip(cy)) ENDIF ELSEIF @distvar =="Diamond" IF @absval == true cd = cabs(#z) - cabs(pa*@safn(abs((real(z1)*psa1))+abs((flip(imag(z1))^psa2))-1)) ELSE cd = #z - pa*@safn(abs((real(z1)*psa1))+abs((flip(imag(z1))^psa2))-1) ENDIF ELSEIF @distvar=="Dumbbell Curve" cx = x cy = (cx^4 - cx^6)^0.5 IF @absval == true cd = cabs(#z) - cabs(4*pa*(cx + flip(cy))) ELSE cd = #z - 4*pa*(cx + flip(cy)) ENDIF ELSEIF @distvar=="Teardrop Curve" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = pa*cos(theta) af2 = 0.5*pb*sin(theta)*sin(theta/2)^(@pn-1) astroid = (af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Happy Accident" IF @absval == true cd = cabs(#z) - cabs(15*pa*@safn((((real(z1)*psa4)^(1+psa2))+ \ (flip(imag(z1))^2*psa3))*atan2((flip(imag(z1))^psa7)* \ (real(z1)^psa5))-psa1* \ (flip(imag(z1))^psa6))) ELSE cd = #z - 15*pa*@safn((((real(z1)*psa4)^(1+psa2))+ \ (flip(imag(z1))^2*psa3))*atan2((flip(imag(z1))^psa7)* \ (real(z1)^psa5))-psa1* \ (flip(imag(z1))^psa6)) ENDIF ELSEIF @distvar=="Hyperbola" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.35*pa*(1/cos(2*theta))^0.5 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) IF @absval == true cd = cabs(#z) - cabs((@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))) ELSE cd = #z - (@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) ENDIF ELSEIF @distvar=="Kappa Curve" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.1*pa*tan(theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) IF @absval == true cd = cabs(#z) - cabs((@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))) ELSE cd = #z - (@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) ENDIF ELSEIF @distvar=="Piriform" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.1*pa*(1+sin(theta)) af2 = 0.1*pb*cos(theta)*(1+sin(theta)) astroid = (af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Keratoid Cusp" cx = x qa = 1 qb = -cx^2 qc = -cx^5 if @negroot == true qy = (-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa) else qy = (-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa) endif IF @absval == true cd = cabs(#z) - cabs(2.5*pa*(cx + flip(qy))) ELSE cd = #z - 2.5*pa*(cx + flip(qy)) ENDIF ELSEIF @distvar=="Serpentine Curve" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.2*pa*cotan(theta) af2 = 0.2*pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Line" cx = x cy = cx IF @absval == true cd = cabs(#z) - cabs(3*pa*(cx + flip(cy))) ELSE cd = #z - 3*pa*(cx + flip(cy)) ENDIF ELSEIF @distvar=="Links Curve" cx = x qa = 1 qb = 2*cx^2-6*cx qc = cx^4-2*cx^3+cx^2 if @negroot == true qy = ((-qb - (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 else qy = ((-qb + (qb^2 - 4*qa*qc)^0.5)/(2*qa))^0.5 endif IF @absval == true cd = cabs(#z) - cabs(pa*(cx + flip(qy))) ELSE cd = #z - pa*(cx + flip(qy)) ENDIF ELSEIF @distvar=="Parabola" cy = y cx = 10*pb*cy^2 IF @absval == true cd = cabs(#z) - cabs(0.65*pa*(cx + flip(cy))) ELSE cd = #z - 0.65*pa*(cx + flip(cy)) ENDIF ELSEIF @distvar=="Trefoil" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.1*pa/cos(3*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) IF @absval == true cd = cabs(#z) - cabs((@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))) ELSE cd = #z - (@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) ENDIF ELSEIF @distvar=="Trident of Descartes" cx = x cy = (cx-0.2*pb)*(cx+0.2*pb)*(cx-0.4*pb)/cx IF @absval == true cd = cabs(#z) - cabs(pa*(cx + flip(cy))) ELSE cd = #z - pa*(cx + flip(cy)) ENDIF ELSEIF @distvar=="Trisectrix of Maclaurin" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = 0.5*pa*sin(3*theta)/sin(2*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) IF @absval == true cd = cabs(#z) - cabs((@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))) ELSE cd = #z - (@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) ENDIF ELSEIF @distvar=="Atzema Spiral" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF af1 = 0.5*pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) IF @absval == true cd = cabs(#z) - cabs(astroid) ELSE cd = #z - astroid ENDIF ELSEIF @distvar=="Rose of Troy" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pc*(1+10*pa*sin(4*pb*theta)) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) IF @absval == true cd = cabs(#z) - cabs((@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))) ELSE cd = #z - (@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) ENDIF ELSEIF @distvar=="Cotes' Spiral" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa/cosh(pb*theta) f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) IF @absval == true cd = cabs(#z) - cabs((@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))) ELSE cd = #z - (@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) ENDIF ELSEIF @distvar=="Dipole Curve" IF @t2 == 1 theta = atan(y/x) ELSE theta = atan2(y/x) ENDIF rr = pa*(cos(theta))^2 f_p = z1 -(@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) IF @absval == true cd = cabs(#z) - cabs((@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta))))) ELSE cd = #z - (@fn4(rr*cos(theta))+flip(@fn5(rr*sin(theta)))) ENDIF ELSEIF @distvar=="Polytrope" cx = x cy = 1/cx^@pn IF @absval == true cd = cabs(#z) - cabs(0.00005*pa*(cx + flip(cy))) ELSE cd = #z - 0.00005*pa*(cx + flip(cy)) ENDIF ENDIF d = cabs(cd) IF @trapvar == 1 d = cabs(cd*cd - cd) ELSEIF @trapvar == 2 d = cabs(cd*cd*cd - cd) ELSEIF @trapvar == 3 d = cabs(cd*cd*cd -cd*cd +cd) ELSEIF @trapvar == 4 d = cabs(cd - |f_p|) ELSEIF @trapvar == 5 d = cabs(cd - fn3(f_p)) ELSEIF @trapvar == 6 d = cabs((z1-f_p)/(cd-f_p)) ELSEIF @trapvar == 7 d = cabs((fn3(f_p))/(cd-(z1-f_p))) ELSEIF @trapvar == 8 d = cabs((fn3(f_p))/(cd-(x+y))) ELSEIF @trapvar == 9 d = cabs((fn3(f_p))/(cd-(x*y))) ENDIF distsum = d + distsum distave = distsum/(iter+1) ENDIF IF @trap_mode == 0 IF (iter >= @skip && iter < max_iter) \ && d < min_dist min_dist = d distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 1 IF (iter >= @skip && iter < max_iter) \ && !trapped && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 2 IF (iter >= @skip && iter < max_iter) \ && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 3 d = cabs(f_p) IF (iter >= @skip && iter < max_iter) \ && d < min_dist min_dist = d distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p ENDIF ENDIF IF @trap_mode == 4 IF (iter >= @skip && iter < max_iter) \ && d < @width trapped = true min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p ENDIF endif IF @trap_mode == 5 IF (iter >= @skip && iter < max_iter) \ && d > min_dist && d < @width trapped = true min_dist = d distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 \ || @trap_mode ==9 IF (iter >= @skip && iter < max_iter) \ && d < @width trapped = true distance = distance + d trap_iter = iter trap_z = trap_z + #z trap_p = trap_p + f_p ENDIF ELSEIF @trap_mode == 10 || @trap_mode == 11 || @trap_mode == 12 \ || @trap_mode ==13 IF (iter >= @skip && iter < max_iter) \ && !trapped && d < @width trapped = true distance = distance + d trap_iter = iter trap_z = trap_z + #z trap_p = trap_p + f_p ENDIF ENDIF iter = iter + 1 final: if @addfbm == true w = fn2(fn1((trap_z+@tfbm*(xx+flip(yy)))*10^@pwr))*@ts else w = fn2(fn1((trap_z)*10^@pwr))*@ts endif ww = fn2(fn1((w - @fn6(w)))) + @toffset t = cabs(ww)*@tc t = (t - round(t))*@tweight colorfactor = 0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t if @trap_mode == 7 || @trap_mode == 11 distance = distance + cabs(trap_p) endif if @trap_mode == 8 || @trap_mode == 12 distance = distance + cabs(trap_z) endif if @trap_mode == 9 || @trap_mode == 13 distance = distance + (cabs(trap_z) + cabs(trap_p))/2 endif IF (@trap_mode == 1 || @trap_mode == 2 || @trap_mode == 5 \ || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 || \ @trap_mode == 9 || @trap_mode == 10 || @trap_mode == 11 \ || @trap_mode == 12 || @trap_mode == 13) \ || @trap_mode == 4 IF !trapped && @back == true #solid = true ELSE IF @color_mode == 0 colorPos = distance*colorfactor ELSEIF @color_mode == 1 colorPos = 0.01*trap_iter*colorfactor ELSEIF @color_mode == 2 colorPos = cabs(trap_z)*colorfactor ELSEIF @color_mode == 3 colorPos = abs(real(trap_z))*colorfactor ELSEIF @color_mode == 4 colorPos = abs(imag(trap_z))*colorfactor ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle colorPos = angle*colorfactor ELSEIF @color_mode == 6 colorPos = cabs(trap_p)*colorfactor ELSEIF @color_mode == 7 colorPos = abs(real(trap_p))*colorfactor ELSEIF @color_mode == 8 colorPos = abs(imag(trap_p))*colorfactor ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle colorPos = angle*colorfactor ELSEIF @color_mode == 10 colorPos = 0.1*exptrap_p*cabs(trap_p)*colorfactor ELSEIF @color_mode == 11 colorPos = 0.01 * exptrap_p*colorfactor ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2 && @trap_mode != 5 \ && @trap_mode != 6 && @trap_mode != 7 && @trap_mode != 8 \ && @trap_mode != 9 && @trap_mode != 10 && @trap_mode != 11 \ && @trap_mode != 12 && @trap_mode != 13 \ || @trap_mode==4) && @trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 colorPos = distance*colorfactor ELSEIF @color_mode == 1 colorPos = 0.01*trap_iter*colorfactor ELSEIF @color_mode == 2 colorPos = cabs(trap_z)*colorfactor ELSEIF @color_mode == 3 colorPos = abs(real(trap_z))*colorfactor ELSEIF @color_mode == 4 colorPos = abs(imag(trap_z))*colorfactor ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle colorPos = angle*colorfactor ELSEIF @color_mode == 6 colorPos = cabs(trap_p)*colorfactor ELSEIF @color_mode == 7 colorPos = abs(real(trap_p))*colorfactor ELSEIF @color_mode == 8 colorPos = abs(imag(trap_p))*colorfactor ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle colorPos = angle*colorfactor ELSEIF @color_mode == 10 colorPos = 0.1*exptrap_p*cabs(trap_p)*colorfactor ELSEIF @color_mode == 11 colorPos = 0.01 * exptrap_p*colorfactor ENDIF ENDIF IF @rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 colorPos = distance*colorfactor ELSEIF @color_mode == 1 colorPos = 0.01*trap_iter*colorfactor ELSEIF @color_mode == 2 colorPos = cabs(trap_z)*colorfactor ELSEIF @color_mode == 3 colorPos = abs(real(trap_z))*colorfactor ELSEIF @color_mode == 4 colorPos = abs(imag(trap_z))*colorfactor ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle colorPos = angle*colorfactor ELSEIF @color_mode == 6 colorPos = cabs(trap_p)*colorfactor ELSEIF @color_mode == 7 colorPos = abs(real(trap_p))*colorfactor ELSEIF @color_mode == 8 colorPos = abs(imag(trap_p))*colorfactor ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle colorPos = angle*colorfactor ELSEIF @color_mode == 10 colorPos = 0.1*exptrap_p*cabs(trap_p)*colorfactor ELSEIF @color_mode == 11 colorPos = 0.01 * exptrap_p*colorfactor ENDIF ENDIF ELSE IF @color_mode == 0 colorPos = distance*colorfactor ELSEIF @color_mode == 1 colorPos = 0.01*trap_iter*colorfactor ELSEIF @color_mode == 2 colorPos = cabs(trap_z)*colorfactor ELSEIF @color_mode == 3 colorPos = abs(real(trap_z))*colorfactor ELSEIF @color_mode == 4 colorPos = abs(imag(trap_z))*colorfactor ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle colorPos = angle*colorfactor ELSEIF @color_mode == 6 colorPos = cabs(trap_p)*colorfactor ELSEIF @color_mode == 7 colorPos = abs(real(trap_p))*colorfactor ELSEIF @color_mode == 8 colorPos = abs(imag(trap_p))*colorfactor ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle colorPos = angle*colorfactor ELSEIF @color_mode == 10 colorPos = 0.1*exptrap_p*cabs(trap_p)*colorfactor ELSEIF @color_mode == 11 colorPos = 0.01 * exptrap_p*colorfactor ENDIF ENDIF colorPos = colorPos*@scale/2 colr = (1.0/@totalColors)*colorPos*@adj*colorsUsed+0.0575 ; Perturb the ranges, if specified. rangeNum = trunc((1-colorPos)*ranges)%colorsUsed rangeNum = rangeNum + 1 rangeNum = rangeNum%colorsUsed if rangeNum < 0 rangeNum = rangeNum * -1 endif rangeNum = (rangeNum + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNum < ranges / 2) rangeNum = (rangeNum + rangeNum) % ranges else rangeNum = (rangeNum + rangeNum + 1) % ranges endif else ; Number of ranges is odd. rangeNum = (rangeNum + rangeNum) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNum / 2) * 2) == rangeNum) ; rangeNum is even. rangeNum = rangeNum - trunc (rangeNum / 2) else ; rangeNum is odd. rangeNum = rangeNum + trunc ((ranges - rangeNum) / 2) endif endif colorPos = colorPos + @shift if trunc((colorPos*(@adj*0.65))*ranges)%colorsUsed == 0 colorPos = ((colorPos*(@adj*0.65))*ranges)%colorsUsed-trunc((colorPos*(@adj*0.65))*ranges)%colorsUsed if colorPos > 0.5 colorPos = (colorPos - 0.5) / 0.5 else colorPos = 1-colorPos / 0.5 endif else colorPos = ((colorPos*@adj)*ranges)%colorsUsed-trunc((colorPos*@adj)*ranges)%colorsUsed if colorPos > 0.5 colorPos = 1-(colorPos - 0.5) / 0.5 else colorPos = colorPos / 0.5 endif endif if @highlight_type == "none" hval = 0 elseif @highlight_type == "linear" if colorPos > extent hval = (5*@highlight*(colorPos-extent)/(1-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "log" if colorPos > extent hval = (5*@highlight*log(colorPos-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "exponential" if colorPos > extent hval = (5*@highlight*(exp(colorPos-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hval = 0 endif endif if @colorPreset == "Gradient" #color = gradient(colr) else #color = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) endif if @solidb && cabs(#z) == 0 #solid = true endif default: title = "Simple Traps Enhanced II" param version caption = "Formula Version" default = 100 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam $ifdef VER40 heading text = "This is a general coloring formula with 94 trap \ functions and 9 variants for each function. \ Direct coloring modelled after the \ algorithm of Ken Childress." endheading $else heading caption = "Simple Traps Enhanced II" endheading heading caption = "This is a general coloring" endheading heading caption = "formula with 94 trap" endheading heading caption = "functions and 9 variants" endheading heading caption = "for each function." endheading heading caption = "Direct coloring modelled after the" endheading heading caption = "algorithm of Ken Childress." endheading $endif ;-------------------------------------------------------------------- ; Color Settings ;-------------------------------------------------------------------- bool param solidb caption = "Solid background" default = false endparam heading caption = "Color Settings" endheading param colorPreset caption = "Color Preset" enum = "Gradient" "Custom" "Generate" "Default" "Default 12" \ "Default 16" "Default 24" "Color Wheel 12" "Alhambra 8" \ "Belvedere 8" "Bouquet 8" "Color Switch 8" "Evening Sky 8" \ "Fantasia 8" "Flowering Orchard 8" "Morning Sky 8" "Pastel 8" \ "Pastel Rainbow 8" "Showtime 8" "Soleil 8" "Chill 8" \ "Cloud Nine 8" "La Terra 8" "Santa Fe 8" "Spring 8" "Summer 8" \ "Fall 8" "Winter 8" "Mojave 8" "Gold/Green 8" "Gold/Green Alt 8" \ "Gold/Silver 8" "Gold/Silver Alt 8" "Purple/Yellow 8" \ "Purple/Yellow Alt 8" "Silver/Blue 8" "Silver/Blue Alt 8" \ "Fourth of July 3" "Blue/Silver 2" "Blue/White 2" "Cyan/Magenta 2" \ "Cyan/Yellow 2" "Gold/Green 2" "Purple/Yellow 2" "Red/Tan 2" default = 0 hint = "Use 'Gradient' for colors from the gradient. \ Use 'Custom' to set your own color ranges. \ Use 'Default' for the default colors. \ Use 'Generate' to create 3D-like colors from the \ gradient (allows using the gradient randomize function). \ Use any of the other predefined settings for those colors." endparam param customize caption = "Show/Customize" default = false hint = "Check to customize the selected color preset. NOTE: If you \ modify the default values for any of the range(s), you cannot \ get back to the default values for the range(s) you modify \ unless you reload the UCL." visible = (@colorPreset != "Gradient") && (@colorPreset != "Generate") \ && (@colorPreset != "Custom") endparam param highlight_type caption = "Color Highlight Type" default = 0 enum = "none" "linear" "log" "exponential" hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param extent caption = "Highlight Extent" default = 0.05 min = 0.0 max = 0.5 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param hblend caption = "Highlight power" default = 1.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam color param hcolor caption = "Highlight color" default = rgb(255/255,255/255,255/255) visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param scale caption = "color scale adj" default = 1.0 endparam float param shift caption = "color scale shift" default = 0.0 endparam float param cblend caption = "color blend power" default = 1.0 visible = @colorPreset != "Gradient" endparam param adj caption = "color methd adj" default = 1.0 endparam float param luminanceUpper caption = "Lum. Upper Value" default = 0.6 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the upper value \ when generating the ranges from the gradient. This value \ is used with the brighter end of the color range." visible = (@colorPreset == "Generate") endparam float param luminanceLower caption = "Lum. Lower Value" default = 0.2 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the lower value \ when generating the ranges from the gradient. This value \ is used with the darker end of the color range." visible = (@colorPreset == "Generate") endparam int param totalColors caption = "# Colors in Gradient" default = 8 min = 1 max = 8 visible = (@colorPreset == "Gradient") endparam int param ncolor caption = "# Colors to Use" default = 8 min = 1 max = 24 visible = (@colorPreset != "Generate") endparam int param colorRanges caption = "Number of Ranges" default = 8 min = 1 max = 24 hint = "The number of color ranges (1..24)." visible = (@colorPreset == "Custom") endparam int param numRanges caption = "Number of Ranges" default = 8 min = 1 max = 200 hint = "The number of color ranges." visible = (@colorPreset == "Generate") endparam param perturbRanges caption = "Perturb Ranges" enum = "None" "Even/Odd" "1st Half / 2nd Half" "8 Range Custom" default = 0 hint = "Modify the way the ranges are assigned to the elements. \ 'None' = Assign in Order (0 1 2 3 4 5 6 7); 'Even Odd' = \ Assign Even Ranges, then Odd Ranges (0 2 4 6 1 3 5 7); \ '1st Half / 2nd Half' = Assign from first half of range, \ then 2nd half (0 4 1 5 2 6 3 7); '8 Range Custom' = Assign \ the ordering by entering digits 1-8. Only works for ranges \ with 8 colors." visible = ((@colorPreset == "Custom" && @colorRanges >= 3) || \ (@colorPreset == "Generate" && @numRanges >= 3) || \ (@colorPreset != "Custom" && @colorPreset != "Generate" && \ @colorPreset != "Gradient")) endparam int param rangeOrder caption = "Range Order" default = 12345678 min = 11111111 max = 88888888 hint = "Specify the color range ordering. Use digits 1-8 to specify \ the order the ranges will be used. For example, to reverse \ the ordering, specify 87654321. To alternate, use 13572468. \ If color map or preset is defined that does not contain exactly \ 8 ranges, then this parameter will not have any effect." visible = (@perturbRanges == "8 Range Custom") endparam int param colorOffset caption = "Range Offset" default = 0 min = 0 max = 23 hint = "This is used to rotate the color ranges. The offset can \ range from 0 to 23, where 23 is the maximum number of ranges \ that can be specified using the 'Generate' Color Preset." visible = (@colorPreset != "Gradient") endparam ; heading ; caption = " " ; endheading ;-------------------------------------------------------------------- ; Color Defaults for Custom ;-------------------------------------------------------------------- heading caption = " Custom Color Settings" visible = (@colorPreset == "Custom") endheading color param colorMax1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMin1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMax2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMin2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMax3 caption = "Color Range 3 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMin3 caption = "Color Range 3 Low" default = rgb(100/255,36/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMax4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMin4 caption = "Color Range 4 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMax5 caption = "Color Range 5 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMin5 caption = "Color Range 5 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMax6 caption = "Color Range 6 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMin6 caption = "Color Range 6 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMax7 caption = "Color Range 7 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMin7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMax8 caption = "Color Range 8 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param colorMin8 caption = "Color Range 8 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param customMax9 caption = "Color Range 9 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMin9 caption = "Color Range 9 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMax10 caption = "Color Range 10 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMin10 caption = "Color Range 10 Low" default = rgb(94/255,18/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMax11 caption = "Color Range 11 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMin11 caption = "Color Range 11 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMax12 caption = "Color Range 12 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMin12 caption = "Color Range 12 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMax13 caption = "Color Range 13 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMin13 caption = "Color Range 13 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMax14 caption = "Color Range 14 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMin14 caption = "Color Range 14 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMax15 caption = "Color Range 15 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMin15 caption = "Color Range 15 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMax16 caption = "Color Range 16 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMin16 caption = "Color Range 16 Low" default = rgb(69/255,0/255,82/255) hint = "Specifies the color at the low end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMax17 caption = "Color Range 17 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMin17 caption = "Color Range 17 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMax18 caption = "Color Range 18 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMin18 caption = "Color Range 18 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMax19 caption = "Color Range 19 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMin19 caption = "Color Range 19 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMax20 caption = "Color Range 20 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMin20 caption = "Color Range 20 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMax21 caption = "Color Range 21 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMin21 caption = "Color Range 21 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMax22 caption = "Color Range 22 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMin22 caption = "Color Range 22 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMax23 caption = "Color Range 23 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMin23 caption = "Color Range 23 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMax24 caption = "Color Range 24 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam color param customMin24 caption = "Color Range 24 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default ;-------------------------------------------------------------------- heading caption = " Default Settings" visible = (@customize && @colorPreset == "Default") endheading color param defaultMax1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax2 caption = "Color Range 2 High" default = rgb(252/255,0/255,172/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin2 caption = "Color Range 2 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax3 caption = "Color Range 3 High" default = rgb(252/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax4 caption = "Color Range 4 High" default = rgb(252/255,128/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin4 caption = "Color Range 4 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax5 caption = "Color Range 5 High" default = rgb(252/255,252/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin5 caption = "Color Range 5 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax6 caption = "Color Range 6 High" default = rgb(0/255,252/255,128/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin7 caption = "Color Range 7 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax8 caption = "Color Range 8 High" default = rgb(64/255,64/255,252/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 12 ;-------------------------------------------------------------------- heading caption = " Default 12 Color Settings" visible = (@customize && @colorPreset == "Default 12") endheading color param default12Max1 caption = "Color Range 1 High" default = rgb(255/255,85/255,253/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min1 caption = "Color Range 1 Low" default = rgb(98/255,0/255,76/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max2 caption = "Color Range 2 High" default = rgb(252/255,0/255,143/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min2 caption = "Color Range 2 Low" default = rgb(98/255,0/255,54/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max4 caption = "Color Range 4 High" default = rgb(255/255,97/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min4 caption = "Color Range 4 Low" default = rgb(104/255,27/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min5 caption = "Color Range 5 Low" default = rgb(110/255,54/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max6 caption = "Color Range 6 High" default = rgb(255/255,248/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min6 caption = "Color Range 6 Low" default = rgb(102/255,60/255,6/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,58/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min7 caption = "Color Range 7 Low" default = rgb(0/255,76/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,205/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min8 caption = "Color Range 8 Low" default = rgb(0/255,89/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max9 caption = "Color Range 9 High" default = rgb(0/255,194/255,255/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min9 caption = "Color Range 9 Low" default = rgb(0/255,80/255,92/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max10 caption = "Color Range 10 High" default = rgb(35/255,109/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min10 caption = "Color Range 10 Low" default = rgb(0/255,4/255,102/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max11 caption = "Color Range 11 High" default = rgb(149/255,53/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min11 caption = "Color Range 11 Low" default = rgb(53/255,0/255,96/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max12 caption = "Color Range 12 High" default = rgb(195/255,0/255,252/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min12 caption = "Color Range 12 Low" default = rgb(58/255,0/255,84/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 16 ;-------------------------------------------------------------------- heading caption = " Default 16 Color Settings" visible = (@customize && @colorPreset == "Default 16") endheading color param default16Max1 caption = "Color Range 1 High" default = rgb(255/255,31/255,114/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min1 caption = "Color Range 1 Low" default = rgb(94/255,0/255,40/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max3 caption = "Color Range 3 High" default = rgb(255/255,78/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min3 caption = "Color Range 3 Low" default = rgb(88/255,27/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max4 caption = "Color Range 4 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min4 caption = "Color Range 4 Low" default = rgb(90/255,30/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,31/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min5 caption = "Color Range 5 Low" default = rgb(88/255,38/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min6 caption = "Color Range 6 Low" default = rgb(96/255,57/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max7 caption = "Color Range 7 High" default = rgb(170/255,255/255,37/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min7 caption = "Color Range 7 Low" default = rgb(41/255,68/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,94/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min8 caption = "Color Range 8 Low" default = rgb(0/255,62/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max9 caption = "Color Range 9 High" default = rgb(0/255,238/255,203/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min9 caption = "Color Range 9 Low" default = rgb(0/255,64/255,54/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max10 caption = "Color Range 10 High" default = rgb(11/255,166/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min10 caption = "Color Range 10 Low" default = rgb(0/255,38/255,78/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max11 caption = "Color Range 11 High" default = rgb(0/255,68/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min11 caption = "Color Range 11 Low" default = rgb(0/255,20/255,88/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max12 caption = "Color Range 12 High" default = rgb(99/255,0/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min12 caption = "Color Range 12 Low" default = rgb(47/255,0/255,94/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max13 caption = "Color Range 13 High" default = rgb(145/255,0/255,255/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min13 caption = "Color Range 13 Low" default = rgb(69/255,0/255,102/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max14 caption = "Color Range 14 High" default = rgb(221/255,0/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min14 caption = "Color Range 14 Low" default = rgb(86/255,0/255,100/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max15 caption = "Color Range 15 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min15 caption = "Color Range 15 Low" default = rgb(90/255,0/255,75/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max16 caption = "Color Range 16 High" default = rgb(255/255,0/255,140/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min16 caption = "Color Range 16 Low" default = rgb(96/255,0/255,60/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 24 ;-------------------------------------------------------------------- heading caption = " Default 24 Color Settings" visible = (@customize && @colorPreset == "Default 24") endheading color param default24Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min2 caption = "Color Range 2 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max3 caption = "Color Range 3 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max4 caption = "Color Range 4 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max5 caption = "Color Range 5 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min5 caption = "Color Range 5 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max6 caption = "Color Range 6 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min6 caption = "Color Range 6 Low" default = rgb(96/255,27/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max7 caption = "Color Range 7 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min7 caption = "Color Range 7 Low" default = rgb(100/255,38/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min8 caption = "Color Range 8 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max9 caption = "Color Range 9 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min9 caption = "Color Range 9 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max10 caption = "Color Range 10 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min10 caption = "Color Range 10 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max11 caption = "Color Range 11 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min11 caption = "Color Range 11 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max12 caption = "Color Range 12 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min12 caption = "Color Range 12 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max13 caption = "Color Range 13 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min13 caption = "Color Range 13 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max14 caption = "Color Range 14 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min14 caption = "Color Range 14 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max15 caption = "Color Range 15 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min15 caption = "Color Range 15 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max16 caption = "Color Range 16 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min16 caption = "Color Range 16 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max17 caption = "Color Range 17 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min17 caption = "Color Range 17 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max18 caption = "Color Range 18 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min18 caption = "Color Range 18 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max19 caption = "Color Range 19 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min19 caption = "Color Range 19 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max20 caption = "Color Range 20 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min20 caption = "Color Range 20 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max21 caption = "Color Range 21 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min21 caption = "Color Range 21 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max22 caption = "Color Range 22 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min22 caption = "Color Range 22 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max23 caption = "Color Range 23 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min23 caption = "Color Range 23 Low" default = rgb(64/255,0/255,76/255) hint = "Specifies the color at the low end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max24 caption = "Color Range 24 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min24 caption = "Color Range 24 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Wheel 12 ;-------------------------------------------------------------------- heading caption = " Color Wheel 12 Settings" visible = (@customize && @colorPreset == "Color Wheel 12") endheading color param colorWheel12Max1 caption = "Color Range 1 High" default = rgb(142/255,117/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min1 caption = "Color Range 1 Low" default = rgb(52/255,0/255,100/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max2 caption = "Color Range 2 High" default = rgb(224/255,9/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,84/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max4 caption = "Color Range 4 High" default = rgb(252/255,167/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min4 caption = "Color Range 4 Low" default = rgb(95/255,54/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max5 caption = "Color Range 5 High" default = rgb(190/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min5 caption = "Color Range 5 Low" default = rgb(63/255,84/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max6 caption = "Color Range 6 High" default = rgb(0/255,231/255,213/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min6 caption = "Color Range 6 Low" default = rgb(4/255,62/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max7 caption = "Color Range 7 High" default = rgb(182/255,27/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min7 caption = "Color Range 7 Low" default = rgb(53/255,0/255,92/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max8 caption = "Color Range 8 High" default = rgb(255/255,33/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min8 caption = "Color Range 8 Low" default = rgb(80/255,0/255,53/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max9 caption = "Color Range 9 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min9 caption = "Color Range 9 Low" default = rgb(101/255,25/255,21/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max10 caption = "Color Range 10 High" default = rgb(255/255,241/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min10 caption = "Color Range 10 Low" default = rgb(88/255,69/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max11 caption = "Color Range 11 High" default = rgb(0/255,248/255,103/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min11 caption = "Color Range 11 Low" default = rgb(0/255,83/255,15/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max12 caption = "Color Range 12 High" default = rgb(27/255,119/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min12 caption = "Color Range 12 Low" default = rgb(0/255,31/255,92/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Alhambra 8 ;-------------------------------------------------------------------- heading caption = " Alhambra 8 Settings" visible = (@customize && @colorPreset == "Alhambra 8") endheading color param alhambra8Max1 caption = "Color Range 1 High" default = rgb(15/255,222/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min1 caption = "Color Range 1 Low" default = rgb(0/255,43/255,52/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max2 caption = "Color Range 2 High" default = rgb(255/255,204/255,75/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min2 caption = "Color Range 2 Low" default = rgb(92/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max3 caption = "Color Range 3 High" default = rgb(188/255,152/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min3 caption = "Color Range 3 Low" default = rgb(41/255,0/255,70/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max4 caption = "Color Range 4 High" default = rgb(255/255,155/255,109/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min4 caption = "Color Range 4 Low" default = rgb(95/255,36/255,14/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max5 caption = "Color Range 5 High" default = rgb(121/255,180/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min5 caption = "Color Range 5 Low" default = rgb(0/255,47/255,91/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max6 caption = "Color Range 6 High" default = rgb(255/255,131/255,126/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min6 caption = "Color Range 6 Low" default = rgb(104/255,20/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max7 caption = "Color Range 7 High" default = rgb(33/255,255/255,220/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min7 caption = "Color Range 7 Low" default = rgb(0/255,67/255,49/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max8 caption = "Color Range 8 High" default = rgb(255/255,177/255,93/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min8 caption = "Color Range 8 Low" default = rgb(100/255,44/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Belvedere 8 ;-------------------------------------------------------------------- heading caption = " Belvedere 8 Settings" visible = (@customize && @colorPreset == "Belvedere 8") endheading color param belvedere8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min1 caption = "Color Range 1 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min2 caption = "Color Range 2 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max3 caption = "Color Range 3 High" default = rgb(123/255,201/255,254/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min3 caption = "Color Range 3 Low" default = rgb(0/255,45/255,68/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max4 caption = "Color Range 4 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min4 caption = "Color Range 4 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max5 caption = "Color Range 5 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min5 caption = "Color Range 5 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max6 caption = "Color Range 6 High" default = rgb(0/255,255/255,217/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min6 caption = "Color Range 6 Low" default = rgb(0/255,54/255,46/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max7 caption = "Color Range 7 High" default = rgb(255/255,20/255,70/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min7 caption = "Color Range 7 Low" default = rgb(100/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max8 caption = "Color Range 8 High" default = rgb(95/255,84/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,89/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Bouquet 8 ;-------------------------------------------------------------------- heading caption = " Bouquet 8 Settings" visible = (@customize && @colorPreset == "Bouquet 8") endheading color param bouquet8Max1 caption = "Color Range 1 High" default = rgb(0/255,255/255,131/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min1 caption = "Color Range 1 Low" default = rgb(0/255,84/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max2 caption = "Color Range 2 High" default = rgb(52/255,255/255,198/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min2 caption = "Color Range 2 Low" default = rgb(0/255,82/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max3 caption = "Color Range 3 High" default = rgb(0/255,244/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min3 caption = "Color Range 3 Low" default = rgb(0/255,64/255,74/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max4 caption = "Color Range 4 High" default = rgb(180/255,169/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min4 caption = "Color Range 4 Low" default = rgb(40/255,12/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max5 caption = "Color Range 5 High" default = rgb(251/255,148/255,230/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min5 caption = "Color Range 5 Low" default = rgb(100/255,20/255,67/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max6 caption = "Color Range 6 High" default = rgb(255/255,101/255,140/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min6 caption = "Color Range 6 Low" default = rgb(84/255,15/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max7 caption = "Color Range 7 High" default = rgb(255/255,149/255,111/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min7 caption = "Color Range 7 Low" default = rgb(77/255,36/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max8 caption = "Color Range 8 High" default = rgb(255/255,252/255,125/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min8 caption = "Color Range 8 Low" default = rgb(95/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Switch 8 ;-------------------------------------------------------------------- heading caption = " Color Switch 8 Settings" visible = (@customize && @colorPreset == "Color Switch 8") endheading color param colorSwitch8Max1 caption = "Color Range 1 High" default = rgb(255/255,33/255,52/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min1 caption = "Color Range 1 Low" default = rgb(90/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max2 caption = "Color Range 2 High" default = rgb(61/255,136/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,82/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,44/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min3 caption = "Color Range 3 Low" default = rgb(0/255,70/255,7/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max4 caption = "Color Range 4 High" default = rgb(255/255,131/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min4 caption = "Color Range 4 Low" default = rgb(105/255,40/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max5 caption = "Color Range 5 High" default = rgb(255/255,27/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min5 caption = "Color Range 5 Low" default = rgb(104/255,0/255,78/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max6 caption = "Color Range 6 High" default = rgb(168/255,87/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min6 caption = "Color Range 6 Low" default = rgb(35/255,0/255,58/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min7 caption = "Color Range 7 Low" default = rgb(0/255,60/255,60/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,38/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min8 caption = "Color Range 8 Low" default = rgb(90/255,90/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Evening Sky 8 ;-------------------------------------------------------------------- heading caption = " Evening Sky 8 Settings" visible = (@customize && @colorPreset == "Evening Sky 8") endheading color param eveningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,238/255,222/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min1 caption = "Color Range 1 Low" default = rgb(50/255,35/255,35/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max2 caption = "Color Range 2 High" default = rgb(255/255,226/255,85/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min2 caption = "Color Range 2 Low" default = rgb(85/255,54/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max3 caption = "Color Range 3 High" default = rgb(249/255,148/255,216/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min3 caption = "Color Range 3 Low" default = rgb(79/255,20/255,57/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max4 caption = "Color Range 4 High" default = rgb(159/255,159/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min4 caption = "Color Range 4 Low" default = rgb(22/255,16/255,54/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,175/255,79/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min5 caption = "Color Range 5 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max6 caption = "Color Range 6 High" default = rgb(124/255,190/255,251/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min6 caption = "Color Range 6 Low" default = rgb(13/255,40/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max7 caption = "Color Range 7 High" default = rgb(255/255,111/255,123/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min7 caption = "Color Range 7 Low" default = rgb(57/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max8 caption = "Color Range 8 High" default = rgb(111/255,255/255,245/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min8 caption = "Color Range 8 Low" default = rgb(0/255,60/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fantasia 8 ;-------------------------------------------------------------------- heading caption = " Fantasia 8 Settings" visible = (@customize && @colorPreset == "Fantasia 8") endheading color param fantasia8Max1 caption = "Color Range 1 High" default = rgb(255/255,230/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min1 caption = "Color Range 1 Low" default = rgb(102/255,81/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max2 caption = "Color Range 2 High" default = rgb(230/255,78/255,208/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min2 caption = "Color Range 2 Low" default = rgb(104/255,0/255,52/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max3 caption = "Color Range 3 High" default = rgb(180/255,119/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min3 caption = "Color Range 3 Low" default = rgb(56/255,0/255,82/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max4 caption = "Color Range 4 High" default = rgb(0/255,228/255,150/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min4 caption = "Color Range 4 Low" default = rgb(0/255,50/255,30/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max5 caption = "Color Range 5 High" default = rgb(131/255,148/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min5 caption = "Color Range 5 Low" default = rgb(38/255,31/255,85/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max6 caption = "Color Range 6 High" default = rgb(255/255,182/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min6 caption = "Color Range 6 Low" default = rgb(76/255,40/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max7 caption = "Color Range 7 High" default = rgb(252/255,0/255,113/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min7 caption = "Color Range 7 Low" default = rgb(84/255,0/255,34/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max8 caption = "Color Range 8 High" default = rgb(0/255,232/255,249/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min8 caption = "Color Range 8 Low" default = rgb(0/255,64/255,78/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Flowering Orchard 8 ;-------------------------------------------------------------------- heading caption = " Flowering Orchard 8 Settings" visible = (@customize && @colorPreset == "Flowering Orchard 8") endheading color param floweringOrchard8Max1 caption = "Color Range 1 High" default = rgb(255/255,188/255,213/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min1 caption = "Color Range 1 Low" default = rgb(132/255,30/255,66/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max2 caption = "Color Range 2 High" default = rgb(240/255,135/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min2 caption = "Color Range 2 Low" default = rgb(70/255,0/255,59/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max3 caption = "Color Range 3 High" default = rgb(255/255,75/255,153/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min3 caption = "Color Range 3 Low" default = rgb(104/255,15/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max4 caption = "Color Range 4 High" default = rgb(71/255,213/255,119/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min4 caption = "Color Range 4 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max5 caption = "Color Range 5 High" default = rgb(255/255,102/255,209/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min5 caption = "Color Range 5 Low" default = rgb(116/255,10/255,86/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max6 caption = "Color Range 6 High" default = rgb(154/255,199/255,51/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min6 caption = "Color Range 6 Low" default = rgb(28/255,44/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max7 caption = "Color Range 7 High" default = rgb(255/255,162/255,228/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min7 caption = "Color Range 7 Low" default = rgb(110/255,0/255,55/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max8 caption = "Color Range 8 High" default = rgb(255/255,201/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min8 caption = "Color Range 8 Low" default = rgb(145/255,20/255,54/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Morning Sky 8 ;-------------------------------------------------------------------- heading caption = " Morning Sky 8 Settings" visible = (@customize && @colorPreset == "Morning Sky 8") endheading color param morningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,178/255,217/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min1 caption = "Color Range 1 Low" default = rgb(79/255,29/255,57/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max2 caption = "Color Range 2 High" default = rgb(107/255,246/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min2 caption = "Color Range 2 Low" default = rgb(13/255,70/255,75/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max3 caption = "Color Range 3 High" default = rgb(255/255,199/255,137/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min3 caption = "Color Range 3 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max4 caption = "Color Range 4 High" default = rgb(241/255,245/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min4 caption = "Color Range 4 Low" default = rgb(16/255,24/255,46/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,177/255,188/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min5 caption = "Color Range 5 Low" default = rgb(54/255,14/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max6 caption = "Color Range 6 High" default = rgb(248/255,236/255,236/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min6 caption = "Color Range 6 Low" default = rgb(49/255,38/255,35/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max7 caption = "Color Range 7 High" default = rgb(129/255,201/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min7 caption = "Color Range 7 Low" default = rgb(0/255,56/255,70/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min8 caption = "Color Range 8 Low" default = rgb(89/255,76/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel 8 ;-------------------------------------------------------------------- heading caption = " Pastel 8 Settings" visible = (@customize && @colorPreset == "Pastel 8") endheading color param pastel8Max1 caption = "Color Range 1 High" default = rgb(147/255,255/255,193/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min1 caption = "Color Range 1 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max2 caption = "Color Range 2 High" default = rgb(147/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max3 caption = "Color Range 3 High" default = rgb(148/255,148/255,253/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min3 caption = "Color Range 3 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max4 caption = "Color Range 4 High" default = rgb(199/255,149/255,253/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max5 caption = "Color Range 5 High" default = rgb(255/255,147/255,221/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min5 caption = "Color Range 5 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max6 caption = "Color Range 6 High" default = rgb(254/255,148/255,148/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min6 caption = "Color Range 6 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max7 caption = "Color Range 7 High" default = rgb(255/255,202/255,147/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min7 caption = "Color Range 7 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,147/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min8 caption = "Color Range 8 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel Rainbow 8 ;-------------------------------------------------------------------- heading caption = " Pastel Rainbow 8 Settings" visible = (@customize && @colorPreset == "Pastel Rainbow 8") endheading color param pastelRainbow8Max1 caption = "Color Range 1 High" default = rgb(242/255,246/255,174/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min1 caption = "Color Range 1 Low" default = rgb(20/255,48/255,12/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max2 caption = "Color Range 2 High" default = rgb(182/255,242/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min2 caption = "Color Range 2 Low" default = rgb(20/255,44/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max3 caption = "Color Range 3 High" default = rgb(202/255,202/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min3 caption = "Color Range 3 Low" default = rgb(36/255,36/255,48/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max4 caption = "Color Range 4 High" default = rgb(255/255,170/255,170/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min4 caption = "Color Range 4 Low" default = rgb(89/255,0/255,24/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max5 caption = "Color Range 5 High" default = rgb(255/255,246/255,178/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min5 caption = "Color Range 5 Low" default = rgb(40/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max6 caption = "Color Range 6 High" default = rgb(255/255,238/255,206/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min6 caption = "Color Range 6 Low" default = rgb(52/255,16/255,40/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max7 caption = "Color Range 7 High" default = rgb(214/255,222/255,161/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min7 caption = "Color Range 7 Low" default = rgb(4/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max8 caption = "Color Range 8 High" default = rgb(255/255,230/255,246/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min8 caption = "Color Range 8 Low" default = rgb(70/255,50/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Showtime 8 ;-------------------------------------------------------------------- heading caption = " Showtime 8 Settings" visible = (@customize && @colorPreset == "Showtime 8") endheading color param showtime8Max1 caption = "Color Range 1 High" default = rgb(241/255,53/255,82/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min1 caption = "Color Range 1 Low" default = rgb(88/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max2 caption = "Color Range 2 High" default = rgb(255/255,121/255,52/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min2 caption = "Color Range 2 Low" default = rgb(107/255,29/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max3 caption = "Color Range 3 High" default = rgb(253/255,168/255,67/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min3 caption = "Color Range 3 Low" default = rgb(97/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max4 caption = "Color Range 4 High" default = rgb(255/255,231/255,21/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min4 caption = "Color Range 4 Low" default = rgb(140/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max5 caption = "Color Range 5 High" default = rgb(58/255,219/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min5 caption = "Color Range 5 Low" default = rgb(0/255,36/255,83/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max6 caption = "Color Range 6 High" default = rgb(9/255,116/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min6 caption = "Color Range 6 Low" default = rgb(33/255,30/255,81/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max7 caption = "Color Range 7 High" default = rgb(105/255,71/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min7 caption = "Color Range 7 Low" default = rgb(36/255,0/255,76/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max8 caption = "Color Range 8 High" default = rgb(187/255,32/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min8 caption = "Color Range 8 Low" default = rgb(50/255,0/255,56/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Soleil 8 ;-------------------------------------------------------------------- heading caption = " Soleil 8 Settings" visible = (@customize && @colorPreset == "Soleil 8") endheading color param soleil8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,35/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min1 caption = "Color Range 1 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max2 caption = "Color Range 2 High" default = rgb(255/255,209/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min2 caption = "Color Range 2 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max3 caption = "Color Range 3 High" default = rgb(231/255,237/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min3 caption = "Color Range 3 Low" default = rgb(54/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max4 caption = "Color Range 4 High" default = rgb(255/255,141/255,49/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min4 caption = "Color Range 4 Low" default = rgb(92/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,156/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min5 caption = "Color Range 5 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max6 caption = "Color Range 6 High" default = rgb(255/255,158/255,17/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min6 caption = "Color Range 6 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,217/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min7 caption = "Color Range 7 Low" default = rgb(76/255,41/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max8 caption = "Color Range 8 High" default = rgb(255/255,184/255,53/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min8 caption = "Color Range 8 Low" default = rgb(76/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Chill 8 ;-------------------------------------------------------------------- heading caption = " Chill 8 Settings" visible = (@customize && @colorPreset == "Chill 8") endheading color param chillMax1 caption = "Color Range 1 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin1 caption = "Color Range 1 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax2 caption = "Color Range 2 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax3 caption = "Color Range 3 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin3 caption = "Color Range 3 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax4 caption = "Color Range 4 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax5 caption = "Color Range 5 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin5 caption = "Color Range 5 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax6 caption = "Color Range 6 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax7 caption = "Color Range 7 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin7 caption = "Color Range 7 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax8 caption = "Color Range 8 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cloud Nine 8 ;-------------------------------------------------------------------- heading caption = " Cloud Nine 8 Settings" visible = (@customize && @colorPreset == "Cloud Nine 8") endheading color param cloudNineMax1 caption = "Color Range 1 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin1 caption = "Color Range 1 Low" default = rgb(143/255,60/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax2 caption = "Color Range 2 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin2 caption = "Color Range 2 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax3 caption = "Color Range 3 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin3 caption = "Color Range 3 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax4 caption = "Color Range 4 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin4 caption = "Color Range 4 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax5 caption = "Color Range 5 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin5 caption = "Color Range 5 Low" default = rgb(140/255,63/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax6 caption = "Color Range 6 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin6 caption = "Color Range 6 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax7 caption = "Color Range 7 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin7 caption = "Color Range 7 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax8 caption = "Color Range 8 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin8 caption = "Color Range 8 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for La Terra 8 ;-------------------------------------------------------------------- heading caption = " La Terra 8 Settings" visible = (@customize && @colorPreset == "La Terra 8") endheading color param laTerraMax1 caption = "Color Range 1 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin1 caption = "Color Range 1 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax2 caption = "Color Range 2 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin2 caption = "Color Range 2 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax3 caption = "Color Range 3 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin3 caption = "Color Range 3 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax4 caption = "Color Range 4 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin4 caption = "Color Range 4 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax5 caption = "Color Range 5 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin5 caption = "Color Range 5 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax6 caption = "Color Range 6 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin6 caption = "Color Range 6 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax7 caption = "Color Range 7 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin7 caption = "Color Range 7 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax8 caption = "Color Range 8 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin8 caption = "Color Range 8 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Santa Fe 8 ;-------------------------------------------------------------------- heading caption = " Santa Fe 8 Settings" visible = (@customize && @colorPreset == "Santa Fe 8") endheading color param santaFe8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min1 caption = "Color Range 1 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max2 caption = "Color Range 2 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max3 caption = "Color Range 3 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min3 caption = "Color Range 3 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max4 caption = "Color Range 4 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min4 caption = "Color Range 4 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min5 caption = "Color Range 5 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max6 caption = "Color Range 6 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max7 caption = "Color Range 7 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min7 caption = "Color Range 7 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min8 caption = "Color Range 8 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Spring 8 ;-------------------------------------------------------------------- heading caption = " Spring 8 Settings" visible = (@customize && @colorPreset == "Spring 8") endheading color param spring8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min1 caption = "Color Range 1 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max2 caption = "Color Range 2 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max3 caption = "Color Range 3 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min3 caption = "Color Range 3 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max4 caption = "Color Range 4 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min5 caption = "Color Range 5 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max6 caption = "Color Range 6 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min6 caption = "Color Range 6 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max7 caption = "Color Range 7 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min7 caption = "Color Range 7 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max8 caption = "Color Range 8 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min8 caption = "Color Range 8 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Summer 8 ;-------------------------------------------------------------------- heading caption = " Summer 8 Settings" visible = (@customize && @colorPreset == "Summer 8") endheading color param summer8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min1 caption = "Color Range 1 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max2 caption = "Color Range 2 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min3 caption = "Color Range 3 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max4 caption = "Color Range 4 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min5 caption = "Color Range 5 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max6 caption = "Color Range 6 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min6 caption = "Color Range 6 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min7 caption = "Color Range 7 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max8 caption = "Color Range 8 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fall 8 ;-------------------------------------------------------------------- heading caption = " Fall 8 Settings" visible = (@customize && @colorPreset == "Fall 8") endheading color param fall8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min1 caption = "Color Range 1 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max2 caption = "Color Range 2 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min2 caption = "Color Range 2 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max3 caption = "Color Range 3 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min3 caption = "Color Range 3 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max4 caption = "Color Range 4 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min4 caption = "Color Range 4 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min5 caption = "Color Range 5 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max6 caption = "Color Range 6 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min6 caption = "Color Range 6 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max7 caption = "Color Range 7 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min7 caption = "Color Range 7 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max8 caption = "Color Range 8 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min8 caption = "Color Range 8 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Winter 8 ;-------------------------------------------------------------------- heading caption = " Winter 8 Settings" visible = (@customize && @colorPreset == "Winter 8") endheading color param winter8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min1 caption = "Color Range 1 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max2 caption = "Color Range 2 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min2 caption = "Color Range 2 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max3 caption = "Color Range 3 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min3 caption = "Color Range 3 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max4 caption = "Color Range 4 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min4 caption = "Color Range 4 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min5 caption = "Color Range 5 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max6 caption = "Color Range 6 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min6 caption = "Color Range 6 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max7 caption = "Color Range 7 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min7 caption = "Color Range 7 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max8 caption = "Color Range 8 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min8 caption = "Color Range 8 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Mojave 8 ;-------------------------------------------------------------------- heading caption = " Mojave 8 Settings" visible = (@customize && @colorPreset == "Mojave 8") endheading color param mojave8Max1 caption = "Color Range 1 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min1 caption = "Color Range 1 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max2 caption = "Color Range 2 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min2 caption = "Color Range 2 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max3 caption = "Color Range 3 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min3 caption = "Color Range 3 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max4 caption = "Color Range 4 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min4 caption = "Color Range 4 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max5 caption = "Color Range 5 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min5 caption = "Color Range 5 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max6 caption = "Color Range 6 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min6 caption = "Color Range 6 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max7 caption = "Color Range 7 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min7 caption = "Color Range 7 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max8 caption = "Color Range 8 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min8 caption = "Color Range 8 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green 8 Settings" visible = (@customize && @colorPreset == "Gold/Green 8") endheading color param goldGreen8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max5 caption = "Color Range 5 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min5 caption = "Color Range 5 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max7 caption = "Color Range 7 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min7 caption = "Color Range 7 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Green Alt 8") endheading color param goldGreenAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max4 caption = "Color Range 4 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver 8") endheading color param goldSilver8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min5 caption = "Color Range 5 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min7 caption = "Color Range 7 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endheading color param goldSilverAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min2 caption = "Color Range 2 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min4 caption = "Color Range 4 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 8") endheading color param purpleYellow8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max2 caption = "Color Range 2 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min2 caption = "Color Range 2 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max4 caption = "Color Range 4 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min5 caption = "Color Range 5 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min7 caption = "Color Range 7 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow Alt 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow Alt 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endheading color param purpleYellowAlt8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min4 caption = "Color Range 4 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max5 caption = "Color Range 5 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min5 caption = "Color Range 5 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max7 caption = "Color Range 7 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min7 caption = "Color Range 7 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue 8") endheading color param silverBlue8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min4 caption = "Color Range 4 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max5 caption = "Color Range 5 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min5 caption = "Color Range 5 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max7 caption = "Color Range 7 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue Alt 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue Alt 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endheading color param silverBlueAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max4 caption = "Color Range 4 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min5 caption = "Color Range 5 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min7 caption = "Color Range 7 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fourth of July 3 ;-------------------------------------------------------------------- heading caption = " Fourth of July 3 Settings" visible = (@customize && @colorPreset == "Fourth of July 3") endheading color param fourthOfJuly3Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min1 caption = "Color Range 1 Low" default = rgb(128/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min3 caption = "Color Range 3 Low" default = rgb(128/255,128/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/Silver 2 ;-------------------------------------------------------------------- heading caption = " Blue/Silver 2 Settings" visible = (@customize && @colorPreset == "Blue/Silver 2") endheading color param blueSilver2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/White 2 ;-------------------------------------------------------------------- heading caption = " Blue/White 2 Settings" visible = (@customize && @colorPreset == "Blue/White 2") endheading color param blueWhite2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min2 caption = "Color Range 2 Low" default = rgb(124/255,124/255,124/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Magenta 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Magenta 2 Settings" visible = (@customize && @colorPreset == "Cyan/Magenta 2") endheading color param cyanMagenta2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Max2 caption = "Color Range 2 High" default = rgb(255/255,128/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Yellow 2 Settings" visible = (@customize && @colorPreset == "Cyan/Yellow 2") endheading color param cyanYellow2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 2 ;-------------------------------------------------------------------- heading caption = " Gold/Green 2 Settings" visible = (@customize && @colorPreset == "Gold/Green 2") endheading color param goldGreen2Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 2 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 2") endheading color param purpleYellow2Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Red/Tan 2 ;-------------------------------------------------------------------- heading caption = " Red/Tan 2 Settings" visible = (@customize && @colorPreset == "Red/Tan 2") endheading color param redTan2Max1 caption = "Color Range 1 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min1 caption = "Color Range 1 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Max2 caption = "Color Range 2 High" default = rgb(255/255,208/255,152/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min2 caption = "Color Range 2 Low" default = rgb(128/255,108/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam heading caption = "Function Parameters" endheading param start caption = "Starting offset" default = (0.0,0.0) visible=@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9 endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param type caption = "Trap Type" default = 9 enum = "sum" "product" "quotient1" "quotient2" \ "ceil_floor" "trunc_round" "cf_plus" \ "tr_plus" "fibonacci" "functions" endparam param distvar caption = "Distance variants" default = 2 enum = "Ampersand" "Arachnida 1" "Arachnida 2" "Archimedes" "Astroid" "Atzema Spiral" \ "Bean" "Bicorn" "Bicuspid" "Bifolium" "Bow" "Butterfly" "Cardiod" "Cassini Ovals" \ "Cayley's Sextic" "Circle" "Circle Catacaustic" "Cissoid of Diocles" "Cochleoid" \ "Conchoid" "Cotes' Spiral" "Cruciform" "Curtate Cycloid" "Cycloid" "Cycloid of Seva" \ "Deltoid Catacaustic" "Devil's Curve" "Diamond" "Difference" "Dipole Curve" \ "Dumbbell Curve" "Eight Curve" "Ellipse Catacaustic" "Ellipse Evolute" "Epicycloid" \ "Epispiral" "Exp1" "Exp2" "Folium of Descartes" "Gear Curve" "Happy Accident" \ "Hipopede" "Hyperbola" "Kampyle of Eudoxus" "Kappa Curve" "Keratoid Cusp" \ "Knot Curve" "Lemniscate" "Limacon of Pascal" "Line" "Links Curve" "Lituus" \ "Log spiral" "Log Spiral Catacaustic" "Maltese Cross" "Nephroid" "Ophiuride" \ "Parabola" "Piriform" "Poinsot Spiral 1" "Poinsot Spiral 2" "Polytrope" "Product" \ "Quadratrix of Hippias" "Quadrifolium" "Quotient1" "Quotient2" "Rose" "Rose of Troy" \ "Scarabaeus" "Semicubical Parabola" "Serpentine Curve" "Stirrup Curve" "Strophoid" \ "Sum" "Swastika Curve" "Teardrop Curve" "Tractrix" "Trefoil" "Trident" \ "Trident of Descartes" "Trifolium" "Trisectrix of Maclaurin" "Tschirnhausen Cubic" \ "Witch of Agnesi" visible=@type==9 endparam param sa1 caption = "Adjuster 1" default = 1.0 visible = @distvar =="Diamond" || @distvar=="Happy Accident" endparam param sa2 caption = "Adjuster 2" default = 1.0 visible = @distvar =="Diamond" || @distvar=="Happy Accident" endparam param sa3 caption = "Adjuster 3" default = 1.0 visible = @distvar=="Happy Accident" endparam param sa4 caption = "Adjuster 4" default = 1.0 visible = @distvar=="Happy Accident" endparam param sa5 caption = "Adjuster 5" default = 1.0 visible = @distvar=="Happy Accident" endparam param sa6 caption = "Adjuster 6" default = 1.0 visible = @distvar=="Happy Accident" endparam param sa7 caption = "Adjuster 7" default = 1.0 visible = @distvar=="Happy Accident" endparam param ar caption = "Astroid Radius" default = 0.2 visible=@distvar=="Astroid" endparam param apwr caption = "Power" default = (3.0,3.0) visible=@distvar=="Astroid" || @distvar=="Ellipse Evolute" || @distvar=="Bean" endparam func afn1 caption = "Polar Fn 1" default = cos() visible=@distvar=="Astroid" || @distvar=="Nephroid" || @distvar=="Curtate Cycloid" || @distvar=="Epicycloid" \ || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Deltoid Catacaustic" || @distvar=="Bean" endfunc func afn2 caption = "Polar Fn 2" default = sin() visible=@distvar=="Astroid" || @distvar=="Nephroid" || @distvar=="Curtate Cycloid" || @distvar=="Epicycloid" \ || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Deltoid Catacaustic" || @distvar=="Bean" endfunc func safn caption = "Adjuster Fn" default = ident() visible= @distvar =="Diamond" || @distvar=="Happy Accident" endfunc param a caption = "Polar parameter" default = 0.2 hint = "Affects spread and scale of trap" visible=((@distvar=="Sum" ||@distvar=="Difference" ||@distvar=="Product" || @distvar=="Quotient1" \ ||@distvar=="Quotient2" ||@distvar=="Exp1" ||@distvar=="Exp2")&& @type == 9) \ || @distvar=="Lemniscate" || @distvar=="Cardiod" || @distvar=="Conchoid" || @distvar=="Archimedes" \ || @distvar=="Log spiral" || @distvar=="Rose" || @distvar=="Bifolium" || @distvar=="Cissoid of Diocles" \ || @distvar=="Cochleoid" || @distvar=="Folium of Descartes" || @distvar=="Limacon of Pascal" || @distvar=="Lituus" \ || @distvar=="Nephroid" || @distvar=="Strophoid" || @distvar=="Witch of Agnesi" || @distvar=="Curtate Cycloid" \ || @distvar=="Epicycloid" || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Kampyle of Eudoxus" \ || @distvar=="Circle Catacaustic" || @distvar=="Deltoid Catacaustic" || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" \ || @distvar=="Butterfly" || @distvar=="Gear Curve" || @distvar=="Arachnida 1" || @distvar=="Arachnida 2" \ || @distvar=="Cayley's Sextic" || @distvar=="Cycloid of Seva" || @distvar=="Devil's Curve" || @distvar=="Eight Curve" \ || @distvar=="Epispiral" || @distvar=="Hipopede" || @distvar=="Maltese Cross" || @distvar=="Ophiuride" \ || @distvar=="Quadratrix of Hippias" || @distvar=="Poinsot Spiral 1" || @distvar=="Poinsot Spiral 2" || @distvar=="Quadrifolium" \ || @distvar=="Scarabaeus" || @distvar=="Semicubical Parabola" || @distvar=="Swastika Curve" || @distvar=="Trifolium" \ || @distvar=="Tschirnhausen Cubic" || @distvar=="Bicorn" || @distvar=="Cruciform" || @distvar=="Knot Curve" \ || @distvar=="Ampersand" || @distvar=="Bean" || @distvar=="Bicuspid" || @distvar=="Bow" \ || @distvar=="Cassini Ovals" || @distvar=="Circle" || @distvar=="Trident" || @distvar =="Stirrup Curve" \ || @distvar =="Diamond" || @distvar=="Dumbbell Curve" || @distvar=="Teardrop Curve" || @distvar=="Happy Accident" \ || @distvar=="Hyperbola" || @distvar=="Kappa Curve" || @distvar=="Piriform" || @distvar=="Keratoid Cusp" \ || @distvar=="Serpentine Curve" || @distvar=="Line" || @distvar=="Links Curve" || @distvar=="Parabola" \ || @distvar=="Trefoil" || @distvar=="Trident of Descartes" || @distvar=="Trisectrix of Maclaurin" || @distvar=="Atzema Spiral" \ || @distvar=="Rose of Troy" || @distvar=="Cotes' Spiral" || @distvar=="Dipole Curve" || @distvar=="Polytrope" endparam param b caption = "2nd Polar parameter" default = 1.0 hint = "Affects shape and scale of trap." visible=((@distvar=="Sum" ||@distvar=="Difference" ||@distvar=="Product" || @distvar=="Quotient1" \ ||@distvar=="Quotient2" ||@distvar=="Exp1" ||@distvar=="Exp2")&& @type == 9) \ || @distvar=="Conchoid" || @distvar=="Limacon of Pascal" || @distvar=="Strophoid" || @distvar=="Curtate Cycloid" \ || @distvar=="Epicycloid" || @distvar=="Ellipse Evolute" || @distvar=="Circle Catacaustic" || @distvar=="Deltoid Catacaustic" \ || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" || @distvar=="Gear Curve" || @distvar=="Devil's Curve" \ || @distvar=="Hipopede" || @distvar=="Ophiuride" || @distvar=="Scarabaeus" || @distvar=="Cruciform" \ || @distvar=="Bicuspid" || @distvar=="Bow" || @distvar=="Cassini Ovals" || @distvar=="Circle" \ || @distvar=="Trident" || @distvar=="Teardrop Curve" || @distvar=="Piriform" || @distvar=="Serpentine Curve" \ || @distvar=="Parabola" || @distvar=="Trident of Descartes" || @distvar=="Atzema Spiral" || @distvar=="Rose of Troy" \ || @distvar=="Cotes' Spiral" endparam param cp caption = "3rd Polar parameter" default = 0.05 visible=@distvar=="Rose of Troy" endparam param pn caption = "Polar integer" default = 3 visible=@distvar=="Gear Curve" || @distvar=="Arachnida 1" || @distvar=="Arachnida 2" || @distvar=="Epispiral" \ || @distvar=="Poinsot Spiral 1" || @distvar=="Poinsot Spiral 2" || @distvar=="Teardrop Curve" || @distvar=="Polytrope" endparam param t2 caption = "Angle type" default = 1 enum = "Atan2" "Atan" visible=@distvar=="Lemniscate" || @distvar=="Cardiod" || @distvar=="Conchoid" || @distvar=="Cycloid" \ || @distvar=="Cycloid" || @distvar=="Log spiral" || @distvar=="Rose" || @distvar=="Bifolium" \ || @distvar=="Astroid" || @distvar=="Cissoid of Diocles" || @distvar=="Cochleoid" || @distvar=="Folium of Descartes" \ || @distvar=="Limacon of Pascal" || @distvar=="Lituus" || @distvar=="Nephroid" || @distvar=="Nephroid" \ || @distvar=="Strophoid" || @distvar=="Witch of Agnesi" || @distvar=="Curtate Cycloid" || @distvar=="Epicycloid" \ || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Kampyle of Eudoxus" || @distvar=="Circle Catacaustic" \ || @distvar=="Deltoid Catacaustic" || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" || @distvar=="Butterfly" \ || @distvar=="Gear Curve" || @distvar=="Arachnida 1" || @distvar=="Arachnida 2" || @distvar=="Cayley's Sextic" \ || @distvar=="Cycloid of Seva" || @distvar=="Devil's Curve" || @distvar=="Eight Curve" || @distvar=="Epispiral" \ || @distvar=="Hipopede" || @distvar=="Maltese Cross" || @distvar=="Ophiuride" || @distvar=="Quadratrix of Hippias" \ || @distvar=="Poinsot Spiral 1" || @distvar=="Poinsot Spiral 2" || @distvar=="Quadrifolium" || @distvar=="Scarabaeus" \ || @distvar=="Semicubical Parabola" || @distvar=="Swastika Curve" || @distvar=="Trifolium" || @distvar=="Tschirnhausen Cubic" \ || @distvar=="Bicorn" || @distvar=="Cruciform" || @distvar=="Bean" || @distvar=="Bow" \ || @distvar=="Cassini Ovals" || @distvar=="Circle" || @distvar=="Teardrop Curve" || @distvar=="Hyperbola" \ || @distvar=="Kappa Curve" || @distvar=="Piriform" || @distvar=="Serpentine Curve" || @distvar=="Trefoil" \ || @distvar=="Trisectrix of Maclaurin" || @distvar=="Atzema Spiral" || @distvar=="Rose of Troy" || @distvar=="Cotes' Spiral" \ || @distvar=="Dipole Curve" endparam param absval caption = "Absolute Value" default = true visible=@type==9 && @trap_mode != 3 endparam param negroot caption = "Quad Neg Root" default = false visible=@type==9 && (@distvar=="Knot Curve" || @distvar=="Ampersand" || @distvar=="Bicuspid" \ || @distvar=="Cassini Ovals" || @distvar =="Stirrup Curve" || @distvar=="Keratoid Cusp" || @distvar=="Links Curve") endparam func fn4 caption = "Real Function" default = ident() visible=@type==9 && @distvar != "Astroid" && @distvar != "Nephroid" && @distvar != "Witch of Agnesi" \ && @distvar != "Curtate Cycloid" && @distvar != "Epicycloid" && @distvar != "Ellipse Evolute" && @distvar != "Tractrix" \ && @distvar != "Circle Catacaustic" && @distvar != "Deltoid Catacaustic" && @distvar != "Ellipse Catacaustic" && @distvar != "Log Spiral Catacaustic" \ && @distvar != "Gear Curve" && @distvar != "Bicorn" && @distvar != "Cruciform" && @distvar != "Knot Curve" \ && @distvar != "Ampersand" && @distvar != "Bicuspid" && @distvar != "Bow" \ && @distvar != "Trident" && @distvar !="Stirrup Curve" \ && @distvar!="Diamond" && @distvar!="Dumbbell Curve" && @distvar!="Teardrop Curve" && @distvar!="Happy Accident" \ && @distvar!="Piriform" && @distvar!="Keratoid Cusp" && @distvar!="Serpentine Curve" && @distvar!="Line" \ && @distvar!="Links Curve" && @distvar!="Parabola" && @distvar!="Trident of Descartes" && @distvar!="Atzema Spiral" \ && @distvar!="Polytrope" endfunc func fn5 caption = "Imaginary Function" default = ident() visible=@type==9 && @distvar != "Astroid" && @distvar != "Nephroid" && @distvar != "Witch of Agnesi" \ && @distvar != "Curtate Cycloid" && @distvar != "Epicycloid" && @distvar != "Ellipse Evolute" && @distvar != "Tractrix" \ && @distvar != "Circle Catacaustic" && @distvar != "Deltoid Catacaustic" && @distvar != "Ellipse Catacaustic" && @distvar != "Log Spiral Catacaustic" \ && @distvar != "Gear Curve" && @distvar != "Bicorn" && @distvar != "Cruciform" && @distvar != "Knot Curve" \ && @distvar != "Ampersand" && @distvar != "Bicuspid" && @distvar != "Bow" \ && @distvar != "Trident" && @distvar !="Stirrup Curve" \ && @distvar!="Diamond" && @distvar!="Dumbbell Curve" && @distvar!="Teardrop Curve" && @distvar!="Happy Accident" \ && @distvar!="Piriform" && @distvar!="Keratoid Cusp" && @distvar!="Serpentine Curve" && @distvar!="Line" \ && @distvar!="Links Curve" && @distvar!="Parabola" && @distvar!="Trident of Descartes" && @distvar!="Atzema Spiral" \ && @distvar!="Polytrope" endfunc heading caption = "Traps" endheading param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" "6" "7" "8" "9" endparam func fn3 caption = "Trap var function" default = cos() visible = @trapvar==5 ||@trapvar==7 || @trapvar==8 || @trapvar==9 endfunc param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" "Farthest" \ "Sum" "Weighted Sum" "Weighted Sum 2" "Weighted Sum 3" \ "Sum 2" "Weighted Sum 4" "Weighted Sum 5" "Weighted Sum 6" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" visible=@trap_mode == 0 || @trap_mode == 3 endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" visible=@trap_mode == 0 || @trap_mode == 3 endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" visible=@trap_mode == 0 || @trap_mode == 3 endparam param back caption = "Solid Background" default = true visible=(@trap_mode == 1 || @trap_mode == 2 || @trap_mode == 5 \ || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 || \ @trap_mode == 9 || @trap_mode == 10 || @trap_mode == 11 \ || @trap_mode == 12 || @trap_mode == 13) || (@trap_mode == 4) endparam param width caption = "Trap width" default = 0.1 endparam param ang caption = "Trap rotation" default = 0.0 endparam param offset caption = "Trap offset" default = (0.0,0.0) endparam param movecenter caption = "Move offset" default = false endparam Heading caption = "Progressive Parameters" endheading param increment caption = "Increment parameters" default = false endparam param incstartx caption = "Inc starting x offset" default = 0.0 visible=@increment==true && (@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9) endparam param incstarty caption = "Inc starting y offset" default = 0.0 visible=@increment==true && (@trap_mode==3 || @color_mode==6 || @color_mode==7 || @color_mode==8 \ || @color_mode==9 || @color_mode==10 || @color_mode== 11 || @trapvar==4 \ || @trapvar==5 || @trapvar==6 || @trapvar==7 || @trapvar==8 || @trapvar==9) endparam param rot caption = "Inc trap rotation" default = 0.0 visible=@increment==true endparam param offx caption = "Inc x trap offset" default = 0.0 visible=@increment==true endparam param offy caption = "Inc y trap offset" default = 0.0 visible=@increment==true endparam param polar1 caption = "Inc polar1" default = 0.0 visible=@increment==true && (((@distvar=="Sum" ||@distvar=="Difference" ||@distvar=="Product" || @distvar=="Quotient1" \ ||@distvar=="Quotient2" ||@distvar=="Exp1" ||@distvar=="Exp2")&& @type == 9) \ || @distvar=="Lemniscate" || @distvar=="Cardiod" || @distvar=="Conchoid" || @distvar=="Archimedes" \ || @distvar=="Log spiral" || @distvar=="Rose" || @distvar=="Bifolium" || @distvar=="Cissoid of Diocles" \ || @distvar=="Cochleoid" || @distvar=="Folium of Descartes" || @distvar=="Limacon of Pascal" || @distvar=="Lituus" \ || @distvar=="Nephroid" || @distvar=="Strophoid" || @distvar=="Witch of Agnesi" || @distvar=="Curtate Cycloid" \ || @distvar=="Epicycloid" || @distvar=="Ellipse Evolute" || @distvar=="Tractrix" || @distvar=="Kampyle of Eudoxus" \ || @distvar=="Circle Catacaustic" || @distvar=="Deltoid Catacaustic" || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" \ || @distvar=="Butterfly" || @distvar=="Gear Curve" || @distvar=="Arachnida 1" || @distvar=="Arachnida 2" \ || @distvar=="Cayley's Sextic" || @distvar=="Cycloid of Seva" || @distvar=="Devil's Curve" || @distvar=="Eight Curve" \ || @distvar=="Epispiral" || @distvar=="Hipopede" || @distvar=="Maltese Cross" || @distvar=="Ophiuride" \ || @distvar=="Quadratrix of Hippias" || @distvar=="Poinsot Spiral 1" || @distvar=="Poinsot Spiral 2" || @distvar=="Quadrifolium" \ || @distvar=="Scarabaeus" || @distvar=="Semicubical Parabola" || @distvar=="Swastika Curve" || @distvar=="Trifolium" \ || @distvar=="Tschirnhausen Cubic" || @distvar=="Bicorn" || @distvar=="Cruciform" || @distvar=="Knot Curve" \ || @distvar=="Ampersand" || @distvar=="Bean" || @distvar=="Bicuspid" || @distvar=="Bow" \ || @distvar=="Cassini Ovals" || @distvar=="Circle" || @distvar=="Trident" || @distvar =="Stirrup Curve" \ || @distvar =="Diamond" || @distvar=="Dumbbell Curve" || @distvar=="Teardrop Curve" || @distvar=="Happy Accident" \ || @distvar=="Hyperbola" || @distvar=="Kappa Curve" || @distvar=="Piriform" || @distvar=="Keratoid Cusp" \ || @distvar=="Serpentine Curve" || @distvar=="Line" || @distvar=="Links Curve" || @distvar=="Parabola" \ || @distvar=="Trefoil" || @distvar=="Trident of Descartes" || @distvar=="Trisectrix of Maclaurin" || @distvar=="Atzema Spiral" \ || @distvar=="Rose of Troy" || @distvar=="Cotes' Spiral" || @distvar=="Dipole Curve" || @distvar=="Polytrope") endparam param polar2 caption = "Inc polar2" default = 0.0 visible=@increment==true && (((@distvar=="Sum" ||@distvar=="Difference" ||@distvar=="Product" || @distvar=="Quotient1" \ ||@distvar=="Quotient2" ||@distvar=="Exp1" ||@distvar=="Exp2")&& @type == 9) \ || @distvar=="Conchoid" || @distvar=="Limacon of Pascal" || @distvar=="Strophoid" || @distvar=="Curtate Cycloid" \ || @distvar=="Epicycloid" || @distvar=="Ellipse Evolute" || @distvar=="Circle Catacaustic" || @distvar=="Deltoid Catacaustic" \ || @distvar=="Ellipse Catacaustic" || @distvar=="Log Spiral Catacaustic" || @distvar=="Gear Curve" || @distvar=="Devil's Curve" \ || @distvar=="Hipopede" || @distvar=="Ophiuride" || @distvar=="Scarabaeus" || @distvar=="Cruciform" \ || @distvar=="Bicuspid" || @distvar=="Bow" || @distvar=="Cassini Ovals" || @distvar=="Circle" \ || @distvar=="Trident" || @distvar=="Teardrop Curve" || @distvar=="Piriform" || @distvar=="Serpentine Curve" \ || @distvar=="Parabola" || @distvar=="Trident of Descartes" || @distvar=="Atzema Spiral" || @distvar=="Rose of Troy" \ || @distvar=="Cotes' Spiral") endparam param polar3 caption = "Inc polar3" default = 0.0 visible=@distvar=="Rose of Troy" endparam param papwr caption = "Inc power" default = (0,0) visible = @increment==true && (@distvar=="Astroid" || @distvar=="Ellipse Evolute" || @distvar=="Bean") endparam param isa1 caption = "Inc Adjuster 1" default = 0.0 visible = @increment==true && (@distvar =="Diamond" \ || @distvar=="Happy Accident") endparam param isa2 caption = "Inc Adjuster 2" default = 0.0 visible = @increment==true && (@distvar =="Diamond" \ || @distvar=="Happy Accident") endparam param isa3 caption = "Inc Adjuster 3" default = 0.0 visible = @increment==true && (@distvar=="Happy Accident") endparam param isa4 caption = "Inc Adjuster 4" default = 0.0 visible = @increment==true && (@distvar=="Happy Accident") endparam param isa5 caption = "Inc Adjuster 5" default = 0.0 visible = @increment==true && (@distvar=="Happy Accident") endparam param isa6 caption = "Inc Adjuster 6" default = 0.0 visible = @increment==true && (@distvar=="Happy Accident") endparam param isa7 caption = "Inc Adjuster 7" default = 0.0 visible = @increment==true && (@distvar=="Happy Accident") endparam heading caption = "fBm Textures" endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Transfer Weight" default = 1.0 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0 hint = "This is the overall scale of the noise." endparam param fbmf caption = "fBm Final Weight" default = 10.0 endparam heading caption = "General Textures" endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." endparam param tweight caption = "Texture weight" default = 0.0 endparam param ts caption = "Texture scale" default = 100.0 endparam param tc caption = "Texture modifier" default = 5.0 endparam param pwr caption = "Texture power" default = 0.25 endparam param addfbm caption = "Add fBm" default = false endparam param tfbm caption = "fBm Amount" default = 1.0 visible=@addfbm==true endparam func fn1 caption = "Texture Function 1" default = sqr() endfunc func fn2 caption = "Texture Function 2" default = acos() endfunc func fn6 caption = "Texture Function 3" default = round() endfunc } Landscape {; Ron Barnett, May 1, 2005 ; Implements the mapping algorithm of Susan Chambless ; Implements fBm in the global section using a noise array ; and modification of Damien's fBm code global: int w = 0 int h = 0 float ffx = 0.0 float ffy = 0.0 float yy = 0.0 float ffz = 0.0 int px = 0 int py = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) float count[round(#width*(1+@percentInc*0.01))+1,round(#height*(1+@percentInc*0.01))+1] float gsum[round(#width*(1+@percentInc*0.01))+1,round(#height*(1+@percentInc*0.01))+1] complex gr = (1,1) complex gr2 = (0,1) ^ 0.411111111111 float gfreq = 1.0 int gi = 0 complex gp = 0 float gbx0 = 0 float gby0 = 0 float gbx1 = 0 float gby1 = 0 float grx0 = 0 float gry0 = 0 float grx1 = 0 float gry1 = 0 float gb00 = 0 float gb10 = 0 float gb01 = 0 float gb11 = 0 float gg_b00_0 = 0 float gg_b10_0 = 0 float gg_b01_0 = 0 float gg_b11_0 = 0 float gg_b00_1 = 0 float gg_b10_1 = 0 float gg_b01_1 = 0 float gg_b11_1 = 0 float gd = 0.0 float gu1 = 0 float gv1 = 0 float gu2 = 0 float gv2 = 0 float gsx = 0 float gsy = 0 float ga = 0 float gb = 0 complex gpixel=0 complex gp = 0 int l = 0 int ir = 0 int si = 0 int sj = 0 float rra = 0 bool continue = true ; ; w = 0 h = 0 ; while (h < #height+ht+1) while (w < #width+wd+1) gpixel = w/(#width+wd+1) + flip(h/(#height+ht)+1) gp = gpixel * @gnscale * gr + @gnoffset gi = @giter gfreq = @gfreq gsum[w,h] = 0 WHILE (gi > 0) gbx0 = floor(real(gp)) % 256 gby0 = floor(imag(gp)) % 256 IF (gbx0 < 0) gbx0 = gbx0 + 256 ENDIF IF (gby0 < 0) gby0 = gby0 + 256 ENDIF gbx1 = (gbx0 + 1) % 256 gby1 = (gby0 + 1) % 256 grx0 = real(gp) - floor(real(gp)) gry0 = imag(gp) - floor(imag(gp)) grx1 = grx0 - 1 gry1 = gry0 - 1 gb00 = (gbx0^2 % 65536 + gby0)^2 % 65536 gb10 = (gbx1^2 % 65536 + gby0)^2 % 65536 gb01 = (gbx0^2 % 65536 + gby1)^2 % 65536 gb11 = (gbx1^2 % 65536 + gby1)^2 % 65536 gg_b00_0 = (gb00)^2*0.25 % 512 - 256 gg_b10_0 = (gb10)^2*0.25 % 512 - 256 gg_b01_0 = (gb01)^2*0.25 % 512 - 256 gg_b11_0 = (gb11)^2*0.25 % 512 - 256 gg_b00_1 = (gb00+1)^2*0.25 % 512 - 256 gg_b10_1 = (gb10+1)^2*0.25 % 512 - 256 gg_b01_1 = (gb01+1)^2*0.25 % 512 - 256 gg_b11_1 = (gb11+1)^2*0.25 % 512 - 256 gd = 1 / sqrt(sqr(gg_b00_0) + sqr(gg_b00_1)) gg_b00_0 = gg_b00_0 * gd gg_b00_1 = gg_b00_1 * gd gd = 1 / sqrt(sqr(gg_b10_0) + sqr(gg_b10_1)) gg_b10_0 = gg_b10_0 * gd gg_b10_1 = gg_b10_1 * gd gd = 1 / sqrt(sqr(gg_b01_0) + sqr(gg_b01_1)) gg_b01_0 = gg_b01_0 * gd gg_b01_1 = gg_b01_1 * gd gd = 1 / sqrt(sqr(gg_b11_0) + sqr(gg_b11_1)) gg_b11_0 = gg_b11_0 * gd gg_b11_1 = gg_b11_1 * gd gu1 = grx0 * gg_b00_0 + gry0 * gg_b00_1 gv1 = grx1 * gg_b10_0 + gry0 * gg_b10_1 gu2 = grx0 * gg_b01_0 + gry1 * gg_b01_1 gv2 = grx1 * gg_b11_0 + gry1 * gg_b11_1 gsx = sqr(grx0) * (3 - grx0*2) gsy = sqr(gry0) * (3 - gry0*2) ga = gu1 + gsx*(gv1-gu1) gb = gu2 + gsx*(gv2-gu2) gsum[w,h] = gsum[w,h] + (ga + gsy*(gb-ga))*gfreq gfreq = gfreq / 2 gp = gp * gr2 * 2 gi = gi - 1 ENDWHILE w = w + 1 endwhile w = 0 h = h + 1 endwhile w = 0 h = 0 ; ; initialize arrays ; while(h < #height+ht+1) ; while(w < #width+wd+1) while(w < #width) count[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile w = 0 h = 0 ; while (h < #height+ht+1) while (w < #width+wd+1) ffx = w/(#width+wd+1)*#magn*#width ffy = (1-h/(#height+ht+1))*#magn ffz = gsum[w,h] ; ; rotation around the x axis ; yy = ffy ffy = (0.5 + (ffy - 0.5)*cos(@xangle*pi/180) - \ (ffz - 0.5)*sin(@xangle*pi/180))*#height ffz = (0.5 + (yy - 0.5)*sin(@xangle*pi/180) + \ (ffz - 0.5)*cos(@xangle*pi/180))*#height ; ; final translation ; ffx = ffx + @transx*(#width) ffy = ffy + @transy*(#height) ffz = ffz + @transz*(#height) px = trunc(ffx)+wd2 py = trunc(ffy)+ht2 if px > 0 && py > 0 && px < #width+wd+1 && py < #height+wd+1 count[px,py] = ffz endif w = w + 1 endwhile w = 0 h = h + 1 endwhile ; ; sort array by ffz value w = 0 while (w < #width+wd+1) l = round((#height+ht+1)/2) + 1 ir = round(#height+ht+1) repeat if l > 1 l = l-1 rra = count[w,l-1] else rra = count[w,ir-1] count[w,ir-1] = count[w,0] ir = ir-1 if ir == 0 count[w,0] = rra continue = false endif endif if continue == true si = l sj = 2*l endif while (sj <= ir) && (continue == true) if sj < ir if count[w,sj-1] < count[w,sj] sj = sj + 1 endif endif if rra < count[w,sj-1] count[w,si-1] = count[w,sj-1] si = sj sj = sj + sj else sj = ir + 1 endif endwhile if (continue == true) count[w,si-1] = rra endif until continue == false w = w + 1 endwhile ; init: float nhit=0 float nhitx = 0 float nhity = 0 float gnhit=0 float gnhitx = 0 float gnhity = 0 float e1 = 0.0; potentials float e2 = 0.0 float e3 = 0.0 float vx = 0.0; normal vector float vy = 0.0 float vz = 0.0 float vd = 0.0 float cen = 0 float cenx = 0 float ceny = 0 float e1 = 0 float e2 = 0 float e3 = 0 complex z1 = 0 float r = 2/log(20)*@filter^2 float gauss[2*@filter+1,2*@filter+1] float gweight = 0 int gx = 0 int gy = 0 float a = 0 loop: final: int xcrd = #x int ycrd = #y ; create the filter array and weight ; gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter a = (gx^2 + gy^2)/r gauss[gx+@filter,gy+@filter] = exp(-a) gweight = gweight + gauss[gx+@filter,gy+@filter] gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) endif if @filter == 0 nhit=count[xcrd,ycrd] ; if nhit == 0 && (count[xcrd+1,ycrd] != 0 || count[xcrd,ycrd+1] !=0 || \ ; count[xcrd-1,ycrd] != 0 || count[xcrd,ycrd-1] !=0) ; nhit = (count[xcrd+1,ycrd]+count[xcrd,ycrd+1]+ \ ; count[xcrd-1,ycrd]+count[xcrd,ycrd-1])/4 ; endif nhitx=count[xcrd+@closeness,ycrd] ; if nhitx == 0 && (count[xcrd+@closeness+1,ycrd] != 0 || count[xcrd+@closeness,ycrd+1] !=0 || \ ; count[xcrd+@closeness-1,ycrd] != 0 || count[xcrd+@closeness,ycrd-1] !=0) ; nhitx = (count[xcrd+@closeness+1,ycrd]+count[xcrd+@closeness,ycrd+1]+ \ ; count[xcrd+@closeness-1,ycrd]+count[xcrd+@closeness,ycrd-1])/4 ; endif nhity=count[xcrd,ycrd+@closeness] ; if nhity == 0 && (count[xcrd+1,ycrd+@closeness] != 0 || count[xcrd,ycrd+@closeness+1] !=0 || \ ; count[xcrd-1,ycrd+@closeness] != 0 || count[xcrd,ycrd+@closeness-1] !=0) ; nhity = (count[xcrd+1,ycrd+@closeness]+count[xcrd,ycrd+@closeness+1]+ \ ; count[xcrd-1,ycrd+@closeness]+count[xcrd,ycrd+@closeness-1])/4 ; endif else ; apply the Gaussian filter nhit=0 nhitx=0 nhity=0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter gnhit = count[xcrd+gx,ycrd+gy] if gnhit == 0 && (count[xcrd+gx+1,ycrd+gy] != 0 || count[xcrd+gx,ycrd+gy+1] !=0 || \ count[xcrd+gx-1,ycrd+gy] != 0 || count[xcrd+gx,ycrd+gy-1] !=0) gnhit = (count[xcrd+gx+1,ycrd+gy]+count[xcrd+gx,ycrd+gy+1]+ \ count[xcrd+gx-1,ycrd+gy]+count[xcrd+gx,ycrd+gy-1])/4 endif nhit = nhit + gauss[gx+@filter,gy+@filter]*gnhit gnhitx = count[xcrd+gx+@closeness,ycrd+gy] if gnhitx == 0 && (count[xcrd+gx+@closeness+1,ycrd+gy] != 0 || count[xcrd+gx+@closeness,ycrd+gy+1] !=0 || \ count[xcrd+gx+@closeness-1,ycrd+gy] != 0 || count[xcrd+gx+@closeness,ycrd+gy-1] !=0) gnhitx = (count[xcrd+gx+@closeness+1,ycrd+gy]+count[xcrd+gx+@closeness,ycrd+gy+1]+ \ count[xcrd+gx+@closeness-1,ycrd+gy]+count[xcrd+gx+@closeness,ycrd+gy-1])/4 endif nhitx = nhitx + gauss[gx+@filter,gy+@filter]*gnhitx gnhity = count[xcrd+gx,ycrd+gy+@closeness] if gnhity == 0 && (count[xcrd+gx+1,ycrd+gy+@closeness] != 0 || count[xcrd+gx,ycrd+gy+@closeness+1] !=0 || \ count[xcrd+gx-1,ycrd+gy+@closeness] != 0 || count[xcrd+gx,ycrd+gy+@closeness-1] !=0) gnhity = (count[xcrd+gx+1,ycrd+gy]+count[xcrd+gx,ycrd+gy+@closeness+1]+ \ count[xcrd+gx-1,ycrd+gy+@closeness]+count[xcrd+gx,ycrd+gy+@closeness-1])/4 endif nhity = nhity + gauss[gx+@filter,gy+@filter]*gnhity gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile nhit = nhit/gweight nhitx = nhitx/gweight nhity = nhity/gweight endif cen = nhit cenx = nhitx ceny = nhity e1 = cen*@zscale e2 = cenx*@zscale e3 = ceny*@zscale IF (@xfer == 1); log e1 = log(e1) e2 = log(e2) e3 = log(e3) ELSEIF (@xfer == 2); sqrt e1 = sqrt(e1) e2 = sqrt(e2) e3 = sqrt(e3) ELSEIF (@xfer == 3); cuberoot e1 = (e1)^(1/3) e2 = (e2)^(1/3) e3 = (e3)^(1/3) ELSEIF (@xfer == 4); exp e1 = exp(e1) e2 = exp(e2) e3 = exp(e3) ELSEIF (@xfer == 5); sqr e1 = sqr(e1) e2 = sqr(e2) e3 = sqr(e3) ELSEIF (@xfer == 6); cube e1 = (e1)^3 e2 = (e2)^3 e3 = (e3)^3 ELSEIF (@xfer == 7); sin e1 = sin(e1) e2 = sin(e2) e3 = sin(e3) ELSEIF (@xfer == 8); cos e1 = cos(e1) e2 = cos(e2) e3 = cos(e3) ELSEIF (@xfer == 9); tan e1 = tan(e1) e2 = tan(e2) e3 = tan(e3) ENDIF ; apply post-scale e1 = e1 * @zscale2 e2 = e2 * @zscale2 e3 = e3 * @zscale2 vx = e2-e1 vy = e3-e1 vz = -0.01 ; normalize vector vd = 1/sqrt(sqr(vx)+sqr(vy)+sqr(vz)) vx = vx*vd vy = vy*vd vz = vz*vd z1 = vx + flip(vy) float d2r = #pi/180; degrees to radians conversion factor ; create vector for light direction float lx = cos(@angle*d2r) * cos(@elevation*d2r) float ly = sin(@angle*d2r) * cos(@elevation*d2r) float lz = -sin(@elevation*d2r) ; compute cosine of angle between these vectors ; (this is the amount of lighting on the surface) float ll = lx*real(z1) + ly*imag(z1) + lz*vz IF (ll < @ambient); light is below the ambient level ll = @ambient; set it to the ambient level ENDIF IF (@ambient < 0); the ambient level is negative ll = ll + 1; offset to prevent clipping at 0 ENDIF if(nhit==0) #solid=true else if @clr == "default" #index = ll*0.99 elseif @clr == "depth enhance" #index = ll*0.99 + @scle*ycrd/#height elseif @clr == "z enhance" #index = ll*0.99 + @scle*nhit/100 elseif @clr == "normal enhance" #index = ll*0.99 + @scle*vz endif endif default: render = false param version caption = "Formula Version" default = 210 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam $ifdef VER40 heading text="Zoom in should be used with caution. \ Uses a modification of Damien's \ fBm code in the global section to \ create the landscape heightfield array. \ Use with Pixel formula in mt.ufm \ and set drawing method to one-pass." endheading $else heading caption="Zoom in is not recommended." endheading heading caption="Uses a modification of Damien's" endheading heading caption="fBm code in the global section to" endheading heading caption="create the landscape heightfield." endheading heading caption="Use with Pixel formula in mt.ufm" endheading heading caption="Set drawing method to one-pass" endheading render=false $endif title="Landscape" param applyMapping caption = "Apply Mapping" default = true endparam param percentInc caption = "Oversize by (%)" default = 100.0 visible = @applyMapping == true endparam ; param solid ; caption="solid background?" ; default=true ; endparam param filter caption = "Filter Width" default = 0 min = 0 endparam param clr caption = "Color Method" default = 0 enum = "default" "depth enhance" "z enhance" "normal enhance" endparam float param scle caption = "Color Adj" default = 0.5 visible = @clr > 0 endparam heading caption = "Rotations & Translations" endheading param xangle caption = "X Axis Rotation" default = 45.0 hint = "This is the fixed (horizontal) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param transx caption = "X Final Translation" default = 0.0 endparam param transy caption = "Y Final Translation" default = 0.0 endparam param transz caption = "Z Final Translation" default = 0.0 endparam heading caption = "fBm Parameters" endheading param gnoffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam float param gnscale caption = "fBm Scale" default = 2.0 hint = "This is the overall scale of the noise." endparam float param gfreq caption = "fBm freq" default = 0.1 endparam int param giter caption = "fBm iter" default = 7 min = 1 endparam heading caption = "Lighting parameters" endheading int param closeness caption = "Lighting closness" default = 1 min = 1 endparam param xfer caption = "Height Transfer" default = 0 enum = "linear" "log" "sqrt" "cuberoot" "exp" "sqr" "cube" "sin" "cos" "tan" hint = "This function will be applied to the height value \ before a slope is calculated." endparam float param zscale caption = "Height Pre-Scale" default = 1 hint = "Specifies the ratio between height and distance. Higher \ values will exaggerate differences between high and low. \ In general, you will want to use smaller numbers here." endparam float param zscale2 caption = "Height Post-Scale" default = 0.1 hint = "Specifies the ratio between height and distance; like \ Height Pre-Scale, except that this value is applied after \ the transfer function." endparam param @angle caption = "Light Rotation" default = 0 hint = "Gives the rotation of the light source, in degrees." endparam param @elevation caption = "Light Elevation" default = 60 hint = "Gives the elevation of the light source, in degrees." endparam float param @ambient caption = "Ambient Light" default = 0.0 min = -1.0 max = 1.0 hint = "Specifies the level of ambient light. Use -1.0 to \ color all surfaces." endparam } CircleInversionsRayTrace {; Ron Barnett September 20, 2005 ; Direct coloring methods added by Ken Childress. ; Modifications for highlighting added by Ron Barnett ; Improved method for duplicate removal and addition of ; smallest circle threshold October 9, 2005 ; Transparency/Refraction, relections from spheres ; to the floor, more fractal types added November 15,2005 $define debug global: int MaxLevel = @level int level = MaxLevel complex cs[100000] float rad[100000] float csz[100000] float clr[100000] ; int cut[100000] float checkscale = @checkscale/#width*30 float frac[#width, #height] float c = 0 color colorswitch = rgb(0,0,0) int l = 0 int ir = 0 int si = 0 int sj = 0 bool continue = true complex rra = 0 float rrb = 0 float rrc = 0 float rrd = 0 float ddx = 0 float ddy = 0 float ddz = 0 float ddr = 0 float ang = 2*#pi/@circles complex ipi = flip(#pi); complex cpi = flip(#pi/@circles) complex cr1 = exp((0,0)*ang+ipi) complex cr2 = exp((0,1)*ang+ipi) float rdd = cabs(cr1-cr2)/2 float dd = cabs(cr1) float dtan = sqrt(dd*dd-rdd*rdd) float scle = (dd+rdd)/dtan float ar = 0 float br = 0 complex a = 0 complex b = 0 float temp = 0 float kr = @kr float krf = @krf float krt = @krt float krft = @krft if @tparent kr = kr*(1-@tparentval) krf = krf*(1-@tparentval) krt = krt*@tparentval krft = krft*@tparentval endif float agree = 0 float scircle = 0 if @circles < 8 scircle = @scircle agree = 1 else scircle = @scircle*4/@circles agree = 100*@scircle endif float thresh = scircle/agree int ii = 0 int i = 0 int j = 0 int k = 0 float mxi = 0 float fi = 0 float fj = 0 float expiter = 0 complex fij = 0 complex oldf = 0 complex fz = 0 complex fzp = 0 complex fzp2 = 0 float pwrtest = 10^(100/cabs(@p1)) bool bTest = false float isnear = cabs(@p2)^cabs(@p1)/@bailout complex fcenter = 0 float asp = #height/#width complex phx = 0 complex phy = 0 complex gx = 0 complex gx1 = 0 complex gy = 0 float ddx = 0 float ddy = 0 float ddr = 0 float closest = 1e318 complex ez = 0 float trap = 0.0 float trapd = 0.0 float trapd2 = 0.0 complex trapz2 = (0,0) complex trapr = (0,1)^(@trot/90.0) complex trapcenter2 = @tcenter complex r0 = (0,0) complex rh = (0,1)^(@torder/8) complex zh = (0,0) float theta = 0 float rr = 0 float af1 = 0 float af2 = 0 complex astroid = 0 int trap_iter = 0 if @flrtype == "Fractal" if @fctltype == "Mandelbrot" fcenter = @fmcenter while i < #width fi = (i*4/(#width)-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/(#height) - 2)/@fmag + imag(fcenter) fij = 0 while k < @miter fij = fij^@mp1+fi+flip(fj) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Julia" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter fij = fij^@mp1+@seed if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Newton" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^@p1 - @p2 fzp = @p1*fij^(@p1-1) fzp2 = @p1*(@p1-1)*fij^(@p1-2) if @cmethod == "Newton" fij = fij - fz/fzp elseif @cmethod == "Householder" fij = fij - fz/fzp*(1 + fz*fzp2/(2*fzp^2)) elseif @cmethod == "Halley" fij = fij - 2*fz*fzp/(2*fzp^2 - fz*fzp2) elseif @cmethod == "Schroder" fij = fij - fz*fzp/(fzp^2 - fz*fzp2) endif btest = (cabs(oldf-fij) < isnear) if !(!btest && (cabs(fij) < pwrtest)) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(!btest && (cabs(fij) < pwrtest)) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Cayley Julia" closest = 1e318 fcenter = @fccenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^3 - @cseed*fij - @cseed + 1 fzp = 3*fij^2 - @cseed fij = fij - fz/fzp btest = (cabs(oldf-fij) < isnear) if !(|fij - oldf| >= 1/@bailout) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(|fij - oldf| >= 1/@bailout) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Phoenix" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter phx = fij*fij + real(@phseed) + imag(@phseed)*phy phy = fij fij = phx if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 phx = 0 phy = 0 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Gopalsamy" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter gx = real(fij) gy = imag(fij) gx1 = -2*gx*gy + @gseed gy = gy*gy - gx*gx fij = gx1 + flip(gy) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Barnsley" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter IF real(fij) >= 0 fij = (fij - 1) * @bseed ELSE fij = (fij + 1) * @bseed ENDIF if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile endif endif i = 1 j = 0 k = 0 int ib = 0 int start = 0 int finish = 0 int lev = 2 int iii = (@circles+1)*2+1 float fx = 0.0 float ffx = 0.0 float xx = 0.0 float yy = 0 float fy = 0.0 float ffy = 0.0 float ffz = 0 float zz = 0 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float tzmax = tymax float zmin = xmin ; floor parameters float fa = @fa float fb = @fb float fc = @fc float fd = @fd*#width*asp ; Color range variables and initialization. color colorMap [500, 2] int ranges = 8 int colorsUsed = 0 int offset = 0 if (@colorPreset == "Gradient") colorsUsed = @ncolor elseif (@colorPreset == "Generate") colorsUsed = @numRanges elseif (@colorPreset == "Custom") colorsUsed = @colorRanges else colorsUsed = @ncolor endif if (@colorPreset == "Gradient") ; Use the gradient for the color ranges. ranges = @totalColors offset = 0 elseif (@colorPreset == "Custom") ; User specified custom range. ; Initial values by Toby Marshall. colorMap [0,0] = @colorMax1, colorMap [0,1] = @colorMin1 colorMap [1,0] = @colorMax2, colorMap [1,1] = @colorMin2 colorMap [2,0] = @colorMax3, colorMap [2,1] = @colorMin3 colorMap [3,0] = @colorMax4, colorMap [3,1] = @colorMin4 colorMap [4,0] = @colorMax5, colorMap [4,1] = @colorMin5 colorMap [5,0] = @colorMax6, colorMap [5,1] = @colorMin6 colorMap [6,0] = @colorMax7, colorMap [6,1] = @colorMin7 colorMap [7,0] = @colorMax8, colorMap [7,1] = @colorMin8 colorMap [8,0] = @customMax9, colorMap [8,1] = @customMin9 colorMap [9,0] = @customMax10, colorMap [9,1] = @customMin10 colorMap [10,0] = @customMax11, colorMap [10,1] = @customMin11 colorMap [11,0] = @customMax12, colorMap [11,1] = @customMin12 colorMap [12,0] = @customMax13, colorMap [12,1] = @customMin13 colorMap [13,0] = @customMax14, colorMap [13,1] = @customMin14 colorMap [14,0] = @customMax15, colorMap [14,1] = @customMin15 colorMap [15,0] = @customMax16, colorMap [15,1] = @customMin16 colorMap [16,0] = @customMax17, colorMap [16,1] = @customMin17 colorMap [17,0] = @customMax18, colorMap [17,1] = @customMin18 colorMap [18,0] = @customMax19, colorMap [18,1] = @customMin19 colorMap [19,0] = @customMax20, colorMap [19,1] = @customMin20 colorMap [20,0] = @customMax21, colorMap [20,1] = @customMin21 colorMap [21,0] = @customMax22, colorMap [21,1] = @customMin22 colorMap [22,0] = @customMax23, colorMap [22,1] = @customMin23 colorMap [23,0] = @customMax24, colorMap [23,1] = @customMin24 ranges = @colorRanges offset = @colorOffset elseif (@colorPreset == "Generate") ; Compute the color ranges using the gradient. ranges = 0 offset = @colorOffset while ranges < @numRanges color gradientColor = gradient(ranges/@numRanges) colorMap [ranges,0] = hsl(hue(gradientColor), sat(gradientColor), @luminanceUpper) colorMap [ranges,1] = hsl(hue(gradientColor), sat(gradientColor), @luminanceLower) ranges = ranges + 1 endwhile elseif (@colorPreset == "Default") ; colorMap [0,0] = @defaultMax1, colorMap [0,1] = @defaultMin1 colorMap [1,0] = @defaultMax2, colorMap [1,1] = @defaultMin2 colorMap [2,0] = @defaultMax3, colorMap [2,1] = @defaultMin3 colorMap [3,0] = @defaultMax4, colorMap [3,1] = @defaultMin4 colorMap [4,0] = @defaultMax5, colorMap [4,1] = @defaultMin5 colorMap [5,0] = @defaultMax6, colorMap [5,1] = @defaultMin6 colorMap [6,0] = @defaultMax7, colorMap [6,1] = @defaultMin7 colorMap [7,0] = @defaultMax8, colorMap [7,1] = @defaultMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Default 12") ; Created by Toby Marshall. colorMap [0,0] = @default12Max1, colorMap [0,1] = @default12Min1 colorMap [1,0] = @default12Max2, colorMap [1,1] = @default12Min2 colorMap [2,0] = @default12Max3, colorMap [2,1] = @default12Min3 colorMap [3,0] = @default12Max4, colorMap [3,1] = @default12Min4 colorMap [4,0] = @default12Max5, colorMap [4,1] = @default12Min5 colorMap [5,0] = @default12Max6, colorMap [5,1] = @default12Min6 colorMap [6,0] = @default12Max7, colorMap [6,1] = @default12Min7 colorMap [7,0] = @default12Max8, colorMap [7,1] = @default12Min8 colorMap [8,0] = @default12Max9, colorMap [8,1] = @default12Min9 colorMap [9,0] = @default12Max10, colorMap [9,1] = @default12Min10 colorMap [10,0] = @default12Max11, colorMap [10,1] = @default12Min11 colorMap [11,0] = @default12Max12, colorMap [11,1] = @default12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Default 16") ; Created by Toby Marshall. colorMap [0,0] = @default16Max1, colorMap [0,1] = @default16Min1 colorMap [1,0] = @default16Max2, colorMap [1,1] = @default16Min2 colorMap [2,0] = @default16Max3, colorMap [2,1] = @default16Min3 colorMap [3,0] = @default16Max4, colorMap [3,1] = @default16Min4 colorMap [4,0] = @default16Max5, colorMap [4,1] = @default16Min5 colorMap [5,0] = @default16Max6, colorMap [5,1] = @default16Min6 colorMap [6,0] = @default16Max7, colorMap [6,1] = @default16Min7 colorMap [7,0] = @default16Max8, colorMap [7,1] = @default16Min8 colorMap [8,0] = @default16Max9, colorMap [8,1] = @default16Min9 colorMap [9,0] = @default16Max10, colorMap [9,1] = @default16Min10 colorMap [10,0] = @default16Max11, colorMap [10,1] = @default16Min11 colorMap [11,0] = @default16Max12, colorMap [11,1] = @default16Min12 colorMap [12,0] = @default16Max13, colorMap [12,1] = @default16Min13 colorMap [13,0] = @default16Max14, colorMap [13,1] = @default16Min14 colorMap [14,0] = @default16Max15, colorMap [14,1] = @default16Min15 colorMap [15,0] = @default16Max16, colorMap [15,1] = @default16Min16 ranges = 16 offset = @colorOffset elseif (@colorPreset == "Default 24") ; Created by Toby Marshall. colorMap [0,0] = @default24Max1, colorMap [0,1] = @default24Min1 colorMap [1,0] = @default24Max2, colorMap [1,1] = @default24Min2 colorMap [2,0] = @default24Max3, colorMap [2,1] = @default24Min3 colorMap [3,0] = @default24Max4, colorMap [3,1] = @default24Min4 colorMap [4,0] = @default24Max5, colorMap [4,1] = @default24Min5 colorMap [5,0] = @default24Max6, colorMap [5,1] = @default24Min6 colorMap [6,0] = @default24Max7, colorMap [6,1] = @default24Min7 colorMap [7,0] = @default24Max8, colorMap [7,1] = @default24Min8 colorMap [8,0] = @default24Max9, colorMap [8,1] = @default24Min9 colorMap [9,0] = @default24Max10, colorMap [9,1] = @default24Min10 colorMap [10,0] = @default24Max11, colorMap [10,1] = @default24Min11 colorMap [11,0] = @default24Max12, colorMap [11,1] = @default24Min12 colorMap [12,0] = @default24Max13, colorMap [12,1] = @default24Min13 colorMap [13,0] = @default24Max14, colorMap [13,1] = @default24Min14 colorMap [14,0] = @default24Max15, colorMap [14,1] = @default24Min15 colorMap [15,0] = @default24Max16, colorMap [15,1] = @default24Min16 colorMap [16,0] = @default24Max17, colorMap [16,1] = @default24Min17 colorMap [17,0] = @default24Max18, colorMap [17,1] = @default24Min18 colorMap [18,0] = @default24Max19, colorMap [18,1] = @default24Min19 colorMap [19,0] = @default24Max20, colorMap [19,1] = @default24Min20 colorMap [20,0] = @default24Max21, colorMap [20,1] = @default24Min21 colorMap [21,0] = @default24Max22, colorMap [21,1] = @default24Min22 colorMap [22,0] = @default24Max23, colorMap [22,1] = @default24Min23 colorMap [23,0] = @default24Max24, colorMap [23,1] = @default24Min24 ranges = 24 offset = @colorOffset elseif (@colorPreset == "Color Wheel 12") ; Created by Toby Marshall. colorMap [0,0] = @colorWheel12Max1, colorMap [0,1] = @colorWheel12Min1 colorMap [1,0] = @colorWheel12Max2, colorMap [1,1] = @colorWheel12Min2 colorMap [2,0] = @colorWheel12Max3, colorMap [2,1] = @colorWheel12Min3 colorMap [3,0] = @colorWheel12Max4, colorMap [3,1] = @colorWheel12Min4 colorMap [4,0] = @colorWheel12Max5, colorMap [4,1] = @colorWheel12Min5 colorMap [5,0] = @colorWheel12Max6, colorMap [5,1] = @colorWheel12Min6 colorMap [6,0] = @colorWheel12Max7, colorMap [6,1] = @colorWheel12Min7 colorMap [7,0] = @colorWheel12Max8, colorMap [7,1] = @colorWheel12Min8 colorMap [8,0] = @colorWheel12Max9, colorMap [8,1] = @colorWheel12Min9 colorMap [9,0] = @colorWheel12Max10, colorMap [9,1] = @colorWheel12Min10 colorMap [10,0] = @colorWheel12Max11, colorMap [10,1] = @colorWheel12Min11 colorMap [11,0] = @colorWheel12Max12, colorMap [11,1] = @colorWheel12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Alhambra 8") ; Created by Toby Marshall. colorMap [0,0] = @alhambra8Max1, colorMap [0,1] = @alhambra8Min1 colorMap [1,0] = @alhambra8Max2, colorMap [1,1] = @alhambra8Min2 colorMap [2,0] = @alhambra8Max3, colorMap [2,1] = @alhambra8Min3 colorMap [3,0] = @alhambra8Max4, colorMap [3,1] = @alhambra8Min4 colorMap [4,0] = @alhambra8Max5, colorMap [4,1] = @alhambra8Min5 colorMap [5,0] = @alhambra8Max6, colorMap [5,1] = @alhambra8Min6 colorMap [6,0] = @alhambra8Max7, colorMap [6,1] = @alhambra8Min7 colorMap [7,0] = @alhambra8Max8, colorMap [7,1] = @alhambra8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Belvedere 8") ; Created by Toby Marshall. colorMap [0,0] = @belvedere8Max1, colorMap [0,1] = @belvedere8Min1 colorMap [1,0] = @belvedere8Max2, colorMap [1,1] = @belvedere8Min2 colorMap [2,0] = @belvedere8Max3, colorMap [2,1] = @belvedere8Min3 colorMap [3,0] = @belvedere8Max4, colorMap [3,1] = @belvedere8Min4 colorMap [4,0] = @belvedere8Max5, colorMap [4,1] = @belvedere8Min5 colorMap [5,0] = @belvedere8Max6, colorMap [5,1] = @belvedere8Min6 colorMap [6,0] = @belvedere8Max7, colorMap [6,1] = @belvedere8Min7 colorMap [7,0] = @belvedere8Max8, colorMap [7,1] = @belvedere8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Bouquet 8") ; Created by Toby Marshall. colorMap [0,0] = @bouquet8Max1, colorMap [0,1] = @bouquet8Min1 colorMap [1,0] = @bouquet8Max2, colorMap [1,1] = @bouquet8Min2 colorMap [2,0] = @bouquet8Max3, colorMap [2,1] = @bouquet8Min3 colorMap [3,0] = @bouquet8Max4, colorMap [3,1] = @bouquet8Min4 colorMap [4,0] = @bouquet8Max5, colorMap [4,1] = @bouquet8Min5 colorMap [5,0] = @bouquet8Max6, colorMap [5,1] = @bouquet8Min6 colorMap [6,0] = @bouquet8Max7, colorMap [6,1] = @bouquet8Min7 colorMap [7,0] = @bouquet8Max8, colorMap [7,1] = @bouquet8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Color Switch 8") ; Created by Toby Marshall. colorMap [0,0] = @colorSwitch8Max1, colorMap [0,1] = @colorSwitch8Min1 colorMap [1,0] = @colorSwitch8Max2, colorMap [1,1] = @colorSwitch8Min2 colorMap [2,0] = @colorSwitch8Max3, colorMap [2,1] = @colorSwitch8Min3 colorMap [3,0] = @colorSwitch8Max4, colorMap [3,1] = @colorSwitch8Min4 colorMap [4,0] = @colorSwitch8Max5, colorMap [4,1] = @colorSwitch8Min5 colorMap [5,0] = @colorSwitch8Max6, colorMap [5,1] = @colorSwitch8Min6 colorMap [6,0] = @colorSwitch8Max7, colorMap [6,1] = @colorSwitch8Min7 colorMap [7,0] = @colorSwitch8Max8, colorMap [7,1] = @colorSwitch8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Evening Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @eveningSky8Max1, colorMap [0,1] = @eveningSky8Min1 colorMap [1,0] = @eveningSky8Max2, colorMap [1,1] = @eveningSky8Min2 colorMap [2,0] = @eveningSky8Max3, colorMap [2,1] = @eveningSky8Min3 colorMap [3,0] = @eveningSky8Max4, colorMap [3,1] = @eveningSky8Min4 colorMap [4,0] = @eveningSky8Max5, colorMap [4,1] = @eveningSky8Min5 colorMap [5,0] = @eveningSky8Max6, colorMap [5,1] = @eveningSky8Min6 colorMap [6,0] = @eveningSky8Max7, colorMap [6,1] = @eveningSky8Min7 colorMap [7,0] = @eveningSky8Max8, colorMap [7,1] = @eveningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fantasia 8") ; Created by Toby Marshall. colorMap [0,0] = @fantasia8Max1, colorMap [0,1] = @fantasia8Min1 colorMap [1,0] = @fantasia8Max2, colorMap [1,1] = @fantasia8Min2 colorMap [2,0] = @fantasia8Max3, colorMap [2,1] = @fantasia8Min3 colorMap [3,0] = @fantasia8Max4, colorMap [3,1] = @fantasia8Min4 colorMap [4,0] = @fantasia8Max5, colorMap [4,1] = @fantasia8Min5 colorMap [5,0] = @fantasia8Max6, colorMap [5,1] = @fantasia8Min6 colorMap [6,0] = @fantasia8Max7, colorMap [6,1] = @fantasia8Min7 colorMap [7,0] = @fantasia8Max8, colorMap [7,1] = @fantasia8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Flowering Orchard 8") ; Created by Toby Marshall. colorMap [0,0] = @floweringOrchard8Max1, colorMap [0,1] = @floweringOrchard8Min1 colorMap [1,0] = @floweringOrchard8Max2, colorMap [1,1] = @floweringOrchard8Min2 colorMap [2,0] = @floweringOrchard8Max3, colorMap [2,1] = @floweringOrchard8Min3 colorMap [3,0] = @floweringOrchard8Max4, colorMap [3,1] = @floweringOrchard8Min4 colorMap [4,0] = @floweringOrchard8Max5, colorMap [4,1] = @floweringOrchard8Min5 colorMap [5,0] = @floweringOrchard8Max6, colorMap [5,1] = @floweringOrchard8Min6 colorMap [6,0] = @floweringOrchard8Max7, colorMap [6,1] = @floweringOrchard8Min7 colorMap [7,0] = @floweringOrchard8Max8, colorMap [7,1] = @floweringOrchard8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Morning Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @morningSky8Max1, colorMap [0,1] = @morningSky8Min1 colorMap [1,0] = @morningSky8Max2, colorMap [1,1] = @morningSky8Min2 colorMap [2,0] = @morningSky8Max3, colorMap [2,1] = @morningSky8Min3 colorMap [3,0] = @morningSky8Max4, colorMap [3,1] = @morningSky8Min4 colorMap [4,0] = @morningSky8Max5, colorMap [4,1] = @morningSky8Min5 colorMap [5,0] = @morningSky8Max6, colorMap [5,1] = @morningSky8Min6 colorMap [6,0] = @morningSky8Max7, colorMap [6,1] = @morningSky8Min7 colorMap [7,0] = @morningSky8Max8, colorMap [7,1] = @morningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel 8") ; colorMap [0,0] = @pastel8Max1, colorMap [0,1] = @pastel8Min1 colorMap [1,0] = @pastel8Max2, colorMap [1,1] = @pastel8Min2 colorMap [2,0] = @pastel8Max3, colorMap [2,1] = @pastel8Min3 colorMap [3,0] = @pastel8Max4, colorMap [3,1] = @pastel8Min4 colorMap [4,0] = @pastel8Max5, colorMap [4,1] = @pastel8Min5 colorMap [5,0] = @pastel8Max6, colorMap [5,1] = @pastel8Min6 colorMap [6,0] = @pastel8Max7, colorMap [6,1] = @pastel8Min7 colorMap [7,0] = @pastel8Max8, colorMap [7,1] = @pastel8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel Rainbow 8") ; Created by Angela Wilczynski. colorMap [0,0] = @pastelRainbow8Max1, colorMap [0,1] = @pastelRainbow8Min1 colorMap [1,0] = @pastelRainbow8Max2, colorMap [1,1] = @pastelRainbow8Min2 colorMap [2,0] = @pastelRainbow8Max3, colorMap [2,1] = @pastelRainbow8Min3 colorMap [3,0] = @pastelRainbow8Max4, colorMap [3,1] = @pastelRainbow8Min4 colorMap [4,0] = @pastelRainbow8Max5, colorMap [4,1] = @pastelRainbow8Min5 colorMap [5,0] = @pastelRainbow8Max6, colorMap [5,1] = @pastelRainbow8Min6 colorMap [6,0] = @pastelRainbow8Max7, colorMap [6,1] = @pastelRainbow8Min7 colorMap [7,0] = @pastelRainbow8Max8, colorMap [7,1] = @pastelRainbow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Showtime 8") ; Created by Toby Marshall. colorMap [0,0] = @showtime8Max1, colorMap [0,1] = @showtime8Min1 colorMap [1,0] = @showtime8Max2, colorMap [1,1] = @showtime8Min2 colorMap [2,0] = @showtime8Max3, colorMap [2,1] = @showtime8Min3 colorMap [3,0] = @showtime8Max4, colorMap [3,1] = @showtime8Min4 colorMap [4,0] = @showtime8Max5, colorMap [4,1] = @showtime8Min5 colorMap [5,0] = @showtime8Max6, colorMap [5,1] = @showtime8Min6 colorMap [6,0] = @showtime8Max7, colorMap [6,1] = @showtime8Min7 colorMap [7,0] = @showtime8Max8, colorMap [7,1] = @showtime8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Soleil 8") ; Created by Toby Marshall. colorMap [0,0] = @soleil8Max1, colorMap [0,1] = @soleil8Min1 colorMap [1,0] = @soleil8Max2, colorMap [1,1] = @soleil8Min2 colorMap [2,0] = @soleil8Max3, colorMap [2,1] = @soleil8Min3 colorMap [3,0] = @soleil8Max4, colorMap [3,1] = @soleil8Min4 colorMap [4,0] = @soleil8Max5, colorMap [4,1] = @soleil8Min5 colorMap [5,0] = @soleil8Max6, colorMap [5,1] = @soleil8Min6 colorMap [6,0] = @soleil8Max7, colorMap [6,1] = @soleil8Min7 colorMap [7,0] = @soleil8Max8, colorMap [7,1] = @soleil8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Chill 8") ; Created by Toby Marshall. colorMap [0,0] = @chillMax1, colorMap [0,1] = @chillMin1 colorMap [1,0] = @chillMax2, colorMap [1,1] = @chillMin2 colorMap [2,0] = @chillMax3, colorMap [2,1] = @chillMin3 colorMap [3,0] = @chillMax4, colorMap [3,1] = @chillMin4 colorMap [4,0] = @chillMax5, colorMap [4,1] = @chillMin5 colorMap [5,0] = @chillMax6, colorMap [5,1] = @chillMin6 colorMap [6,0] = @chillMax7, colorMap [6,1] = @chillMin7 colorMap [7,0] = @chillMax8, colorMap [7,1] = @chillMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Cloud Nine 8") ; Created by Toby Marshall. colorMap [0,0] = @cloudNineMax1, colorMap [0,1] = @cloudNineMin1 colorMap [1,0] = @cloudNineMax2, colorMap [1,1] = @cloudNineMin2 colorMap [2,0] = @cloudNineMax3, colorMap [2,1] = @cloudNineMin3 colorMap [3,0] = @cloudNineMax4, colorMap [3,1] = @cloudNineMin4 colorMap [4,0] = @cloudNineMax5, colorMap [4,1] = @cloudNineMin5 colorMap [5,0] = @cloudNineMax6, colorMap [5,1] = @cloudNineMin6 colorMap [6,0] = @cloudNineMax7, colorMap [6,1] = @cloudNineMin7 colorMap [7,0] = @cloudNineMax8, colorMap [7,1] = @cloudNineMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "La Terra 8") ; Created by Toby Marshall. colorMap [0,0] = @laTerraMax1, colorMap [0,1] = @laTerraMin1 colorMap [1,0] = @laTerraMax2, colorMap [1,1] = @laTerraMin2 colorMap [2,0] = @laTerraMax3, colorMap [2,1] = @laTerraMin3 colorMap [3,0] = @laTerraMax4, colorMap [3,1] = @laTerraMin4 colorMap [4,0] = @laTerraMax5, colorMap [4,1] = @laTerraMin5 colorMap [5,0] = @laTerraMax6, colorMap [5,1] = @laTerraMin6 colorMap [6,0] = @laTerraMax7, colorMap [6,1] = @laTerraMin7 colorMap [7,0] = @laTerraMax8, colorMap [7,1] = @laTerraMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Santa Fe 8") ; Created by Toby Marshall. colorMap [0,0] = @santaFe8Max1, colorMap [0,1] = @santaFe8Min1 colorMap [1,0] = @santaFe8Max2, colorMap [1,1] = @santaFe8Min2 colorMap [2,0] = @santaFe8Max3, colorMap [2,1] = @santaFe8Min3 colorMap [3,0] = @santaFe8Max4, colorMap [3,1] = @santaFe8Min4 colorMap [4,0] = @santaFe8Max5, colorMap [4,1] = @santaFe8Min5 colorMap [5,0] = @santaFe8Max6, colorMap [5,1] = @santaFe8Min6 colorMap [6,0] = @santaFe8Max7, colorMap [6,1] = @santaFe8Min7 colorMap [7,0] = @santaFe8Max8, colorMap [7,1] = @santaFe8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Spring 8") ; Created by Toby Marshall. colorMap [0,0] = @spring8Max1, colorMap [0,1] = @spring8Min1 colorMap [1,0] = @spring8Max2, colorMap [1,1] = @spring8Min2 colorMap [2,0] = @spring8Max3, colorMap [2,1] = @spring8Min3 colorMap [3,0] = @spring8Max4, colorMap [3,1] = @spring8Min4 colorMap [4,0] = @spring8Max5, colorMap [4,1] = @spring8Min5 colorMap [5,0] = @spring8Max6, colorMap [5,1] = @spring8Min6 colorMap [6,0] = @spring8Max7, colorMap [6,1] = @spring8Min7 colorMap [7,0] = @spring8Max8, colorMap [7,1] = @spring8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Summer 8") ; Created by Toby Marshall. colorMap [0,0] = @summer8Max1, colorMap [0,1] = @summer8Min1 colorMap [1,0] = @summer8Max2, colorMap [1,1] = @summer8Min2 colorMap [2,0] = @summer8Max3, colorMap [2,1] = @summer8Min3 colorMap [3,0] = @summer8Max4, colorMap [3,1] = @summer8Min4 colorMap [4,0] = @summer8Max5, colorMap [4,1] = @summer8Min5 colorMap [5,0] = @summer8Max6, colorMap [5,1] = @summer8Min6 colorMap [6,0] = @summer8Max7, colorMap [6,1] = @summer8Min7 colorMap [7,0] = @summer8Max8, colorMap [7,1] = @summer8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fall 8") ; Created by Toby Marshall. colorMap [0,0] = @fall8Max1, colorMap [0,1] = @fall8Min1 colorMap [1,0] = @fall8Max2, colorMap [1,1] = @fall8Min2 colorMap [2,0] = @fall8Max3, colorMap [2,1] = @fall8Min3 colorMap [3,0] = @fall8Max4, colorMap [3,1] = @fall8Min4 colorMap [4,0] = @fall8Max5, colorMap [4,1] = @fall8Min5 colorMap [5,0] = @fall8Max6, colorMap [5,1] = @fall8Min6 colorMap [6,0] = @fall8Max7, colorMap [6,1] = @fall8Min7 colorMap [7,0] = @fall8Max8, colorMap [7,1] = @fall8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Winter 8") ; Created by Toby Marshall. colorMap [0,0] = @winter8Max1, colorMap [0,1] = @winter8Min1 colorMap [1,0] = @winter8Max2, colorMap [1,1] = @winter8Min2 colorMap [2,0] = @winter8Max3, colorMap [2,1] = @winter8Min3 colorMap [3,0] = @winter8Max4, colorMap [3,1] = @winter8Min4 colorMap [4,0] = @winter8Max5, colorMap [4,1] = @winter8Min5 colorMap [5,0] = @winter8Max6, colorMap [5,1] = @winter8Min6 colorMap [6,0] = @winter8Max7, colorMap [6,1] = @winter8Min7 colorMap [7,0] = @winter8Max8, colorMap [7,1] = @winter8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Mojave 8") ; Created by Toby Marshall. colorMap [0,0] = @mojave8Max1, colorMap [0,1] = @mojave8Min1 colorMap [1,0] = @mojave8Max2, colorMap [1,1] = @mojave8Min2 colorMap [2,0] = @mojave8Max3, colorMap [2,1] = @mojave8Min3 colorMap [3,0] = @mojave8Max4, colorMap [3,1] = @mojave8Min4 colorMap [4,0] = @mojave8Max5, colorMap [4,1] = @mojave8Min5 colorMap [5,0] = @mojave8Max6, colorMap [5,1] = @mojave8Min6 colorMap [6,0] = @mojave8Max7, colorMap [6,1] = @mojave8Min7 colorMap [7,0] = @mojave8Max8, colorMap [7,1] = @mojave8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green 8") ; colorMap [0,0] = @goldGreen8Max1, colorMap [0,1] = @goldGreen8Min1 colorMap [1,0] = @goldGreen8Max2, colorMap [1,1] = @goldGreen8Min2 colorMap [2,0] = @goldGreen8Max3, colorMap [2,1] = @goldGreen8Min3 colorMap [3,0] = @goldGreen8Max4, colorMap [3,1] = @goldGreen8Min4 colorMap [4,0] = @goldGreen8Max5, colorMap [4,1] = @goldGreen8Min5 colorMap [5,0] = @goldGreen8Max6, colorMap [5,1] = @goldGreen8Min6 colorMap [6,0] = @goldGreen8Max7, colorMap [6,1] = @goldGreen8Min7 colorMap [7,0] = @goldGreen8Max8, colorMap [7,1] = @goldGreen8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green Alt 8") ; colorMap [0,0] = @goldGreenAlt8Max1, colorMap [0,1] = @goldGreenAlt8Min1 colorMap [1,0] = @goldGreenAlt8Max2, colorMap [1,1] = @goldGreenAlt8Min2 colorMap [2,0] = @goldGreenAlt8Max3, colorMap [2,1] = @goldGreenAlt8Min3 colorMap [3,0] = @goldGreenAlt8Max4, colorMap [3,1] = @goldGreenAlt8Min4 colorMap [4,0] = @goldGreenAlt8Max5, colorMap [4,1] = @goldGreenAlt8Min5 colorMap [5,0] = @goldGreenAlt8Max6, colorMap [5,1] = @goldGreenAlt8Min6 colorMap [6,0] = @goldGreenAlt8Max7, colorMap [6,1] = @goldGreenAlt8Min7 colorMap [7,0] = @goldGreenAlt8Max8, colorMap [7,1] = @goldGreenAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver 8") ; colorMap [0,0] = @goldSilver8Max1, colorMap [0,1] = @goldSilver8Min1 colorMap [1,0] = @goldSilver8Max2, colorMap [1,1] = @goldSilver8Min2 colorMap [2,0] = @goldSilver8Max3, colorMap [2,1] = @goldSilver8Min3 colorMap [3,0] = @goldSilver8Max4, colorMap [3,1] = @goldSilver8Min4 colorMap [4,0] = @goldSilver8Max5, colorMap [4,1] = @goldSilver8Min5 colorMap [5,0] = @goldSilver8Max6, colorMap [5,1] = @goldSilver8Min6 colorMap [6,0] = @goldSilver8Max7, colorMap [6,1] = @goldSilver8Min7 colorMap [7,0] = @goldSilver8Max8, colorMap [7,1] = @goldSilver8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue 8") ; colorMap [0,0] = @silverBlue8Max1, colorMap [0,1] = @silverBlue8Min1 colorMap [1,0] = @silverBlue8Max2, colorMap [1,1] = @silverBlue8Min2 colorMap [2,0] = @silverBlue8Max3, colorMap [2,1] = @silverBlue8Min3 colorMap [3,0] = @silverBlue8Max4, colorMap [3,1] = @silverBlue8Min4 colorMap [4,0] = @silverBlue8Max5, colorMap [4,1] = @silverBlue8Min5 colorMap [5,0] = @silverBlue8Max6, colorMap [5,1] = @silverBlue8Min6 colorMap [6,0] = @silverBlue8Max7, colorMap [6,1] = @silverBlue8Min7 colorMap [7,0] = @silverBlue8Max8, colorMap [7,1] = @silverBlue8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue Alt 8") ; colorMap [0,0] = @silverBlueAlt8Max1, colorMap [0,1] = @silverBlueAlt8Min1 colorMap [1,0] = @silverBlueAlt8Max2, colorMap [1,1] = @silverBlueAlt8Min2 colorMap [2,0] = @silverBlueAlt8Max3, colorMap [2,1] = @silverBlueAlt8Min3 colorMap [3,0] = @silverBlueAlt8Max4, colorMap [3,1] = @silverBlueAlt8Min4 colorMap [4,0] = @silverBlueAlt8Max5, colorMap [4,1] = @silverBlueAlt8Min5 colorMap [5,0] = @silverBlueAlt8Max6, colorMap [5,1] = @silverBlueAlt8Min6 colorMap [6,0] = @silverBlueAlt8Max7, colorMap [6,1] = @silverBlueAlt8Min7 colorMap [7,0] = @silverBlueAlt8Max8, colorMap [7,1] = @silverBlueAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver Alt 8") ; colorMap [0,0] = @goldSilverAlt8Max1, colorMap [0,1] = @goldSilverAlt8Min1 colorMap [1,0] = @goldSilverAlt8Max2, colorMap [1,1] = @goldSilverAlt8Min2 colorMap [2,0] = @goldSilverAlt8Max3, colorMap [2,1] = @goldSilverAlt8Min3 colorMap [3,0] = @goldSilverAlt8Max4, colorMap [3,1] = @goldSilverAlt8Min4 colorMap [4,0] = @goldSilverAlt8Max5, colorMap [4,1] = @goldSilverAlt8Min5 colorMap [5,0] = @goldSilverAlt8Max6, colorMap [5,1] = @goldSilverAlt8Min6 colorMap [6,0] = @goldSilverAlt8Max7, colorMap [6,1] = @goldSilverAlt8Min7 colorMap [7,0] = @goldSilverAlt8Max8, colorMap [7,1] = @goldSilverAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 8") ; colorMap [0,0] = @purpleYellow8Max1, colorMap [0,1] = @purpleYellow8Min1 colorMap [1,0] = @purpleYellow8Max2, colorMap [1,1] = @purpleYellow8Min2 colorMap [2,0] = @purpleYellow8Max3, colorMap [2,1] = @purpleYellow8Min3 colorMap [3,0] = @purpleYellow8Max4, colorMap [3,1] = @purpleYellow8Min4 colorMap [4,0] = @purpleYellow8Max5, colorMap [4,1] = @purpleYellow8Min5 colorMap [5,0] = @purpleYellow8Max6, colorMap [5,1] = @purpleYellow8Min6 colorMap [6,0] = @purpleYellow8Max7, colorMap [6,1] = @purpleYellow8Min7 colorMap [7,0] = @purpleYellow8Max8, colorMap [7,1] = @purpleYellow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow Alt 8") ; colorMap [0,0] = @purpleYellowAlt8Max1, colorMap [0,1] = @purpleYellowAlt8Min1 colorMap [1,0] = @purpleYellowAlt8Max2, colorMap [1,1] = @purpleYellowAlt8Min2 colorMap [2,0] = @purpleYellowAlt8Max3, colorMap [2,1] = @purpleYellowAlt8Min3 colorMap [3,0] = @purpleYellowAlt8Max4, colorMap [3,1] = @purpleYellowAlt8Min4 colorMap [4,0] = @purpleYellowAlt8Max5, colorMap [4,1] = @purpleYellowAlt8Min5 colorMap [5,0] = @purpleYellowAlt8Max6, colorMap [5,1] = @purpleYellowAlt8Min6 colorMap [6,0] = @purpleYellowAlt8Max7, colorMap [6,1] = @purpleYellowAlt8Min7 colorMap [7,0] = @purpleYellowAlt8Max8, colorMap [7,1] = @purpleYellowAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fourth of July 3") ; colorMap [0,0] = @fourthOfJuly3Max1, colorMap [0,1] = @fourthOfJuly3Min1 colorMap [1,0] = @fourthOfJuly3Max2, colorMap [1,1] = @fourthOfJuly3Min2 colorMap [2,0] = @fourthOfJuly3Max3, colorMap [2,1] = @fourthOfJuly3Min3 ranges = 3 offset = @colorOffset elseif (@colorPreset == "Blue/Silver 2") ; colorMap [0,0] = @blueSilver2Max1, colorMap [0,1] = @blueSilver2Min1 colorMap [1,0] = @blueSilver2Max2, colorMap [1,1] = @blueSilver2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Blue/White 2") ; colorMap [0,0] = @blueWhite2Max1, colorMap [0,1] = @blueWhite2Min1 colorMap [1,0] = @blueWhite2Max2, colorMap [1,1] = @blueWhite2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Magenta 2") ; colorMap [0,0] = @cyanMagenta2Max1, colorMap [0,1] = @cyanMagenta2Min1 colorMap [1,0] = @cyanMagenta2Max2, colorMap [1,1] = @cyanMagenta2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Yellow 2") ; colorMap [0,0] = @cyanYellow2Max1, colorMap [0,1] = @cyanYellow2Min1 colorMap [1,0] = @cyanYellow2Max2, colorMap [1,1] = @cyanYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Gold/Green 2") ; colorMap [0,0] = @goldGreen2Max1, colorMap [0,1] = @goldGreen2Min1 colorMap [1,0] = @goldGreen2Max2, colorMap [1,1] = @goldGreen2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 2") ; colorMap [0,0] = @purpleYellow2Max1, colorMap [0,1] = @purpleYellow2Min1 colorMap [1,0] = @purpleYellow2Max2, colorMap [1,1] = @purpleYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Red/Tan 2") ; colorMap [0,0] = @redTan2Max1, colorMap [0,1] = @redTan2Min1 colorMap [1,0] = @redTan2Max2, colorMap [1,1] = @redTan2Min2 ranges = 2 offset = @colorOffset endif if (@perturbRanges == "8 Range Custom" && ranges == 8) ; If we are using 8 ranges, then take into account ; the rangeOrdering parameter. int range[8] ; Convert range ordering from 12345678 to .12345678 float ordering = @rangeOrder / 100000000 ; Convert .12345678 to 1.2345678 ordering = ordering * 10 ; Get the first digit int range[0] = trunc (ordering) ; Subract the first digit, i.e. 1.2345678 becomes .2345678 ordering = ordering - range[0] ; Get the second digit ordering = ordering * 10 int range[1] = trunc (ordering) ordering = ordering - range[1] ; Get the third digit ordering = ordering * 10 int range[2] = trunc (ordering) ordering = ordering - range[2] ; Get the fourth digit ordering = ordering * 10 int range[3] = trunc (ordering) ordering = ordering - range[3] ; Get the fifth digit ordering = ordering * 10 int range[4] = trunc (ordering) ordering = ordering - range[4] ; Get the sixth digit ordering = ordering * 10 int range[5] = trunc (ordering) ordering = ordering - range[5] ; Get the seventh digit ordering = ordering * 10 int range[6] = trunc (ordering) ordering = ordering - range[6] ; Get the eighth digit ordering = ordering * 10 int range[7] = round (ordering) ordering = ordering - range[7] ; Save the original order of the maps. color tempMap[8,2] tempMap[0,0] = colorMap[0,0], tempMap[0,1] = colorMap[0,1] tempMap[1,0] = colorMap[1,0], tempMap[1,1] = colorMap[1,1] tempMap[2,0] = colorMap[2,0], tempMap[2,1] = colorMap[2,1] tempMap[3,0] = colorMap[3,0], tempMap[3,1] = colorMap[3,1] tempMap[4,0] = colorMap[4,0], tempMap[4,1] = colorMap[4,1] tempMap[5,0] = colorMap[5,0], tempMap[5,1] = colorMap[5,1] tempMap[6,0] = colorMap[6,0], tempMap[6,1] = colorMap[6,1] tempMap[7,0] = colorMap[7,0], tempMap[7,1] = colorMap[7,1] ; Reorder the maps according to the rangeOrder parameter. colorMap[0,0] = tempMap[range[0]-1,0], colorMap[0,1] = tempMap[range[0]-1,1] colorMap[1,0] = tempMap[range[1]-1,0], colorMap[1,1] = tempMap[range[1]-1,1] colorMap[2,0] = tempMap[range[2]-1,0], colorMap[2,1] = tempMap[range[2]-1,1] colorMap[3,0] = tempMap[range[3]-1,0], colorMap[3,1] = tempMap[range[3]-1,1] colorMap[4,0] = tempMap[range[4]-1,0], colorMap[4,1] = tempMap[range[4]-1,1] colorMap[5,0] = tempMap[range[5]-1,0], colorMap[5,1] = tempMap[range[5]-1,1] colorMap[6,0] = tempMap[range[6]-1,0], colorMap[6,1] = tempMap[range[6]-1,1] colorMap[7,0] = tempMap[range[7]-1,0], colorMap[7,1] = tempMap[range[7]-1,1] endif ; Outer circles i = 1 while i <= @circles cs[i] = exp(flip(i-1)*ang+ipi)*scle i = i + 1 endwhile cs[i] = 0 rad[1] = cabs(cs[1]-cs[2])/2 i = 2 while i <= @circles rad[i] = rad[1] i = i + 1 endwhile rad[i] = cabs(cs[1])-rad[1] ; Base set i = i + 1 if @circles%2 == 0 while i <= 2*@circles+1 cs[i] = exp(flip(i-5)*ang+cpi) clr[i] = i i = i + 1 endwhile else while i <= 2*@circles+1 cs[i] = exp(flip(i-5)*ang) clr[i] = i i = i + 1 endwhile endif cs[i] = 0 clr[i] = 0 rad[@circles+2] = cabs(cs[@circles+2]-cs[@circles+3])/2 i = @circles+3 while i <= 2*@circles+1 rad[i] = rad[@circles+2] i = i + 1 endwhile dd = cabs(cs[1]) rad[i] = sqrt(dd*dd-rad[1]*rad[1]) print(i) ; ; Traverse the levels ii = (@circles+1)*2+1 ; level 1 while ib < (@circles+1)*(@circles+1) if @circles==3 if ib >= 0 && ib < 4 i = ib + 5 j = ib+2 if i == 8 j = 4 endif elseif ib >=4 && ib <8 i = ib%4 + 5 j = (ib%4+1)%3 if j == 0 j = 3 endif if i == 8 ib = (@circles+1)*(@circles+1) endif endif elseif @circles==4 if ib >= 0 && ib < 5 i = ib + 6 j = ib+1 elseif ib >= 5 && ib < 9 i = ib%5 + 6 j = (ib%5+2)%4 if j == 0 j = 4 endif elseif ib >= 9 && ib < 14 i = (ib+1)%5 + 6 j = ((ib+1)%5+3)%4 if j == 0 j = 4 endif if i == 10 j = 1 ib = (@circles+1)*(@circles+1) endif endif elseif @circles==5 if ib >= 0 && ib < 6 i = ib + 7 j = ib+1 elseif ib >= 6 && ib < 11 i = ib%6 + 7 j = (ib%6+2)%5 if j == 0 j = 5 endif elseif ib >= 11 && ib < 16 i = (ib+1)%6 + 7 j = ((ib+1)%6+3)%5 if j == 0 j = 5 endif elseif ib >= 16 && ib < 22 i = (ib+2)%6 + 7 j = ((ib+2)%6+4)%5 if j == 0 j = 5 endif if i == 12 j = 1 ib = (@circles+1)*(@circles+1) endif endif elseif @circles==6 if ib >= 0 && ib < 7 i = ib + 8 j = ib+1 elseif ib >= 7 && ib < 13 i = ib%7 + 8 j = (ib%7+3)%6 if j == 0 j = 6 endif elseif ib >= 13 && ib < 19 i = (ib+1)%7 + 8 j = ((ib+1)%7+4)%6 if j == 0 j = 6 endif elseif ib >= 19 && ib < 25 i = (ib+2)%7 + 8 j = ((ib+2)%7+5)%6 if j == 0 j = 6 endif elseif ib >= 25 && ib < 32 i = (ib+3)%7 + 8 j = ((ib+3)%7+6)%6 if j == 0 j = 6 endif if i == 14 j = 1 ib = (@circles+1)*(@circles+1) endif endif elseif @circles==7 if ib >= 0 && ib < 8 i = ib + 9 j = ib+1 elseif ib >= 8 && ib < 15 i = ib%8 + 9 j = (ib%8+3)%7 if j == 0 j = 7 endif elseif ib >= 15 && ib < 22 i = (ib+1)%8 + 9 j = ((ib+1)%8+4)%7 if j == 0 j = 7 endif elseif ib >= 22 && ib < 29 i = (ib+2)%8 + 9 j = ((ib+2)%8+5)%7 if j == 0 j = 7 endif elseif ib >= 29 && ib < 36 i = (ib+3)%8 + 9 j = ((ib+3)%8+6)%7 if j == 0 j = 7 endif elseif ib >= 36 && ib < 44 i = (ib+4)%8 + 9 j = ((ib+4)%8+7)%7 if j == 0 j = 7 endif if i == 16 j = 1 ib = (@circles+1)*(@circles+1) endif endif elseif @circles==8 if ib >= 0 && ib < 9 i = ib + 10 j = ib+2 if i == 18 j = 9 endif elseif ib >= 9 && ib < 17 i = (ib)%9 + 10 j = ((ib)%9+1)%8 if j == 0 j = 8 endif elseif ib >= 17 && ib < 25 i = (ib+1)%9 + 10 j = ((ib+1)%9+4)%8 if j == 0 j = 8 endif elseif ib >= 25 && ib < 33 i = (ib+2)%9 + 10 j = ((ib+2)%9+5)%8 if j == 0 j = 8 endif elseif ib >= 33 && ib < 41 i = (ib+3)%9 + 10 j = ((ib+3)%9+8)%8 if j == 0 j = 8 endif elseif ib >= 41 && ib < 49 i = (ib+4)%9 + 10 j = ((ib+4)%9+6)%8 if j == 0 j = 8 endif elseif ib >= 49 && ib < 58 i = (ib+5)%9 + 10 j = ((ib+5)%9+7)%8 if j == 0 j = 8 endif if i == 18 j = 1 ib = (@circles+1)*(@circles+1) endif endif elseif @circles == 9 if ib >= 0 && ib < 10 i = ib + 11 j = ib+2 if i == 20 j = 10 endif elseif ib >= 10 && ib < 19 i = (ib)%10 + 11 j = ((ib)%10+1)%9 if j == 0 j = 9 endif elseif ib >= 19 && ib < 28 i = (ib+1)%10 + 11 j = ((ib+1)%10+4)%9 if j == 0 j = 9 endif elseif ib >= 28 && ib < 37 i = (ib+2)%10 + 11 j = ((ib+2)%10+5)%9 if j == 0 j = 9 endif elseif ib >= 37 && ib < 46 i = (ib+3)%10 + 11 j = ((ib+3)%10+9)%9 if j == 0 j = 9 endif elseif ib >= 46 && ib < 55 i = (ib+4)%10 + 11 j = ((ib+4)%10+6)%9 if j == 0 j = 9 endif elseif ib >= 55 && ib < 64 i = (ib+5)%10 + 11 j = ((ib+5)%10+8)%9 if j == 0 j = 9 endif elseif ib >= 64 && ib < 73 i = (ib+6)%10 + 11 j = ((ib+6)%10+7)%9 if j == 0 j = 9 endif if i == 20 j = 1 ib = (@circles+1)*(@circles+1) endif endif elseif @circles == 10 if ib >= 0 && ib < 11 i = ib + 12 j = ib+3 if j == 12 j = 2 endif if i == 22 j = 11 endif elseif ib >= 11 && ib < 21 i = ib%11 + 12 j = (ib%11+1)%10 if j == 0 j = 10 endif elseif ib >= 21 && ib < 31 i = (ib+1)%11 + 12 j = ((ib+1)%11+2)%10 if j == 0 j = 10 endif elseif ib >= 31 && ib < 41 i = (ib+2)%11 + 12 j = ((ib+2)%11+5)%10 if j == 0 j = 10 endif elseif ib >= 41 && ib < 51 i = (ib+3)%11 + 12 j = ((ib+3)%11+6)%10 if j == 0 j = 10 endif elseif ib >= 51 && ib < 61 i = (ib+4)%11 + 12 j = ((ib+4)%11+7)%10 if j == 0 j = 10 endif elseif ib >= 61 && ib < 71 i = (ib+5)%11 + 12 j = ((ib+5)%11+8)%10 if j == 0 j = 10 endif elseif ib >= 71 && ib < 81 i = (ib+6)%11 + 12 j = ((ib+6)%11+9)%10 if j == 0 j = 10 endif elseif ib >= 81 && ib < 92 i = (ib+7)%11 + 12 j = ((ib+7)%11+10)%10 if j == 0 j = 10 endif if i == 22 j = 1 ib = (@circles+1)*(@circles+1) endif endif endif ; cut[ii]=j ar = rad[j], br = rad[i], a = cs[j], b = cs[i] temp = ar^2/(|a-b|-br^2), rad[ii] = (temp*br), cs[ii] = temp*(b-a) + a if @method == 0 clr[ii] = 1^@adj+0.01 if rad[ii] <= rad[@circles+2]+0.0001 && rad[ii] >= rad[@circles+2]-0.0001 clr[ii] = 0^@adj+0.01 endif elseif @method == 1 clr[ii] = abs(rad[@circles+2])/abs(rad[ii])^@adj+0.01 elseif @method == 2 clr[ii] = ii^@adj+0.01 elseif @method == 3 clr[ii] = cabs((cs[ii]*2)^@adj)+0.01 elseif @method == 4 clr[ii] = clr[i] elseif @method == 5 if abs(rad[ii]) < @rthresh clr[ii] = 2 else clr[ii] = 1 endif endif csz[ii] = 0 ii = ii + 1 ib = ib + 1 endwhile start = (@circles+1)*2+1 if @circles == 3 finish = 17 elseif @circles == 4 finish = 25 elseif @circles == 5 finish = 35 elseif @circles == 6 finish = 47 elseif @circles == 7 finish = 61 elseif @circles == 8 finish = 77 elseif @circles == 9 finish = 121 elseif @circles == 10 finish = 115 endif while lev <= level if lev == 2 || lev == 3 iii = start endif k = 1 while iii < finish while k <=@circles+1 ar = rad[k], br = rad[iii], a = cs[k], b = cs[iii] temp = ar^2/(|a-b|-br^2), rad[ii] = (temp*br) ; if k != cut[iii] ; ar = rad[k], br = rad[iii], a = cs[k], b = cs[iii] ; temp = ar^2/(|a-b|-br^2), rad[ii] = (temp*br), cs[ii] = temp*(b-a) + a if abs(rad[ii]) < abs(rad[iii]) cs[ii] = temp*(b-a) + a if (@circles < 8)&&(abs(rad[ii]) < @scircle*3/@circles) || \ (@circles > 7)&&(abs(rad[ii]) < @scircle/@circles) ii = ii - 1 endif if @method == 0 clr[ii] = lev^@adj+0.01 elseif @method == 1 clr[ii] = abs(rad[@circles+2])/abs(rad[ii])^@adj+0.01 elseif @method == 2 clr[ii] = ii^@adj+0.01 elseif @method == 3 clr[ii] = cabs((cs[ii]*2)^@adj)+0.01 elseif @method == 4 clr[ii] = clr[iii] elseif @method == 5 if abs(rad[ii]) < @rthresh clr[ii] = 2 else clr[ii] = 1 endif endif csz[ii] = 0 ; cut[ii] = k ii = ii + 1 ; duplicate removal if lev < 4 i = @circles+1 while i < ii-1 ddx = real(cs[i])-real(cs[ii-1]) ddy = imag(cs[i])-imag(cs[ii-1]) ddz = csz[i]-csz[ii-1] ddr = rad[i]-rad[ii-1] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c == 0 i = ii-1 ii = ii-1 endif i = i + 1 endwhile endif ; i = (@circles+1)*2+1 ; i = 1 ; while i < ii-1 ; ddx = real(cs[i])-real(cs[ii-1]) ; ddy = imag(cs[i])-imag(cs[ii-1]) ; ddr = rad[i]-rad[ii-1] ; if ddx < -thresh ; c = -1 ; elseif ddx > thresh ; c = 1 ; elseif ddy < -thresh ; c = -1 ; elseif ddy > thresh ; c = 1 ; elseif ddr < -thresh ; c = -1 ; elseif ddr > thresh ; c = 1 ; else ; c = 0 ; endif ; if c == 0 ; i = ii-1 ; ii = ii-1 ; if ii < 9 ; ii = 9 ; endif ; endif ; i = i + 1 ; endwhile endif k = k + 1 endwhile k = 1 iii= iii + 1 endwhile if lev == 2 if @circles == 3 start = ii-12 elseif @circles == 4 start = ii-36 elseif @circles == 5 start = ii-80 elseif @circles == 6 start = ii-146 elseif @circles == 7 start = ii-220 elseif @circles == 8 start = ii-316 elseif @circles == 9 start = ii-374 elseif @circles == 10 start = ii-440 endif endif if finish == ii lev = level +1 else lev = lev + 1 endif j = ii-finish if j > 0 l = round((j)/2) + 1 ir = j continue = true repeat if l > 1 l = l-1 rra = cs[l-1+finish] rrb = rad[l-1+finish] rrc = clr[l-1+finish] rrd = csz[l-1+finish] else rra = cs[ir-1+finish] rrb = rad[ir-1+finish] rrc = clr[ir-1+finish] rrd = csz[ir-1+finish] cs[ir-1+finish] = cs[finish] rad[ir-1+finish] = rad[finish] clr[ir-1+finish] = clr[finish] csz[ir-1+finish] = csz[finish] ir = ir-1 if ir == 0 cs[finish] = rra rad[finish] = rrb clr[finish] = rrc csz[finish] = rrd continue = false endif endif if continue == true si = l sj = 2*l endif while (sj <= ir) && (continue == true) if sj < ir ddx = real(cs[sj-1+finish])-real(cs[sj+finish]) ddy = imag(cs[sj-1+finish])-imag(cs[sj+finish]) ddz = csz[sj-1+finish]-csz[sj+finish] ddr = rad[sj-1+finish]-rad[sj+finish] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c < 0 sj = sj + 1 endif endif ddx = real(rra)-real(cs[sj-1+finish]) ddy = imag(rra)-imag(cs[sj-1+finish]) ddz = rrd-csz[sj+finish] ddr = rrb-rad[sj-1+finish] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c < 0 cs[si-1+finish] = cs[sj-1+finish] rad[si-1+finish] = rad[sj-1+finish] clr[si-1+finish] = clr[sj-1+finish] csz[si-1+finish] = csz[sj-1+finish] si = sj sj = sj + sj else sj = ir + 1 endif endwhile if (continue == true) cs[si-1+finish] = rra rad[si-1+finish] = rrb clr[si-1+finish] = rrc csz[si-1+finish] = rrd endif until continue == false ; eliminate duplicates in place for index 'finish' to index 'ii' ir = finish l = finish while ir < ii ddx = real(cs[ir])-real(cs[ir-1]) ddy = imag(cs[ir])-imag(cs[ir-1]) ddz = csz[ir]-csz[ir-1] ddr = rad[ir]-rad[ir-1] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c == 0 ir = ir + 1 else cs[l] = cs[ir] rad[l] = rad[ir] clr[l] = clr[ir] csz[l] = csz[ir] ir = ir +1 l = l + 1 endif endwhile ii = l endif finish = ii endwhile int maxi = ii-1 iii = (@circles+1)*2+1 ii = 0 float radius = 0 while iii <= maxi radius = abs((rad[iii])) if (radius > 0)&&(((iii>=(@circles+1)*3)||@base)&& \ (radius < (rad[(@circles+1)*2]-0.01)) && \ ((iii != (@circles+1)*3||@centr))) fx = real(cs[iii])*@ascale fy = imag(cs[iii])*@ascale zz = csz[iii]*@ascale tymax = txmax tzmax = txmax ffx = fx - xmin ffy = fy - ymin ffy = tymax*asp - ffy ffx = ffx/txmax ffy = ffy/tymax ffz = (zz-zmin)/tzmax xx = ffx ; ; rotation around the z axis ; xx = ffx ffx = 0.5 + (ffx - 0.5 - @rotoffx/txmax)*cos(#angle) - \ (ffy - 0.5 - @rotoffy/tymax)*sin(#angle) ffy = 0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(#angle) + \ (xx - 0.5 - @rotoffx/txmax)*sin(#angle) ; ; rotation around the y axis ; xx = ffx ffx = (0.5 + (ffz - 0.5 - @rotoffz/txmax)*sin(@zangle*pi/180) + \ (ffx - 0.5 - @rotoffx/txmax)*cos(@zangle*pi/180))*#width ffz = (0.5 + (ffz - 0.5 - @rotoffz/tzmax)*cos(@zangle*pi/180) - \ (xx - 0.5 - @rotoffx/txmax)*sin(@zangle*pi/180)) ; ; rotation around the x axis ; yy = ffy ffy = (0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(@xangle*pi/180) - \ (ffz - 0.5 - @rotoffz/tzmax)*sin(@xangle*pi/180))*#width ffz = (0.5 + (yy - 0.5 - @rotoffy/tymax)*sin(@xangle*pi/180) + \ (ffz - 0.5 - @rotoffz/tzmax)*cos(@xangle*pi/180))*#width ; ; final translation ; ffx = ffx + @transx*#width ffy = ffy + @transy*#width ffz = ffz + @transz*#width cs[iii] = (ffx+flip(ffy)) csz[iii] = ffz rad[iii] = round(radius*#width/txmax)*@ascale if rad[iii] < 1 && @version >= 104 rad[iii] = 1 endif else rad[iii] = -1 endif iii = iii + 1 endwhile ; if @switch && @tparent int i = 0 while i < 500 colorswitch = colormap[i,0] colormap[i,0] = colormap[i,1] colormap[i,1] = colorswitch i = i + 1 endwhile endif init: ; initialize camera vector float vx = 0.0 float vy = 0.0 float vz = 0.0 float vd = 0.0 ; this is used for normalizing all vectors ; ; refraction vector array (continuation of camera vector through refractions) float vxt[300] float vyt[300] float vzt[300] ; initialize light vector float lx = 0.0 float ly = 0.0 float lz = 0.0 ; ; initialize intersection point float xi = 0 float yi = 0 float zi = 0 ; ; initialize floor intersection point float xf = 0 float yf = 0 float zf = 0 ; ; initialize reflection intersection point float xr = 0 float yr = 0 float zr = 0 ; ; initialize floor reflection intersection point float xrf = 0 float yrf = 0 float zrf = 0 ; ; floor intersection array for refraction vector float xft[100] float yft[100] float zft[100] ; refraction intersection array float xit[300] float yit[300] float zit[300] int it = 0 int jt = 0 ; surface normal array for refraction intersections float lxtt[300] float lytt[300] float lztt[300] float ctheta2 = 0 ; refraction angle float rfi = 0 ; refractive index ratio float tdt[100] ; distance from back of sphere to floor (refracted ray) float dt[100] ; distance from back of sphere to next closest sphere (refracted ray) ; initialize to 1e10 it = 0 while it < 100 tdt[it]= 1e10 dt[it] = 1e10 it = it + 1 endwhile float ldt[100] ; distance from floor intersection to light (refracted ray) float floormodt[100] float fractalmodt[100] ; initialize to 10 it = 0 while it < 100 floormodt[it] = 10 fractalmodt[it] = 10 it = it + 1 endwhile float rdt[100] ; radius of closest sphere on refraction path float ldst[100] ; distance from closest sphere on refraction path to floor bool stop = false float tindex[100] ; color index for refracted spheres float colrT[100] ; color parameter for refracted spheres float ltfact[100] ; refracted floor fade according to lighting model color colorft[100] ; refracted floor color value float ltt[100] ; dot product of light vector and normal and refract intersection float colorPosT[100] ; color parameter for refracted spheres float hvalt[100] ; hightlight parameter for refracted spheres int xcrd = #x int ycrd = #y bool inside = true if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width)*0.5; float transy = (#height)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd<0 || xcrd>=#width || ycrd<0 || ycrd>=#height) inside = false endif endif float ambient = @ambient float hval = 0 ; highlight param for spheres float hvalR = 0 ; highlight param for sphere reflections float hvalRF = 0 ; highlight param for sphere reflections off floor float colorPos = 0 ; color param for spheres float colorPosR = 0 ; color param for sphere reflections float colorPosRF = 0 ; color param for sphere reflections off floor int rangeNum = 0 ; color ranges for spheres int rangeNumR = 0 ; color ranges for sphere reflections int rangeNumRF = 0 ; color ranges for sphere reflections off floor int rangeNumT[100] ; color ranges for sphere refractions color color1 = rgb(0,0,0) color color2 = rgb(0,0,0) color tempcolor = rgb(0,0,0) color colorf = rgb(0,0,0) int floormod = 10 int floormodr = 10 float fractalmod = 10 float fractalmodr = 10 color fractalcolor = rgb(0,0,0) color amcolor = @amcolor float extent = 1.0 - @extent float ctheta = 0 ; cos of angle between camera ray and floor normal float ortheta = 0 ; dot product of camera position and floor normal float dirtheta = 0 ; negative cos of angle between camera ray and floor normal float leftbound = @leftbound*#width float rightbound = @rightbound*#width float topbound = -@topbound*#width*asp float bottombound = -@bottombound*#width*asp float rd = 0 ; radius of closest sphere float td = 1e10 ; distance to closest sphere float tdr = 1e10 ; distance to closest reflection sphere float ld = 0 ; distance from light to floor intersection float ltfac = 0 ; floor fade according to lighting model float ltfacr = 0 ; floor reflection on sphere fade according to lighting model float lds = 0 ; distance from light to closest sphere with floor reflection float st = 0 float sd = 0 ; bool trapped = false ; if frac[xcrd,ycrd] == -1 ; trapped = true ; endif ; light position float lightx = @lightx*#width float lighty = @lighty*#width*asp float lightz = @lightz*#width*asp ; camera position float camx = 0 float camy = 0 float camz = 0 ; float z0 = @vplane*#width*asp float zl = @lplane*#width*asp ; camx = @camerax*#width camy = @cameray*#width*asp camz = @cameraz*#width*asp ; ; create the camera vector ; vx = xcrd-(#width-@cpointx*#width) -camx vy = ycrd-(@cpointy*#width-#width)*asp -camy vz = -z0 - camz vd = 1/sqrt(vx*vx+vy*vy+vz*vz) vx = vx*vd vy = vy*vd vz = vz*vd ; create vector for light direction if @ltype == "Point source" || @ltype == "Spotlight" lx = #width-@lpointx*#width-lightx ly = (@lpointy*#width-#width)*asp-lighty lz = -zl-lightz else float elevation = -@elevation float d2r = #pi/180; degrees to radians conversion factor lx = -cos(@angle*d2r) * cos(elevation*d2r) ly = -sin(@angle*d2r) * cos(elevation*d2r) lz = sin(elevation*d2r) endif vd = 1/sqrt(lx*lx+ly*ly+lz*lz) lx = -lx*vd ly = -ly*vd lz = -lz*vd ; ; initialize normal vector for intersection point float lxt = 0 float lyt = 0 float lzt = 0 ; ; initialize normal vector for intersection point on floor float lxtf = 0 float lytf = 0 float lztf = 0 ; ; initialize normal vector for intersection point at reflection object float lxn = 0 float lyn = 0 float lzn = 0 ; ; initialize reflection vector float lxr = 0 float lyr = 0 float lzr = 0 ; ; initialize reflection vector from floor float lxfr = 0 float lyfr = 0 float lzfr = 0 ; float bi = 0 float ci = 0 float arg = 0 float ti1 = 0 float ti2 = 0 float ti = 0 float colr = 0 ; gradient sphere color parameter float colrR = 0 ; gradient sphere relection color parameter float colrRF = 0 ; gradient sphere refraction color parameter float colorPos = 0 ; sphere color float lt = 0 ; dot product of light vector and normal float d = 1e10 ; distance from camera to closest float ss = 1e10 float ro = 1e10 ; distance from intersection to closest reflection sphere float dx = 0 float dy = 0 float dz = 0 float am = 0 ; shadow color float am2 = 0 ; shadow parameter float cindex = 0 float lrf = 0 ; reflection on floor coloring int rspf = 0 ; index of sphere reflected onto floor float rof = 1e10 ; distance from intersection to next refraction int ri = 1 int ristart = (@circles+1)*2+1 int rsp = 0 ; index of reflection sphere float lr = 0 ; reflection coloring int di = 0 float rindex = 0 float rindexf = 0 ; ; create floor ; if @floor ; floor normal lxtf = fa lytf = fb lztf = fc vd = 1/sqrt(lxtf*lxtf+lytf*lytf+lztf*lztf) lxtf = lxtf*vd lytf = lytf*vd lztf = lztf*vd ; dot product with ray origin ortheta = lxtf*camx+lytf*camy+lztf*camz ; dot product with camera vector dirtheta = lxtf*vx+lytf*vy+lztf*vz ; distance from camera to intersection td = -(ortheta+fd)/dirtheta ; intersection point with camera ray if td > 0 xf = camx+vx*td yf = camy+vy*td zf = camz+vz*td endif ; distance to light if @ltype == "Point source" if td > 0 ld = sqrt((lightx-xf)^2 + (lighty-yf)^2+ (lightz-zf)^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ld = 1234567890 endif elseif @ltype == "Spotlight" st = (xf-lightx)*lx + (yf-lighty)*ly + (zf-lightz)*lz sd = sqrt((lightx-xf+lx*st)^2+(lighty-yf+ly*st)^2+(lightz-zf+lz*st)^2) if @spottype == "Sharp" ld = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ld = 1-@ambient endif elseif @spottype == "Set focus" ld = (sd/(@spotrad*#width*asp))^@setfocus if ld < 0.8 ld = 0 else ld = ld - 0.8 endif if ld > 1-@ambient ld = 1-@ambient endif endif endif if @fbound == true ; put bounds on the floor if xf < leftbound || zf < topbound || xf > rightbound || zf > bottombound td = 0 ld = 1234567890 endif endif ; setup checkerboard complex fp = (lytf+lztf)*xf + lxtf*yf + \ flip((lxtf+lytf)*zf + lztf*yf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormod = 0 else floormod = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmod = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width/2*asp)%trunc(#width*asp)] endif ; is the floor point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if rad[ri] != -1 if ri != di ; eliminate self-shadow bi = (lx*(xf-real(cs[ri]))+ly*(yf-imag(cs[ri]))+lz*(zf-csz[ri])) ci = (xf-real(cs[ri]))^2+(yf-imag(cs[ri]))^2+(zf-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am2 = @am endif endif endif endif ri = ri + 1 endwhile endif ss = 1e10 ; ; is there a reflection object to reflect onto the floor? ; if @version >=200 if @reflect && @reflectf ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxtf*vx-lytf*vy-lztf*vz ; N.I lxfr = -vx+2*lxtf*ctheta lyfr = -vy+2*lytf*ctheta lzfr = -vz+2*lztf*ctheta vd = 1/sqrt(lxfr*lxfr+lyfr*lyfr+lzfr*lzfr) lxfr = lxfr*vd lyfr = lyfr*vd lzfr = lzfr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 while ri <= maxi if rad[ri] != -1 bi = (lxfr*(xf-real(cs[ri]))+lyfr*(yf-imag(cs[ri]))+lzfr*(zf-csz[ri])) ci = (xf-real(cs[ri]))^2+(yf-imag(cs[ri]))^2+(zf-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < rof ; find closest reflection object rof = ti rspf = ri ; index of reflection object endif endif endif ri = ri + 1 endwhile if rof != 1e10 && @reflectf==true ; find intersection point on reflection object xr = xf+lxfr*rof yr = yf+lyfr*rof zr = zf+lzfr*rof ; ; create the normal at the intersection point lxn = -(xr-real(cs[rspf]))/rad[rspf] lyn = (yr-imag(cs[rspf]))/rad[rspf] lzn = (zr-csz[rspf])/rad[rspf] vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection ; if colorsUsed == 8 && !@reflect if colorsUsed == 8 rindexf = trunc(clr[rspf]) if (trunc(rindexf/colorsUsed+0.01)%2) == 0 rindexf = rindexf%colorsUsed else rindexf = colorsUsed-1-(rindexf)%(colorsUsed) endif else rindexf = trunc(clr[rspf])%colorsUsed endif lrf = -(lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif endif ; ri = ristart ti = 0 while ri <= maxi if rad[ri] != -1 bi = vx*(camx-real(cs[ri]))+vy*(camy-imag(cs[ri]))+vz*(camz-csz[ri]) ci = (camx-real(cs[ri]))^2+(camy-imag(cs[ri]))^2+(camz-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < d ; find closest object d = ti dx = real(cs[ri]) dy = imag(cs[ri]) dz = csz[ri] di = ri rd = rad[ri] if colorsUsed == 8 && !@reflect cindex = trunc(clr[ri]) if (trunc(cindex/colorsUsed+0.01)%2) == 0 cindex = cindex%colorsUsed else cindex = colorsUsed-1-(cindex)%(colorsUsed) endif else cindex = trunc(clr[ri])%colorsUsed endif endif endif ri = ri+1 endwhile if d > 0 && d != 1e10 ; intersection point outside object xi = camx+vx*d yi = camy+vy*d zi = camz+vz*d ; distance to light if @ltype == "Point source" if tdr > 0 lds = sqrt((lightx-xi)^2 + (lighty-yi)^2+ (lightz-zi)^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else lds = 1234567890 endif elseif @ltype == "Spotlight" st = (xi-lightx)*lx + (yi-lighty)*ly + (zi-lightz)*lz sd = sqrt((lightx-xi+lx*st)^2+(lighty-yi+ly*st)^2+(lightz-zi+lz*st)^2) if @spottype == "Sharp" lds = 0.0 if (sd/(@spotrad*#width*asp)) > 1 lds = 1-@ambient endif elseif @spottype == "Set focus" lds = (sd/(@spotrad*#width*asp))^@setfocus if lds < 0.8 lds = 0 else lds = lds - 0.8 endif if lds > 1-@ambient lds = 1-@ambient endif endif endif ; ; is the point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if rad[ri] != -1 if ri != di ; eliminate self-shadow bi = (lx*(xi-real(cs[ri]))+ly*(yi-imag(cs[ri]))+lz*(zi-csz[ri])) ci = (xi-real(cs[ri]))^2+(yi-imag(cs[ri]))^2+(zi-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am = (1.0/@totalColors)*@am+(1.0/@totalColors)*(cindex+(1-@scale/2)/2)-0.015 endif endif endif endif ri = ri + 1 endwhile endif ; ; create the normals at the intersection points ; lxt = (xi-dx)/rd lyt = (yi-dy)/rd lzt = (zi-dz)/rd vd = 1/sqrt(lxt*lxt+lyt*lyt+lzt*lzt) lxt = lxt*vd lyt = lyt*vd lzt = lzt*vd ; ; check for reflections ; if @reflect == true ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxt*vx-lyt*vy-lzt*vz ; N.I lxr = vx+2*lxt*ctheta lyr = vy+2*lyt*ctheta lzr = vz+2*lzt*ctheta vd = 1/sqrt(lxr*lxr+lyr*lyr+lzr*lzr) lxr = lxr*vd lyr = lyr*vd lzr = lzr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 lr = 0 while ri <= maxi if rad[ri] != -1 if di != ri ; eliminate self-reflection bi = (lxr*(xi-real(cs[ri]))+lyr*(yi-imag(cs[ri]))+lzr*(zi-csz[ri])) ci = (xi-real(cs[ri]))^2+(yi-imag(cs[ri]))^2+(zi-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ro ; find closest reflection object ro = ti rsp = ri ; index of reflection object endif endif endif endif ri = ri + 1 endwhile ; ; Is the floor closer? if @floor == true ; intersection point with reflection ray ; dot product with ray origin ortheta = lxtf*xi+lytf*yi+lztf*zi ; dot product with reflection vector dirtheta = lxtf*lxr+lytf*lyr+lztf*lzr ; distance from camera to intersection tdr = -(ortheta+fd)/dirtheta if tdr > 0 xrf = xi+lxr*tdr yrf = yi+lyr*tdr zrf = zi+lzr*tdr endif endif if tdr < ro && tdr > 0 ; floor is closest reflection object if @fbound == true ; put bounds on the floor if xrf < leftbound || zrf < topbound || xrf > rightbound || zrf > bottombound tdr = 0 endif endif ; setup checkerboard complex fp = (lytf+lztf)*xrf + lxtf*yrf + \ flip((lxtf+lytf)*zrf + lztf*yrf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodr = 0 else floormodr = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmodr = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif else if ro != 1e10 && @reflect==true ; find intersection point on reflection object xr = xi+lxr*ro yr = yi+lyr*ro zr = zi+lzr*ro ; ; create the normal at the intersection point lxn = (xr-real(cs[rsp]))/rad[rsp] lyn = (yr-imag(cs[rsp]))/rad[rsp] lzn = (zr-csz[rsp])/rad[rsp] vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection if colorsUsed == 8 && !@reflect rindex = trunc(clr[rsp]) if (trunc(rindex/colorsUsed+0.01)%2) == 0 rindex = rindex%colorsUsed else rindex = colorsUsed-1-(rindex)%(colorsUsed) endif else rindex = trunc(clr[rsp])%colorsUsed endif lr = (lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif ; ; tranparency code ; ; ; initialize initial array values ; ; refraction vectors vxt[0] = vx vyt[0] = vy vzt[0] = vz ; sphere intersection points xit[0] = xi yit[0] = yi zit[0] = zi lxtt[0] = lxt lytt[0] = lyt lztt[0] = lzt ; array indices it = 0 jt = 0 stop = false if @tparent while !stop ltt[jt] = 0 ldt[jt] = 0 ldst[jt] = 0 ; calculate surface normal ; float dlast = di lxtt[it] = (xit[it]-real(cs[di]))/rad[di] lytt[it] = (yit[it]-imag(cs[di]))/rad[di] lztt[it] = (zit[it]-csz[di])/rad[di] vd = 1/sqrt(lxtt[it]*lxtt[it]+lytt[it]*lytt[it]+lztt[it]*lztt[it]) lxtt[it] = lxtt[it]*vd lytt[it] = lytt[it]*vd lztt[it] = lztt[it]*vd ; ; calculate refraction vector #1 ; ; T = [I/rfi-(ctheta2-ctheta/rfi)*N] ; Snell's law: sin(angle1)/sin(angle2) = rf2/rf1 = rfi rfi = @rfi ctheta = -lxtt[it]*vxt[it]-lytt[it]*vyt[it]-lztt[it]*vzt[it] ; N.I ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) ; T.I vxt[it+1] = vxt[it]/rfi-lxtt[it]*(ctheta2-ctheta/rfi) vyt[it+1] = vyt[it]/rfi-lytt[it]*(ctheta2-ctheta/rfi) vzt[it+1] = vzt[it]/rfi-lztt[it]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+1]*vxt[it+1]+vyt[it+1]*vyt[it+1]+vzt[it+1]*vzt[it+1]) vxt[it+1] = vxt[it+1]*vd vyt[it+1] = vyt[it+1]*vd vzt[it+1] = vzt[it+1]*vd ; ; find intersection in back of sphere ; bi = vxt[it+1]*(xit[it]-real(cs[di]))+vyt[it+1]*(yit[it]-imag(cs[di]))+vzt[it+1]*(zit[it]-csz[di]) ci = (xit[it]-real(cs[di]))^2+(yit[it]-imag(cs[di]))^2+(zit[it]-csz[di])^2-rad[di]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 < ti2 ; find largest ti ti = ti2 else ti = ti1 endif endif xit[it+1] = xit[it]+vxt[it+1]*ti yit[it+1] = yit[it]+vyt[it+1]*ti zit[it+1] = zit[it]+vzt[it+1]*ti ; ; calculate surface normal #2 ; lxtt[it+1] = -(xit[it+1]-real(cs[di]))/rad[di] lytt[it+1] = -(yit[it+1]-imag(cs[di]))/rad[di] lztt[it+1] = -(zit[it+1]-csz[di])/rad[di] vd = 1/sqrt(lxtt[it+1]*lxtt[it+1]+lytt[it+1]*lytt[it+1]+lztt[it+1]*lztt[it+1]) lxtt[it+1] = lxtt[it+1]*vd lytt[it+1] = lytt[it+1]*vd lztt[it+1] = lztt[it+1]*vd ; ; calculate refraction vector #2 ; ctheta = -lxtt[it+1]*vxt[it+1]-lytt[it+1]*vyt[it+1]-lztt[it+1]*vzt[it+1] ; N.I rfi = 1/@rfi ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) vxt[it+2] = vxt[it+1]/rfi-lxtt[it+1]*(ctheta2-ctheta/rfi) vyt[it+2] = vyt[it+1]/rfi-lytt[it+1]*(ctheta2-ctheta/rfi) vzt[it+2] = vzt[it+1]/rfi-lztt[it+1]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+2]*vxt[it+2]+vyt[it+2]*vyt[it+2]+vzt[it+2]*vzt[it+2]) vxt[it+2] = vxt[it+2]*vd vyt[it+2] = vyt[it+2]*vd vzt[it+2] = vzt[it+2]*vd ; ; determine intersection of reflection vector with floor ; ; dot product with ray origin at back of sphere ortheta = lxtf*xit[it+1]+lytf*yit[it+1]+lztf*zit[it+1] ; dot product with 2nd refraction vector dirtheta = lxtf*vxt[it+2]+lytf*vyt[it+2]+lztf*vzt[it+2] ; distance from back of sphere to intersection with floor tdt[jt] = -(ortheta+fd)/dirtheta ; intersection point with 2nd refraction ray if tdt[jt] > 0 xft[jt] = xit[it+1]+vxt[it+2]*tdt[jt] yft[jt] = yit[it+1]+vyt[it+2]*tdt[jt] zft[jt] = zit[it+1]+vzt[it+2]*tdt[jt] endif ; ; distance from floor interection to light ; if @ltype == "Point source" if tdt[jt] > 0 ldt[jt] = sqrt((lightx-xft[jt])^2 + (lighty-yft[jt])^2+ (lightz-zft[jt])^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ldt[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xft[jt]-lightx)*lx + (yft[jt]-lighty)*ly + (zft[jt]-lightz)*lz sd = sqrt((lightx-xft[jt]+lx*st)^2+(lighty-yft[jt]+ly*st)^2+(lightz-zft[jt]+lz*st)^2) if @spottype == "Sharp" ldt[jt] = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ldt[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldt[jt] = (sd/(@spotrad*#width*asp))^@setfocus if ldt[jt] < 0.8 ldt[jt] = 0 else ldt[jt] = ldt[jt] - 0.8 endif if ldt[jt] > 1-@ambient ldt[jt] = 1-@ambient endif endif endif ; if @fbound == true ; put bounds on the floor if xft[jt] < leftbound || zft[jt] < topbound || xft[jt] > rightbound || zft[jt] > bottombound tdt[jt] = 0 ldt[jt] = 1234567890 endif endif ; ; setup checkerboard complex fp = (lytf+lztf)*xft[jt] + lxtf*yft[jt] + \ flip((lxtf+lytf)*zft[jt] + lztf*yft[jt])+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodt[jt] = 0 else floormodt[jt] = 1 endif ; setup fractal pattern elseif @flrtype == "Fractal" fp = abs(fp) fractalmodt[jt] = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif ; ; find closest sphere or terminate ; ri = ristart ti = 0 dt[jt] = 1e10 while ri <= maxi if rad[ri] != -1 && ri != dlast bi = vxt[it+2]*(xit[it+1]-real(cs[ri]))+vyt[it+2]*(yit[it+1]-imag(cs[ri]))+vzt[it+2]*(zit[it+1]-csz[ri]) ci = (xit[it+1]-real(cs[ri]))^2+(yit[it+1]-imag(cs[ri]))^2+(zit[it+1]-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < dt[jt] ; find closest object dt[jt] = ti dx = real(cs[ri]) dy = imag(cs[ri]) dz = csz[ri] di = ri ; this will be used in the next level rdt[jt] = rad[ri] if colorsUsed == 8 && !@reflect tindex[jt] = trunc(clr[ri]) if (trunc(tindex[jt]/colorsUsed+0.01)%2) == 0 tindex[jt] = tindex[jt]%colorsUsed else tindex[jt] = colorsUsed-1-(tindex[jt])%(colorsUsed) endif else tindex[jt] = trunc(clr[ri])%colorsUsed endif endif endif ri = ri+1 endwhile ; ; intersection point with next sphere ; if dt[jt] > 0 && dt[jt] != 1e10 ; intersection point outside object xit[it+2] = xit[it+1]+vxt[it+2]*dt[jt] yit[it+2] = yit[it+1]+vyt[it+2]*dt[jt] zit[it+2] = zit[it+1]+vzt[it+2]*dt[jt] ; ; distance of intersection to light ; if @ltype == "Point source" if td > 0 ldst[jt] = sqrt((lightx-xit[it+2])^2 + (lighty-yit[it+2])^2+ (lightz-zit[it+2])^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else ldst[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xit[it+2]-lightx)*lx + (yit[it+2]-lighty)*ly + (zit[it+2]-lightz)*lz sd = sqrt((lightx-xit[it+2]+lx*st)^2+(lighty-yit[it+2]+ly*st)^2+(lightz-zit[it+2]+lz*st)^2) if @spottype == "Sharp" ldst[jt] = 0.0 if (sd/(@spotrad*#width)) > 1 ldst[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldst[jt] = (sd/(@spotrad*#width))^@setfocus if ldst[jt] < 0.8 ldst[jt] = 0 else ldst[jt] = ldst[jt] - 0.8 endif if ldst[jt] > 1-@ambient ldst[jt] = 1-@ambient endif endif endif ; calculation of surface normal #3 ; lxtt[it+2] = (xit[it+2]-dx)/rdt[jt] lytt[it+2] = (yit[it+2]-dy)/rdt[jt] lztt[it+2] = (zit[it+2]-dz)/rdt[jt] vd = 1/sqrt(lxtt[it+2]*lxtt[it+2]+lytt[it+2]*lytt[it+2]+lztt[it+2]*lztt[it+2]) lxtt[it+2] = lxtt[it+2]*vd lytt[it+2] = lytt[it+2]*vd lztt[it+2] = lztt[it+2]*vd ; ; dot product of light vector and normal vector ; ltt[jt] = (lx*lxtt[it+2]+ly*lytt[it+2]+lz*lztt[it+2])*krt colrT[jt] = (1.0/@totalColors)*@scale/2*ltt[jt]+0.25*(tindex[jt]+(1-@scale/2)/2)-0.015 colorPosT[jt] = @scale/2*ltt[jt] endif it = it+2 jt = jt+1 if dt[jt-1] == 1e10 stop = true jt = jt-1 it = it-2 endif endwhile endif ; ; dot product of light vector and normal vector ; lt = (lx*lxt+ly*lyt+lz*lzt) colorPos = @scale/2*lt colorPosR = @scale/2*lr if @reflect == true if lr != 0 colrR = (1.0/@totalColors)*@scale/2*lr+0.25*(rindex+(1-@scale/2)/2)-0.015 colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif endif if rof != 1e10 && @reflectf && @floor colorPosRF = @scale/2*lrf colrRF = (1.0/@totalColors)*@scale/2*lrf+0.25*(rindexf+(1-@scale/2)/2)-0.015 endif ; if @tparent ; am = am*(1-@tparentval) ; am2 = am2*(1-@tparentval) ; endif ; loop: final: ; if @applymapping && !inside && @solid #solid = true endif ; Perturb the ranges, if specified. rangeNum = trunc(cindex) if rangeNum < 0 rangeNum = rangeNum * -1 endif rangeNum = (rangeNum + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNum < ranges / 2) rangeNum = (rangeNum + rangeNum) % ranges else rangeNum = (rangeNum + rangeNum + 1) % ranges endif else ; Number of ranges is odd. rangeNum = (rangeNum + rangeNum) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNum / 2) * 2) == rangeNum) ; rangeNum is even. rangeNum = rangeNum - trunc (rangeNum / 2) else ; rangeNum is odd. rangeNum = rangeNum + trunc ((ranges - rangeNum) / 2) endif endif if colorPos > 0.5 colorPos = (colorPos - 0.5) / 0.5 else colorPos = colorPos / 0.5 endif if @highlight_type == "none" hval = 0 elseif @highlight_type == "linear" if colorPos > extent hval = (5*@highlight*(colorPos-extent)/(1-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "log" if colorPos > extent hval = (5*@highlight*log(colorPos-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "exponential" if colorPos > extent hval = (5*@highlight*(exp(colorPos-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hval = 0 endif endif if @reflect == true ; Perturb the ranges, if specified. rangeNumR = trunc(rindex) if rangeNumR < 0 rangeNumR = rangeNumR * -1 endif rangeNumR = (rangeNumR + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumR < ranges / 2) rangeNumR = (rangeNumR + rangeNumR) % ranges else rangeNumR = (rangeNumR + rangeNumR + 1) % ranges endif else ; Number of ranges is odd. rangeNumR = (rangeNumR + rangeNumR) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumR / 2) * 2) == rangeNumR) ; rangeNumR is even. rangeNumR = rangeNumR - trunc (rangeNumR / 2) else ; rangeNumR is odd. rangeNumR = rangeNumR + trunc ((ranges - rangeNumR) / 2) endif endif if colorPosR > 0.5 colorPosR = (colorPosR - 0.5) / 0.5 else colorPosR = colorPosR / 0.5 endif if @highlight_type == "none" hvalR = 0 elseif @highlight_type == "linear" if colorPosR > extent hvalR = (5*@highlight*(colorPosR-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "log" if colorPosR > extent hvalR = (5*@highlight*log(colorPosR-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "exponential" if colorPosR > extent hvalR = (5*@highlight*(exp(colorPosR-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalR = 0 endif endif ; Perturb the ranges, if specified. rangenumRF = trunc(rindexf) if rangenumRF < 0 rangenumRF = rangenumRF * -1 endif rangenumRF = (rangenumRF + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangenumRF < ranges / 2) rangenumRF = (rangenumRF + rangenumRF) % ranges else rangenumRF = (rangenumRF + rangenumRF + 1) % ranges endif else ; Number of ranges is odd. rangenumRF = (rangenumRF + rangenumRF) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangenumRF / 2) * 2) == rangenumRF) ; rangenumRF is even. rangenumRF = rangenumRF - trunc (rangenumRF / 2) else ; rangenumRF is odd. rangenumRF = rangenumRF + trunc ((ranges - rangenumRF) / 2) endif endif if colorPosRF > 0.5 colorPosRF = (colorPosRF - 0.5) / 0.5 else colorPosRF = colorPosRF / 0.5 endif if @highlight_type == "none" hvalRF = 0 elseif @highlight_type == "linear" if colorPosRF > extent hvalRF = (5*@highlight*(colorPosRF-extent)/(1-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "log" if colorPosRF > extent hvalRF = (5*@highlight*log(colorPosRF-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "exponential" if colorPosRF > extent hvalRF = (5*@highlight*(exp(colorPosRF-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif endif endif if @tparent it = 0 while it <= jt ; Perturb the ranges, if specified. rangeNumT[it] = trunc(tindex[it]) if rangeNumT[it] < 0 rangeNumT[it] = rangeNumT[it] * -1 endif rangeNumT[it] = (rangeNumT[it] + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumT[it] < ranges / 2) rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges else rangeNumT[it] = (rangeNumT[it] + rangeNumT[it] + 1) % ranges endif else ; Number of ranges is odd. rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumT[it] / 2) * 2) == rangeNumT[it]) ; rangeNumT[it] is even. rangeNumT[it] = rangeNumT[it] - trunc (rangeNumT[it] / 2) else ; rangeNumT[it] is odd. rangeNumT[it] = rangeNumT[it] + trunc ((ranges - rangeNumT[it]) / 2) endif endif if colorPosT[it] > 0.5 colorPosT[it] = (colorPosT[it] - 0.5) / 0.5 else colorPosT[it] = colorPosT[it] / 0.5 endif if @highlight_type == "none" hvalt[it] = 0 elseif @highlight_type == "linear" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(colorPosT[it]-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "log" if colorPosT[it] > extent hvalt[it] = (5*@highlight*log(colorPosT[it]-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "exponential" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(exp(colorPosT[it]-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif endif it = it + 1 endwhile endif if lds > @sdis lds = @sdis endif it = 0 while it <= jt if ldst[it] > @sdis ldst[it] = @sdis endif ; have refracted floor fade according to lighting model ltfact[it] = ldt[it]/@dis/@floorrefract if ldt[it] == 1234567890 ltfact[it] = 0 elseif ltfact[it] < 0 ltfact[it] = 0 elseif ltfact[it] > 1 ltfact[it] = 1 endif ; if ltfact[it] > krft ; ltfact[it] = krft ; endif If ltfact[it]+am2 > 1 ltfact[it] = 1-am2 endif if dt[it] > tdt[it] && tdt[it] > 0 && ltfact[it] >= 0 if @flrtype == "Checkerboard" if floormodt[it] == 0 colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif floormodt[it] == 1 colorft[it] = blend(@flrcolor2,rgb(0,0,0),ltfact[it]+am2) endif elseif @flrtype == "Plain" colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif @flrtype == "Fractal" if fractalmodt[it] == 0 fractalcolor = @icolor colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) else fractalcolor = gradient((fractalmodt[it]/mxi)^@spread+@shift) colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) endif endif else colorft[it] = rgba(0,0,0,1) endif it = it+ 1 endwhile if colr == 0 && (td == 0 || td == 1e10) if @solid #solid = true else if @colorPreset == "Gradient" colorf = gradient(0) else if @switch colorf = colormap[0,0] else colorf = colormap[0,1] endif endif endif else if @am == 0 if @colorPreset == "Gradient" if @reflect == true if lr != 0 color1 = gradient(colrR/2) color2 = gradient(colr/2) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if am < colr/2 if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = gradient(colr/2 - am) color2 = gradient(colr/2) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@cblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color2 = gradient(0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif endif endif endif ; have floor fade according to lighting model ltfac = ld/@dis if ld == 1234567890 ltfac = 0 elseif ltfac < 0 ltfac = 0 elseif ltfac > 1 ltfac = 1 endif If ltfac+am2 > 1 ltfac = 1-am2 endif ; have floor reflection fade according to lighting model ltfacr = tdr/td/@floorreflect if lds == 1234567890 ltfacr = 0 elseif ltfacr < 0 ltfacr = 0 elseif ltfacr > 1 ltfacr = 1 endif if ltfacr>krf ltfacr = krf endif ; ltfacr = ltfacr*ltfac ; apply floor and floor reflection coloring if @reflect == true && tdr > 0 && tdr < ro if @flrtype == "Checkerboard" if floormodr == 0 colorf = blend(colorf,@flrcolor,krf-ltfacr) else colorf = blend(colorf,@flrcolor2,krf-ltfacr) endif elseif @flrtype == "Plain" colorf = blend(colorf,@flrcolor,krf-ltfacr) else if fractalmodr == 0 fractalcolor = @icolor colorf = blend(colorf,fractalcolor,krf-ltfacr) else fractalcolor = gradient((fractalmodr/mxi)^@spread+@shift) colorf = blend(colorf,fractalcolor,krf-ltfacr) endif endif endif if d > td && td > 0 && ltfac >= 0 if @flrtype == "Checkerboard" if floormod == 0 colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) elseif floormod == 1 colorf = blend(@flrcolor2,rgb(0,0,0),ltfac+am2) endif elseif @flrtype == "Plain" colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) else if fractalmod == 0 fractalcolor = @icolor colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) elseif fractalmod == -1 && @solid #solid = true else fractalcolor = gradient((fractalmod/mxi)^@spread+@shift) colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) endif endif endif if @reflectf && @floor && rof != 1e10 && d > td if @colorPreset == "Gradient" color1 = gradient(colrRF/2) else color1 = blend(colorMap[rangeNumRF,1], blend(colorMap[rangeNumRF,0], \ @hcolor,hvalRF), colorPosRF) endif colorf = blend(color1, colorf,(1-@blendvalf)) endif #color = blend(colorf, amcolor, ambient) default: param version caption = "Formula Version" default = 200 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam $ifdef VER40 heading text="Direct coloring methods provided by \ Ken Childress. \ Use with Pixel in mt.ufm or Pixel Offset in \ reb.ufm" endheading $else heading caption="Circle Inversions Ray Trace" endheading heading caption="Direct coloring methods provided by" endheading heading caption="Ken Childress." endheading heading caption="Use with Pixel formula in mt.ufm" endheading render=false $endif title="Circle Inversions Ray Trace" param solid caption="solid background?" default=false visible= !@floor||@applymapping||@fbound || @mask || @rmask endparam param applyMapping caption = "Apply Mapping" default = false endparam param circles caption = "# of Circles (3-10)" default = 3 min = 3 max = 10 endparam $ifdef VER40 heading text="The actual number of iterations may be less than \ 'Max Iters' if all new generations are smaller \ than the 'Smallest Circle' setting." endheading $endif param level caption = "Max Iters (1-100)" default = 100 min = 1 max = 100 endparam $ifdef VER40 heading text="Decreasing 'Smallest Circle' will increase the \ amount of detail, but rending speed will decrease. For \ larger values of '# of Circles', use caution when decreasing \ the value as artifacts can be generated." endheading $endif param scircle caption = "Smallest Circle" default = 0.01 max = 0.01 min = 0.0001 endparam bool param base caption = "Show Base Set" default = false endparam bool param centr caption = "Central Circle" default = true endparam $ifdef VER40 heading text = "Use 'Magnification' below in place of 'Magnification on \ the Location Tab." endheading $endif param ascale caption = "Magnification" default = 0.6 endparam $ifdef VER40 heading caption = "Rotations & Translations" expanded = false endheading heading text = "Z Rotation is on the Location Tab." endheading $else heading caption = "Rotations & Translations" endheading heading caption = "Z Rotation is on the" endheading heading caption = "Location Tab." endheading $endif param xangle caption = "X Axis Rotation" default = 0.0 hint = "This is the fixed (horizontal) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param zangle caption = "Y Axis Rotation" default = 0.0 hint = "This is the fixed (vertical) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param rotoffx caption = "Rotation Center X Offset" default = 0.0 endparam param rotoffy caption = "Rotation Center Y Offset" default = 0.0 endparam param rotoffz caption = "Rotation Center Z Offset" default = 0.0 endparam param transx caption = "X Final Translation" default = 0.0 endparam param transy caption = "Y Final Translation" default = -0.15 endparam param transz caption = "Z Final Translation" default = 0.0 endparam ;-------------------------------------------------------------------- ; Color Settings ;-------------------------------------------------------------------- heading caption = "Color Settings" endheading param colorPreset caption = "Color Preset" enum = "Gradient" "Custom" "Generate" "Default" "Default 12" \ "Default 16" "Default 24" "Color Wheel 12" "Alhambra 8" \ "Belvedere 8" "Bouquet 8" "Color Switch 8" "Evening Sky 8" \ "Fantasia 8" "Flowering Orchard 8" "Morning Sky 8" "Pastel 8" \ "Pastel Rainbow 8" "Showtime 8" "Soleil 8" "Chill 8" \ "Cloud Nine 8" "La Terra 8" "Santa Fe 8" "Spring 8" "Summer 8" \ "Fall 8" "Winter 8" "Mojave 8" "Gold/Green 8" "Gold/Green Alt 8" \ "Gold/Silver 8" "Gold/Silver Alt 8" "Purple/Yellow 8" \ "Purple/Yellow Alt 8" "Silver/Blue 8" "Silver/Blue Alt 8" \ "Fourth of July 3" "Blue/Silver 2" "Blue/White 2" "Cyan/Magenta 2" \ "Cyan/Yellow 2" "Gold/Green 2" "Purple/Yellow 2" "Red/Tan 2" default = 2 hint = "Use 'Gradient' for colors from the gradient. \ Use 'Custom' to set your own color ranges. \ Use 'Default' for the default colors. \ Use 'Generate' to create 3D-like colors from the \ gradient (allows using the gradient randomize function). \ Use any of the other predefined settings for those colors." endparam param customize caption = "Show/Customize" default = false hint = "Check to customize the selected color preset. NOTE: If you \ modify the default values for any of the range(s), you cannot \ get back to the default values for the range(s) you modify \ unless you reload the UCL." visible = (@colorPreset != "Gradient") && (@colorPreset != "Generate") \ && (@colorPreset != "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Custom ;-------------------------------------------------------------------- heading caption = " Custom Color Settings" visible = (@colorPreset == "Custom") endheading color param colorMax1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMin1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMax2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMin2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMax3 caption = "Color Range 3 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMin3 caption = "Color Range 3 Low" default = rgb(100/255,36/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMax4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMin4 caption = "Color Range 4 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMax5 caption = "Color Range 5 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMin5 caption = "Color Range 5 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMax6 caption = "Color Range 6 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMin6 caption = "Color Range 6 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMax7 caption = "Color Range 7 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMin7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMax8 caption = "Color Range 8 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param colorMin8 caption = "Color Range 8 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param customMax9 caption = "Color Range 9 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMin9 caption = "Color Range 9 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMax10 caption = "Color Range 10 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMin10 caption = "Color Range 10 Low" default = rgb(94/255,18/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMax11 caption = "Color Range 11 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMin11 caption = "Color Range 11 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMax12 caption = "Color Range 12 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMin12 caption = "Color Range 12 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMax13 caption = "Color Range 13 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMin13 caption = "Color Range 13 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMax14 caption = "Color Range 14 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMin14 caption = "Color Range 14 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMax15 caption = "Color Range 15 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMin15 caption = "Color Range 15 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMax16 caption = "Color Range 16 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMin16 caption = "Color Range 16 Low" default = rgb(69/255,0/255,82/255) hint = "Specifies the color at the low end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMax17 caption = "Color Range 17 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMin17 caption = "Color Range 17 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMax18 caption = "Color Range 18 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMin18 caption = "Color Range 18 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMax19 caption = "Color Range 19 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMin19 caption = "Color Range 19 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMax20 caption = "Color Range 20 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMin20 caption = "Color Range 20 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMax21 caption = "Color Range 21 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMin21 caption = "Color Range 21 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMax22 caption = "Color Range 22 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMin22 caption = "Color Range 22 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMax23 caption = "Color Range 23 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMin23 caption = "Color Range 23 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMax24 caption = "Color Range 24 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam color param customMin24 caption = "Color Range 24 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default ;-------------------------------------------------------------------- heading caption = " Default Settings" visible = (@customize && @colorPreset == "Default") endheading color param defaultMax1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax2 caption = "Color Range 2 High" default = rgb(252/255,0/255,172/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin2 caption = "Color Range 2 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax3 caption = "Color Range 3 High" default = rgb(252/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax4 caption = "Color Range 4 High" default = rgb(252/255,128/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin4 caption = "Color Range 4 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax5 caption = "Color Range 5 High" default = rgb(252/255,252/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin5 caption = "Color Range 5 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax6 caption = "Color Range 6 High" default = rgb(0/255,252/255,128/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin7 caption = "Color Range 7 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax8 caption = "Color Range 8 High" default = rgb(64/255,64/255,252/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 12 ;-------------------------------------------------------------------- heading caption = " Default 12 Color Settings" visible = (@customize && @colorPreset == "Default 12") endheading color param default12Max1 caption = "Color Range 1 High" default = rgb(255/255,85/255,253/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min1 caption = "Color Range 1 Low" default = rgb(98/255,0/255,76/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max2 caption = "Color Range 2 High" default = rgb(252/255,0/255,143/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min2 caption = "Color Range 2 Low" default = rgb(98/255,0/255,54/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max4 caption = "Color Range 4 High" default = rgb(255/255,97/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min4 caption = "Color Range 4 Low" default = rgb(104/255,27/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min5 caption = "Color Range 5 Low" default = rgb(110/255,54/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max6 caption = "Color Range 6 High" default = rgb(255/255,248/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min6 caption = "Color Range 6 Low" default = rgb(102/255,60/255,6/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,58/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min7 caption = "Color Range 7 Low" default = rgb(0/255,76/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,205/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min8 caption = "Color Range 8 Low" default = rgb(0/255,89/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max9 caption = "Color Range 9 High" default = rgb(0/255,194/255,255/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min9 caption = "Color Range 9 Low" default = rgb(0/255,80/255,92/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max10 caption = "Color Range 10 High" default = rgb(35/255,109/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min10 caption = "Color Range 10 Low" default = rgb(0/255,4/255,102/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max11 caption = "Color Range 11 High" default = rgb(149/255,53/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min11 caption = "Color Range 11 Low" default = rgb(53/255,0/255,96/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max12 caption = "Color Range 12 High" default = rgb(195/255,0/255,252/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min12 caption = "Color Range 12 Low" default = rgb(58/255,0/255,84/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 16 ;-------------------------------------------------------------------- heading caption = " Default 16 Color Settings" visible = (@customize && @colorPreset == "Default 16") endheading color param default16Max1 caption = "Color Range 1 High" default = rgb(255/255,31/255,114/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min1 caption = "Color Range 1 Low" default = rgb(94/255,0/255,40/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max3 caption = "Color Range 3 High" default = rgb(255/255,78/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min3 caption = "Color Range 3 Low" default = rgb(88/255,27/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max4 caption = "Color Range 4 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min4 caption = "Color Range 4 Low" default = rgb(90/255,30/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,31/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min5 caption = "Color Range 5 Low" default = rgb(88/255,38/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min6 caption = "Color Range 6 Low" default = rgb(96/255,57/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max7 caption = "Color Range 7 High" default = rgb(170/255,255/255,37/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min7 caption = "Color Range 7 Low" default = rgb(41/255,68/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,94/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min8 caption = "Color Range 8 Low" default = rgb(0/255,62/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max9 caption = "Color Range 9 High" default = rgb(0/255,238/255,203/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min9 caption = "Color Range 9 Low" default = rgb(0/255,64/255,54/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max10 caption = "Color Range 10 High" default = rgb(11/255,166/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min10 caption = "Color Range 10 Low" default = rgb(0/255,38/255,78/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max11 caption = "Color Range 11 High" default = rgb(0/255,68/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min11 caption = "Color Range 11 Low" default = rgb(0/255,20/255,88/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max12 caption = "Color Range 12 High" default = rgb(99/255,0/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min12 caption = "Color Range 12 Low" default = rgb(47/255,0/255,94/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max13 caption = "Color Range 13 High" default = rgb(145/255,0/255,255/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min13 caption = "Color Range 13 Low" default = rgb(69/255,0/255,102/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max14 caption = "Color Range 14 High" default = rgb(221/255,0/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min14 caption = "Color Range 14 Low" default = rgb(86/255,0/255,100/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max15 caption = "Color Range 15 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min15 caption = "Color Range 15 Low" default = rgb(90/255,0/255,75/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max16 caption = "Color Range 16 High" default = rgb(255/255,0/255,140/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min16 caption = "Color Range 16 Low" default = rgb(96/255,0/255,60/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 24 ;-------------------------------------------------------------------- heading caption = " Default 24 Color Settings" visible = (@customize && @colorPreset == "Default 24") endheading color param default24Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min2 caption = "Color Range 2 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max3 caption = "Color Range 3 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max4 caption = "Color Range 4 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max5 caption = "Color Range 5 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min5 caption = "Color Range 5 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max6 caption = "Color Range 6 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min6 caption = "Color Range 6 Low" default = rgb(96/255,27/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max7 caption = "Color Range 7 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min7 caption = "Color Range 7 Low" default = rgb(100/255,38/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min8 caption = "Color Range 8 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max9 caption = "Color Range 9 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min9 caption = "Color Range 9 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max10 caption = "Color Range 10 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min10 caption = "Color Range 10 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max11 caption = "Color Range 11 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min11 caption = "Color Range 11 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max12 caption = "Color Range 12 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min12 caption = "Color Range 12 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max13 caption = "Color Range 13 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min13 caption = "Color Range 13 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max14 caption = "Color Range 14 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min14 caption = "Color Range 14 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max15 caption = "Color Range 15 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min15 caption = "Color Range 15 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max16 caption = "Color Range 16 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min16 caption = "Color Range 16 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max17 caption = "Color Range 17 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min17 caption = "Color Range 17 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max18 caption = "Color Range 18 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min18 caption = "Color Range 18 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max19 caption = "Color Range 19 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min19 caption = "Color Range 19 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max20 caption = "Color Range 20 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min20 caption = "Color Range 20 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max21 caption = "Color Range 21 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min21 caption = "Color Range 21 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max22 caption = "Color Range 22 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min22 caption = "Color Range 22 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max23 caption = "Color Range 23 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min23 caption = "Color Range 23 Low" default = rgb(64/255,0/255,76/255) hint = "Specifies the color at the low end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max24 caption = "Color Range 24 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min24 caption = "Color Range 24 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Wheel 12 ;-------------------------------------------------------------------- heading caption = " Color Wheel 12 Settings" visible = (@customize && @colorPreset == "Color Wheel 12") endheading color param colorWheel12Max1 caption = "Color Range 1 High" default = rgb(142/255,117/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min1 caption = "Color Range 1 Low" default = rgb(52/255,0/255,100/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max2 caption = "Color Range 2 High" default = rgb(224/255,9/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,84/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max4 caption = "Color Range 4 High" default = rgb(252/255,167/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min4 caption = "Color Range 4 Low" default = rgb(95/255,54/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max5 caption = "Color Range 5 High" default = rgb(190/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min5 caption = "Color Range 5 Low" default = rgb(63/255,84/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max6 caption = "Color Range 6 High" default = rgb(0/255,231/255,213/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min6 caption = "Color Range 6 Low" default = rgb(4/255,62/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max7 caption = "Color Range 7 High" default = rgb(182/255,27/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min7 caption = "Color Range 7 Low" default = rgb(53/255,0/255,92/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max8 caption = "Color Range 8 High" default = rgb(255/255,33/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min8 caption = "Color Range 8 Low" default = rgb(80/255,0/255,53/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max9 caption = "Color Range 9 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min9 caption = "Color Range 9 Low" default = rgb(101/255,25/255,21/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max10 caption = "Color Range 10 High" default = rgb(255/255,241/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min10 caption = "Color Range 10 Low" default = rgb(88/255,69/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max11 caption = "Color Range 11 High" default = rgb(0/255,248/255,103/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min11 caption = "Color Range 11 Low" default = rgb(0/255,83/255,15/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max12 caption = "Color Range 12 High" default = rgb(27/255,119/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min12 caption = "Color Range 12 Low" default = rgb(0/255,31/255,92/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Alhambra 8 ;-------------------------------------------------------------------- heading caption = " Alhambra 8 Settings" visible = (@customize && @colorPreset == "Alhambra 8") endheading color param alhambra8Max1 caption = "Color Range 1 High" default = rgb(15/255,222/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min1 caption = "Color Range 1 Low" default = rgb(0/255,43/255,52/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max2 caption = "Color Range 2 High" default = rgb(255/255,204/255,75/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min2 caption = "Color Range 2 Low" default = rgb(92/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max3 caption = "Color Range 3 High" default = rgb(188/255,152/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min3 caption = "Color Range 3 Low" default = rgb(41/255,0/255,70/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max4 caption = "Color Range 4 High" default = rgb(255/255,155/255,109/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min4 caption = "Color Range 4 Low" default = rgb(95/255,36/255,14/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max5 caption = "Color Range 5 High" default = rgb(121/255,180/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min5 caption = "Color Range 5 Low" default = rgb(0/255,47/255,91/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max6 caption = "Color Range 6 High" default = rgb(255/255,131/255,126/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min6 caption = "Color Range 6 Low" default = rgb(104/255,20/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max7 caption = "Color Range 7 High" default = rgb(33/255,255/255,220/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min7 caption = "Color Range 7 Low" default = rgb(0/255,67/255,49/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max8 caption = "Color Range 8 High" default = rgb(255/255,177/255,93/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min8 caption = "Color Range 8 Low" default = rgb(100/255,44/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Belvedere 8 ;-------------------------------------------------------------------- heading caption = " Belvedere 8 Settings" visible = (@customize && @colorPreset == "Belvedere 8") endheading color param belvedere8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min1 caption = "Color Range 1 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min2 caption = "Color Range 2 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max3 caption = "Color Range 3 High" default = rgb(123/255,201/255,254/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min3 caption = "Color Range 3 Low" default = rgb(0/255,45/255,68/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max4 caption = "Color Range 4 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min4 caption = "Color Range 4 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max5 caption = "Color Range 5 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min5 caption = "Color Range 5 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max6 caption = "Color Range 6 High" default = rgb(0/255,255/255,217/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min6 caption = "Color Range 6 Low" default = rgb(0/255,54/255,46/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max7 caption = "Color Range 7 High" default = rgb(255/255,20/255,70/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min7 caption = "Color Range 7 Low" default = rgb(100/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max8 caption = "Color Range 8 High" default = rgb(95/255,84/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,89/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Bouquet 8 ;-------------------------------------------------------------------- heading caption = " Bouquet 8 Settings" visible = (@customize && @colorPreset == "Bouquet 8") endheading color param bouquet8Max1 caption = "Color Range 1 High" default = rgb(0/255,255/255,131/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min1 caption = "Color Range 1 Low" default = rgb(0/255,84/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max2 caption = "Color Range 2 High" default = rgb(52/255,255/255,198/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min2 caption = "Color Range 2 Low" default = rgb(0/255,82/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max3 caption = "Color Range 3 High" default = rgb(0/255,244/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min3 caption = "Color Range 3 Low" default = rgb(0/255,64/255,74/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max4 caption = "Color Range 4 High" default = rgb(180/255,169/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min4 caption = "Color Range 4 Low" default = rgb(40/255,12/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max5 caption = "Color Range 5 High" default = rgb(251/255,148/255,230/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min5 caption = "Color Range 5 Low" default = rgb(100/255,20/255,67/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max6 caption = "Color Range 6 High" default = rgb(255/255,101/255,140/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min6 caption = "Color Range 6 Low" default = rgb(84/255,15/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max7 caption = "Color Range 7 High" default = rgb(255/255,149/255,111/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min7 caption = "Color Range 7 Low" default = rgb(77/255,36/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max8 caption = "Color Range 8 High" default = rgb(255/255,252/255,125/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min8 caption = "Color Range 8 Low" default = rgb(95/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Switch 8 ;-------------------------------------------------------------------- heading caption = " Color Switch 8 Settings" visible = (@customize && @colorPreset == "Color Switch 8") endheading color param colorSwitch8Max1 caption = "Color Range 1 High" default = rgb(255/255,33/255,52/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min1 caption = "Color Range 1 Low" default = rgb(90/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max2 caption = "Color Range 2 High" default = rgb(61/255,136/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,82/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,44/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min3 caption = "Color Range 3 Low" default = rgb(0/255,70/255,7/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max4 caption = "Color Range 4 High" default = rgb(255/255,131/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min4 caption = "Color Range 4 Low" default = rgb(105/255,40/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max5 caption = "Color Range 5 High" default = rgb(255/255,27/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min5 caption = "Color Range 5 Low" default = rgb(104/255,0/255,78/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max6 caption = "Color Range 6 High" default = rgb(168/255,87/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min6 caption = "Color Range 6 Low" default = rgb(35/255,0/255,58/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min7 caption = "Color Range 7 Low" default = rgb(0/255,60/255,60/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,38/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min8 caption = "Color Range 8 Low" default = rgb(90/255,90/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Evening Sky 8 ;-------------------------------------------------------------------- heading caption = " Evening Sky 8 Settings" visible = (@customize && @colorPreset == "Evening Sky 8") endheading color param eveningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,238/255,222/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min1 caption = "Color Range 1 Low" default = rgb(50/255,35/255,35/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max2 caption = "Color Range 2 High" default = rgb(255/255,226/255,85/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min2 caption = "Color Range 2 Low" default = rgb(85/255,54/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max3 caption = "Color Range 3 High" default = rgb(249/255,148/255,216/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min3 caption = "Color Range 3 Low" default = rgb(79/255,20/255,57/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max4 caption = "Color Range 4 High" default = rgb(159/255,159/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min4 caption = "Color Range 4 Low" default = rgb(22/255,16/255,54/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,175/255,79/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min5 caption = "Color Range 5 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max6 caption = "Color Range 6 High" default = rgb(124/255,190/255,251/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min6 caption = "Color Range 6 Low" default = rgb(13/255,40/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max7 caption = "Color Range 7 High" default = rgb(255/255,111/255,123/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min7 caption = "Color Range 7 Low" default = rgb(57/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max8 caption = "Color Range 8 High" default = rgb(111/255,255/255,245/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min8 caption = "Color Range 8 Low" default = rgb(0/255,60/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fantasia 8 ;-------------------------------------------------------------------- heading caption = " Fantasia 8 Settings" visible = (@customize && @colorPreset == "Fantasia 8") endheading color param fantasia8Max1 caption = "Color Range 1 High" default = rgb(255/255,230/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min1 caption = "Color Range 1 Low" default = rgb(102/255,81/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max2 caption = "Color Range 2 High" default = rgb(230/255,78/255,208/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min2 caption = "Color Range 2 Low" default = rgb(104/255,0/255,52/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max3 caption = "Color Range 3 High" default = rgb(180/255,119/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min3 caption = "Color Range 3 Low" default = rgb(56/255,0/255,82/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max4 caption = "Color Range 4 High" default = rgb(0/255,228/255,150/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min4 caption = "Color Range 4 Low" default = rgb(0/255,50/255,30/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max5 caption = "Color Range 5 High" default = rgb(131/255,148/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min5 caption = "Color Range 5 Low" default = rgb(38/255,31/255,85/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max6 caption = "Color Range 6 High" default = rgb(255/255,182/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min6 caption = "Color Range 6 Low" default = rgb(76/255,40/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max7 caption = "Color Range 7 High" default = rgb(252/255,0/255,113/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min7 caption = "Color Range 7 Low" default = rgb(84/255,0/255,34/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max8 caption = "Color Range 8 High" default = rgb(0/255,232/255,249/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min8 caption = "Color Range 8 Low" default = rgb(0/255,64/255,78/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Flowering Orchard 8 ;-------------------------------------------------------------------- heading caption = " Flowering Orchard 8 Settings" visible = (@customize && @colorPreset == "Flowering Orchard 8") endheading color param floweringOrchard8Max1 caption = "Color Range 1 High" default = rgb(255/255,188/255,213/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min1 caption = "Color Range 1 Low" default = rgb(132/255,30/255,66/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max2 caption = "Color Range 2 High" default = rgb(240/255,135/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min2 caption = "Color Range 2 Low" default = rgb(70/255,0/255,59/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max3 caption = "Color Range 3 High" default = rgb(255/255,75/255,153/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min3 caption = "Color Range 3 Low" default = rgb(104/255,15/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max4 caption = "Color Range 4 High" default = rgb(71/255,213/255,119/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min4 caption = "Color Range 4 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max5 caption = "Color Range 5 High" default = rgb(255/255,102/255,209/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min5 caption = "Color Range 5 Low" default = rgb(116/255,10/255,86/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max6 caption = "Color Range 6 High" default = rgb(154/255,199/255,51/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min6 caption = "Color Range 6 Low" default = rgb(28/255,44/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max7 caption = "Color Range 7 High" default = rgb(255/255,162/255,228/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min7 caption = "Color Range 7 Low" default = rgb(110/255,0/255,55/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max8 caption = "Color Range 8 High" default = rgb(255/255,201/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min8 caption = "Color Range 8 Low" default = rgb(145/255,20/255,54/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Morning Sky 8 ;-------------------------------------------------------------------- heading caption = " Morning Sky 8 Settings" visible = (@customize && @colorPreset == "Morning Sky 8") endheading color param morningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,178/255,217/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min1 caption = "Color Range 1 Low" default = rgb(79/255,29/255,57/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max2 caption = "Color Range 2 High" default = rgb(107/255,246/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min2 caption = "Color Range 2 Low" default = rgb(13/255,70/255,75/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max3 caption = "Color Range 3 High" default = rgb(255/255,199/255,137/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min3 caption = "Color Range 3 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max4 caption = "Color Range 4 High" default = rgb(241/255,245/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min4 caption = "Color Range 4 Low" default = rgb(16/255,24/255,46/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,177/255,188/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min5 caption = "Color Range 5 Low" default = rgb(54/255,14/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max6 caption = "Color Range 6 High" default = rgb(248/255,236/255,236/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min6 caption = "Color Range 6 Low" default = rgb(49/255,38/255,35/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max7 caption = "Color Range 7 High" default = rgb(129/255,201/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min7 caption = "Color Range 7 Low" default = rgb(0/255,56/255,70/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min8 caption = "Color Range 8 Low" default = rgb(89/255,76/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel 8 ;-------------------------------------------------------------------- heading caption = " Pastel 8 Settings" visible = (@customize && @colorPreset == "Pastel 8") endheading color param pastel8Max1 caption = "Color Range 1 High" default = rgb(147/255,255/255,193/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min1 caption = "Color Range 1 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max2 caption = "Color Range 2 High" default = rgb(147/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max3 caption = "Color Range 3 High" default = rgb(148/255,148/255,253/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min3 caption = "Color Range 3 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max4 caption = "Color Range 4 High" default = rgb(199/255,149/255,253/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max5 caption = "Color Range 5 High" default = rgb(255/255,147/255,221/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min5 caption = "Color Range 5 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max6 caption = "Color Range 6 High" default = rgb(254/255,148/255,148/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min6 caption = "Color Range 6 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max7 caption = "Color Range 7 High" default = rgb(255/255,202/255,147/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min7 caption = "Color Range 7 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,147/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min8 caption = "Color Range 8 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel Rainbow 8 ;-------------------------------------------------------------------- heading caption = " Pastel Rainbow 8 Settings" visible = (@customize && @colorPreset == "Pastel Rainbow 8") endheading color param pastelRainbow8Max1 caption = "Color Range 1 High" default = rgb(242/255,246/255,174/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min1 caption = "Color Range 1 Low" default = rgb(20/255,48/255,12/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max2 caption = "Color Range 2 High" default = rgb(182/255,242/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min2 caption = "Color Range 2 Low" default = rgb(20/255,44/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max3 caption = "Color Range 3 High" default = rgb(202/255,202/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min3 caption = "Color Range 3 Low" default = rgb(36/255,36/255,48/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max4 caption = "Color Range 4 High" default = rgb(255/255,170/255,170/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min4 caption = "Color Range 4 Low" default = rgb(89/255,0/255,24/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max5 caption = "Color Range 5 High" default = rgb(255/255,246/255,178/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min5 caption = "Color Range 5 Low" default = rgb(40/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max6 caption = "Color Range 6 High" default = rgb(255/255,238/255,206/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min6 caption = "Color Range 6 Low" default = rgb(52/255,16/255,40/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max7 caption = "Color Range 7 High" default = rgb(214/255,222/255,161/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min7 caption = "Color Range 7 Low" default = rgb(4/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max8 caption = "Color Range 8 High" default = rgb(255/255,230/255,246/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min8 caption = "Color Range 8 Low" default = rgb(70/255,50/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Showtime 8 ;-------------------------------------------------------------------- heading caption = " Showtime 8 Settings" visible = (@customize && @colorPreset == "Showtime 8") endheading color param showtime8Max1 caption = "Color Range 1 High" default = rgb(241/255,53/255,82/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min1 caption = "Color Range 1 Low" default = rgb(88/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max2 caption = "Color Range 2 High" default = rgb(255/255,121/255,52/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min2 caption = "Color Range 2 Low" default = rgb(107/255,29/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max3 caption = "Color Range 3 High" default = rgb(253/255,168/255,67/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min3 caption = "Color Range 3 Low" default = rgb(97/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max4 caption = "Color Range 4 High" default = rgb(255/255,231/255,21/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min4 caption = "Color Range 4 Low" default = rgb(140/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max5 caption = "Color Range 5 High" default = rgb(58/255,219/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min5 caption = "Color Range 5 Low" default = rgb(0/255,36/255,83/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max6 caption = "Color Range 6 High" default = rgb(9/255,116/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min6 caption = "Color Range 6 Low" default = rgb(33/255,30/255,81/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max7 caption = "Color Range 7 High" default = rgb(105/255,71/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min7 caption = "Color Range 7 Low" default = rgb(36/255,0/255,76/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max8 caption = "Color Range 8 High" default = rgb(187/255,32/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min8 caption = "Color Range 8 Low" default = rgb(50/255,0/255,56/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Soleil 8 ;-------------------------------------------------------------------- heading caption = " Soleil 8 Settings" visible = (@customize && @colorPreset == "Soleil 8") endheading color param soleil8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,35/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min1 caption = "Color Range 1 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max2 caption = "Color Range 2 High" default = rgb(255/255,209/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min2 caption = "Color Range 2 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max3 caption = "Color Range 3 High" default = rgb(231/255,237/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min3 caption = "Color Range 3 Low" default = rgb(54/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max4 caption = "Color Range 4 High" default = rgb(255/255,141/255,49/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min4 caption = "Color Range 4 Low" default = rgb(92/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,156/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min5 caption = "Color Range 5 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max6 caption = "Color Range 6 High" default = rgb(255/255,158/255,17/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min6 caption = "Color Range 6 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,217/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min7 caption = "Color Range 7 Low" default = rgb(76/255,41/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max8 caption = "Color Range 8 High" default = rgb(255/255,184/255,53/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min8 caption = "Color Range 8 Low" default = rgb(76/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Chill 8 ;-------------------------------------------------------------------- heading caption = " Chill 8 Settings" visible = (@customize && @colorPreset == "Chill 8") endheading color param chillMax1 caption = "Color Range 1 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin1 caption = "Color Range 1 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax2 caption = "Color Range 2 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax3 caption = "Color Range 3 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin3 caption = "Color Range 3 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax4 caption = "Color Range 4 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax5 caption = "Color Range 5 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin5 caption = "Color Range 5 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax6 caption = "Color Range 6 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax7 caption = "Color Range 7 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin7 caption = "Color Range 7 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax8 caption = "Color Range 8 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cloud Nine 8 ;-------------------------------------------------------------------- heading caption = " Cloud Nine 8 Settings" visible = (@customize && @colorPreset == "Cloud Nine 8") endheading color param cloudNineMax1 caption = "Color Range 1 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin1 caption = "Color Range 1 Low" default = rgb(143/255,60/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax2 caption = "Color Range 2 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin2 caption = "Color Range 2 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax3 caption = "Color Range 3 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin3 caption = "Color Range 3 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax4 caption = "Color Range 4 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin4 caption = "Color Range 4 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax5 caption = "Color Range 5 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin5 caption = "Color Range 5 Low" default = rgb(140/255,63/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax6 caption = "Color Range 6 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin6 caption = "Color Range 6 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax7 caption = "Color Range 7 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin7 caption = "Color Range 7 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax8 caption = "Color Range 8 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin8 caption = "Color Range 8 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for La Terra 8 ;-------------------------------------------------------------------- heading caption = " La Terra 8 Settings" visible = (@customize && @colorPreset == "La Terra 8") endheading color param laTerraMax1 caption = "Color Range 1 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin1 caption = "Color Range 1 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax2 caption = "Color Range 2 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin2 caption = "Color Range 2 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax3 caption = "Color Range 3 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin3 caption = "Color Range 3 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax4 caption = "Color Range 4 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin4 caption = "Color Range 4 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax5 caption = "Color Range 5 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin5 caption = "Color Range 5 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax6 caption = "Color Range 6 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin6 caption = "Color Range 6 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax7 caption = "Color Range 7 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin7 caption = "Color Range 7 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax8 caption = "Color Range 8 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin8 caption = "Color Range 8 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Santa Fe 8 ;-------------------------------------------------------------------- heading caption = " Santa Fe 8 Settings" visible = (@customize && @colorPreset == "Santa Fe 8") endheading color param santaFe8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min1 caption = "Color Range 1 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max2 caption = "Color Range 2 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max3 caption = "Color Range 3 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min3 caption = "Color Range 3 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max4 caption = "Color Range 4 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min4 caption = "Color Range 4 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min5 caption = "Color Range 5 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max6 caption = "Color Range 6 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max7 caption = "Color Range 7 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min7 caption = "Color Range 7 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min8 caption = "Color Range 8 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Spring 8 ;-------------------------------------------------------------------- heading caption = " Spring 8 Settings" visible = (@customize && @colorPreset == "Spring 8") endheading color param spring8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min1 caption = "Color Range 1 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max2 caption = "Color Range 2 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max3 caption = "Color Range 3 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min3 caption = "Color Range 3 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max4 caption = "Color Range 4 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min5 caption = "Color Range 5 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max6 caption = "Color Range 6 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min6 caption = "Color Range 6 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max7 caption = "Color Range 7 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min7 caption = "Color Range 7 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max8 caption = "Color Range 8 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min8 caption = "Color Range 8 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Summer 8 ;-------------------------------------------------------------------- heading caption = " Summer 8 Settings" visible = (@customize && @colorPreset == "Summer 8") endheading color param summer8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min1 caption = "Color Range 1 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max2 caption = "Color Range 2 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min3 caption = "Color Range 3 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max4 caption = "Color Range 4 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min5 caption = "Color Range 5 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max6 caption = "Color Range 6 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min6 caption = "Color Range 6 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min7 caption = "Color Range 7 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max8 caption = "Color Range 8 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fall 8 ;-------------------------------------------------------------------- heading caption = " Fall 8 Settings" visible = (@customize && @colorPreset == "Fall 8") endheading color param fall8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min1 caption = "Color Range 1 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max2 caption = "Color Range 2 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min2 caption = "Color Range 2 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max3 caption = "Color Range 3 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min3 caption = "Color Range 3 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max4 caption = "Color Range 4 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min4 caption = "Color Range 4 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min5 caption = "Color Range 5 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max6 caption = "Color Range 6 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min6 caption = "Color Range 6 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max7 caption = "Color Range 7 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min7 caption = "Color Range 7 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max8 caption = "Color Range 8 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min8 caption = "Color Range 8 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Winter 8 ;-------------------------------------------------------------------- heading caption = " Winter 8 Settings" visible = (@customize && @colorPreset == "Winter 8") endheading color param winter8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min1 caption = "Color Range 1 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max2 caption = "Color Range 2 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min2 caption = "Color Range 2 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max3 caption = "Color Range 3 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min3 caption = "Color Range 3 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max4 caption = "Color Range 4 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min4 caption = "Color Range 4 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min5 caption = "Color Range 5 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max6 caption = "Color Range 6 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min6 caption = "Color Range 6 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max7 caption = "Color Range 7 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min7 caption = "Color Range 7 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max8 caption = "Color Range 8 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min8 caption = "Color Range 8 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Mojave 8 ;-------------------------------------------------------------------- heading caption = " Mojave 8 Settings" visible = (@customize && @colorPreset == "Mojave 8") endheading color param mojave8Max1 caption = "Color Range 1 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min1 caption = "Color Range 1 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max2 caption = "Color Range 2 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min2 caption = "Color Range 2 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max3 caption = "Color Range 3 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min3 caption = "Color Range 3 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max4 caption = "Color Range 4 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min4 caption = "Color Range 4 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max5 caption = "Color Range 5 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min5 caption = "Color Range 5 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max6 caption = "Color Range 6 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min6 caption = "Color Range 6 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max7 caption = "Color Range 7 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min7 caption = "Color Range 7 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max8 caption = "Color Range 8 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min8 caption = "Color Range 8 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green 8 Settings" visible = (@customize && @colorPreset == "Gold/Green 8") endheading color param goldGreen8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max5 caption = "Color Range 5 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min5 caption = "Color Range 5 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max7 caption = "Color Range 7 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min7 caption = "Color Range 7 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Green Alt 8") endheading color param goldGreenAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max4 caption = "Color Range 4 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver 8") endheading color param goldSilver8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min5 caption = "Color Range 5 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min7 caption = "Color Range 7 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endheading color param goldSilverAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min2 caption = "Color Range 2 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min4 caption = "Color Range 4 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 8") endheading color param purpleYellow8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max2 caption = "Color Range 2 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min2 caption = "Color Range 2 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max4 caption = "Color Range 4 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min5 caption = "Color Range 5 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min7 caption = "Color Range 7 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow Alt 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow Alt 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endheading color param purpleYellowAlt8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min4 caption = "Color Range 4 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max5 caption = "Color Range 5 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min5 caption = "Color Range 5 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max7 caption = "Color Range 7 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min7 caption = "Color Range 7 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue 8") endheading color param silverBlue8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min4 caption = "Color Range 4 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max5 caption = "Color Range 5 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min5 caption = "Color Range 5 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max7 caption = "Color Range 7 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue Alt 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue Alt 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endheading color param silverBlueAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max4 caption = "Color Range 4 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min5 caption = "Color Range 5 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min7 caption = "Color Range 7 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fourth of July 3 ;-------------------------------------------------------------------- heading caption = " Fourth of July 3 Settings" visible = (@customize && @colorPreset == "Fourth of July 3") endheading color param fourthOfJuly3Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min1 caption = "Color Range 1 Low" default = rgb(128/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min3 caption = "Color Range 3 Low" default = rgb(128/255,128/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/Silver 2 ;-------------------------------------------------------------------- heading caption = " Blue/Silver 2 Settings" visible = (@customize && @colorPreset == "Blue/Silver 2") endheading color param blueSilver2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/White 2 ;-------------------------------------------------------------------- heading caption = " Blue/White 2 Settings" visible = (@customize && @colorPreset == "Blue/White 2") endheading color param blueWhite2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min2 caption = "Color Range 2 Low" default = rgb(124/255,124/255,124/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Magenta 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Magenta 2 Settings" visible = (@customize && @colorPreset == "Cyan/Magenta 2") endheading color param cyanMagenta2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Max2 caption = "Color Range 2 High" default = rgb(255/255,128/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Yellow 2 Settings" visible = (@customize && @colorPreset == "Cyan/Yellow 2") endheading color param cyanYellow2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 2 ;-------------------------------------------------------------------- heading caption = " Gold/Green 2 Settings" visible = (@customize && @colorPreset == "Gold/Green 2") endheading color param goldGreen2Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 2 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 2") endheading color param purpleYellow2Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Red/Tan 2 ;-------------------------------------------------------------------- heading caption = " Red/Tan 2 Settings" visible = (@customize && @colorPreset == "Red/Tan 2") endheading color param redTan2Max1 caption = "Color Range 1 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min1 caption = "Color Range 1 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Max2 caption = "Color Range 2 High" default = rgb(255/255,208/255,152/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min2 caption = "Color Range 2 Low" default = rgb(128/255,108/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam param highlight_type caption = "Color Highlight Type" default = 1 enum = "none" "linear" "log" "exponential" hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param extent caption = "Highlight Extent" default = 0.05 min = 0.0 max = 0.5 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param hblend caption = "Highlight power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam color param hcolor caption = "Highlight color" default = rgb(255/255,255/255,255/255) visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param scale caption = "color scale adj" default = 1.0 endparam float param cblend caption = "color blend power" default = 3.0 visible = @colorPreset != "Gradient" endparam param method caption = "color method" enum = "level" "size" "index" "position" "generator" "size threshold" default = 0 endparam param rthresh caption = "Size thresh" default = 0.01 visible = @version >= 105 && @method == 5 endparam param adj caption = "color methd adj" default = 1.0 endparam float param luminanceUpper caption = "Lum. Upper Value" default = 0.5 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the upper value \ when generating the ranges from the gradient. This value \ is used with the brighter end of the color range." visible = (@colorPreset == "Generate") endparam float param luminanceLower caption = "Lum. Lower Value" default = 0.0 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the lower value \ when generating the ranges from the gradient. This value \ is used with the darker end of the color range." visible = (@colorPreset == "Generate") endparam int param totalColors caption = "# Colors in Gradient" default = 8 min = 1 max = 8 visible = (@colorPreset == "Gradient") endparam int param ncolor caption = "# Colors to Use" default = 8 min = 1 max = 24 visible = (@colorPreset != "Generate") endparam int param colorRanges caption = "Number of Ranges" default = 8 min = 1 max = 24 hint = "The number of color ranges (1..24)." visible = (@colorPreset == "Custom") endparam int param numRanges caption = "Number of Ranges" default = 8 min = 1 max = 500 hint = "The number of color ranges." visible = (@colorPreset == "Generate") endparam param perturbRanges caption = "Perturb Ranges" enum = "None" "Even/Odd" "1st Half / 2nd Half" "8 Range Custom" default = 0 hint = "Modify the way the ranges are assigned to the elements. \ 'None' = Assign in Order (0 1 2 3 4 5 6 7); 'Even Odd' = \ Assign Even Ranges, then Odd Ranges (0 2 4 6 1 3 5 7); \ '1st Half / 2nd Half' = Assign from first half of range, \ then 2nd half (0 4 1 5 2 6 3 7); '8 Range Custom' = Assign \ the ordering by entering digits 1-8. Only works for ranges \ with 8 colors." visible = ((@colorPreset == "Custom" && @colorRanges >= 3) || \ (@colorPreset == "Generate" && @numRanges >= 3) || \ (@colorPreset != "Custom" && @colorPreset != "Generate" && \ @colorPreset != "Gradient")) endparam int param rangeOrder caption = "Range Order" default = 12345678 min = 11111111 max = 88888888 hint = "Specify the color range ordering. Use digits 1-8 to specify \ the order the ranges will be used. For example, to reverse \ the ordering, specify 87654321. To alternate, use 13572468. \ If color map or preset is defined that does not contain exactly \ 8 ranges, then this parameter will not have any effect." visible = (@perturbRanges == "8 Range Custom") endparam int param colorOffset caption = "Range Offset" default = 0 min = 0 max = 23 hint = "This is used to rotate the color ranges. The offset can \ range from 0 to 23, where 23 is the maximum number of ranges \ that can be specified using the 'Generate' Color Preset." visible = (@colorPreset != "Gradient") endparam $ifdef VER40 heading caption = "Camera Settings" expanded = false endheading heading text = "Camera Origin" endheading $else heading caption = "Camera Settings" endheading heading caption = " Camera Origin" endheading $endif float param camerax caption = " X" default = 0.5 endparam float param cameray caption = " Y" default = -1.4 endparam float param cameraz caption = " Z" default = 10 endparam $ifdef VER40 heading text = "Camera Point At" endheading $else heading caption = " Camera Point At" endheading $endif float param cpointx caption = " X" default = 1.0 endparam float param cpointy caption = " Y" default = 0.7 endparam float param vplane caption = " Z" default = 2.0 endparam heading caption = "Illumination" endheading param ltype caption = "Light type" default = 1 enum = "Point source" "Spotlight" "Infinite light" endparam param angle caption = "Light Rotation" default = -60 hint = "Gives the rotation of the light source, in degrees." visible=@ltype == "Infinite light" endparam param elevation caption = "Light Elevation" default = 60 hint = "Gives the elevation of the light source, in degrees." visible=@ltype == "Infinite light" endparam $ifdef VER40 heading text = "Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lpointx caption = " X" default = 1 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lpointy caption = " Y" default = 3 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lplane caption = " Z" default = 5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam $ifdef VER40 heading text = "Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lightx caption = " X" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lighty caption = " Y" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lightz caption = " Z" default = 0.0 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param spotrad caption = "Spotlight radius" default = 0.25 visible=@ltype=="Spotlight" endparam param spottype caption = "Spotlight focus" default = 0 enum = "Set focus" "Sharp" visible=@ltype=="Spotlight" endparam float param setfocus default = 1.0 visible=@ltype=="Spotlight"&& @spottype == "Set focus" endparam float param sdis caption = "Sphere brightness" default = 2.0 visible=@ltype=="Point source" || @ltype=="Spotlight" endparam float param dis caption = "Floor brightness" default = 1.0 visible=@floor==true && (@ltype=="Point source" || @ltype=="Spotlight") endparam param ambient caption = "Ambient light" default = 0.05 max = 1.0 min = 0.0 endparam color param amcolor caption = "Ambient color" default = rgb(192/255,192/255,192/255) endparam float param am caption = "Shadow level" default = 0.4 min = 0.0 max = 1.0 endparam bool param reflect caption = "Show reflections" default = false endparam float param kr caption = "Reflect param" default = 1.0 min = 0.0 max = 1.0 visible=@reflect==true endparam float param krf caption = "Floor reflect param" default = 0.2 min = 0.0 max = 1.0 visible=@reflect==true endparam float param floorreflect caption = "Floor reflect dist" default = 1.0 visible=@reflect==true endparam param blendval caption = "Blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflect==true endparam param rblend caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @reflect==true endparam float param hrblend caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @reflect==true endparam param reflectf caption="Reflection off floor" default = false visible = @reflect==true endparam param blendvalf caption = "Floor blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflectf==true endparam heading caption = "Transparency parameters" endheading bool param tparent caption = "Set transparency" default = false endparam param tparentval caption = "Transparency (0-1)" default = 0.5 min = 0.0 max = 1.0 visible=@tparent==true endparam param rfi caption = "Refractive index" default = 1.5 min = 1.0 max = 4 visible=@tparent==true endparam float param krt caption = "Refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param krft caption = "Floor refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param floorrefract caption = "Floor refract dist" default = 1.0 visible=@tparent==true endparam param rblendt caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @tparent==true endparam float param hrblendt caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @tparent==true endparam param tmerge caption = "Refract merge mode" enum = "Normal" "Screen" "Hard Light" "Lighten" "Addition" default = 0 visible=@tparent==true endparam $ifdef VER40 heading text = "More realistic transparent coloring can often be obtained \ by switching colors." visible=@tparent==true && @colorPreset != "Gradient" endheading $endif bool param switch caption = "switch colors" default = false visible=@tparent==true && @colorPreset != "Gradient" endparam heading caption = "Floor Settings" endheading bool param floor caption ="Add floor" default = true endparam float param fa caption = "X direction" default = 0.0 visible=@floor==true endparam float param fb caption = "Y direction" default = 1.0 visible=@floor==true endparam float param fc caption = "Z direction" default = 0.0 visible=@floor==true endparam float param fd caption = "Position" default = -0.9 visible=@floor==true endparam heading caption = "Floor Patterns" endheading param flrtype caption = "Floor Type" default = 0 enum = "Checkerboard" "Fractal" "Plain" visible=@floor==true endparam float param checkscale caption = "Pattern scale" default = 0.3 visible=@floor==true && @flrtype != "Plain" endparam complex param poffset caption = "Pattern offset" default = (0,0) visible=@floor==true && @flrtype != "Plain" endparam param fctltype caption = "Fractal Type" default = 4 enum = "Barnsley" "Cayley Julia" "Gopalsamy" "Julia" "Mandelbrot" "Newton" "Phoenix" visible=@floor==true && @flrtype == "Fractal" endparam color param flrcolor caption = "Floor color #1" default = rgba(0/255,0/255,139/255,1) visible=@floor==true && (@flrtype == "Checkerboard" || @flrtype == "Plain") endparam color param flrcolor2 caption = "Floor color #2" default = rgba(176/255,224/255,230/255,1) visible=@floor==true && @flrtype == "Checkerboard" endparam param cmethod caption = "Converge method" default = 2 enum = "Halley" "Householder" "Newton" "Schroder" visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam param color_mode caption = "Color mode" default = 0 enum = "Distance" "Iteration" visible=@floor==true && @flrtype == "Fractal" && @colormethod != "Exponential smoothing" endparam param colormethod caption = "Trap" enum = "Exponential smoothing" "Simple traps" "Orbit traps" default = 0 visible=@floor==true && @flrtype == "Fractal" endparam param traptype caption = "Trap type" enum = "Arachnida2" "Archimedes" "Atzema spiral" "Butterfly" "Cardoid" \ "Ceil_floor" "Cf_plus" "Conchoid" "Cycloid" "Ellipse Catacaustic" \ "Gear" "Lemniscate" "Log spiral" "Maltese cross" "Product" "Quotient1" \ "Quotient2" "Rose" "Rose of Troy" "Serpentine" "Sum" "Tr_plus" \ "Trefoil" "Trifolium" "Trisectrix of Maclaurin" "Trunc_round" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" endparam param traptype2 caption = "Trap type" enum = "Astroid" "Box" "Cross" "Diamond" "Egg" "Heart" "Hyperbola" "Hypercross" \ "Lines" "Mirrored waves" "Pinch" "Point" "Spiral"\ "Radial waves" "Rectangle" "Ring" "Waves" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param pa caption = "Polar parameter" default = 0.2 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Lemniscate" ||@traptype == "Cardoid" \ ||@traptype == "Conchoid"||@traptype == "Log spiral"|| \ @traptype == "Rose"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Butterfly"||@traptype == "Gear" \ ||@traptype == "Arachnida2"||@traptype == "Maltese cross" \ ||@traptype == "Trifolium"||@traptype == "Serpentine" \ ||@traptype == "Trefoil"||@traptype == "Trisectrix of Maclaurin" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pb caption = "2nd polar parameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Conchoid"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Gear"||@traptype == "Serpentine" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pc caption = "3rd Polar parameter" default = 0.05 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && @traptype == "Rose of Troy" endparam param pn caption = "Polar integer" default = 3 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Gear" || @traptype == "Arachnida2") endparam param diameter caption = "Trap diameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Ring" || @traptype2 == "Egg" || \ @traptype2 == "Hyperbola" || @traptype2 == "Lines" ||\ @traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves"|| @traptype2 == "Spiral"\ || @traptype2 == "Heart") endparam param torder caption = "Trap order" default = 4.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Pinch" ||@traptype2 == "Egg" || \ @traptype2 == "Astroid" ||@traptype2 == "Waves"|| \ @traptype2 == "Mirrored Waves" || @traptype2 == "Radial Waves") endparam param tfreq caption = "Trap frequency" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves") endparam bool param mask caption = "Use mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam $ifdef VER40 heading text = "'Reverse mask' overrides 'Mask'." visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endheading $endif bool param rmask caption = "Use reverse mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param threshold caption = "Mask threshold" default = 0.1 visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param tcenter caption = "Trap center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param tasp caption = "Trap aspect" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param trot caption = "Trap rotation" default = 0.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam color param icolor caption = "Inside color" default = rgb(0,0,0) visible=@floor==true && @flrtype == "Fractal" endparam int param miter caption = "Maximum iterations" default = 100 visible=@floor==true && @flrtype == "Fractal" endparam complex param seed caption = "Seed" default = (-0.75,0.2) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Julia" endparam complex param cseed caption = "Seed" default = (0.360968017578125,0.00074462890625) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param phseed caption = "Seed" default = (0.56667, -0.5) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Phoenix" endparam complex param gseed caption = "Seed" default = (-0.19, -0.19) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Gopalsamy" endparam complex param bseed caption = "Seed" default = (1.025, 0.9875) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Barnsley" endparam complex param p1 caption = "Newton power" default = (3.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param mp1 caption = "Power" default = (2.0,0.0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Mandelbrot" || \ @fctltype == "Julia") endparam complex param p2 caption = "Newton root" default = (1.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param fmcenter caption = "Fractal center" default = (-0.5,0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Mandelbrot" endparam complex param fccenter caption = "Fractal center" default = (-0.0005781248605,0.0022031248985) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param fcenter caption = "Fractal center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Julia" || \ @fctltype == "Newton" || @fctltype == "Phoenix" || @fctltype == "Barnsley" \ || @fctltype == "Gopalsamy") endparam float param fmag caption = "Fractal magnification" default = 1.0 visible=@floor==true && @flrtype == "Fractal" endparam float param bailout caption = "Bailout" default = 10000 visible=@floor==true && @flrtype == "Fractal" endparam float param spread caption = "Color spread" default = 0.5 visible=@floor==true && @flrtype == "Fractal" endparam float param shift caption = "Color shift" default = 0.0 visible=@floor==true && @flrtype == "Fractal" endparam bool param fbound caption ="Floor boundaries?" default = false visible=@floor==true endparam float param leftbound caption ="Left boundary" default = 0.05 visible=@floor==true && @fbound == true endparam float param rightbound caption ="Right boundary" default = 0.95 visible=@floor==true && @fbound == true endparam float param topbound caption ="Top boundary" default = 2.0 visible=@floor==true && @fbound == true endparam float param bottombound caption ="Bottom boundary" default = -2.0 visible=@floor==true && @fbound == true endparam } KleinianGroupRayTrace {; Ron Barnett October 7, 2005 ; derived from the public C code of Curtis McMullen ; The sorting routines use HEAPSORT ; Transparency/Refraction, relections from spheres ; to the floor, more fractal types added November 15,2005 ; added code to allow for both lines and circles in initialization ; added January 12, 2006 ; Modified from KleinianCuspRayTrace to provide correct classification ; of the Kleinian groups global: int MaxLevel = @level int level = MaxLevel complex cs[5000000] float rad[5000000] float both[5000000] complex csf[5000000] float radf[5000000] float csz[5000000] float clr[5000000] float clrf[5000000] float PARAFUZZ = 1e-3 ; Nearly parallel slopes float LINEFUZZ = 1e-5 ; Line vs. Circle complex im = (0,1) complex gens[9,4] complex temp1 = 0 float thresh = @scircle/1000 color colorswitch = rgb(0,0,0) float checkscale = @checkscale/#width*30 float frac[#width, #height] float kr = @kr float krf = @krf float krt = @krt float krft = @krft if @tparent kr = kr*(1-@tparentval) krf = krf*(1-@tparentval) krt = krt*@tparentval krft = krft*@tparentval endif complex rra = 0 float rrb = 0 float rrc = 0 bool continue = true bool done = false complex tab = 0 complex gz0 = 0 int si = 0 int sj = 0 int i = 0 int j = 0 int k = 0 int c = 0 int l = 0 int ir = 0 int ifinal = 0 int istack = 0 int nold = 0 int nfinal = 1 float mxi = 0 float fi = 0 float fj = 0 float expiter = 0 complex fij = 0 complex oldf = 0 complex fz = 0 complex fzp = 0 complex fzp2 = 0 float pwrtest = 10^(100/cabs(@p1)) bool bTest = false float isnear = cabs(@p2)^cabs(@p1)/@bailout complex fcenter = 0 float asp = #height/#width complex phx = 0 complex phy = 0 complex gx = 0 complex gx1 = 0 complex gy = 0 float ddx = 0 float ddy = 0 float ddr = 0 complex det = 0 float closest = 1e318 complex ez = 0 float trap = 0.0 float trapd = 0.0 float trapd2 = 0.0 complex trapz2 = (0,0) complex trapr = (0,1)^(@trot/90.0) complex trapcenter2 = @tcenter complex r0 = (0,0) complex rh = (0,1)^(@torder/8) complex zh = (0,0) float theta = 0 float rr = 0 float af1 = 0 float af2 = 0 complex astroid = 0 int trap_iter = 0 if @flrtype == "Fractal" if @fctltype == "Mandelbrot" fcenter = @fmcenter while i < #width fi = (i*4/(#width)-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/(#height) - 2)/@fmag + imag(fcenter) fij = 0 while k < @miter fij = fij^@mp1+fi+flip(fj) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Julia" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter fij = fij^@mp1+@seed if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Newton" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^@p1 - @p2 fzp = @p1*fij^(@p1-1) fzp2 = @p1*(@p1-1)*fij^(@p1-2) if @cmethod == "Newton" fij = fij - fz/fzp elseif @cmethod == "Householder" fij = fij - fz/fzp*(1 + fz*fzp2/(2*fzp^2)) elseif @cmethod == "Halley" fij = fij - 2*fz*fzp/(2*fzp^2 - fz*fzp2) elseif @cmethod == "Schroder" fij = fij - fz*fzp/(fzp^2 - fz*fzp2) endif btest = (cabs(oldf-fij) < isnear) if !(!btest && (cabs(fij) < pwrtest)) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(!btest && (cabs(fij) < pwrtest)) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Cayley Julia" closest = 1e318 fcenter = @fccenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^3 - @cseed*fij - @cseed + 1 fzp = 3*fij^2 - @cseed fij = fij - fz/fzp btest = (cabs(oldf-fij) < isnear) if !(|fij - oldf| >= 1/@bailout) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(|fij - oldf| >= 1/@bailout) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Phoenix" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter phx = fij*fij + real(@phseed) + imag(@phseed)*phy phy = fij fij = phx if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 phx = 0 phy = 0 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Gopalsamy" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter gx = real(fij) gy = imag(fij) gx1 = -2*gx*gy + @gseed gy = gy*gy - gx*gx fij = gx1 + flip(gy) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Barnsley" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter IF real(fij) >= 0 fij = (fij - 1) * @bseed ELSE fij = (fij + 1) * @bseed ENDIF if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile endif endif i = 1 j = 0 k = 0 int lev = 2 int iii = 9 float fx = 0.0 float ffx = 0.0 float xx = 0.0 float yy = 0 float fy = 0.0 float ffy = 0.0 float ffz = 0 float zz = 0 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float tzmax = tymax float zmin = xmin ; floor parameters float fa = @fa float fb = @fb float fc = @fc float fd = @fd*#width*asp ; Color range variables and initialization. color colorMap [500, 2] int ranges = 8 int colorsUsed = 0 int offset = 0 if (@colorPreset == "Gradient") colorsUsed = @ncolor elseif (@colorPreset == "Generate") colorsUsed = @numRanges elseif (@colorPreset == "Custom") colorsUsed = @colorRanges else colorsUsed = @ncolor endif if (@colorPreset == "Gradient") ; Use the gradient for the color ranges. ranges = @totalColors offset = 0 elseif (@colorPreset == "Custom") ; User specified custom range. ; Initial values by Toby Marshall. colorMap [0,0] = @colorMax1, colorMap [0,1] = @colorMin1 colorMap [1,0] = @colorMax2, colorMap [1,1] = @colorMin2 colorMap [2,0] = @colorMax3, colorMap [2,1] = @colorMin3 colorMap [3,0] = @colorMax4, colorMap [3,1] = @colorMin4 colorMap [4,0] = @colorMax5, colorMap [4,1] = @colorMin5 colorMap [5,0] = @colorMax6, colorMap [5,1] = @colorMin6 colorMap [6,0] = @colorMax7, colorMap [6,1] = @colorMin7 colorMap [7,0] = @colorMax8, colorMap [7,1] = @colorMin8 colorMap [8,0] = @customMax9, colorMap [8,1] = @customMin9 colorMap [9,0] = @customMax10, colorMap [9,1] = @customMin10 colorMap [10,0] = @customMax11, colorMap [10,1] = @customMin11 colorMap [11,0] = @customMax12, colorMap [11,1] = @customMin12 colorMap [12,0] = @customMax13, colorMap [12,1] = @customMin13 colorMap [13,0] = @customMax14, colorMap [13,1] = @customMin14 colorMap [14,0] = @customMax15, colorMap [14,1] = @customMin15 colorMap [15,0] = @customMax16, colorMap [15,1] = @customMin16 colorMap [16,0] = @customMax17, colorMap [16,1] = @customMin17 colorMap [17,0] = @customMax18, colorMap [17,1] = @customMin18 colorMap [18,0] = @customMax19, colorMap [18,1] = @customMin19 colorMap [19,0] = @customMax20, colorMap [19,1] = @customMin20 colorMap [20,0] = @customMax21, colorMap [20,1] = @customMin21 colorMap [21,0] = @customMax22, colorMap [21,1] = @customMin22 colorMap [22,0] = @customMax23, colorMap [22,1] = @customMin23 colorMap [23,0] = @customMax24, colorMap [23,1] = @customMin24 ranges = @colorRanges offset = @colorOffset elseif (@colorPreset == "Generate") ; Compute the color ranges using the gradient. ranges = 0 offset = @colorOffset while ranges < @numRanges color gradientColor = gradient(ranges/@numRanges) colorMap [ranges,0] = hsl(hue(gradientColor), sat(gradientColor), @luminanceUpper) colorMap [ranges,1] = hsl(hue(gradientColor), sat(gradientColor), @luminanceLower) ranges = ranges + 1 endwhile elseif (@colorPreset == "Default") ; colorMap [0,0] = @defaultMax1, colorMap [0,1] = @defaultMin1 colorMap [1,0] = @defaultMax2, colorMap [1,1] = @defaultMin2 colorMap [2,0] = @defaultMax3, colorMap [2,1] = @defaultMin3 colorMap [3,0] = @defaultMax4, colorMap [3,1] = @defaultMin4 colorMap [4,0] = @defaultMax5, colorMap [4,1] = @defaultMin5 colorMap [5,0] = @defaultMax6, colorMap [5,1] = @defaultMin6 colorMap [6,0] = @defaultMax7, colorMap [6,1] = @defaultMin7 colorMap [7,0] = @defaultMax8, colorMap [7,1] = @defaultMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Default 12") ; Created by Toby Marshall. colorMap [0,0] = @default12Max1, colorMap [0,1] = @default12Min1 colorMap [1,0] = @default12Max2, colorMap [1,1] = @default12Min2 colorMap [2,0] = @default12Max3, colorMap [2,1] = @default12Min3 colorMap [3,0] = @default12Max4, colorMap [3,1] = @default12Min4 colorMap [4,0] = @default12Max5, colorMap [4,1] = @default12Min5 colorMap [5,0] = @default12Max6, colorMap [5,1] = @default12Min6 colorMap [6,0] = @default12Max7, colorMap [6,1] = @default12Min7 colorMap [7,0] = @default12Max8, colorMap [7,1] = @default12Min8 colorMap [8,0] = @default12Max9, colorMap [8,1] = @default12Min9 colorMap [9,0] = @default12Max10, colorMap [9,1] = @default12Min10 colorMap [10,0] = @default12Max11, colorMap [10,1] = @default12Min11 colorMap [11,0] = @default12Max12, colorMap [11,1] = @default12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Default 16") ; Created by Toby Marshall. colorMap [0,0] = @default16Max1, colorMap [0,1] = @default16Min1 colorMap [1,0] = @default16Max2, colorMap [1,1] = @default16Min2 colorMap [2,0] = @default16Max3, colorMap [2,1] = @default16Min3 colorMap [3,0] = @default16Max4, colorMap [3,1] = @default16Min4 colorMap [4,0] = @default16Max5, colorMap [4,1] = @default16Min5 colorMap [5,0] = @default16Max6, colorMap [5,1] = @default16Min6 colorMap [6,0] = @default16Max7, colorMap [6,1] = @default16Min7 colorMap [7,0] = @default16Max8, colorMap [7,1] = @default16Min8 colorMap [8,0] = @default16Max9, colorMap [8,1] = @default16Min9 colorMap [9,0] = @default16Max10, colorMap [9,1] = @default16Min10 colorMap [10,0] = @default16Max11, colorMap [10,1] = @default16Min11 colorMap [11,0] = @default16Max12, colorMap [11,1] = @default16Min12 colorMap [12,0] = @default16Max13, colorMap [12,1] = @default16Min13 colorMap [13,0] = @default16Max14, colorMap [13,1] = @default16Min14 colorMap [14,0] = @default16Max15, colorMap [14,1] = @default16Min15 colorMap [15,0] = @default16Max16, colorMap [15,1] = @default16Min16 ranges = 16 offset = @colorOffset elseif (@colorPreset == "Default 24") ; Created by Toby Marshall. colorMap [0,0] = @default24Max1, colorMap [0,1] = @default24Min1 colorMap [1,0] = @default24Max2, colorMap [1,1] = @default24Min2 colorMap [2,0] = @default24Max3, colorMap [2,1] = @default24Min3 colorMap [3,0] = @default24Max4, colorMap [3,1] = @default24Min4 colorMap [4,0] = @default24Max5, colorMap [4,1] = @default24Min5 colorMap [5,0] = @default24Max6, colorMap [5,1] = @default24Min6 colorMap [6,0] = @default24Max7, colorMap [6,1] = @default24Min7 colorMap [7,0] = @default24Max8, colorMap [7,1] = @default24Min8 colorMap [8,0] = @default24Max9, colorMap [8,1] = @default24Min9 colorMap [9,0] = @default24Max10, colorMap [9,1] = @default24Min10 colorMap [10,0] = @default24Max11, colorMap [10,1] = @default24Min11 colorMap [11,0] = @default24Max12, colorMap [11,1] = @default24Min12 colorMap [12,0] = @default24Max13, colorMap [12,1] = @default24Min13 colorMap [13,0] = @default24Max14, colorMap [13,1] = @default24Min14 colorMap [14,0] = @default24Max15, colorMap [14,1] = @default24Min15 colorMap [15,0] = @default24Max16, colorMap [15,1] = @default24Min16 colorMap [16,0] = @default24Max17, colorMap [16,1] = @default24Min17 colorMap [17,0] = @default24Max18, colorMap [17,1] = @default24Min18 colorMap [18,0] = @default24Max19, colorMap [18,1] = @default24Min19 colorMap [19,0] = @default24Max20, colorMap [19,1] = @default24Min20 colorMap [20,0] = @default24Max21, colorMap [20,1] = @default24Min21 colorMap [21,0] = @default24Max22, colorMap [21,1] = @default24Min22 colorMap [22,0] = @default24Max23, colorMap [22,1] = @default24Min23 colorMap [23,0] = @default24Max24, colorMap [23,1] = @default24Min24 ranges = 24 offset = @colorOffset elseif (@colorPreset == "Color Wheel 12") ; Created by Toby Marshall. colorMap [0,0] = @colorWheel12Max1, colorMap [0,1] = @colorWheel12Min1 colorMap [1,0] = @colorWheel12Max2, colorMap [1,1] = @colorWheel12Min2 colorMap [2,0] = @colorWheel12Max3, colorMap [2,1] = @colorWheel12Min3 colorMap [3,0] = @colorWheel12Max4, colorMap [3,1] = @colorWheel12Min4 colorMap [4,0] = @colorWheel12Max5, colorMap [4,1] = @colorWheel12Min5 colorMap [5,0] = @colorWheel12Max6, colorMap [5,1] = @colorWheel12Min6 colorMap [6,0] = @colorWheel12Max7, colorMap [6,1] = @colorWheel12Min7 colorMap [7,0] = @colorWheel12Max8, colorMap [7,1] = @colorWheel12Min8 colorMap [8,0] = @colorWheel12Max9, colorMap [8,1] = @colorWheel12Min9 colorMap [9,0] = @colorWheel12Max10, colorMap [9,1] = @colorWheel12Min10 colorMap [10,0] = @colorWheel12Max11, colorMap [10,1] = @colorWheel12Min11 colorMap [11,0] = @colorWheel12Max12, colorMap [11,1] = @colorWheel12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Alhambra 8") ; Created by Toby Marshall. colorMap [0,0] = @alhambra8Max1, colorMap [0,1] = @alhambra8Min1 colorMap [1,0] = @alhambra8Max2, colorMap [1,1] = @alhambra8Min2 colorMap [2,0] = @alhambra8Max3, colorMap [2,1] = @alhambra8Min3 colorMap [3,0] = @alhambra8Max4, colorMap [3,1] = @alhambra8Min4 colorMap [4,0] = @alhambra8Max5, colorMap [4,1] = @alhambra8Min5 colorMap [5,0] = @alhambra8Max6, colorMap [5,1] = @alhambra8Min6 colorMap [6,0] = @alhambra8Max7, colorMap [6,1] = @alhambra8Min7 colorMap [7,0] = @alhambra8Max8, colorMap [7,1] = @alhambra8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Belvedere 8") ; Created by Toby Marshall. colorMap [0,0] = @belvedere8Max1, colorMap [0,1] = @belvedere8Min1 colorMap [1,0] = @belvedere8Max2, colorMap [1,1] = @belvedere8Min2 colorMap [2,0] = @belvedere8Max3, colorMap [2,1] = @belvedere8Min3 colorMap [3,0] = @belvedere8Max4, colorMap [3,1] = @belvedere8Min4 colorMap [4,0] = @belvedere8Max5, colorMap [4,1] = @belvedere8Min5 colorMap [5,0] = @belvedere8Max6, colorMap [5,1] = @belvedere8Min6 colorMap [6,0] = @belvedere8Max7, colorMap [6,1] = @belvedere8Min7 colorMap [7,0] = @belvedere8Max8, colorMap [7,1] = @belvedere8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Bouquet 8") ; Created by Toby Marshall. colorMap [0,0] = @bouquet8Max1, colorMap [0,1] = @bouquet8Min1 colorMap [1,0] = @bouquet8Max2, colorMap [1,1] = @bouquet8Min2 colorMap [2,0] = @bouquet8Max3, colorMap [2,1] = @bouquet8Min3 colorMap [3,0] = @bouquet8Max4, colorMap [3,1] = @bouquet8Min4 colorMap [4,0] = @bouquet8Max5, colorMap [4,1] = @bouquet8Min5 colorMap [5,0] = @bouquet8Max6, colorMap [5,1] = @bouquet8Min6 colorMap [6,0] = @bouquet8Max7, colorMap [6,1] = @bouquet8Min7 colorMap [7,0] = @bouquet8Max8, colorMap [7,1] = @bouquet8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Color Switch 8") ; Created by Toby Marshall. colorMap [0,0] = @colorSwitch8Max1, colorMap [0,1] = @colorSwitch8Min1 colorMap [1,0] = @colorSwitch8Max2, colorMap [1,1] = @colorSwitch8Min2 colorMap [2,0] = @colorSwitch8Max3, colorMap [2,1] = @colorSwitch8Min3 colorMap [3,0] = @colorSwitch8Max4, colorMap [3,1] = @colorSwitch8Min4 colorMap [4,0] = @colorSwitch8Max5, colorMap [4,1] = @colorSwitch8Min5 colorMap [5,0] = @colorSwitch8Max6, colorMap [5,1] = @colorSwitch8Min6 colorMap [6,0] = @colorSwitch8Max7, colorMap [6,1] = @colorSwitch8Min7 colorMap [7,0] = @colorSwitch8Max8, colorMap [7,1] = @colorSwitch8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Evening Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @eveningSky8Max1, colorMap [0,1] = @eveningSky8Min1 colorMap [1,0] = @eveningSky8Max2, colorMap [1,1] = @eveningSky8Min2 colorMap [2,0] = @eveningSky8Max3, colorMap [2,1] = @eveningSky8Min3 colorMap [3,0] = @eveningSky8Max4, colorMap [3,1] = @eveningSky8Min4 colorMap [4,0] = @eveningSky8Max5, colorMap [4,1] = @eveningSky8Min5 colorMap [5,0] = @eveningSky8Max6, colorMap [5,1] = @eveningSky8Min6 colorMap [6,0] = @eveningSky8Max7, colorMap [6,1] = @eveningSky8Min7 colorMap [7,0] = @eveningSky8Max8, colorMap [7,1] = @eveningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fantasia 8") ; Created by Toby Marshall. colorMap [0,0] = @fantasia8Max1, colorMap [0,1] = @fantasia8Min1 colorMap [1,0] = @fantasia8Max2, colorMap [1,1] = @fantasia8Min2 colorMap [2,0] = @fantasia8Max3, colorMap [2,1] = @fantasia8Min3 colorMap [3,0] = @fantasia8Max4, colorMap [3,1] = @fantasia8Min4 colorMap [4,0] = @fantasia8Max5, colorMap [4,1] = @fantasia8Min5 colorMap [5,0] = @fantasia8Max6, colorMap [5,1] = @fantasia8Min6 colorMap [6,0] = @fantasia8Max7, colorMap [6,1] = @fantasia8Min7 colorMap [7,0] = @fantasia8Max8, colorMap [7,1] = @fantasia8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Flowering Orchard 8") ; Created by Toby Marshall. colorMap [0,0] = @floweringOrchard8Max1, colorMap [0,1] = @floweringOrchard8Min1 colorMap [1,0] = @floweringOrchard8Max2, colorMap [1,1] = @floweringOrchard8Min2 colorMap [2,0] = @floweringOrchard8Max3, colorMap [2,1] = @floweringOrchard8Min3 colorMap [3,0] = @floweringOrchard8Max4, colorMap [3,1] = @floweringOrchard8Min4 colorMap [4,0] = @floweringOrchard8Max5, colorMap [4,1] = @floweringOrchard8Min5 colorMap [5,0] = @floweringOrchard8Max6, colorMap [5,1] = @floweringOrchard8Min6 colorMap [6,0] = @floweringOrchard8Max7, colorMap [6,1] = @floweringOrchard8Min7 colorMap [7,0] = @floweringOrchard8Max8, colorMap [7,1] = @floweringOrchard8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Morning Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @morningSky8Max1, colorMap [0,1] = @morningSky8Min1 colorMap [1,0] = @morningSky8Max2, colorMap [1,1] = @morningSky8Min2 colorMap [2,0] = @morningSky8Max3, colorMap [2,1] = @morningSky8Min3 colorMap [3,0] = @morningSky8Max4, colorMap [3,1] = @morningSky8Min4 colorMap [4,0] = @morningSky8Max5, colorMap [4,1] = @morningSky8Min5 colorMap [5,0] = @morningSky8Max6, colorMap [5,1] = @morningSky8Min6 colorMap [6,0] = @morningSky8Max7, colorMap [6,1] = @morningSky8Min7 colorMap [7,0] = @morningSky8Max8, colorMap [7,1] = @morningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel 8") ; colorMap [0,0] = @pastel8Max1, colorMap [0,1] = @pastel8Min1 colorMap [1,0] = @pastel8Max2, colorMap [1,1] = @pastel8Min2 colorMap [2,0] = @pastel8Max3, colorMap [2,1] = @pastel8Min3 colorMap [3,0] = @pastel8Max4, colorMap [3,1] = @pastel8Min4 colorMap [4,0] = @pastel8Max5, colorMap [4,1] = @pastel8Min5 colorMap [5,0] = @pastel8Max6, colorMap [5,1] = @pastel8Min6 colorMap [6,0] = @pastel8Max7, colorMap [6,1] = @pastel8Min7 colorMap [7,0] = @pastel8Max8, colorMap [7,1] = @pastel8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel Rainbow 8") ; Created by Angela Wilczynski. colorMap [0,0] = @pastelRainbow8Max1, colorMap [0,1] = @pastelRainbow8Min1 colorMap [1,0] = @pastelRainbow8Max2, colorMap [1,1] = @pastelRainbow8Min2 colorMap [2,0] = @pastelRainbow8Max3, colorMap [2,1] = @pastelRainbow8Min3 colorMap [3,0] = @pastelRainbow8Max4, colorMap [3,1] = @pastelRainbow8Min4 colorMap [4,0] = @pastelRainbow8Max5, colorMap [4,1] = @pastelRainbow8Min5 colorMap [5,0] = @pastelRainbow8Max6, colorMap [5,1] = @pastelRainbow8Min6 colorMap [6,0] = @pastelRainbow8Max7, colorMap [6,1] = @pastelRainbow8Min7 colorMap [7,0] = @pastelRainbow8Max8, colorMap [7,1] = @pastelRainbow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Showtime 8") ; Created by Toby Marshall. colorMap [0,0] = @showtime8Max1, colorMap [0,1] = @showtime8Min1 colorMap [1,0] = @showtime8Max2, colorMap [1,1] = @showtime8Min2 colorMap [2,0] = @showtime8Max3, colorMap [2,1] = @showtime8Min3 colorMap [3,0] = @showtime8Max4, colorMap [3,1] = @showtime8Min4 colorMap [4,0] = @showtime8Max5, colorMap [4,1] = @showtime8Min5 colorMap [5,0] = @showtime8Max6, colorMap [5,1] = @showtime8Min6 colorMap [6,0] = @showtime8Max7, colorMap [6,1] = @showtime8Min7 colorMap [7,0] = @showtime8Max8, colorMap [7,1] = @showtime8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Soleil 8") ; Created by Toby Marshall. colorMap [0,0] = @soleil8Max1, colorMap [0,1] = @soleil8Min1 colorMap [1,0] = @soleil8Max2, colorMap [1,1] = @soleil8Min2 colorMap [2,0] = @soleil8Max3, colorMap [2,1] = @soleil8Min3 colorMap [3,0] = @soleil8Max4, colorMap [3,1] = @soleil8Min4 colorMap [4,0] = @soleil8Max5, colorMap [4,1] = @soleil8Min5 colorMap [5,0] = @soleil8Max6, colorMap [5,1] = @soleil8Min6 colorMap [6,0] = @soleil8Max7, colorMap [6,1] = @soleil8Min7 colorMap [7,0] = @soleil8Max8, colorMap [7,1] = @soleil8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Chill 8") ; Created by Toby Marshall. colorMap [0,0] = @chillMax1, colorMap [0,1] = @chillMin1 colorMap [1,0] = @chillMax2, colorMap [1,1] = @chillMin2 colorMap [2,0] = @chillMax3, colorMap [2,1] = @chillMin3 colorMap [3,0] = @chillMax4, colorMap [3,1] = @chillMin4 colorMap [4,0] = @chillMax5, colorMap [4,1] = @chillMin5 colorMap [5,0] = @chillMax6, colorMap [5,1] = @chillMin6 colorMap [6,0] = @chillMax7, colorMap [6,1] = @chillMin7 colorMap [7,0] = @chillMax8, colorMap [7,1] = @chillMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Cloud Nine 8") ; Created by Toby Marshall. colorMap [0,0] = @cloudNineMax1, colorMap [0,1] = @cloudNineMin1 colorMap [1,0] = @cloudNineMax2, colorMap [1,1] = @cloudNineMin2 colorMap [2,0] = @cloudNineMax3, colorMap [2,1] = @cloudNineMin3 colorMap [3,0] = @cloudNineMax4, colorMap [3,1] = @cloudNineMin4 colorMap [4,0] = @cloudNineMax5, colorMap [4,1] = @cloudNineMin5 colorMap [5,0] = @cloudNineMax6, colorMap [5,1] = @cloudNineMin6 colorMap [6,0] = @cloudNineMax7, colorMap [6,1] = @cloudNineMin7 colorMap [7,0] = @cloudNineMax8, colorMap [7,1] = @cloudNineMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "La Terra 8") ; Created by Toby Marshall. colorMap [0,0] = @laTerraMax1, colorMap [0,1] = @laTerraMin1 colorMap [1,0] = @laTerraMax2, colorMap [1,1] = @laTerraMin2 colorMap [2,0] = @laTerraMax3, colorMap [2,1] = @laTerraMin3 colorMap [3,0] = @laTerraMax4, colorMap [3,1] = @laTerraMin4 colorMap [4,0] = @laTerraMax5, colorMap [4,1] = @laTerraMin5 colorMap [5,0] = @laTerraMax6, colorMap [5,1] = @laTerraMin6 colorMap [6,0] = @laTerraMax7, colorMap [6,1] = @laTerraMin7 colorMap [7,0] = @laTerraMax8, colorMap [7,1] = @laTerraMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Santa Fe 8") ; Created by Toby Marshall. colorMap [0,0] = @santaFe8Max1, colorMap [0,1] = @santaFe8Min1 colorMap [1,0] = @santaFe8Max2, colorMap [1,1] = @santaFe8Min2 colorMap [2,0] = @santaFe8Max3, colorMap [2,1] = @santaFe8Min3 colorMap [3,0] = @santaFe8Max4, colorMap [3,1] = @santaFe8Min4 colorMap [4,0] = @santaFe8Max5, colorMap [4,1] = @santaFe8Min5 colorMap [5,0] = @santaFe8Max6, colorMap [5,1] = @santaFe8Min6 colorMap [6,0] = @santaFe8Max7, colorMap [6,1] = @santaFe8Min7 colorMap [7,0] = @santaFe8Max8, colorMap [7,1] = @santaFe8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Spring 8") ; Created by Toby Marshall. colorMap [0,0] = @spring8Max1, colorMap [0,1] = @spring8Min1 colorMap [1,0] = @spring8Max2, colorMap [1,1] = @spring8Min2 colorMap [2,0] = @spring8Max3, colorMap [2,1] = @spring8Min3 colorMap [3,0] = @spring8Max4, colorMap [3,1] = @spring8Min4 colorMap [4,0] = @spring8Max5, colorMap [4,1] = @spring8Min5 colorMap [5,0] = @spring8Max6, colorMap [5,1] = @spring8Min6 colorMap [6,0] = @spring8Max7, colorMap [6,1] = @spring8Min7 colorMap [7,0] = @spring8Max8, colorMap [7,1] = @spring8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Summer 8") ; Created by Toby Marshall. colorMap [0,0] = @summer8Max1, colorMap [0,1] = @summer8Min1 colorMap [1,0] = @summer8Max2, colorMap [1,1] = @summer8Min2 colorMap [2,0] = @summer8Max3, colorMap [2,1] = @summer8Min3 colorMap [3,0] = @summer8Max4, colorMap [3,1] = @summer8Min4 colorMap [4,0] = @summer8Max5, colorMap [4,1] = @summer8Min5 colorMap [5,0] = @summer8Max6, colorMap [5,1] = @summer8Min6 colorMap [6,0] = @summer8Max7, colorMap [6,1] = @summer8Min7 colorMap [7,0] = @summer8Max8, colorMap [7,1] = @summer8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fall 8") ; Created by Toby Marshall. colorMap [0,0] = @fall8Max1, colorMap [0,1] = @fall8Min1 colorMap [1,0] = @fall8Max2, colorMap [1,1] = @fall8Min2 colorMap [2,0] = @fall8Max3, colorMap [2,1] = @fall8Min3 colorMap [3,0] = @fall8Max4, colorMap [3,1] = @fall8Min4 colorMap [4,0] = @fall8Max5, colorMap [4,1] = @fall8Min5 colorMap [5,0] = @fall8Max6, colorMap [5,1] = @fall8Min6 colorMap [6,0] = @fall8Max7, colorMap [6,1] = @fall8Min7 colorMap [7,0] = @fall8Max8, colorMap [7,1] = @fall8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Winter 8") ; Created by Toby Marshall. colorMap [0,0] = @winter8Max1, colorMap [0,1] = @winter8Min1 colorMap [1,0] = @winter8Max2, colorMap [1,1] = @winter8Min2 colorMap [2,0] = @winter8Max3, colorMap [2,1] = @winter8Min3 colorMap [3,0] = @winter8Max4, colorMap [3,1] = @winter8Min4 colorMap [4,0] = @winter8Max5, colorMap [4,1] = @winter8Min5 colorMap [5,0] = @winter8Max6, colorMap [5,1] = @winter8Min6 colorMap [6,0] = @winter8Max7, colorMap [6,1] = @winter8Min7 colorMap [7,0] = @winter8Max8, colorMap [7,1] = @winter8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Mojave 8") ; Created by Toby Marshall. colorMap [0,0] = @mojave8Max1, colorMap [0,1] = @mojave8Min1 colorMap [1,0] = @mojave8Max2, colorMap [1,1] = @mojave8Min2 colorMap [2,0] = @mojave8Max3, colorMap [2,1] = @mojave8Min3 colorMap [3,0] = @mojave8Max4, colorMap [3,1] = @mojave8Min4 colorMap [4,0] = @mojave8Max5, colorMap [4,1] = @mojave8Min5 colorMap [5,0] = @mojave8Max6, colorMap [5,1] = @mojave8Min6 colorMap [6,0] = @mojave8Max7, colorMap [6,1] = @mojave8Min7 colorMap [7,0] = @mojave8Max8, colorMap [7,1] = @mojave8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green 8") ; colorMap [0,0] = @goldGreen8Max1, colorMap [0,1] = @goldGreen8Min1 colorMap [1,0] = @goldGreen8Max2, colorMap [1,1] = @goldGreen8Min2 colorMap [2,0] = @goldGreen8Max3, colorMap [2,1] = @goldGreen8Min3 colorMap [3,0] = @goldGreen8Max4, colorMap [3,1] = @goldGreen8Min4 colorMap [4,0] = @goldGreen8Max5, colorMap [4,1] = @goldGreen8Min5 colorMap [5,0] = @goldGreen8Max6, colorMap [5,1] = @goldGreen8Min6 colorMap [6,0] = @goldGreen8Max7, colorMap [6,1] = @goldGreen8Min7 colorMap [7,0] = @goldGreen8Max8, colorMap [7,1] = @goldGreen8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green Alt 8") ; colorMap [0,0] = @goldGreenAlt8Max1, colorMap [0,1] = @goldGreenAlt8Min1 colorMap [1,0] = @goldGreenAlt8Max2, colorMap [1,1] = @goldGreenAlt8Min2 colorMap [2,0] = @goldGreenAlt8Max3, colorMap [2,1] = @goldGreenAlt8Min3 colorMap [3,0] = @goldGreenAlt8Max4, colorMap [3,1] = @goldGreenAlt8Min4 colorMap [4,0] = @goldGreenAlt8Max5, colorMap [4,1] = @goldGreenAlt8Min5 colorMap [5,0] = @goldGreenAlt8Max6, colorMap [5,1] = @goldGreenAlt8Min6 colorMap [6,0] = @goldGreenAlt8Max7, colorMap [6,1] = @goldGreenAlt8Min7 colorMap [7,0] = @goldGreenAlt8Max8, colorMap [7,1] = @goldGreenAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver 8") ; colorMap [0,0] = @goldSilver8Max1, colorMap [0,1] = @goldSilver8Min1 colorMap [1,0] = @goldSilver8Max2, colorMap [1,1] = @goldSilver8Min2 colorMap [2,0] = @goldSilver8Max3, colorMap [2,1] = @goldSilver8Min3 colorMap [3,0] = @goldSilver8Max4, colorMap [3,1] = @goldSilver8Min4 colorMap [4,0] = @goldSilver8Max5, colorMap [4,1] = @goldSilver8Min5 colorMap [5,0] = @goldSilver8Max6, colorMap [5,1] = @goldSilver8Min6 colorMap [6,0] = @goldSilver8Max7, colorMap [6,1] = @goldSilver8Min7 colorMap [7,0] = @goldSilver8Max8, colorMap [7,1] = @goldSilver8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue 8") ; colorMap [0,0] = @silverBlue8Max1, colorMap [0,1] = @silverBlue8Min1 colorMap [1,0] = @silverBlue8Max2, colorMap [1,1] = @silverBlue8Min2 colorMap [2,0] = @silverBlue8Max3, colorMap [2,1] = @silverBlue8Min3 colorMap [3,0] = @silverBlue8Max4, colorMap [3,1] = @silverBlue8Min4 colorMap [4,0] = @silverBlue8Max5, colorMap [4,1] = @silverBlue8Min5 colorMap [5,0] = @silverBlue8Max6, colorMap [5,1] = @silverBlue8Min6 colorMap [6,0] = @silverBlue8Max7, colorMap [6,1] = @silverBlue8Min7 colorMap [7,0] = @silverBlue8Max8, colorMap [7,1] = @silverBlue8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue Alt 8") ; colorMap [0,0] = @silverBlueAlt8Max1, colorMap [0,1] = @silverBlueAlt8Min1 colorMap [1,0] = @silverBlueAlt8Max2, colorMap [1,1] = @silverBlueAlt8Min2 colorMap [2,0] = @silverBlueAlt8Max3, colorMap [2,1] = @silverBlueAlt8Min3 colorMap [3,0] = @silverBlueAlt8Max4, colorMap [3,1] = @silverBlueAlt8Min4 colorMap [4,0] = @silverBlueAlt8Max5, colorMap [4,1] = @silverBlueAlt8Min5 colorMap [5,0] = @silverBlueAlt8Max6, colorMap [5,1] = @silverBlueAlt8Min6 colorMap [6,0] = @silverBlueAlt8Max7, colorMap [6,1] = @silverBlueAlt8Min7 colorMap [7,0] = @silverBlueAlt8Max8, colorMap [7,1] = @silverBlueAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver Alt 8") ; colorMap [0,0] = @goldSilverAlt8Max1, colorMap [0,1] = @goldSilverAlt8Min1 colorMap [1,0] = @goldSilverAlt8Max2, colorMap [1,1] = @goldSilverAlt8Min2 colorMap [2,0] = @goldSilverAlt8Max3, colorMap [2,1] = @goldSilverAlt8Min3 colorMap [3,0] = @goldSilverAlt8Max4, colorMap [3,1] = @goldSilverAlt8Min4 colorMap [4,0] = @goldSilverAlt8Max5, colorMap [4,1] = @goldSilverAlt8Min5 colorMap [5,0] = @goldSilverAlt8Max6, colorMap [5,1] = @goldSilverAlt8Min6 colorMap [6,0] = @goldSilverAlt8Max7, colorMap [6,1] = @goldSilverAlt8Min7 colorMap [7,0] = @goldSilverAlt8Max8, colorMap [7,1] = @goldSilverAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 8") ; colorMap [0,0] = @purpleYellow8Max1, colorMap [0,1] = @purpleYellow8Min1 colorMap [1,0] = @purpleYellow8Max2, colorMap [1,1] = @purpleYellow8Min2 colorMap [2,0] = @purpleYellow8Max3, colorMap [2,1] = @purpleYellow8Min3 colorMap [3,0] = @purpleYellow8Max4, colorMap [3,1] = @purpleYellow8Min4 colorMap [4,0] = @purpleYellow8Max5, colorMap [4,1] = @purpleYellow8Min5 colorMap [5,0] = @purpleYellow8Max6, colorMap [5,1] = @purpleYellow8Min6 colorMap [6,0] = @purpleYellow8Max7, colorMap [6,1] = @purpleYellow8Min7 colorMap [7,0] = @purpleYellow8Max8, colorMap [7,1] = @purpleYellow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow Alt 8") ; colorMap [0,0] = @purpleYellowAlt8Max1, colorMap [0,1] = @purpleYellowAlt8Min1 colorMap [1,0] = @purpleYellowAlt8Max2, colorMap [1,1] = @purpleYellowAlt8Min2 colorMap [2,0] = @purpleYellowAlt8Max3, colorMap [2,1] = @purpleYellowAlt8Min3 colorMap [3,0] = @purpleYellowAlt8Max4, colorMap [3,1] = @purpleYellowAlt8Min4 colorMap [4,0] = @purpleYellowAlt8Max5, colorMap [4,1] = @purpleYellowAlt8Min5 colorMap [5,0] = @purpleYellowAlt8Max6, colorMap [5,1] = @purpleYellowAlt8Min6 colorMap [6,0] = @purpleYellowAlt8Max7, colorMap [6,1] = @purpleYellowAlt8Min7 colorMap [7,0] = @purpleYellowAlt8Max8, colorMap [7,1] = @purpleYellowAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fourth of July 3") ; colorMap [0,0] = @fourthOfJuly3Max1, colorMap [0,1] = @fourthOfJuly3Min1 colorMap [1,0] = @fourthOfJuly3Max2, colorMap [1,1] = @fourthOfJuly3Min2 colorMap [2,0] = @fourthOfJuly3Max3, colorMap [2,1] = @fourthOfJuly3Min3 ranges = 3 offset = @colorOffset elseif (@colorPreset == "Blue/Silver 2") ; colorMap [0,0] = @blueSilver2Max1, colorMap [0,1] = @blueSilver2Min1 colorMap [1,0] = @blueSilver2Max2, colorMap [1,1] = @blueSilver2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Blue/White 2") ; colorMap [0,0] = @blueWhite2Max1, colorMap [0,1] = @blueWhite2Min1 colorMap [1,0] = @blueWhite2Max2, colorMap [1,1] = @blueWhite2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Magenta 2") ; colorMap [0,0] = @cyanMagenta2Max1, colorMap [0,1] = @cyanMagenta2Min1 colorMap [1,0] = @cyanMagenta2Max2, colorMap [1,1] = @cyanMagenta2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Yellow 2") ; colorMap [0,0] = @cyanYellow2Max1, colorMap [0,1] = @cyanYellow2Min1 colorMap [1,0] = @cyanYellow2Max2, colorMap [1,1] = @cyanYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Gold/Green 2") ; colorMap [0,0] = @goldGreen2Max1, colorMap [0,1] = @goldGreen2Min1 colorMap [1,0] = @goldGreen2Max2, colorMap [1,1] = @goldGreen2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 2") ; colorMap [0,0] = @purpleYellow2Max1, colorMap [0,1] = @purpleYellow2Min1 colorMap [1,0] = @purpleYellow2Max2, colorMap [1,1] = @purpleYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Red/Tan 2") ; colorMap [0,0] = @redTan2Max1, colorMap [0,1] = @redTan2Min1 colorMap [1,0] = @redTan2Max2, colorMap [1,1] = @redTan2Min2 ranges = 2 offset = @colorOffset endif if (@perturbRanges == "8 Range Custom" && ranges == 8) ; If we are using 8 ranges, then take into account ; the rangeOrdering parameter. int range[8] ; Convert range ordering from 12345678 to .12345678 float ordering = @rangeOrder / 100000000 ; Convert .12345678 to 1.2345678 ordering = ordering * 10 ; Get the first digit int range[0] = trunc (ordering) ; Subract the first digit, i.e. 1.2345678 becomes .2345678 ordering = ordering - range[0] ; Get the second digit ordering = ordering * 10 int range[1] = trunc (ordering) ordering = ordering - range[1] ; Get the third digit ordering = ordering * 10 int range[2] = trunc (ordering) ordering = ordering - range[2] ; Get the fourth digit ordering = ordering * 10 int range[3] = trunc (ordering) ordering = ordering - range[3] ; Get the fifth digit ordering = ordering * 10 int range[4] = trunc (ordering) ordering = ordering - range[4] ; Get the sixth digit ordering = ordering * 10 int range[5] = trunc (ordering) ordering = ordering - range[5] ; Get the seventh digit ordering = ordering * 10 int range[6] = trunc (ordering) ordering = ordering - range[6] ; Get the eighth digit ordering = ordering * 10 int range[7] = round (ordering) ordering = ordering - range[7] ; Save the original order of the maps. color tempMap[8,2] tempMap[0,0] = colorMap[0,0], tempMap[0,1] = colorMap[0,1] tempMap[1,0] = colorMap[1,0], tempMap[1,1] = colorMap[1,1] tempMap[2,0] = colorMap[2,0], tempMap[2,1] = colorMap[2,1] tempMap[3,0] = colorMap[3,0], tempMap[3,1] = colorMap[3,1] tempMap[4,0] = colorMap[4,0], tempMap[4,1] = colorMap[4,1] tempMap[5,0] = colorMap[5,0], tempMap[5,1] = colorMap[5,1] tempMap[6,0] = colorMap[6,0], tempMap[6,1] = colorMap[6,1] tempMap[7,0] = colorMap[7,0], tempMap[7,1] = colorMap[7,1] ; Reorder the maps according to the rangeOrder parameter. colorMap[0,0] = tempMap[range[0]-1,0], colorMap[0,1] = tempMap[range[0]-1,1] colorMap[1,0] = tempMap[range[1]-1,0], colorMap[1,1] = tempMap[range[1]-1,1] colorMap[2,0] = tempMap[range[2]-1,0], colorMap[2,1] = tempMap[range[2]-1,1] colorMap[3,0] = tempMap[range[3]-1,0], colorMap[3,1] = tempMap[range[3]-1,1] colorMap[4,0] = tempMap[range[4]-1,0], colorMap[4,1] = tempMap[range[4]-1,1] colorMap[5,0] = tempMap[range[5]-1,0], colorMap[5,1] = tempMap[range[5]-1,1] colorMap[6,0] = tempMap[range[6]-1,0], colorMap[6,1] = tempMap[range[6]-1,1] colorMap[7,0] = tempMap[range[7]-1,0], colorMap[7,1] = tempMap[range[7]-1,1] endif ; initial circle cs[0] = (0,0) rad[0] = 1 csf[0] = (0,0) radf[0] = 1 ; the following are matrix representations of Mobius tranforms ; matrix one gens[0,0] = (1.0,1.0) gens[0,1] = (0,1) gens[0,2] = (0,-1) gens[0,3] = (1.0,-1.0) ; matrix two gens[1,0] = (1,-1) gens[1,1] = (0,-1) gens[1,2] = (0,1) gens[1,3] = (1,1) if @cusptype == "Nearby group" if @showcusp == "Both" cs[0] = (0,0.703) rad[0] = 0.297 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.703) rad[1] = 0.297 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.703) rad[0] = 0.297 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.703) rad[1] = 0.297 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.955,-0.025) gens[2,1] = (0.045,0.025) gens[2,2] = (-1.955,0.025) gens[2,3] = (0.955,-0.025) ; matrix four gens[3,0] = (0.955,-0.025) gens[3,1] = (-0.045,-0.025) gens[3,2] = (1.955,-0.025) gens[3,3] = (0.955,-0.025) elseif @cusptype == "Double Cusp" if @cusp == "0/1" if @showcusp == "Both" cs[0] = (0,0.5) rad[0] = 0.5 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.5) rad[1] = 0.5 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.5) rad[0] = 0.5 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.5) rad[1] = 0.5 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (1,0) gens[2,1] = (0,0) gens[2,2] = (-2,0) gens[2,3] = (1,0) ; matrix four gens[3,0] = (1,0) gens[3,1] = (0,0) gens[3,2] = (2,0) gens[3,3] = (1,0) elseif @cusp == "1/15" if @showcusp == "Both" cs[0] = (0,0.67129232) rad[0] = 0.32870768 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.67129232) rad[1] = 0.32870768 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.67129232) rad[0] = 0.32870768 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.67129232) rad[1] = 0.32870768 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.979295515055895, -0.0056392803058829) gens[2,1] = (0.020704484944105, 0.0056392803058829 ) gens[2,2] = (-1.9792955150559, 0.0056392803058829) gens[2,3] = (0.979295515055895, -0.0056392803058829) ; matrix four gens[3,0] = (0.979295515055895, -0.0056392803058829) gens[3,1] = (-0.020704484944105, -0.0056392803058829) gens[3,2] = (1.9792955150559, -0.0056392803058829) gens[3,3] = (0.979295515055895, -0.0056392803058829) elseif @cusp == "1/10" if @showcusp == "Both" cs[0] = (0,0.67634831) rad[0] = 0.32365169 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.67634831) rad[1] = 0.32365169 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.67634831) rad[0] = 0.32365169 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.67634831) rad[1] = 0.32365169 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.95671164793341,-0.0181440387612714) gens[2,1] = (0.04328835206659, 0.0181440387612714) gens[2,2] = (-1.95671164793341, 0.0181440387612714) gens[2,3] = (0.95671164793341,-0.0181440387612714) ; matrix four gens[3,0] = (0.95671164793341,-0.0181440387612714) gens[3,1] = (-0.04328835206659, -0.0181440387612714) gens[3,2] = (1.95671164793341, -0.0181440387612714) gens[3,3] = (0.95671164793341,-0.0181440387612714) elseif @cusp == "2/19" if @showcusp == "Both" cs[0] = (0,0.7395679) rad[0] = 0.2604321 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.7395679) rad[1] = 0.2604321 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.7395679) rad[0] = 0.2604321 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.7395679) rad[1] = 0.2604321 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.95188999889859,-0.0197899756344403) gens[2,1] = (0.04811000110141,0.0197899756344403) gens[2,2] = (-1.95188999889859,0.0197899756344403) gens[2,3] = (0.95188999889859,-0.0197899756344403) ; matrix four gens[3,0] = (0.95188999889859,-0.0197899756344403) gens[3,1] = (-0.04811000110141,-0.0197899756344403) gens[3,2] = (1.95188999889859,-0.0197899756344403) gens[3,3] = (0.95188999889859,-0.0197899756344403) elseif @cusp == "1/9" if @showcusp == "Both" cs[0] = (0,0.678234935) rad[0] = 0.32176507 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.678234935) rad[1] = 0.32176507 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.678234935) rad[0] = 0.32176507 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.678234935) rad[1] = 0.32176507 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.948203625474605,-0.0243765064493254) gens[2,1] = (0.051796374525395,0.0243765064493254) gens[2,2] = (-1.94820362547461, 0.0243765064493254) gens[2,3] = (0.948203625474605,-0.0243765064493254) ; matrix four gens[3,0] = (0.948203625474605,-0.0243765064493254) gens[3,1] = (-0.051796374525395,-0.0243765064493254) gens[3,2] = (1.94820362547461, -0.0243765064493254) gens[3,3] = (0.948203625474605,-0.0243765064493254) elseif @cusp == "7/43" if @showcusp == "Both" cs[0] = (0,0.770204) rad[0] = 0.229796 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.770204) rad[1] = 0.229796 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.770204) rad[0] = 0.229796 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.770204) rad[1] = 0.229796 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.903927619995215,-0.0684993439535685) gens[2,1] = (0.096072380004785, 0.0684993439535685) gens[2,2] = (-1.90392761999521, 0.0684993439535685) gens[2,3] = (0.903927619995215,-0.0684993439535685) ; matrix four gens[3,0] = (0.903927619995215,-0.0684993439535685) gens[3,1] = (-0.096072380004785, -0.0684993439535685) gens[3,2] = (1.90392761999521, -0.0684993439535685) gens[3,3] = (0.903927619995215,-0.0684993439535685) elseif @cusp == "3/10" if @showcusp == "Both" cs[0] = (0,0.7683375) rad[0] = 0.2316625 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.7683375) rad[1] = 0.2316625 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.7683375) rad[0] = 0.2316625 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.7683375) rad[1] = 0.2316625 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.829156197588855,-0.25) gens[2,1] = (0.17084380241115, 0.25) gens[2,2] = (-1.82915619758885, 0.25) gens[2,3] = (0.829156197588855,-0.25) ; matrix four gens[3,0] = (0.829156197588855,-0.25) gens[3,1] = (-0.17084380241115, -0.25) gens[3,2] = (1.82915619758885, -0.25) gens[3,3] = (0.829156197588855,-0.25) elseif @cusp == "2/5" if @showcusp == "Both" cs[0] = (0,0.7334116) rad[0] = 0.2665884 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.7334116) rad[1] = 0.2665884 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.7334116) rad[0] = 0.2665884 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.7334116) rad[1] = 0.2665884 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.821069384326745,-0.38329420873273) gens[2,1] = (0.17893061567326, 0.38329420873273) gens[2,2] = (-1.82106938432674, 0.38329420873273) gens[2,3] = (0.821069384326745,-0.38329420873273) ; matrix four gens[3,0] = (0.821069384326745,-0.38329420873273) gens[3,1] = (-0.17893061567326, -0.38329420873273) gens[3,2] = (1.82106938432674, -0.38329420873273) gens[3,3] = (0.821069384326745,-0.38329420873273) elseif @cusp == "1/2" if @showcusp == "Both" cs[0] = (0,0.63397461) rad[0] = 0.36602539 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.63397461) rad[1] = 0.36602539 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.63397461) rad[0] = 0.36602539 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.63397461) rad[1] = 0.36602539 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.86602540378444,-0.5) gens[2,1] = (0.1339745921556,0.5) gens[2,2] = (-1.86602540378444,0.5) gens[2,3] = (0.86602540378444,-0.5) ; matrix four gens[3,0] = (0.86602540378444,-0.5) gens[3,1] = (-0.1339745921556,-0.5) gens[3,2] = (1.86602540378444,-0.5) gens[3,3] = (0.86602540378444,-0.5) elseif @cusp == "21/34" if @showcusp == "Both" cs[0] = (0,0.833539) rad[0] = 0.166461 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.833539) rad[1] = 0.166461 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.833539) rad[0] = 0.166461 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.833539) rad[1] = 0.166461 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (0.80899539837605,-0.64585014332109) gens[2,1] = (0.19100460162395,0.64585014332109) gens[2,2] = (-1.80899539837605,0.64585014332109) gens[2,3] = (0.80899539837605,-0.64585014332109) ; matrix four gens[3,0] = (0.80899539837605,-0.64585014332109) gens[3,1] = (-0.19100460162395,-0.64585014332109) gens[3,2] = (1.80899539837605,-0.64585014332109) gens[3,3] = (0.80899539837605,-0.64585014332109) elseif @cusp == "1/1" if @showcusp == "Both" cs[0] = (0,0.5) rad[0] = 0.5 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.5) rad[1] = 0.5 csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 both[0] = 0 both[1] = 0 both[2] = 1 elseif @showcusp == "Alternate" cs[0] = (0,0.5) rad[0] = 0.5 csf[0] = cs[0] radf[0] = rad[0] cs[1] = (0,-0.5) rad[1] = 0.5 csf[1] = cs[1] radf[1] = rad[1] endif ; matrix three gens[2,0] = (1,-1) gens[2,1] = (0,1) gens[2,2] = (-2,1) gens[2,3] = (1,-1) ; matrix four gens[3,0] = (1,-1) gens[3,1] = (0,-1) gens[3,2] = (2,-1) gens[3,3] = (1,-1) endif elseif @cusptype == "Slice" if @scusp == "Nearby group" ; matrix three gens[2,0] = (0.955,-0.025) gens[2,2] = (0.045,0.025) gens[2,1] = (-1.955,0.025) gens[2,3] = (0.955,-0.025) ; matrix four gens[3,0] = (0.955,-0.025) gens[3,2] = (-0.045,-0.025) gens[3,1] = (1.955,-0.025) gens[3,3] = (0.955,-0.025) elseif @scusp == "0/1" ; matrix one gens[0,0] = (1,-1) gens[0,1] = (1,0) gens[0,2] = (1,0) gens[0,3] = (1,1) ; matrix two gens[1,0] = (1,1) gens[1,1] = (-1,0) gens[1,2] = (-1,0) gens[1,3] = (1,-1) ; matrix three gens[2,0] = (-0.5,0.5) gens[2,1] = (0.5,1.5) gens[2,2] = (-0.5,0.5) gens[2,3] = (-0.5,0.5) ; matrix four gens[3,0] = (-0.5,0.5) gens[3,1] = (-0.5,-1.5) gens[3,2] = (0.5,-0.5) gens[3,3] = (-0.5,0.5) elseif @scusp == "1/15" ; matrix three gens[2,0] = (0.979295515055895, -0.0056392803058829) gens[2,2] = (0.020704484944105, 0.0056392803058829 ) gens[2,1] = (-1.9792955150559, 0.0056392803058829) gens[2,3] = (0.979295515055895, -0.0056392803058829) ; matrix four gens[3,0] = (0.979295515055895, -0.0056392803058829) gens[3,2] = (-0.020704484944105, -0.0056392803058829) gens[3,1] = (1.9792955150559, -0.0056392803058829) gens[3,3] = (0.979295515055895, -0.0056392803058829) elseif @scusp == "2/19" ; matrix three gens[2,0] = (0.95188999889859,-0.0197899756344403) gens[2,2] = (0.04811000110141,0.0197899756344403) gens[2,1] = (-1.95188999889859,0.0197899756344403) gens[2,3] = (0.95188999889859,-0.0197899756344403) ; matrix four gens[3,0] = (0.95188999889859,-0.0197899756344403) gens[3,2] = (-0.04811000110141,-0.0197899756344403) gens[3,1] = (1.95188999889859,-0.0197899756344403) gens[3,3] = (0.95188999889859,-0.0197899756344403) elseif @scusp == "1/9" ; matrix three gens[2,0] = (0.948203625474605,-0.0243765064493254) gens[2,2] = (0.051796374525395,0.0243765064493254) gens[2,1] = (-1.94820362547461, 0.0243765064493254) gens[2,3] = (0.948203625474605,-0.0243765064493254) ; matrix four gens[3,0] = (0.948203625474605,-0.0243765064493254) gens[3,2] = (-0.051796374525395,-0.0243765064493254) gens[3,1] = (1.94820362547461, -0.0243765064493254) gens[3,3] = (0.948203625474605,-0.0243765064493254) elseif @scusp == "7/43" ; matrix three gens[2,0] = (0.903927619995215,-0.0684993439535685) gens[2,2] = (0.096072380004785, 0.0684993439535685) gens[2,1] = (-1.90392761999521, 0.0684993439535685) gens[2,3] = (0.903927619995215,-0.0684993439535685) ; matrix four gens[3,0] = (0.903927619995215,-0.0684993439535685) gens[3,2] = (-0.096072380004785, -0.0684993439535685) gens[3,1] = (1.90392761999521, -0.0684993439535685) gens[3,3] = (0.903927619995215,-0.0684993439535685) elseif @scusp == "2/5" ; matrix three gens[2,0] = (0.821069384326745,-0.38329420873273) gens[2,2] = (0.17893061567326, 0.38329420873273) gens[2,1] = (-1.82106938432674, 0.38329420873273) gens[2,3] = (0.821069384326745,-0.38329420873273) ; matrix four gens[3,0] = (0.821069384326745,-0.38329420873273) gens[3,2] = (-0.17893061567326, -0.38329420873273) gens[3,1] = (1.82106938432674, -0.38329420873273) gens[3,3] = (0.821069384326745,-0.38329420873273) endif elseif @cusptype == "Grandma's Special" if @showcusp == "Both" cs[0] = 1-@cir rad[0] = @cir csf[0] = cs[0] radf[0] = rad[0] cs[1] = -(1-@cir) rad[1] = @cir csf[1] = cs[1] radf[1] = rad[1] cs[2] = (0,0) rad[2] = 1 csf[2] = (0,0) radf[2] = 1 clr[0] = 0 clr[1] = 0 clr[2] = 0 elseif @showcusp == "Alternate" cs[0] = (1-@cir) rad[0] = @cir csf[0] = cs[0] radf[0] = rad[0] cs[1] = -(1-@cir) rad[1] = @cir csf[1] = cs[1] radf[1] = rad[1] clr[0] = 0 clr[1] = 0 endif complex tab = (@ta*@tb+sqrt(@ta*@ta*@tb*@tb-4*(@ta*@ta+@tb*@tb)))/2 complex gz0 = (tab-2)*@tb/(@tb*tab-2*@ta+2*(0,1)*tab) gens[0,0] = (@tb-(0,2))/2 gens[0,1] = @tb/2 gens[0,2] = @tb/2 gens[0,3] = conj(gens[0,0]) gens[1,0] = gens[0,3] gens[1,1] = -gens[0,1] gens[1,2] = -gens[0,2] gens[1,3] = gens[0,0] gens[2,0] = @ta/2 gens[2,2] = (@ta*tab-2*@tb+(0,4))/((2*tab+4)*gz0) gens[2,1] = (@ta*tab-2*@tb-(0,4))*gz0/(2*tab-4) gens[2,3] = @ta/2 if @trans temp1 = gens[2,1] gens[2,1] = gens[2,2] gens[2,2] = temp1 endif gens[3,0] = gens[2,3] gens[3,1] = -gens[2,1] gens[3,2] = -gens[2,2] gens[3,3] = gens[2,0] endif if @cusptype != "Slice" if @showcusp == "Both" if @bmethoda == 0 clr[0] = 1 clr[1] = 1 clrf[0] = 1 clrf[1] = 1 elseif @bmethoda == 1 clr[0] = 1/abs(rad[0])^@adja+0.01 clr[1] = 1/abs(rad[1])^@adja+0.01 clrf[0] = 1/abs(rad[0])^@adja+0.01 clrf[1] = 1/abs(rad[1])^@adja+0.01 elseif @bmethoda == 2 clr[0] = 0.01 clr[1] = 1.01 clrf[0] = 0.01 clrf[1] = 1.01 elseif @bmethoda == 3 clr[0] = cabs((cs[0]*2)^@adja)+0.01 clr[1] = cabs((cs[1]*2)^@adja)+0.01 clrf[0] = cabs((cs[0]*2)^@adja)+0.01 clrf[1] = cabs((cs[1]*2)^@adja)+0.01 elseif @bmethoda == 4 if abs(rad[0]) < @rthresh clr[0] = 2 clrf[0] = 2 else clr[0] = 1 clrf[0] = 1 endif if abs(rad[1]) < @rthresh clr[1] = 2 clrf[1] = 2 else clr[1] = 1 clrf[1] = 1 endif endif elseif @showcusp == "Alternate" if @method == 0 clr[0] = 1 clr[1] = 1 clrf[0] = 1 clrf[1] = 1 elseif @method == 1 clr[0] = 1/abs(rad[0])^@adj+0.01 clr[1] = 1/abs(rad[1])^@adj+0.01 clrf[0] = 1/abs(rad[0])^@adj+0.01 clrf[1] = 1/abs(rad[1])^@adj+0.01 elseif @method == 2 clr[0] = 0.01 clr[1] = 1.01 clrf[0] = 0.01 clrf[1] = 1.01 elseif @method == 3 clr[0] = cabs((cs[0]*2)^@adj)+0.01 clr[1] = cabs((cs[1]*2)^@adj)+0.01 clrf[0] = cabs((cs[0]*2)^@adj)+0.01 clrf[1] = cabs((cs[1]*2)^@adj)+0.01 elseif @method == 4 if abs(rad[0]) < @rthresh clr[0] = 2 clrf[0] = 2 else clr[0] = 1 clrf[0] = 1 endif if abs(rad[1]) < @rthresh clr[1] = 2 clrf[1] = 2 else clr[1] = 1 clrf[1] = 1 endif endif endif endif ; normalize the matrices i = 0 while i < 4 det = gens[i,0]*gens[i,3]-gens[i,1]*gens[i,2] det = 1/sqrt(det) gens[i,0] = gens[i,0]*det gens[i,1] = gens[i,1]*det gens[i,2] = gens[i,2]*det gens[i,3] = gens[i,3]*det i = i + 1 endwhile ; inverse gens matrices i = 0 while i < 4 det = gens[i,0]*gens[i,3]-gens[i,1]*gens[i,2] gens[i+4,0] = gens[i,3] gens[i+4,1] = -gens[i,1] gens[i+4,2] = -gens[i,2] gens[i+4,3] = gens[i,0] if real(det) <= 0 gens[i+4,0] = -conj(gens[i+4,0]) gens[i+4,1] = -conj(gens[i+4,1]) gens[i+4,2] = -conj(gens[i+4,2]) gens[i+4,3] = -conj(gens[i+4,3]) endif i = i + 1 endwhile if @cusptype != "Slice" if @showcusp == "Both" j = 3 iii = 2 elseif @showcusp == "Standard" j = 1 iii = 0 else j = 2 iii = 1 endif else j = 1 iii = 0 endif lev = 1 while lev <= level && j < 4999998 i = 0 while i < 4 && j < 4999998 k = 0 while k <= iii && j < 4999998 if rad[k] <= 0 ; matrix of line unit = cos(-#pi*rad[k]) + flip(sin(-#pi*rad[k])) gens[8,0] = im*unit gens[8,1] = im*(conj(unit)*cs[k]-unit*conj(cs[k])) gens[8,2] = 0 gens[8,3] = im*conj(unit) else ; matrix of circle gens[8,0] = cs[k]/rad[k] gens[8,1] = rad[k]-|cs[k]|/rad[k] gens[8,2] = 1/rad[k] gens[8,3] = -conj(cs[k])/rad[k] endif ; product of circle matrix and gens inverse det = gens[8,0]*gens[8,3]-gens[8,1]*gens[8,2] temp1 = gens[8,0] temp2 = gens[8,1] temp3 = gens[8,2] temp4 = gens[8,3] if real(det) < 0 gens[8,0] = temp1*conj(gens[i+4,0])+temp2*conj(gens[i+4,2]) gens[8,1] = temp1*conj(gens[i+4,1])+temp2*conj(gens[i+4,3]) gens[8,2] = temp3*conj(gens[i+4,0])+temp4*conj(gens[i+4,2]) gens[8,3] = temp3*conj(gens[i+4,1])+temp4*conj(gens[i+4,3]) else gens[8,0] = temp1*gens[i+4,0]+temp2*gens[i+4,2] gens[8,1] = temp1*gens[i+4,1]+temp2*gens[i+4,3] gens[8,2] = temp3*gens[i+4,0]+temp4*gens[i+4,2] gens[8,3] = temp3*gens[i+4,1]+temp4*gens[i+4,3] endif ; previous product and product with gens det = gens[i,0]*gens[i,3]-gens[i,1]*gens[i,2] temp1 = gens[8,0] temp2 = gens[8,1] temp3 = gens[8,2] temp4 = gens[8,3] if real(det) < 0 gens[8,0] = gens[i,0]*conj(temp1)+gens[i,1]*conj(temp3) gens[8,1] = gens[i,0]*conj(temp2)+gens[i,1]*conj(temp4) gens[8,2] = gens[i,2]*conj(temp1)+gens[i,3]*conj(temp3) gens[8,3] = gens[i,2]*conj(temp2)+gens[i,3]*conj(temp4) else gens[8,0] = gens[i,0]*temp1+gens[i,1]*temp3 gens[8,1] = gens[i,0]*temp2+gens[i,1]*temp4 gens[8,2] = gens[i,2]*temp1+gens[i,3]*temp3 gens[8,3] = gens[i,2]*temp2+gens[i,3]*temp4 endif if real(gens[8,2]) < LINEFUZZ && real(gens[8,2]) > - LINEFUZZ ; matrix to line rad[j] = -atan2(gens[8,0])/#pi-1.5 cs[j] = -gens[8,1]*gens[8,0]/2 else ; matrix to circle cs[j] = gens[8,0]/gens[8,2] rad[j] = cabs(1/real(gens[8,2])) endif if @showcusp == "Both" && @cusptype != "Slice" both[j] = both[k] endif if abs(rad[j]) < @scircle j = j - 1 endif if @showcusp == "Both" && @cusptype != "Slice" if both[j] == 0 if @bmethoda == 0 clr[j] = lev elseif @bmethoda == 1 clr[j] = 1/abs(rad[j])^@adja+0.01 elseif @bmethoda == 2 clr[j] = j^@adja+0.01 elseif @bmethoda == 3 clr[j] = cabs((cs[j]*2)^@adja)+0.01 elseif @bmethoda == 4 if abs(rad[j]) < @rthresh clr[j] = 2 else clr[j] = 1 endif endif else if @bmethods == 0 clr[j] = lev elseif @bmethods == 1 clr[j] = 1/abs(rad[j])^@adjs+0.01 elseif @bmethods == 2 clr[j] = j^@adjs+0.01 elseif @bmethods == 3 clr[j] = cabs((cs[j]*2)^@adjs)+0.01 elseif @bmethods == 4 if abs(rad[j]) < @rthresh clr[j] = 2 else clr[j] = 1 endif endif endif else if @method == 0 clr[j] = lev elseif @method == 1 clr[j] = 1/abs(rad[j])^@adj+0.01 elseif @method == 2 clr[j] = j^@adj+0.01 elseif @method == 3 clr[j] = cabs((cs[j]*2)^@adj)+0.01 elseif @method == 4 if abs(rad[j]) < @rthresh clr[j] = 2 else clr[j] = 1 endif endif endif if j > 4999998 lev = level + 1 k = iii + 1 endif j = j+1 k = k + 1 endwhile if j > 4999998 i = 5 endif i = i + 1 endwhile ; sort array by circle identity l = round(j/2) + 1 ir = j continue = true repeat if l > 1 l = l-1 rra = cs[l-1] rrb = rad[l-1] rrc = clr[l-1] else rra = cs[ir-1] rrb = rad[ir-1] rrc = clr[ir-1] cs[ir-1] = cs[0] rad[ir-1] = rad[0] clr[ir-1] = clr[0] ir = ir-1 if ir == 0 cs[0] = rra rad[0] = rrb clr[0] = rrc continue = false endif endif if continue == true si = l sj = 2*l endif while (sj <= ir) && (continue == true) if sj < ir ddx = real(cs[sj-1])-real(cs[sj]) ddy = imag(cs[sj-1])-imag(cs[sj]) ddr = rad[sj-1]-rad[sj] c = 0 done = false ; Lines precede circles if rad[sj-1] <= 0 && rad[sj] > 0 c = -1 done = true elseif rad[sj] <= 0 && rad[sj-1] > 0 c = 1 done = true elseif ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif rad[sj-1] <= 0 && !done ; Lines if ddr < -PARAFUZZ && !done c = -1 done = true elseif ddr > PARAFUZZ && !done c = 1 done = true endif elseif !done ; Circles if ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 done = true endif endif if c < 0 sj = sj + 1 endif endif ddx = real(rra)-real(cs[sj-1]) ddy = imag(rra)-imag(cs[sj-1]) ddr = rrb-rad[sj-1] c = 0 done = false ; Lines precede circles if rrb <= 0 && rad[sj-1] > 0 c = -1 done = true elseif rad[sj-1] <= 0 && rrb > 0 c = 1 done = true elseif ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif rrb <= 0 && !done ; Lines if ddr < -PARAFUZZ && !done c = -1 done = true elseif ddr > PARAFUZZ && !done c = 1 done = true endif elseif !done ; Circles if ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 done = true endif endif if c < 0 cs[si-1] = cs[sj-1] rad[si-1] = rad[sj-1] clr[si-1] = clr[sj-1] si = sj sj = sj + sj else sj = ir + 1 endif endwhile if (continue == true) cs[si-1] = rra rad[si-1] = rrb clr[si-1] = rrc endif until continue == false ; eliminate duplicates in place ir = 1 l = 1 while ir < j ddx = real(cs[ir])-real(cs[ir-1]) ddy = imag(cs[ir])-imag(cs[ir-1]) ddr = rad[ir]-rad[ir-1] c = 0 done = false ; Lines precede circles if rad[ir] <= 0 && rad[ir-1] > 0 c = -1 done = true elseif rad[ir-1] <= 0 && rad[ir] > 0 c = 1 done = true elseif ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif rad[ir] <= 0 && !done ; Lines if ddr < -PARAFUZZ && !done c = -1 done = true elseif ddr > PARAFUZZ && !done c = 1 done = true endif elseif !done ; Circles if ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 done = true endif endif if c == 0 ir = ir + 1 else cs[l] = cs[ir] rad[l] = rad[ir] clr[l] = clr[ir] ir = ir +1 l = l + 1 endif endwhile j = l ; move to final array, skipping dups ifinal = 0 istack = 0 nold = nfinal while ifinal < nold && istack < j && nfinal < 4999998 ddx = real(csf[ifinal])-real(cs[istack]) ddy = imag(csf[ifinal])-imag(cs[istack]) ddr = radf[ifinal]-rad[istack] c = 0 done = false ; Lines precede circles if radf[ifinal] <= 0 && rad[istack] > 0 c = -1 done = true elseif rad[istack] <= 0 && radf[ifinal] > 0 c = 1 done = true elseif ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif radf[ifinal] <= 0 && !done ; Lines if ddr < -PARAFUZZ && !done c = -1 done = true elseif ddr > PARAFUZZ && !done c = 1 done = true endif elseif !done ; Circles if ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 done = true endif endif if c < 0 ifinal = ifinal + 1 endif if c == 0 istack = istack + 1 endif if c > 0 csf[nfinal] = cs[istack] radf[nfinal] = rad[istack] clrf[nfinal] = clr[istack] nfinal = nfinal + 1 istack = istack + 1 endif endwhile while istack < j && nfinal < 4999998 csf[nfinal] = cs[istack] radf[nfinal] = rad[istack] clrf[nfinal] = clr[istack] nfinal = nfinal + 1 istack = istack + 1 endwhile ir = nold while ir 1 l = l-1 rra = csf[l-1] rrb = radf[l-1] rrc = clrf[l-1] else rra = csf[ir-1] rrb = radf[ir-1] rrc = clrf[ir-1] csf[ir-1] = csf[0] radf[ir-1] = radf[0] clrf[ir-1] = clrf[0] ir = ir-1 if ir == 0 csf[0] = rra radf[0] = rrb clrf[0] = rrc continue = false endif endif if continue == true si = l sj = 2*l endif while (sj <= ir) && (continue == true) if sj < ir ddx = real(csf[sj-1])-real(csf[sj]) ddy = imag(csf[sj-1])-imag(csf[sj]) ddr = radf[sj-1]-radf[sj] c = 0 done = false ; Lines precede circles if radf[sj-1] <= 0 && radf[sj] > 0 c = -1 done = true elseif radf[sj] <= 0 && radf[sj-1] > 0 c = 1 done = true elseif ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif radf[sj-1] <= 0 && !done ; Lines if ddr < -PARAFUZZ && !done c = -1 done = true elseif ddr > PARAFUZZ && !done c = 1 done = true endif elseif !done ; Circles if ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 done = true endif endif if c < 0 sj = sj + 1 endif endif ddx = real(rra)-real(csf[sj-1]) ddy = imag(rra)-imag(csf[sj-1]) ddr = rrb-radf[sj-1] c = 0 done = false ; Lines precede circles if rrb <= 0 && radf[sj-1] > 0 c = -1 done = true elseif radf[sj-1] <= 0 && rrb > 0 c = 1 done = true elseif ddx < -thresh c = -1 done = true elseif ddx > thresh && !done c = 1 done = true elseif ddy < -thresh && !done c = -1 done = true elseif ddy > thresh && !done c = 1 done = true elseif rrb <= 0 && !done ; Lines if ddr < -PARAFUZZ && !done c = -1 done = true elseif ddr > PARAFUZZ && !done c = 1 done = true endif elseif !done ; Circles if ddr < -thresh && !done c = -1 done = true elseif ddr > thresh && !done c = 1 done = true endif endif if c < 0 csf[si-1] = csf[sj-1] radf[si-1] = radf[sj-1] clrf[si-1] = clrf[sj-1] si = sj sj = sj + sj else sj = ir + 1 endif endwhile if (continue == true) csf[si-1] = rra radf[si-1] = rrb clrf[si-1] = rrc endif until continue == false iii = j-1 if j == 0 lev = level+1 else lev = lev+1 endif endwhile float sscale = 1 if @cusptype == "Slice" if @scusp == "Nearby group" sscale = 0.05 elseif @scusp == "1/15" sscale = 0.015 elseif @scusp == "0/1" sscale = 0.5 elseif @scusp == "2/19" sscale = 0.025 elseif @scusp == "1/9" sscale = 0.04 elseif @scusp == "7/43" sscale = 0.035 elseif @scusp == "2/5" sscale = 0.2 endif endif int maxi = nfinal-1 iii = 1 float radius = 0 while iii <= maxi radf[iii] = radf[iii]*sscale radius = (radf[iii]) if radius < @maxrad && radius > 0 && radius > @scirclev fx = real(csf[iii])*@ascale*sscale fy = imag(csf[iii])*@ascale*sscale zz = csz[iii]*@ascale if @sphere xx = fx yy = fy fx = fx/(fx*fx+fy*fy+1)*@sphrad fy = fy/(xx*xx+fy*fy+1)*@sphrad zz = (xx*xx+yy*yy)/(xx*xx+yy*yy+1)*@sphrad radius = radius*sqrt((fx*fx+fy*fy)/(xx*xx+yy*yy)) endif tymax = txmax tzmax = txmax ffx = fx - xmin ffy = fy - ymin ffy = tymax*asp - ffy ffx = ffx/txmax ffy = ffy/tymax ffz = (zz-zmin)/tzmax xx = ffx ; ; rotation around the z axis ; xx = ffx ffx = 0.5 + (ffx - 0.5 - @rotoffx/txmax)*cos(#angle) - \ (ffy - 0.5 - @rotoffy/tymax)*sin(#angle) ffy = 0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(#angle) + \ (xx - 0.5 - @rotoffx/txmax)*sin(#angle) ; ; rotation around the y axis ; xx = ffx ffx = (0.5 + (ffz - 0.5 - @rotoffz/txmax)*sin(@zangle*pi/180) + \ (ffx - 0.5 - @rotoffx/txmax)*cos(@zangle*pi/180))*#width ffz = (0.5 + (ffz - 0.5 - @rotoffz/tzmax)*cos(@zangle*pi/180) - \ (xx - 0.5 - @rotoffx/txmax)*sin(@zangle*pi/180)) ; ; rotation around the x axis ; yy = ffy ffy = (0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(@xangle*pi/180) - \ (ffz - 0.5 - @rotoffz/tzmax)*sin(@xangle*pi/180))*#width ffz = (0.5 + (yy - 0.5 - @rotoffy/tymax)*sin(@xangle*pi/180) + \ (ffz - 0.5 - @rotoffz/tzmax)*cos(@xangle*pi/180))*#width ; ; final translation ; ffx = ffx + @transx*#width ffy = ffy + @transy*#width ffz = ffz + @transz*#width csf[iii] = (ffx+flip(ffy)) csz[iii] = ffz radf[iii] = round(radius*#width/txmax)*@ascale if radf[iii] < 1 radf[iii] = 1 endif else radf[iii] = -1 endif iii = iii + 1 endwhile ; if @switch && @tparent int i = 0 while i < 500 colorswitch = colormap[i,0] colormap[i,0] = colormap[i,1] colormap[i,1] = colorswitch i = i + 1 endwhile endif init: ; initialize camera vector float vx = 0.0 float vy = 0.0 float vz = 0.0 float vd = 0.0 ; this is used for normalizing all vectors ; ; refraction vector array (continuation of camera vector through refractions) float vxt[300] float vyt[300] float vzt[300] ; initialize light vector float lx = 0.0 float ly = 0.0 float lz = 0.0 ; ; initialize intersection point float xi = 0 float yi = 0 float zi = 0 ; ; initialize floor intersection point float xf = 0 float yf = 0 float zf = 0 ; ; initialize reflection intersection point float xr = 0 float yr = 0 float zr = 0 ; ; initialize floor reflection intersection point float xrf = 0 float yrf = 0 float zrf = 0 ; ; floor intersection array for refraction vector float xft[100] float yft[100] float zft[100] ; refraction intersection array float xit[300] float yit[300] float zit[300] int it = 0 int jt = 0 ; surface normal array for refraction intersections float lxtt[300] float lytt[300] float lztt[300] float ctheta2 = 0 ; refraction angle float rfi = 0 ; refractive index ratio float tdt[100] ; distance from back of sphere to floor (refracted ray) float dt[100] ; distance from back of sphere to next closest sphere (refracted ray) ; initialize to 1e10 it = 0 while it < 100 tdt[it]= 1e10 dt[it] = 1e10 it = it + 1 endwhile float ldt[100] ; distance from floor intersection to light (refracted ray) float floormodt[100] float fractalmodt[100] ; initialize to 10 it = 0 while it < 100 floormodt[it] = 10 fractalmodt[it] = 10 it = it + 1 endwhile float rdt[100] ; radius of closest sphere on refraction path float ldst[100] ; distance from closest sphere on refraction path to floor bool stop = false float tindex[100] ; color index for refracted spheres float colrT[100] ; color parameter for refracted spheres float ltfact[100] ; refracted floor fade according to lighting model color colorft[100] ; refracted floor color value float ltt[100] ; dot product of light vector and normal and refract intersection float colorPosT[100] ; color parameter for refracted spheres float hvalt[100] ; hightlight parameter for refracted spheres int xcrd = #x int ycrd = #y bool inside = true if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width)*0.5; float transy = (#height)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd<0 || xcrd>=#width || ycrd<0 || ycrd>=#height) inside = false endif endif float ambient = @ambient float hval = 0 ; highlight param for spheres float hvalR = 0 ; highlight param for sphere reflections float hvalRF = 0 ; highlight param for sphere reflections off floor float colorPos = 0 ; color param for spheres float colorPosR = 0 ; color param for sphere reflections float colorPosRF = 0 ; color param for sphere reflections off floor int rangeNum = 0 ; color ranges for spheres int rangeNumR = 0 ; color ranges for sphere reflections int rangeNumRF = 0 ; color ranges for sphere reflections off floor int rangeNumT[100] ; color ranges for sphere refractions color color1 = rgb(0,0,0) color color2 = rgb(0,0,0) color tempcolor = rgb(0,0,0) color colorf = rgb(0,0,0) int floormod = 10 int floormodr = 10 float fractalmod = 10 float fractalmodr = 10 color fractalcolor = rgb(0,0,0) color amcolor = @amcolor float extent = 1.0 - @extent float ctheta = 0 ; cos of angle between camera ray and floor normal float ortheta = 0 ; dot product of camera position and floor normal float dirtheta = 0 ; negative cos of angle between camera ray and floor normal float leftbound = @leftbound*#width float rightbound = @rightbound*#width float topbound = -@topbound*#width*asp float bottombound = -@bottombound*#width*asp float rd = 0 ; radius of closest sphere float td = 1e10 ; distance to closest sphere float tdr = 1e10 ; distance to closest reflection sphere float ld = 0 ; distance from light to floor intersection float ltfac = 0 ; floor fade according to lighting model float ltfacr = 0 ; floor reflection on sphere fade according to lighting model float lds = 0 ; distance from light to closest sphere with floor reflection float st = 0 float sd = 0 ; bool trapped = false ; if frac[xcrd,ycrd] == -1 ; trapped = true ; endif ; light position float lightx = @lightx*#width float lighty = @lighty*#width*asp float lightz = @lightz*#width*asp ; camera position float camx = 0 float camy = 0 float camz = 0 ; float z0 = @vplane*#width*asp float zl = @lplane*#width*asp ; camx = @camerax*#width camy = @cameray*#width*asp camz = @cameraz*#width*asp ; ; create the camera vector ; vx = xcrd-(#width-@cpointx*#width) -camx vy = ycrd-(@cpointy*#width-#width)*asp -camy vz = -z0 - camz vd = 1/sqrt(vx*vx+vy*vy+vz*vz) vx = vx*vd vy = vy*vd vz = vz*vd ; create vector for light direction if @ltype == "Point source" || @ltype == "Spotlight" lx = #width-@lpointx*#width-lightx ly = (@lpointy*#width-#width)*asp-lighty lz = -zl-lightz else float elevation = -@elevation float d2r = #pi/180; degrees to radians conversion factor lx = -cos(@angle*d2r) * cos(elevation*d2r) ly = -sin(@angle*d2r) * cos(elevation*d2r) lz = sin(elevation*d2r) endif vd = 1/sqrt(lx*lx+ly*ly+lz*lz) lx = -lx*vd ly = -ly*vd lz = -lz*vd ; ; initialize normal vector for intersection point float lxt = 0 float lyt = 0 float lzt = 0 ; ; initialize normal vector for intersection point on floor float lxtf = 0 float lytf = 0 float lztf = 0 ; ; initialize normal vector for intersection point at reflection object float lxn = 0 float lyn = 0 float lzn = 0 ; ; initialize reflection vector float lxr = 0 float lyr = 0 float lzr = 0 ; ; initialize reflection vector from floor float lxfr = 0 float lyfr = 0 float lzfr = 0 ; float bi = 0 float ci = 0 float arg = 0 float ti1 = 0 float ti2 = 0 float ti = 0 float colr = 0 ; gradient sphere color parameter float colrR = 0 ; gradient sphere relection color parameter float colrRF = 0 ; gradient sphere refraction color parameter float colorPos = 0 ; sphere color float lt = 0 ; dot product of light vector and normal float d = 1e10 ; distance from camera to closest float ss = 1e10 float ro = 1e10 ; distance from intersection to closest reflection sphere float dx = 0 float dy = 0 float dz = 0 float am = 0 ; shadow color float am2 = 0 ; shadow parameter float cindex = 0 float lrf = 0 ; reflection on floor coloring int rspf = 0 ; index of sphere reflected onto floor float rof = 1e10 ; distance from intersection to next refraction int ri = 1 int ristart = 1 int rsp = 0 ; index of reflection sphere float lr = 0 ; reflection coloring int di = 0 float rindex = 0 float rindexf = 0 ; ; create floor ; if @floor ; floor normal lxtf = fa lytf = fb lztf = fc vd = 1/sqrt(lxtf*lxtf+lytf*lytf+lztf*lztf) lxtf = lxtf*vd lytf = lytf*vd lztf = lztf*vd ; dot product with ray origin ortheta = lxtf*camx+lytf*camy+lztf*camz ; dot product with camera vector dirtheta = lxtf*vx+lytf*vy+lztf*vz ; distance from camera to intersection td = -(ortheta+fd)/dirtheta ; intersection point with camera ray if td > 0 xf = camx+vx*td yf = camy+vy*td zf = camz+vz*td endif ; distance to light if @ltype == "Point source" if td > 0 ld = sqrt((lightx-xf)^2 + (lighty-yf)^2+ (lightz-zf)^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ld = 1234567890 endif elseif @ltype == "Spotlight" st = (xf-lightx)*lx + (yf-lighty)*ly + (zf-lightz)*lz sd = sqrt((lightx-xf+lx*st)^2+(lighty-yf+ly*st)^2+(lightz-zf+lz*st)^2) if @spottype == "Sharp" ld = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ld = 1-@ambient endif elseif @spottype == "Set focus" ld = (sd/(@spotrad*#width*asp))^@setfocus if ld < 0.8 ld = 0 else ld = ld - 0.8 endif if ld > 1-@ambient ld = 1-@ambient endif endif endif if @fbound == true ; put bounds on the floor if xf < leftbound || zf < topbound || xf > rightbound || zf > bottombound td = 0 ld = 1234567890 endif endif ; setup checkerboard complex fp = (lytf+lztf)*xf + lxtf*yf + \ flip((lxtf+lytf)*zf + lztf*yf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormod = 0 else floormod = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmod = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width/2*asp)%trunc(#width*asp)] endif ; is the floor point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if radf[ri] != -1 if ri != di ; eliminate self-shadow bi = (lx*(xf-real(csf[ri]))+ly*(yf-imag(csf[ri]))+lz*(zf-csz[ri])) ci = (xf-real(csf[ri]))^2+(yf-imag(csf[ri]))^2+(zf-csz[ri])^2-radf[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am2 = @am endif endif endif endif ri = ri + 1 endwhile endif ss = 1e10 ; ; is there a reflection object to reflect onto the floor? ; ; if @version >=200 if @reflect && @reflectf ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxtf*vx-lytf*vy-lztf*vz ; N.I lxfr = -vx+2*lxtf*ctheta lyfr = -vy+2*lytf*ctheta lzfr = -vz+2*lztf*ctheta vd = 1/sqrt(lxfr*lxfr+lyfr*lyfr+lzfr*lzfr) lxfr = lxfr*vd lyfr = lyfr*vd lzfr = lzfr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 while ri <= maxi if radf[ri] != -1 bi = (lxfr*(xf-real(csf[ri]))+lyfr*(yf-imag(csf[ri]))+lzfr*(zf-csz[ri])) ci = (xf-real(csf[ri]))^2+(yf-imag(csf[ri]))^2+(zf-csz[ri])^2-radf[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < rof ; find closest reflection object rof = ti rspf = ri ; index of reflection object endif endif endif ri = ri + 1 endwhile if rof != 1e10 && @reflectf==true ; find intersection point on reflection object xr = xf+lxfr*rof yr = yf+lyfr*rof zr = zf+lzfr*rof ; ; create the normal at the intersection point lxn = -(xr-real(csf[rspf]))/radf[rspf] lyn = (yr-imag(csf[rspf]))/radf[rspf] lzn = (zr-csz[rspf])/radf[rspf] vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection ; if colorsUsed == 8 && !@reflect if colorsUsed == 8 rindexf = trunc(clrf[rspf]) if (trunc(rindexf/colorsUsed+0.01)%2) == 0 rindexf = rindexf%colorsUsed else rindexf = colorsUsed-1-(rindexf)%(colorsUsed) endif else rindexf = trunc(clrf[rspf])%colorsUsed endif lrf = -(lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif ; endif ; ri = ristart ti = 0 while ri <= maxi if radf[ri] != -1 bi = vx*(camx-real(csf[ri]))+vy*(camy-imag(csf[ri]))+vz*(camz-csz[ri]) ci = (camx-real(csf[ri]))^2+(camy-imag(csf[ri]))^2+(camz-csz[ri])^2-radf[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < d ; find closest object d = ti dx = real(csf[ri]) dy = imag(csf[ri]) dz = csz[ri] di = ri rd = radf[ri] if colorsUsed == 8 && !@reflect cindex = trunc(clrf[ri]) if (trunc(cindex/colorsUsed+0.01)%2) == 0 cindex = cindex%colorsUsed else cindex = colorsUsed-1-(cindex)%(colorsUsed) endif else cindex = trunc(clrf[ri])%colorsUsed endif endif endif ri = ri+1 endwhile if d > 0 && d != 1e10 ; intersection point outside object xi = camx+vx*d yi = camy+vy*d zi = camz+vz*d ; distance to light if @ltype == "Point source" if tdr > 0 lds = sqrt((lightx-xi)^2 + (lighty-yi)^2+ (lightz-zi)^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else lds = 1234567890 endif elseif @ltype == "Spotlight" st = (xi-lightx)*lx + (yi-lighty)*ly + (zi-lightz)*lz sd = sqrt((lightx-xi+lx*st)^2+(lighty-yi+ly*st)^2+(lightz-zi+lz*st)^2) if @spottype == "Sharp" lds = 0.0 if (sd/(@spotrad*#width*asp)) > 1 lds = 1-@ambient endif elseif @spottype == "Set focus" lds = (sd/(@spotrad*#width*asp))^@setfocus if lds < 0.8 lds = 0 else lds = lds - 0.8 endif if lds > 1-@ambient lds = 1-@ambient endif endif endif ; ; is the point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if radf[ri] != -1 if ri != di ; eliminate self-shadow bi = (lx*(xi-real(csf[ri]))+ly*(yi-imag(csf[ri]))+lz*(zi-csz[ri])) ci = (xi-real(csf[ri]))^2+(yi-imag(csf[ri]))^2+(zi-csz[ri])^2-radf[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am = (1.0/@totalColors)*@am+(1.0/@totalColors)*(cindex+(1-@scale/2)/2)-0.015 endif endif endif endif ri = ri + 1 endwhile endif ; ; create the normals at the intersection points ; lxt = (xi-dx)/rd lyt = (yi-dy)/rd lzt = (zi-dz)/rd vd = 1/sqrt(lxt*lxt+lyt*lyt+lzt*lzt) lxt = lxt*vd lyt = lyt*vd lzt = lzt*vd ; ; check for reflections ; if @reflect == true ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxt*vx-lyt*vy-lzt*vz ; N.I lxr = vx+2*lxt*ctheta lyr = vy+2*lyt*ctheta lzr = vz+2*lzt*ctheta vd = 1/sqrt(lxr*lxr+lyr*lyr+lzr*lzr) lxr = lxr*vd lyr = lyr*vd lzr = lzr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 lr = 0 while ri <= maxi if radf[ri] != -1 if di != ri ; eliminate self-reflection bi = (lxr*(xi-real(csf[ri]))+lyr*(yi-imag(csf[ri]))+lzr*(zi-csz[ri])) ci = (xi-real(csf[ri]))^2+(yi-imag(csf[ri]))^2+(zi-csz[ri])^2-radf[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ro ; find closest reflection object ro = ti rsp = ri ; index of reflection object endif endif endif endif ri = ri + 1 endwhile ; ; Is the floor closer? if @floor == true ; intersection point with reflection ray ; dot product with ray origin ortheta = lxtf*xi+lytf*yi+lztf*zi ; dot product with reflection vector dirtheta = lxtf*lxr+lytf*lyr+lztf*lzr ; distance from camera to intersection tdr = -(ortheta+fd)/dirtheta if tdr > 0 xrf = xi+lxr*tdr yrf = yi+lyr*tdr zrf = zi+lzr*tdr endif endif if tdr < ro && tdr > 0 ; floor is closest reflection object if @fbound == true ; put bounds on the floor if xrf < leftbound || zrf < topbound || xrf > rightbound || zrf > bottombound tdr = 0 endif endif ; setup checkerboard complex fp = (lytf+lztf)*xrf + lxtf*yrf + \ flip((lxtf+lytf)*zrf + lztf*yrf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodr = 0 else floormodr = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmodr = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif else if ro != 1e10 && @reflect==true ; find intersection point on reflection object xr = xi+lxr*ro yr = yi+lyr*ro zr = zi+lzr*ro ; ; create the normal at the intersection point lxn = (xr-real(csf[rsp]))/radf[rsp] lyn = (yr-imag(csf[rsp]))/radf[rsp] lzn = (zr-csz[rsp])/radf[rsp] vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection if colorsUsed == 8 && !@reflect rindex = trunc(clrf[rsp]) if (trunc(rindex/colorsUsed+0.01)%2) == 0 rindex = rindex%colorsUsed else rindex = colorsUsed-1-(rindex)%(colorsUsed) endif else rindex = trunc(clrf[rsp])%colorsUsed endif lr = (lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif ; ; tranparency code ; ; ; initialize initial array values ; ; refraction vectors vxt[0] = vx vyt[0] = vy vzt[0] = vz ; sphere intersection points xit[0] = xi yit[0] = yi zit[0] = zi lxtt[0] = lxt lytt[0] = lyt lztt[0] = lzt ; array indices it = 0 jt = 0 stop = false if @tparent while !stop ltt[jt] = 0 ldt[jt] = 0 ldst[jt] = 0 ; calculate surface normal ; float dlast = di lxtt[it] = (xit[it]-real(csf[di]))/radf[di] lytt[it] = (yit[it]-imag(csf[di]))/radf[di] lztt[it] = (zit[it]-csz[di])/radf[di] vd = 1/sqrt(lxtt[it]*lxtt[it]+lytt[it]*lytt[it]+lztt[it]*lztt[it]) lxtt[it] = lxtt[it]*vd lytt[it] = lytt[it]*vd lztt[it] = lztt[it]*vd ; ; calculate refraction vector #1 ; ; T = [I/rfi-(ctheta2-ctheta/rfi)*N] ; Snell's law: sin(angle1)/sin(angle2) = rf2/rf1 = rfi rfi = @rfi ctheta = -lxtt[it]*vxt[it]-lytt[it]*vyt[it]-lztt[it]*vzt[it] ; N.I ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) ; T.I vxt[it+1] = vxt[it]/rfi-lxtt[it]*(ctheta2-ctheta/rfi) vyt[it+1] = vyt[it]/rfi-lytt[it]*(ctheta2-ctheta/rfi) vzt[it+1] = vzt[it]/rfi-lztt[it]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+1]*vxt[it+1]+vyt[it+1]*vyt[it+1]+vzt[it+1]*vzt[it+1]) vxt[it+1] = vxt[it+1]*vd vyt[it+1] = vyt[it+1]*vd vzt[it+1] = vzt[it+1]*vd ; ; find intersection in back of sphere ; bi = vxt[it+1]*(xit[it]-real(csf[di]))+vyt[it+1]*(yit[it]-imag(csf[di]))+vzt[it+1]*(zit[it]-csz[di]) ci = (xit[it]-real(csf[di]))^2+(yit[it]-imag(csf[di]))^2+(zit[it]-csz[di])^2-radf[di]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 < ti2 ; find largest ti ti = ti2 else ti = ti1 endif endif xit[it+1] = xit[it]+vxt[it+1]*ti yit[it+1] = yit[it]+vyt[it+1]*ti zit[it+1] = zit[it]+vzt[it+1]*ti ; ; calculate surface normal #2 ; lxtt[it+1] = -(xit[it+1]-real(csf[di]))/radf[di] lytt[it+1] = -(yit[it+1]-imag(csf[di]))/radf[di] lztt[it+1] = -(zit[it+1]-csz[di])/radf[di] vd = 1/sqrt(lxtt[it+1]*lxtt[it+1]+lytt[it+1]*lytt[it+1]+lztt[it+1]*lztt[it+1]) lxtt[it+1] = lxtt[it+1]*vd lytt[it+1] = lytt[it+1]*vd lztt[it+1] = lztt[it+1]*vd ; ; calculate refraction vector #2 ; ctheta = -lxtt[it+1]*vxt[it+1]-lytt[it+1]*vyt[it+1]-lztt[it+1]*vzt[it+1] ; N.I rfi = 1/@rfi ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) vxt[it+2] = vxt[it+1]/rfi-lxtt[it+1]*(ctheta2-ctheta/rfi) vyt[it+2] = vyt[it+1]/rfi-lytt[it+1]*(ctheta2-ctheta/rfi) vzt[it+2] = vzt[it+1]/rfi-lztt[it+1]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+2]*vxt[it+2]+vyt[it+2]*vyt[it+2]+vzt[it+2]*vzt[it+2]) vxt[it+2] = vxt[it+2]*vd vyt[it+2] = vyt[it+2]*vd vzt[it+2] = vzt[it+2]*vd ; ; determine intersection of reflection vector with floor ; ; dot product with ray origin at back of sphere ortheta = lxtf*xit[it+1]+lytf*yit[it+1]+lztf*zit[it+1] ; dot product with 2nd refraction vector dirtheta = lxtf*vxt[it+2]+lytf*vyt[it+2]+lztf*vzt[it+2] ; distance from back of sphere to intersection with floor tdt[jt] = -(ortheta+fd)/dirtheta ; intersection point with 2nd refraction ray if tdt[jt] > 0 xft[jt] = xit[it+1]+vxt[it+2]*tdt[jt] yft[jt] = yit[it+1]+vyt[it+2]*tdt[jt] zft[jt] = zit[it+1]+vzt[it+2]*tdt[jt] endif ; ; distance from floor interection to light ; if @ltype == "Point source" if tdt[jt] > 0 ldt[jt] = sqrt((lightx-xft[jt])^2 + (lighty-yft[jt])^2+ (lightz-zft[jt])^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ldt[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xft[jt]-lightx)*lx + (yft[jt]-lighty)*ly + (zft[jt]-lightz)*lz sd = sqrt((lightx-xft[jt]+lx*st)^2+(lighty-yft[jt]+ly*st)^2+(lightz-zft[jt]+lz*st)^2) if @spottype == "Sharp" ldt[jt] = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ldt[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldt[jt] = (sd/(@spotrad*#width*asp))^@setfocus if ldt[jt] < 0.8 ldt[jt] = 0 else ldt[jt] = ldt[jt] - 0.8 endif if ldt[jt] > 1-@ambient ldt[jt] = 1-@ambient endif endif endif ; if @fbound == true ; put bounds on the floor if xft[jt] < leftbound || zft[jt] < topbound || xft[jt] > rightbound || zft[jt] > bottombound tdt[jt] = 0 ldt[jt] = 1234567890 endif endif ; ; setup checkerboard complex fp = (lytf+lztf)*xft[jt] + lxtf*yft[jt] + \ flip((lxtf+lytf)*zft[jt] + lztf*yft[jt])+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodt[jt] = 0 else floormodt[jt] = 1 endif ; setup fractal pattern elseif @flrtype == "Fractal" fp = abs(fp) fractalmodt[jt] = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif ; ; find closest sphere or terminate ; ri = ristart ti = 0 dt[jt] = 1e10 while ri <= maxi if radf[ri] != -1 && ri != dlast bi = vxt[it+2]*(xit[it+1]-real(csf[ri]))+vyt[it+2]*(yit[it+1]-imag(csf[ri]))+vzt[it+2]*(zit[it+1]-csz[ri]) ci = (xit[it+1]-real(csf[ri]))^2+(yit[it+1]-imag(csf[ri]))^2+(zit[it+1]-csz[ri])^2-radf[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < dt[jt] ; find closest object dt[jt] = ti dx = real(csf[ri]) dy = imag(csf[ri]) dz = csz[ri] di = ri ; this will be used in the next level rdt[jt] = radf[ri] if colorsUsed == 8 && !@reflect tindex[jt] = trunc(clrf[ri]) if (trunc(tindex[jt]/colorsUsed+0.01)%2) == 0 tindex[jt] = tindex[jt]%colorsUsed else tindex[jt] = colorsUsed-1-(tindex[jt])%(colorsUsed) endif else tindex[jt] = trunc(clrf[ri])%colorsUsed endif endif endif ri = ri+1 endwhile ; ; intersection point with next sphere ; if dt[jt] > 0 && dt[jt] != 1e10 ; intersection point outside object xit[it+2] = xit[it+1]+vxt[it+2]*dt[jt] yit[it+2] = yit[it+1]+vyt[it+2]*dt[jt] zit[it+2] = zit[it+1]+vzt[it+2]*dt[jt] ; ; distance of intersection to light ; if @ltype == "Point source" if td > 0 ldst[jt] = sqrt((lightx-xit[it+2])^2 + (lighty-yit[it+2])^2+ (lightz-zit[it+2])^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else ldst[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xit[it+2]-lightx)*lx + (yit[it+2]-lighty)*ly + (zit[it+2]-lightz)*lz sd = sqrt((lightx-xit[it+2]+lx*st)^2+(lighty-yit[it+2]+ly*st)^2+(lightz-zit[it+2]+lz*st)^2) if @spottype == "Sharp" ldst[jt] = 0.0 if (sd/(@spotrad*#width)) > 1 ldst[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldst[jt] = (sd/(@spotrad*#width))^@setfocus if ldst[jt] < 0.8 ldst[jt] = 0 else ldst[jt] = ldst[jt] - 0.8 endif if ldst[jt] > 1-@ambient ldst[jt] = 1-@ambient endif endif endif ; calculation of surface normal #3 ; lxtt[it+2] = (xit[it+2]-dx)/rdt[jt] lytt[it+2] = (yit[it+2]-dy)/rdt[jt] lztt[it+2] = (zit[it+2]-dz)/rdt[jt] vd = 1/sqrt(lxtt[it+2]*lxtt[it+2]+lytt[it+2]*lytt[it+2]+lztt[it+2]*lztt[it+2]) lxtt[it+2] = lxtt[it+2]*vd lytt[it+2] = lytt[it+2]*vd lztt[it+2] = lztt[it+2]*vd ; ; dot product of light vector and normal vector ; ltt[jt] = (lx*lxtt[it+2]+ly*lytt[it+2]+lz*lztt[it+2])*krt colrT[jt] = (1.0/@totalColors)*@scale/2*ltt[jt]+0.25*(tindex[jt]+(1-@scale/2)/2)-0.015 colorPosT[jt] = @scale/2*ltt[jt] endif it = it+2 jt = jt+1 if dt[jt-1] == 1e10 stop = true jt = jt-1 it = it-2 endif endwhile endif ; ; dot product of light vector and normal vector ; lt = (lx*lxt+ly*lyt+lz*lzt) colorPos = @scale/2*lt colorPosR = @scale/2*lr if @reflect == true if lr != 0 colrR = (1.0/@totalColors)*@scale/2*lr+0.25*(rindex+(1-@scale/2)/2)-0.015 colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif endif if rof != 1e10 && @reflectf && @floor colorPosRF = @scale/2*lrf colrRF = (1.0/@totalColors)*@scale/2*lrf+0.25*(rindexf+(1-@scale/2)/2)-0.015 endif ; if @tparent ; am = am*(1-@tparentval) ; am2 = am2*(1-@tparentval) ; endif ; loop: final: ; if @applymapping && !inside && @solid #solid = true endif ; Perturb the ranges, if specified. rangeNum = trunc(cindex) if rangeNum < 0 rangeNum = rangeNum * -1 endif rangeNum = (rangeNum + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNum < ranges / 2) rangeNum = (rangeNum + rangeNum) % ranges else rangeNum = (rangeNum + rangeNum + 1) % ranges endif else ; Number of ranges is odd. rangeNum = (rangeNum + rangeNum) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNum / 2) * 2) == rangeNum) ; rangeNum is even. rangeNum = rangeNum - trunc (rangeNum / 2) else ; rangeNum is odd. rangeNum = rangeNum + trunc ((ranges - rangeNum) / 2) endif endif if colorPos > 0.5 colorPos = (colorPos - 0.5) / 0.5 else colorPos = colorPos / 0.5 endif if @highlight_type == "none" hval = 0 elseif @highlight_type == "linear" if colorPos > extent hval = (5*@highlight*(colorPos-extent)/(1-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "log" if colorPos > extent hval = (5*@highlight*log(colorPos-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "exponential" if colorPos > extent hval = (5*@highlight*(exp(colorPos-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hval = 0 endif endif if @reflect == true ; Perturb the ranges, if specified. rangeNumR = trunc(rindex) if rangeNumR < 0 rangeNumR = rangeNumR * -1 endif rangeNumR = (rangeNumR + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumR < ranges / 2) rangeNumR = (rangeNumR + rangeNumR) % ranges else rangeNumR = (rangeNumR + rangeNumR + 1) % ranges endif else ; Number of ranges is odd. rangeNumR = (rangeNumR + rangeNumR) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumR / 2) * 2) == rangeNumR) ; rangeNumR is even. rangeNumR = rangeNumR - trunc (rangeNumR / 2) else ; rangeNumR is odd. rangeNumR = rangeNumR + trunc ((ranges - rangeNumR) / 2) endif endif if colorPosR > 0.5 colorPosR = (colorPosR - 0.5) / 0.5 else colorPosR = colorPosR / 0.5 endif if @highlight_type == "none" hvalR = 0 elseif @highlight_type == "linear" if colorPosR > extent hvalR = (5*@highlight*(colorPosR-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "log" if colorPosR > extent hvalR = (5*@highlight*log(colorPosR-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "exponential" if colorPosR > extent hvalR = (5*@highlight*(exp(colorPosR-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalR = 0 endif endif ; Perturb the ranges, if specified. rangenumRF = trunc(rindexf) if rangenumRF < 0 rangenumRF = rangenumRF * -1 endif rangenumRF = (rangenumRF + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangenumRF < ranges / 2) rangenumRF = (rangenumRF + rangenumRF) % ranges else rangenumRF = (rangenumRF + rangenumRF + 1) % ranges endif else ; Number of ranges is odd. rangenumRF = (rangenumRF + rangenumRF) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangenumRF / 2) * 2) == rangenumRF) ; rangenumRF is even. rangenumRF = rangenumRF - trunc (rangenumRF / 2) else ; rangenumRF is odd. rangenumRF = rangenumRF + trunc ((ranges - rangenumRF) / 2) endif endif if colorPosRF > 0.5 colorPosRF = (colorPosRF - 0.5) / 0.5 else colorPosRF = colorPosRF / 0.5 endif if @highlight_type == "none" hvalRF = 0 elseif @highlight_type == "linear" if colorPosRF > extent hvalRF = (5*@highlight*(colorPosRF-extent)/(1-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "log" if colorPosRF > extent hvalRF = (5*@highlight*log(colorPosRF-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "exponential" if colorPosRF > extent hvalRF = (5*@highlight*(exp(colorPosRF-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif endif endif if @tparent it = 0 while it <= jt ; Perturb the ranges, if specified. rangeNumT[it] = trunc(tindex[it]) if rangeNumT[it] < 0 rangeNumT[it] = rangeNumT[it] * -1 endif rangeNumT[it] = (rangeNumT[it] + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumT[it] < ranges / 2) rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges else rangeNumT[it] = (rangeNumT[it] + rangeNumT[it] + 1) % ranges endif else ; Number of ranges is odd. rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumT[it] / 2) * 2) == rangeNumT[it]) ; rangeNumT[it] is even. rangeNumT[it] = rangeNumT[it] - trunc (rangeNumT[it] / 2) else ; rangeNumT[it] is odd. rangeNumT[it] = rangeNumT[it] + trunc ((ranges - rangeNumT[it]) / 2) endif endif if colorPosT[it] > 0.5 colorPosT[it] = (colorPosT[it] - 0.5) / 0.5 else colorPosT[it] = colorPosT[it] / 0.5 endif if @highlight_type == "none" hvalt[it] = 0 elseif @highlight_type == "linear" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(colorPosT[it]-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "log" if colorPosT[it] > extent hvalt[it] = (5*@highlight*log(colorPosT[it]-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "exponential" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(exp(colorPosT[it]-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif endif it = it + 1 endwhile endif if lds > @sdis lds = @sdis endif it = 0 while it <= jt if ldst[it] > @sdis ldst[it] = @sdis endif ; have refracted floor fade according to lighting model ltfact[it] = ldt[it]/@dis/@floorrefract if ldt[it] == 1234567890 ltfact[it] = 0 elseif ltfact[it] < 0 ltfact[it] = 0 elseif ltfact[it] > 1 ltfact[it] = 1 endif ; if ltfact[it] > krft ; ltfact[it] = krft ; endif If ltfact[it]+am2 > 1 ltfact[it] = 1-am2 endif if dt[it] > tdt[it] && tdt[it] > 0 && ltfact[it] >= 0 if @flrtype == "Checkerboard" if floormodt[it] == 0 colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif floormodt[it] == 1 colorft[it] = blend(@flrcolor2,rgb(0,0,0),ltfact[it]+am2) endif elseif @flrtype == "Plain" colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif @flrtype == "Fractal" if fractalmodt[it] == 0 fractalcolor = @icolor colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) else fractalcolor = gradient((fractalmodt[it]/mxi)^@spread+@shift) colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) endif endif else colorft[it] = rgba(0,0,0,1) endif it = it+ 1 endwhile if colr == 0 && (td == 0 || td == 1e10) if @solid #solid = true else if @colorPreset == "Gradient" colorf = gradient(0) else if @switch colorf = colormap[0,0] else colorf = colormap[0,1] endif endif endif else if @am == 0 if @colorPreset == "Gradient" if @reflect == true if lr != 0 color1 = gradient(colrR/2) color2 = gradient(colr/2) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if am < colr/2 if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = gradient(colr/2 - am) color2 = gradient(colr/2) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@cblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color2 = gradient(0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif endif endif endif ; have floor fade according to lighting model ltfac = ld/@dis if ld == 1234567890 ltfac = 0 elseif ltfac < 0 ltfac = 0 elseif ltfac > 1 ltfac = 1 endif If ltfac+am2 > 1 ltfac = 1-am2 endif ; have floor reflection fade according to lighting model ltfacr = tdr/td/@floorreflect if lds == 1234567890 ltfacr = 0 elseif ltfacr < 0 ltfacr = 0 elseif ltfacr > 1 ltfacr = 1 endif if ltfacr>krf ltfacr = krf endif ; ltfacr = ltfacr*ltfac ; apply floor and floor reflection coloring if @reflect == true && tdr > 0 && tdr < ro if @flrtype == "Checkerboard" if floormodr == 0 colorf = blend(colorf,@flrcolor,krf-ltfacr) else colorf = blend(colorf,@flrcolor2,krf-ltfacr) endif elseif @flrtype == "Plain" colorf = blend(colorf,@flrcolor,krf-ltfacr) else if fractalmodr == 0 fractalcolor = @icolor colorf = blend(colorf,fractalcolor,krf-ltfacr) else fractalcolor = gradient((fractalmodr/mxi)^@spread+@shift) colorf = blend(colorf,fractalcolor,krf-ltfacr) endif endif endif if d > td && td > 0 && ltfac >= 0 if @flrtype == "Checkerboard" if floormod == 0 colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) elseif floormod == 1 colorf = blend(@flrcolor2,rgb(0,0,0),ltfac+am2) endif elseif @flrtype == "Plain" colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) else if fractalmod == 0 fractalcolor = @icolor colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) elseif fractalmod == -1 && @solid #solid = true else fractalcolor = gradient((fractalmod/mxi)^@spread+@shift) colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) endif endif endif if @reflectf && @floor && rof != 1e10 && d > td if @colorPreset == "Gradient" color1 = gradient(colrRF/2) else color1 = blend(colorMap[rangeNumRF,1], blend(colorMap[rangeNumRF,0], \ @hcolor,hvalRF), colorPosRF) endif colorf = blend(color1, colorf,(1-@blendvalf)) endif #color = blend(colorf, amcolor, ambient) default: param version caption = "Formula Version" default = 100 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam $ifdef VER40 heading text="Derived from the public C code of Curtis McMullen and \ material from Indra's Pearls by Mumford, Series and Wright. \ Direct coloring methods provided by \ Ken Childress. \ Use with Pixel in mt.ufm or Pixel Offset in \ reb.ufm" endheading $else heading caption="Kleinian Group Raytrace" endheading heading caption="Derived from the public C code " endheading heading caption="of Curtis McMullen." endheading heading caption="Direct coloring methods provided by" endheading heading caption="Ken Childress." endheading heading caption="Use with Pixel formula in mt.ufm" endheading $endif render=false title="Kleinian Group Raytrace" param solid caption="solid background?" default=false visible= !@floor||@applymapping||@fbound || @mask || @rmask endparam param applyMapping caption = "Apply Mapping" default = false endparam param @cir caption ="Gen circle" default = 0.01 hint = "Slowly increase until good circle packing is observed." visible = @cusptype == "Grandma's special" && @showcusp != "Standard" endparam param cusptype caption = "Group" default = 0 enum = "Nearby Group" "Double Cusp" "Slice" "Grandma's Special" endparam param cusp caption = "Cusp" default = 1 enum = "0/1" "1/15" "1/10" "2/19" "1/9" "7/43" "3/10" "2/5" "1/2" "21/34" "1/1" visible = @cusptype == "Double Cusp" endparam param scusp caption = "Slice Group" default = 0 enum = "Nearby group" "0/1" "1/15" "2/19" "1/9" "7/43" "2/5" visible = @cusptype == "Slice" endparam param showcusp caption = "Cusp view" default = 1 enum = "Both" "Standard" "Alternate" visible = @cusptype != "Slice" endparam complex param ta caption = "Trace a" default = (1.95,0.02) visible = @cusptype == "Grandma's Special" endparam complex param tb caption = "Trace b" default = (3,0) visible = @cusptype == "Grandma's Special" endparam bool param trans caption = "Transpose transform" default = false visible = @cusptype == "Grandma's Special" endparam bool param sphere caption = "Map to Riemann" default = false endparam float param sphrad caption = "Riemann Radius" default = 1.5 visible = @sphere endparam $ifdef VER40 heading text="The actual number of iterations may be less than \ 'Max Iters' if all new generations are smaller \ than the 'Smallest Circle' setting." endheading $endif param level caption = "Max Iters" default = 100 min = 1 endparam $ifdef VER40 heading text="Decreasing 'Smallest Circle' will increase the \ amount of detail, but rending speed will decrease." endheading $endif param scircle caption = "Smallest Circle" default = 0.001 endparam param scirclev caption = "Smallest View Circle" default = 0.001 endparam param maxrad caption = "Largest Circle" default = 0.6 endparam $ifdef VER40 heading text = "Use 'Magnification' below in place of 'Magnification on \ the Location Tab." endheading $endif param ascale caption = "Magnification" default = 1.0 endparam $ifdef VER40 heading caption = "Rotations & Translations" expanded = false endheading heading text = "Z Rotation is on the Location Tab." endheading $else heading caption = "Rotations & Translations" endheading heading caption = "Z Rotation is on the" endheading heading caption = "Location Tab." endheading $endif param xangle caption = "X Axis Rotation" default = 0.0 hint = "This is the fixed (horizontal) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param zangle caption = "Y Axis Rotation" default = 0.0 hint = "This is the fixed (vertical) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param rotoffx caption = "Rotation Center X Offset" default = 0.0 endparam param rotoffy caption = "Rotation Center Y Offset" default = 0.0 endparam param rotoffz caption = "Rotation Center Z Offset" default = 0.0 endparam param transx caption = "X Final Translation" default = 0.0 endparam param transy caption = "Y Final Translation" default = -0.15 endparam param transz caption = "Z Final Translation" default = 0.0 endparam ;-------------------------------------------------------------------- ; Color Settings ;-------------------------------------------------------------------- heading caption = "Color Settings" endheading param colorPreset caption = "Color Preset" enum = "Gradient" "Custom" "Generate" "Default" "Default 12" \ "Default 16" "Default 24" "Color Wheel 12" "Alhambra 8" \ "Belvedere 8" "Bouquet 8" "Color Switch 8" "Evening Sky 8" \ "Fantasia 8" "Flowering Orchard 8" "Morning Sky 8" "Pastel 8" \ "Pastel Rainbow 8" "Showtime 8" "Soleil 8" "Chill 8" \ "Cloud Nine 8" "La Terra 8" "Santa Fe 8" "Spring 8" "Summer 8" \ "Fall 8" "Winter 8" "Mojave 8" "Gold/Green 8" "Gold/Green Alt 8" \ "Gold/Silver 8" "Gold/Silver Alt 8" "Purple/Yellow 8" \ "Purple/Yellow Alt 8" "Silver/Blue 8" "Silver/Blue Alt 8" \ "Fourth of July 3" "Blue/Silver 2" "Blue/White 2" "Cyan/Magenta 2" \ "Cyan/Yellow 2" "Gold/Green 2" "Purple/Yellow 2" "Red/Tan 2" default = 2 hint = "Use 'Gradient' for colors from the gradient. \ Use 'Custom' to set your own color ranges. \ Use 'Default' for the default colors. \ Use 'Generate' to create 3D-like colors from the \ gradient (allows using the gradient randomize function). \ Use any of the other predefined settings for those colors." endparam param customize caption = "Show/Customize" default = false hint = "Check to customize the selected color preset. NOTE: If you \ modify the default values for any of the range(s), you cannot \ get back to the default values for the range(s) you modify \ unless you reload the UCL." visible = (@colorPreset != "Gradient") && (@colorPreset != "Generate") \ && (@colorPreset != "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Custom ;-------------------------------------------------------------------- heading caption = " Custom Color Settings" visible = (@colorPreset == "Custom") endheading color param colorMax1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMin1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMax2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMin2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMax3 caption = "Color Range 3 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMin3 caption = "Color Range 3 Low" default = rgb(100/255,36/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMax4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMin4 caption = "Color Range 4 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMax5 caption = "Color Range 5 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMin5 caption = "Color Range 5 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMax6 caption = "Color Range 6 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMin6 caption = "Color Range 6 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMax7 caption = "Color Range 7 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMin7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMax8 caption = "Color Range 8 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param colorMin8 caption = "Color Range 8 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param customMax9 caption = "Color Range 9 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMin9 caption = "Color Range 9 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMax10 caption = "Color Range 10 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMin10 caption = "Color Range 10 Low" default = rgb(94/255,18/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMax11 caption = "Color Range 11 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMin11 caption = "Color Range 11 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMax12 caption = "Color Range 12 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMin12 caption = "Color Range 12 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMax13 caption = "Color Range 13 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMin13 caption = "Color Range 13 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMax14 caption = "Color Range 14 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMin14 caption = "Color Range 14 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMax15 caption = "Color Range 15 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMin15 caption = "Color Range 15 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMax16 caption = "Color Range 16 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMin16 caption = "Color Range 16 Low" default = rgb(69/255,0/255,82/255) hint = "Specifies the color at the low end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMax17 caption = "Color Range 17 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMin17 caption = "Color Range 17 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMax18 caption = "Color Range 18 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMin18 caption = "Color Range 18 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMax19 caption = "Color Range 19 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMin19 caption = "Color Range 19 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMax20 caption = "Color Range 20 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMin20 caption = "Color Range 20 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMax21 caption = "Color Range 21 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMin21 caption = "Color Range 21 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMax22 caption = "Color Range 22 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMin22 caption = "Color Range 22 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMax23 caption = "Color Range 23 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMin23 caption = "Color Range 23 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMax24 caption = "Color Range 24 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam color param customMin24 caption = "Color Range 24 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default ;-------------------------------------------------------------------- heading caption = " Default Settings" visible = (@customize && @colorPreset == "Default") endheading color param defaultMax1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax2 caption = "Color Range 2 High" default = rgb(252/255,0/255,172/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin2 caption = "Color Range 2 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax3 caption = "Color Range 3 High" default = rgb(252/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax4 caption = "Color Range 4 High" default = rgb(252/255,128/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin4 caption = "Color Range 4 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax5 caption = "Color Range 5 High" default = rgb(252/255,252/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin5 caption = "Color Range 5 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax6 caption = "Color Range 6 High" default = rgb(0/255,252/255,128/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin7 caption = "Color Range 7 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax8 caption = "Color Range 8 High" default = rgb(64/255,64/255,252/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 12 ;-------------------------------------------------------------------- heading caption = " Default 12 Color Settings" visible = (@customize && @colorPreset == "Default 12") endheading color param default12Max1 caption = "Color Range 1 High" default = rgb(255/255,85/255,253/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min1 caption = "Color Range 1 Low" default = rgb(98/255,0/255,76/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max2 caption = "Color Range 2 High" default = rgb(252/255,0/255,143/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min2 caption = "Color Range 2 Low" default = rgb(98/255,0/255,54/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max4 caption = "Color Range 4 High" default = rgb(255/255,97/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min4 caption = "Color Range 4 Low" default = rgb(104/255,27/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min5 caption = "Color Range 5 Low" default = rgb(110/255,54/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max6 caption = "Color Range 6 High" default = rgb(255/255,248/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min6 caption = "Color Range 6 Low" default = rgb(102/255,60/255,6/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,58/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min7 caption = "Color Range 7 Low" default = rgb(0/255,76/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,205/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min8 caption = "Color Range 8 Low" default = rgb(0/255,89/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max9 caption = "Color Range 9 High" default = rgb(0/255,194/255,255/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min9 caption = "Color Range 9 Low" default = rgb(0/255,80/255,92/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max10 caption = "Color Range 10 High" default = rgb(35/255,109/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min10 caption = "Color Range 10 Low" default = rgb(0/255,4/255,102/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max11 caption = "Color Range 11 High" default = rgb(149/255,53/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min11 caption = "Color Range 11 Low" default = rgb(53/255,0/255,96/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max12 caption = "Color Range 12 High" default = rgb(195/255,0/255,252/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min12 caption = "Color Range 12 Low" default = rgb(58/255,0/255,84/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 16 ;-------------------------------------------------------------------- heading caption = " Default 16 Color Settings" visible = (@customize && @colorPreset == "Default 16") endheading color param default16Max1 caption = "Color Range 1 High" default = rgb(255/255,31/255,114/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min1 caption = "Color Range 1 Low" default = rgb(94/255,0/255,40/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max3 caption = "Color Range 3 High" default = rgb(255/255,78/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min3 caption = "Color Range 3 Low" default = rgb(88/255,27/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max4 caption = "Color Range 4 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min4 caption = "Color Range 4 Low" default = rgb(90/255,30/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,31/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min5 caption = "Color Range 5 Low" default = rgb(88/255,38/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min6 caption = "Color Range 6 Low" default = rgb(96/255,57/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max7 caption = "Color Range 7 High" default = rgb(170/255,255/255,37/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min7 caption = "Color Range 7 Low" default = rgb(41/255,68/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,94/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min8 caption = "Color Range 8 Low" default = rgb(0/255,62/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max9 caption = "Color Range 9 High" default = rgb(0/255,238/255,203/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min9 caption = "Color Range 9 Low" default = rgb(0/255,64/255,54/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max10 caption = "Color Range 10 High" default = rgb(11/255,166/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min10 caption = "Color Range 10 Low" default = rgb(0/255,38/255,78/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max11 caption = "Color Range 11 High" default = rgb(0/255,68/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min11 caption = "Color Range 11 Low" default = rgb(0/255,20/255,88/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max12 caption = "Color Range 12 High" default = rgb(99/255,0/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min12 caption = "Color Range 12 Low" default = rgb(47/255,0/255,94/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max13 caption = "Color Range 13 High" default = rgb(145/255,0/255,255/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min13 caption = "Color Range 13 Low" default = rgb(69/255,0/255,102/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max14 caption = "Color Range 14 High" default = rgb(221/255,0/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min14 caption = "Color Range 14 Low" default = rgb(86/255,0/255,100/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max15 caption = "Color Range 15 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min15 caption = "Color Range 15 Low" default = rgb(90/255,0/255,75/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max16 caption = "Color Range 16 High" default = rgb(255/255,0/255,140/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min16 caption = "Color Range 16 Low" default = rgb(96/255,0/255,60/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 24 ;-------------------------------------------------------------------- heading caption = " Default 24 Color Settings" visible = (@customize && @colorPreset == "Default 24") endheading color param default24Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min2 caption = "Color Range 2 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max3 caption = "Color Range 3 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max4 caption = "Color Range 4 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max5 caption = "Color Range 5 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min5 caption = "Color Range 5 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max6 caption = "Color Range 6 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min6 caption = "Color Range 6 Low" default = rgb(96/255,27/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max7 caption = "Color Range 7 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min7 caption = "Color Range 7 Low" default = rgb(100/255,38/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min8 caption = "Color Range 8 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max9 caption = "Color Range 9 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min9 caption = "Color Range 9 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max10 caption = "Color Range 10 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min10 caption = "Color Range 10 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max11 caption = "Color Range 11 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min11 caption = "Color Range 11 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max12 caption = "Color Range 12 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min12 caption = "Color Range 12 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max13 caption = "Color Range 13 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min13 caption = "Color Range 13 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max14 caption = "Color Range 14 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min14 caption = "Color Range 14 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max15 caption = "Color Range 15 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min15 caption = "Color Range 15 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max16 caption = "Color Range 16 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min16 caption = "Color Range 16 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max17 caption = "Color Range 17 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min17 caption = "Color Range 17 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max18 caption = "Color Range 18 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min18 caption = "Color Range 18 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max19 caption = "Color Range 19 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min19 caption = "Color Range 19 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max20 caption = "Color Range 20 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min20 caption = "Color Range 20 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max21 caption = "Color Range 21 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min21 caption = "Color Range 21 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max22 caption = "Color Range 22 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min22 caption = "Color Range 22 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max23 caption = "Color Range 23 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min23 caption = "Color Range 23 Low" default = rgb(64/255,0/255,76/255) hint = "Specifies the color at the low end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max24 caption = "Color Range 24 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min24 caption = "Color Range 24 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Wheel 12 ;-------------------------------------------------------------------- heading caption = " Color Wheel 12 Settings" visible = (@customize && @colorPreset == "Color Wheel 12") endheading color param colorWheel12Max1 caption = "Color Range 1 High" default = rgb(142/255,117/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min1 caption = "Color Range 1 Low" default = rgb(52/255,0/255,100/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max2 caption = "Color Range 2 High" default = rgb(224/255,9/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,84/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max4 caption = "Color Range 4 High" default = rgb(252/255,167/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min4 caption = "Color Range 4 Low" default = rgb(95/255,54/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max5 caption = "Color Range 5 High" default = rgb(190/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min5 caption = "Color Range 5 Low" default = rgb(63/255,84/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max6 caption = "Color Range 6 High" default = rgb(0/255,231/255,213/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min6 caption = "Color Range 6 Low" default = rgb(4/255,62/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max7 caption = "Color Range 7 High" default = rgb(182/255,27/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min7 caption = "Color Range 7 Low" default = rgb(53/255,0/255,92/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max8 caption = "Color Range 8 High" default = rgb(255/255,33/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min8 caption = "Color Range 8 Low" default = rgb(80/255,0/255,53/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max9 caption = "Color Range 9 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min9 caption = "Color Range 9 Low" default = rgb(101/255,25/255,21/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max10 caption = "Color Range 10 High" default = rgb(255/255,241/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min10 caption = "Color Range 10 Low" default = rgb(88/255,69/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max11 caption = "Color Range 11 High" default = rgb(0/255,248/255,103/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min11 caption = "Color Range 11 Low" default = rgb(0/255,83/255,15/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max12 caption = "Color Range 12 High" default = rgb(27/255,119/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min12 caption = "Color Range 12 Low" default = rgb(0/255,31/255,92/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Alhambra 8 ;-------------------------------------------------------------------- heading caption = " Alhambra 8 Settings" visible = (@customize && @colorPreset == "Alhambra 8") endheading color param alhambra8Max1 caption = "Color Range 1 High" default = rgb(15/255,222/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min1 caption = "Color Range 1 Low" default = rgb(0/255,43/255,52/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max2 caption = "Color Range 2 High" default = rgb(255/255,204/255,75/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min2 caption = "Color Range 2 Low" default = rgb(92/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max3 caption = "Color Range 3 High" default = rgb(188/255,152/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min3 caption = "Color Range 3 Low" default = rgb(41/255,0/255,70/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max4 caption = "Color Range 4 High" default = rgb(255/255,155/255,109/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min4 caption = "Color Range 4 Low" default = rgb(95/255,36/255,14/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max5 caption = "Color Range 5 High" default = rgb(121/255,180/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min5 caption = "Color Range 5 Low" default = rgb(0/255,47/255,91/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max6 caption = "Color Range 6 High" default = rgb(255/255,131/255,126/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min6 caption = "Color Range 6 Low" default = rgb(104/255,20/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max7 caption = "Color Range 7 High" default = rgb(33/255,255/255,220/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min7 caption = "Color Range 7 Low" default = rgb(0/255,67/255,49/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max8 caption = "Color Range 8 High" default = rgb(255/255,177/255,93/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min8 caption = "Color Range 8 Low" default = rgb(100/255,44/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Belvedere 8 ;-------------------------------------------------------------------- heading caption = " Belvedere 8 Settings" visible = (@customize && @colorPreset == "Belvedere 8") endheading color param belvedere8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min1 caption = "Color Range 1 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min2 caption = "Color Range 2 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max3 caption = "Color Range 3 High" default = rgb(123/255,201/255,254/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min3 caption = "Color Range 3 Low" default = rgb(0/255,45/255,68/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max4 caption = "Color Range 4 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min4 caption = "Color Range 4 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max5 caption = "Color Range 5 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min5 caption = "Color Range 5 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max6 caption = "Color Range 6 High" default = rgb(0/255,255/255,217/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min6 caption = "Color Range 6 Low" default = rgb(0/255,54/255,46/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max7 caption = "Color Range 7 High" default = rgb(255/255,20/255,70/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min7 caption = "Color Range 7 Low" default = rgb(100/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max8 caption = "Color Range 8 High" default = rgb(95/255,84/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,89/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Bouquet 8 ;-------------------------------------------------------------------- heading caption = " Bouquet 8 Settings" visible = (@customize && @colorPreset == "Bouquet 8") endheading color param bouquet8Max1 caption = "Color Range 1 High" default = rgb(0/255,255/255,131/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min1 caption = "Color Range 1 Low" default = rgb(0/255,84/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max2 caption = "Color Range 2 High" default = rgb(52/255,255/255,198/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min2 caption = "Color Range 2 Low" default = rgb(0/255,82/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max3 caption = "Color Range 3 High" default = rgb(0/255,244/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min3 caption = "Color Range 3 Low" default = rgb(0/255,64/255,74/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max4 caption = "Color Range 4 High" default = rgb(180/255,169/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min4 caption = "Color Range 4 Low" default = rgb(40/255,12/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max5 caption = "Color Range 5 High" default = rgb(251/255,148/255,230/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min5 caption = "Color Range 5 Low" default = rgb(100/255,20/255,67/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max6 caption = "Color Range 6 High" default = rgb(255/255,101/255,140/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min6 caption = "Color Range 6 Low" default = rgb(84/255,15/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max7 caption = "Color Range 7 High" default = rgb(255/255,149/255,111/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min7 caption = "Color Range 7 Low" default = rgb(77/255,36/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max8 caption = "Color Range 8 High" default = rgb(255/255,252/255,125/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min8 caption = "Color Range 8 Low" default = rgb(95/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Switch 8 ;-------------------------------------------------------------------- heading caption = " Color Switch 8 Settings" visible = (@customize && @colorPreset == "Color Switch 8") endheading color param colorSwitch8Max1 caption = "Color Range 1 High" default = rgb(255/255,33/255,52/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min1 caption = "Color Range 1 Low" default = rgb(90/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max2 caption = "Color Range 2 High" default = rgb(61/255,136/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,82/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,44/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min3 caption = "Color Range 3 Low" default = rgb(0/255,70/255,7/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max4 caption = "Color Range 4 High" default = rgb(255/255,131/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min4 caption = "Color Range 4 Low" default = rgb(105/255,40/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max5 caption = "Color Range 5 High" default = rgb(255/255,27/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min5 caption = "Color Range 5 Low" default = rgb(104/255,0/255,78/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max6 caption = "Color Range 6 High" default = rgb(168/255,87/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min6 caption = "Color Range 6 Low" default = rgb(35/255,0/255,58/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min7 caption = "Color Range 7 Low" default = rgb(0/255,60/255,60/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,38/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min8 caption = "Color Range 8 Low" default = rgb(90/255,90/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Evening Sky 8 ;-------------------------------------------------------------------- heading caption = " Evening Sky 8 Settings" visible = (@customize && @colorPreset == "Evening Sky 8") endheading color param eveningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,238/255,222/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min1 caption = "Color Range 1 Low" default = rgb(50/255,35/255,35/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max2 caption = "Color Range 2 High" default = rgb(255/255,226/255,85/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min2 caption = "Color Range 2 Low" default = rgb(85/255,54/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max3 caption = "Color Range 3 High" default = rgb(249/255,148/255,216/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min3 caption = "Color Range 3 Low" default = rgb(79/255,20/255,57/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max4 caption = "Color Range 4 High" default = rgb(159/255,159/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min4 caption = "Color Range 4 Low" default = rgb(22/255,16/255,54/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,175/255,79/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min5 caption = "Color Range 5 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max6 caption = "Color Range 6 High" default = rgb(124/255,190/255,251/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min6 caption = "Color Range 6 Low" default = rgb(13/255,40/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max7 caption = "Color Range 7 High" default = rgb(255/255,111/255,123/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min7 caption = "Color Range 7 Low" default = rgb(57/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max8 caption = "Color Range 8 High" default = rgb(111/255,255/255,245/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min8 caption = "Color Range 8 Low" default = rgb(0/255,60/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fantasia 8 ;-------------------------------------------------------------------- heading caption = " Fantasia 8 Settings" visible = (@customize && @colorPreset == "Fantasia 8") endheading color param fantasia8Max1 caption = "Color Range 1 High" default = rgb(255/255,230/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min1 caption = "Color Range 1 Low" default = rgb(102/255,81/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max2 caption = "Color Range 2 High" default = rgb(230/255,78/255,208/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min2 caption = "Color Range 2 Low" default = rgb(104/255,0/255,52/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max3 caption = "Color Range 3 High" default = rgb(180/255,119/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min3 caption = "Color Range 3 Low" default = rgb(56/255,0/255,82/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max4 caption = "Color Range 4 High" default = rgb(0/255,228/255,150/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min4 caption = "Color Range 4 Low" default = rgb(0/255,50/255,30/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max5 caption = "Color Range 5 High" default = rgb(131/255,148/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min5 caption = "Color Range 5 Low" default = rgb(38/255,31/255,85/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max6 caption = "Color Range 6 High" default = rgb(255/255,182/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min6 caption = "Color Range 6 Low" default = rgb(76/255,40/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max7 caption = "Color Range 7 High" default = rgb(252/255,0/255,113/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min7 caption = "Color Range 7 Low" default = rgb(84/255,0/255,34/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max8 caption = "Color Range 8 High" default = rgb(0/255,232/255,249/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min8 caption = "Color Range 8 Low" default = rgb(0/255,64/255,78/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Flowering Orchard 8 ;-------------------------------------------------------------------- heading caption = " Flowering Orchard 8 Settings" visible = (@customize && @colorPreset == "Flowering Orchard 8") endheading color param floweringOrchard8Max1 caption = "Color Range 1 High" default = rgb(255/255,188/255,213/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min1 caption = "Color Range 1 Low" default = rgb(132/255,30/255,66/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max2 caption = "Color Range 2 High" default = rgb(240/255,135/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min2 caption = "Color Range 2 Low" default = rgb(70/255,0/255,59/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max3 caption = "Color Range 3 High" default = rgb(255/255,75/255,153/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min3 caption = "Color Range 3 Low" default = rgb(104/255,15/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max4 caption = "Color Range 4 High" default = rgb(71/255,213/255,119/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min4 caption = "Color Range 4 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max5 caption = "Color Range 5 High" default = rgb(255/255,102/255,209/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min5 caption = "Color Range 5 Low" default = rgb(116/255,10/255,86/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max6 caption = "Color Range 6 High" default = rgb(154/255,199/255,51/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min6 caption = "Color Range 6 Low" default = rgb(28/255,44/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max7 caption = "Color Range 7 High" default = rgb(255/255,162/255,228/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min7 caption = "Color Range 7 Low" default = rgb(110/255,0/255,55/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max8 caption = "Color Range 8 High" default = rgb(255/255,201/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min8 caption = "Color Range 8 Low" default = rgb(145/255,20/255,54/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Morning Sky 8 ;-------------------------------------------------------------------- heading caption = " Morning Sky 8 Settings" visible = (@customize && @colorPreset == "Morning Sky 8") endheading color param morningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,178/255,217/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min1 caption = "Color Range 1 Low" default = rgb(79/255,29/255,57/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max2 caption = "Color Range 2 High" default = rgb(107/255,246/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min2 caption = "Color Range 2 Low" default = rgb(13/255,70/255,75/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max3 caption = "Color Range 3 High" default = rgb(255/255,199/255,137/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min3 caption = "Color Range 3 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max4 caption = "Color Range 4 High" default = rgb(241/255,245/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min4 caption = "Color Range 4 Low" default = rgb(16/255,24/255,46/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,177/255,188/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min5 caption = "Color Range 5 Low" default = rgb(54/255,14/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max6 caption = "Color Range 6 High" default = rgb(248/255,236/255,236/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min6 caption = "Color Range 6 Low" default = rgb(49/255,38/255,35/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max7 caption = "Color Range 7 High" default = rgb(129/255,201/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min7 caption = "Color Range 7 Low" default = rgb(0/255,56/255,70/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min8 caption = "Color Range 8 Low" default = rgb(89/255,76/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel 8 ;-------------------------------------------------------------------- heading caption = " Pastel 8 Settings" visible = (@customize && @colorPreset == "Pastel 8") endheading color param pastel8Max1 caption = "Color Range 1 High" default = rgb(147/255,255/255,193/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min1 caption = "Color Range 1 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max2 caption = "Color Range 2 High" default = rgb(147/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max3 caption = "Color Range 3 High" default = rgb(148/255,148/255,253/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min3 caption = "Color Range 3 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max4 caption = "Color Range 4 High" default = rgb(199/255,149/255,253/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max5 caption = "Color Range 5 High" default = rgb(255/255,147/255,221/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min5 caption = "Color Range 5 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max6 caption = "Color Range 6 High" default = rgb(254/255,148/255,148/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min6 caption = "Color Range 6 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max7 caption = "Color Range 7 High" default = rgb(255/255,202/255,147/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min7 caption = "Color Range 7 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,147/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min8 caption = "Color Range 8 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel Rainbow 8 ;-------------------------------------------------------------------- heading caption = " Pastel Rainbow 8 Settings" visible = (@customize && @colorPreset == "Pastel Rainbow 8") endheading color param pastelRainbow8Max1 caption = "Color Range 1 High" default = rgb(242/255,246/255,174/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min1 caption = "Color Range 1 Low" default = rgb(20/255,48/255,12/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max2 caption = "Color Range 2 High" default = rgb(182/255,242/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min2 caption = "Color Range 2 Low" default = rgb(20/255,44/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max3 caption = "Color Range 3 High" default = rgb(202/255,202/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min3 caption = "Color Range 3 Low" default = rgb(36/255,36/255,48/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max4 caption = "Color Range 4 High" default = rgb(255/255,170/255,170/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min4 caption = "Color Range 4 Low" default = rgb(89/255,0/255,24/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max5 caption = "Color Range 5 High" default = rgb(255/255,246/255,178/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min5 caption = "Color Range 5 Low" default = rgb(40/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max6 caption = "Color Range 6 High" default = rgb(255/255,238/255,206/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min6 caption = "Color Range 6 Low" default = rgb(52/255,16/255,40/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max7 caption = "Color Range 7 High" default = rgb(214/255,222/255,161/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min7 caption = "Color Range 7 Low" default = rgb(4/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max8 caption = "Color Range 8 High" default = rgb(255/255,230/255,246/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min8 caption = "Color Range 8 Low" default = rgb(70/255,50/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Showtime 8 ;-------------------------------------------------------------------- heading caption = " Showtime 8 Settings" visible = (@customize && @colorPreset == "Showtime 8") endheading color param showtime8Max1 caption = "Color Range 1 High" default = rgb(241/255,53/255,82/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min1 caption = "Color Range 1 Low" default = rgb(88/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max2 caption = "Color Range 2 High" default = rgb(255/255,121/255,52/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min2 caption = "Color Range 2 Low" default = rgb(107/255,29/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max3 caption = "Color Range 3 High" default = rgb(253/255,168/255,67/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min3 caption = "Color Range 3 Low" default = rgb(97/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max4 caption = "Color Range 4 High" default = rgb(255/255,231/255,21/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min4 caption = "Color Range 4 Low" default = rgb(140/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max5 caption = "Color Range 5 High" default = rgb(58/255,219/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min5 caption = "Color Range 5 Low" default = rgb(0/255,36/255,83/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max6 caption = "Color Range 6 High" default = rgb(9/255,116/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min6 caption = "Color Range 6 Low" default = rgb(33/255,30/255,81/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max7 caption = "Color Range 7 High" default = rgb(105/255,71/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min7 caption = "Color Range 7 Low" default = rgb(36/255,0/255,76/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max8 caption = "Color Range 8 High" default = rgb(187/255,32/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min8 caption = "Color Range 8 Low" default = rgb(50/255,0/255,56/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Soleil 8 ;-------------------------------------------------------------------- heading caption = " Soleil 8 Settings" visible = (@customize && @colorPreset == "Soleil 8") endheading color param soleil8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,35/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min1 caption = "Color Range 1 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max2 caption = "Color Range 2 High" default = rgb(255/255,209/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min2 caption = "Color Range 2 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max3 caption = "Color Range 3 High" default = rgb(231/255,237/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min3 caption = "Color Range 3 Low" default = rgb(54/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max4 caption = "Color Range 4 High" default = rgb(255/255,141/255,49/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min4 caption = "Color Range 4 Low" default = rgb(92/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,156/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min5 caption = "Color Range 5 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max6 caption = "Color Range 6 High" default = rgb(255/255,158/255,17/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min6 caption = "Color Range 6 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,217/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min7 caption = "Color Range 7 Low" default = rgb(76/255,41/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max8 caption = "Color Range 8 High" default = rgb(255/255,184/255,53/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min8 caption = "Color Range 8 Low" default = rgb(76/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Chill 8 ;-------------------------------------------------------------------- heading caption = " Chill 8 Settings" visible = (@customize && @colorPreset == "Chill 8") endheading color param chillMax1 caption = "Color Range 1 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin1 caption = "Color Range 1 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax2 caption = "Color Range 2 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax3 caption = "Color Range 3 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin3 caption = "Color Range 3 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax4 caption = "Color Range 4 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax5 caption = "Color Range 5 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin5 caption = "Color Range 5 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax6 caption = "Color Range 6 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax7 caption = "Color Range 7 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin7 caption = "Color Range 7 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax8 caption = "Color Range 8 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cloud Nine 8 ;-------------------------------------------------------------------- heading caption = " Cloud Nine 8 Settings" visible = (@customize && @colorPreset == "Cloud Nine 8") endheading color param cloudNineMax1 caption = "Color Range 1 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin1 caption = "Color Range 1 Low" default = rgb(143/255,60/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax2 caption = "Color Range 2 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin2 caption = "Color Range 2 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax3 caption = "Color Range 3 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin3 caption = "Color Range 3 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax4 caption = "Color Range 4 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin4 caption = "Color Range 4 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax5 caption = "Color Range 5 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin5 caption = "Color Range 5 Low" default = rgb(140/255,63/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax6 caption = "Color Range 6 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin6 caption = "Color Range 6 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax7 caption = "Color Range 7 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin7 caption = "Color Range 7 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax8 caption = "Color Range 8 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin8 caption = "Color Range 8 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for La Terra 8 ;-------------------------------------------------------------------- heading caption = " La Terra 8 Settings" visible = (@customize && @colorPreset == "La Terra 8") endheading color param laTerraMax1 caption = "Color Range 1 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin1 caption = "Color Range 1 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax2 caption = "Color Range 2 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin2 caption = "Color Range 2 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax3 caption = "Color Range 3 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin3 caption = "Color Range 3 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax4 caption = "Color Range 4 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin4 caption = "Color Range 4 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax5 caption = "Color Range 5 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin5 caption = "Color Range 5 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax6 caption = "Color Range 6 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin6 caption = "Color Range 6 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax7 caption = "Color Range 7 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin7 caption = "Color Range 7 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax8 caption = "Color Range 8 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin8 caption = "Color Range 8 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Santa Fe 8 ;-------------------------------------------------------------------- heading caption = " Santa Fe 8 Settings" visible = (@customize && @colorPreset == "Santa Fe 8") endheading color param santaFe8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min1 caption = "Color Range 1 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max2 caption = "Color Range 2 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max3 caption = "Color Range 3 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min3 caption = "Color Range 3 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max4 caption = "Color Range 4 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min4 caption = "Color Range 4 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min5 caption = "Color Range 5 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max6 caption = "Color Range 6 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max7 caption = "Color Range 7 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min7 caption = "Color Range 7 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min8 caption = "Color Range 8 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Spring 8 ;-------------------------------------------------------------------- heading caption = " Spring 8 Settings" visible = (@customize && @colorPreset == "Spring 8") endheading color param spring8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min1 caption = "Color Range 1 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max2 caption = "Color Range 2 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max3 caption = "Color Range 3 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min3 caption = "Color Range 3 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max4 caption = "Color Range 4 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min5 caption = "Color Range 5 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max6 caption = "Color Range 6 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min6 caption = "Color Range 6 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max7 caption = "Color Range 7 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min7 caption = "Color Range 7 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max8 caption = "Color Range 8 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min8 caption = "Color Range 8 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Summer 8 ;-------------------------------------------------------------------- heading caption = " Summer 8 Settings" visible = (@customize && @colorPreset == "Summer 8") endheading color param summer8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min1 caption = "Color Range 1 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max2 caption = "Color Range 2 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min3 caption = "Color Range 3 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max4 caption = "Color Range 4 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min5 caption = "Color Range 5 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max6 caption = "Color Range 6 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min6 caption = "Color Range 6 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min7 caption = "Color Range 7 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max8 caption = "Color Range 8 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fall 8 ;-------------------------------------------------------------------- heading caption = " Fall 8 Settings" visible = (@customize && @colorPreset == "Fall 8") endheading color param fall8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min1 caption = "Color Range 1 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max2 caption = "Color Range 2 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min2 caption = "Color Range 2 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max3 caption = "Color Range 3 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min3 caption = "Color Range 3 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max4 caption = "Color Range 4 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min4 caption = "Color Range 4 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min5 caption = "Color Range 5 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max6 caption = "Color Range 6 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min6 caption = "Color Range 6 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max7 caption = "Color Range 7 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min7 caption = "Color Range 7 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max8 caption = "Color Range 8 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min8 caption = "Color Range 8 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Winter 8 ;-------------------------------------------------------------------- heading caption = " Winter 8 Settings" visible = (@customize && @colorPreset == "Winter 8") endheading color param winter8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min1 caption = "Color Range 1 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max2 caption = "Color Range 2 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min2 caption = "Color Range 2 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max3 caption = "Color Range 3 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min3 caption = "Color Range 3 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max4 caption = "Color Range 4 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min4 caption = "Color Range 4 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min5 caption = "Color Range 5 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max6 caption = "Color Range 6 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min6 caption = "Color Range 6 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max7 caption = "Color Range 7 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min7 caption = "Color Range 7 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max8 caption = "Color Range 8 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min8 caption = "Color Range 8 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Mojave 8 ;-------------------------------------------------------------------- heading caption = " Mojave 8 Settings" visible = (@customize && @colorPreset == "Mojave 8") endheading color param mojave8Max1 caption = "Color Range 1 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min1 caption = "Color Range 1 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max2 caption = "Color Range 2 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min2 caption = "Color Range 2 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max3 caption = "Color Range 3 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min3 caption = "Color Range 3 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max4 caption = "Color Range 4 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min4 caption = "Color Range 4 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max5 caption = "Color Range 5 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min5 caption = "Color Range 5 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max6 caption = "Color Range 6 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min6 caption = "Color Range 6 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max7 caption = "Color Range 7 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min7 caption = "Color Range 7 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max8 caption = "Color Range 8 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min8 caption = "Color Range 8 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green 8 Settings" visible = (@customize && @colorPreset == "Gold/Green 8") endheading color param goldGreen8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max5 caption = "Color Range 5 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min5 caption = "Color Range 5 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max7 caption = "Color Range 7 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min7 caption = "Color Range 7 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Green Alt 8") endheading color param goldGreenAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max4 caption = "Color Range 4 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver 8") endheading color param goldSilver8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min5 caption = "Color Range 5 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min7 caption = "Color Range 7 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endheading color param goldSilverAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min2 caption = "Color Range 2 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min4 caption = "Color Range 4 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 8") endheading color param purpleYellow8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max2 caption = "Color Range 2 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min2 caption = "Color Range 2 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max4 caption = "Color Range 4 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min5 caption = "Color Range 5 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min7 caption = "Color Range 7 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow Alt 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow Alt 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endheading color param purpleYellowAlt8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min4 caption = "Color Range 4 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max5 caption = "Color Range 5 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min5 caption = "Color Range 5 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max7 caption = "Color Range 7 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min7 caption = "Color Range 7 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue 8") endheading color param silverBlue8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min4 caption = "Color Range 4 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max5 caption = "Color Range 5 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min5 caption = "Color Range 5 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max7 caption = "Color Range 7 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue Alt 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue Alt 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endheading color param silverBlueAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max4 caption = "Color Range 4 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min5 caption = "Color Range 5 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min7 caption = "Color Range 7 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fourth of July 3 ;-------------------------------------------------------------------- heading caption = " Fourth of July 3 Settings" visible = (@customize && @colorPreset == "Fourth of July 3") endheading color param fourthOfJuly3Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min1 caption = "Color Range 1 Low" default = rgb(128/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min3 caption = "Color Range 3 Low" default = rgb(128/255,128/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/Silver 2 ;-------------------------------------------------------------------- heading caption = " Blue/Silver 2 Settings" visible = (@customize && @colorPreset == "Blue/Silver 2") endheading color param blueSilver2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/White 2 ;-------------------------------------------------------------------- heading caption = " Blue/White 2 Settings" visible = (@customize && @colorPreset == "Blue/White 2") endheading color param blueWhite2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min2 caption = "Color Range 2 Low" default = rgb(124/255,124/255,124/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Magenta 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Magenta 2 Settings" visible = (@customize && @colorPreset == "Cyan/Magenta 2") endheading color param cyanMagenta2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Max2 caption = "Color Range 2 High" default = rgb(255/255,128/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Yellow 2 Settings" visible = (@customize && @colorPreset == "Cyan/Yellow 2") endheading color param cyanYellow2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 2 ;-------------------------------------------------------------------- heading caption = " Gold/Green 2 Settings" visible = (@customize && @colorPreset == "Gold/Green 2") endheading color param goldGreen2Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 2 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 2") endheading color param purpleYellow2Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Red/Tan 2 ;-------------------------------------------------------------------- heading caption = " Red/Tan 2 Settings" visible = (@customize && @colorPreset == "Red/Tan 2") endheading color param redTan2Max1 caption = "Color Range 1 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min1 caption = "Color Range 1 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Max2 caption = "Color Range 2 High" default = rgb(255/255,208/255,152/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min2 caption = "Color Range 2 Low" default = rgb(128/255,108/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam param highlight_type caption = "Color Highlight Type" default = 1 enum = "none" "linear" "log" "exponential" hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param extent caption = "Highlight Extent" default = 0.05 min = 0.0 max = 0.5 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param hblend caption = "Highlight power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam color param hcolor caption = "Highlight color" default = rgb(255/255,255/255,255/255) visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param scale caption = "color scale adj" default = 1.0 endparam float param cblend caption = "color blend power" default = 3.0 visible = @colorPreset != "Gradient" endparam param method caption = "color method" enum = "level" "size" "index" "position" "size threshold" default = 0 visible = !(@showcusp == "Both" && @cusptype != "Slice") endparam param bmethods caption = "color methd std" enum = "level" "size" "index" "position" "size threshold" default = 0 visible = @showcusp == "Both" && @cusptype != "Slice" endparam param adjs caption = "color methd adj std" default = 1.0 visible = @showcusp == "Both" && @cusptype != "Slice" && @bmethods != "level" endparam param bmethoda caption = "color methd alt" enum = "level" "size" "index" "position" "size threshold" default = 0 visible = @showcusp == "Both" && @cusptype != "Slice" endparam param rthresh caption = "Size thresh" default = 0.01 visible = (@method == 4 || @bmethods == 4 || @bmethoda == 4) endparam param adja caption = "color methd adj alt" default = 1.0 visible = @showcusp == "Both" && @cusptype != "Slice" && @bmethoda != "level" endparam param adj caption = "color methd adj" default = 1.0 visible = !(@showcusp == "Both" && @cusptype != "Slice")&& @method != "level" endparam float param luminanceUpper caption = "Lum. Upper Value" default = 0.5 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the upper value \ when generating the ranges from the gradient. This value \ is used with the brighter end of the color range." visible = (@colorPreset == "Generate") endparam float param luminanceLower caption = "Lum. Lower Value" default = 0.0 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the lower value \ when generating the ranges from the gradient. This value \ is used with the darker end of the color range." visible = (@colorPreset == "Generate") endparam int param totalColors caption = "# Colors in Gradient" default = 8 min = 1 max = 8 visible = (@colorPreset == "Gradient") endparam int param ncolor caption = "# Colors to Use" default = 8 min = 1 max = 24 visible = (@colorPreset != "Generate") endparam int param colorRanges caption = "Number of Ranges" default = 8 min = 1 max = 24 hint = "The number of color ranges (1..24)." visible = (@colorPreset == "Custom") endparam int param numRanges caption = "Number of Ranges" default = 8 min = 1 max = 500 hint = "The number of color ranges." visible = (@colorPreset == "Generate") endparam param perturbRanges caption = "Perturb Ranges" enum = "None" "Even/Odd" "1st Half / 2nd Half" "8 Range Custom" default = 0 hint = "Modify the way the ranges are assigned to the elements. \ 'None' = Assign in Order (0 1 2 3 4 5 6 7); 'Even Odd' = \ Assign Even Ranges, then Odd Ranges (0 2 4 6 1 3 5 7); \ '1st Half / 2nd Half' = Assign from first half of range, \ then 2nd half (0 4 1 5 2 6 3 7); '8 Range Custom' = Assign \ the ordering by entering digits 1-8. Only works for ranges \ with 8 colors." visible = ((@colorPreset == "Custom" && @colorRanges >= 3) || \ (@colorPreset == "Generate" && @numRanges >= 3) || \ (@colorPreset != "Custom" && @colorPreset != "Generate" && \ @colorPreset != "Gradient")) endparam int param rangeOrder caption = "Range Order" default = 12345678 min = 11111111 max = 88888888 hint = "Specify the color range ordering. Use digits 1-8 to specify \ the order the ranges will be used. For example, to reverse \ the ordering, specify 87654321. To alternate, use 13572468. \ If color map or preset is defined that does not contain exactly \ 8 ranges, then this parameter will not have any effect." visible = (@perturbRanges == "8 Range Custom") endparam int param colorOffset caption = "Range Offset" default = 0 min = 0 max = 23 hint = "This is used to rotate the color ranges. The offset can \ range from 0 to 23, where 23 is the maximum number of ranges \ that can be specified using the 'Generate' Color Preset." visible = (@colorPreset != "Gradient") endparam $ifdef VER40 heading caption = "Camera Settings" expanded = false endheading heading text = "Camera Origin" endheading $else heading caption = "Camera Settings" endheading heading caption = " Camera Origin" endheading $endif float param camerax caption = " X" default = 0.5 endparam float param cameray caption = " Y" default = -1.4 endparam float param cameraz caption = " Z" default = 10 endparam $ifdef VER40 heading text = "Camera Point At" endheading $else heading caption = " Camera Point At" endheading $endif float param cpointx caption = " X" default = 1.0 endparam float param cpointy caption = " Y" default = 0.7 endparam float param vplane caption = " Z" default = 2.0 endparam heading caption = "Illumination" endheading param ltype caption = "Light type" default = 1 enum = "Point source" "Spotlight" "Infinite light" endparam param angle caption = "Light Rotation" default = -60 hint = "Gives the rotation of the light source, in degrees." visible=@ltype == "Infinite light" endparam param elevation caption = "Light Elevation" default = 60 hint = "Gives the elevation of the light source, in degrees." visible=@ltype == "Infinite light" endparam $ifdef VER40 heading text = "Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lpointx caption = " X" default = 1 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lpointy caption = " Y" default = 3 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lplane caption = " Z" default = 5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam $ifdef VER40 heading text = "Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lightx caption = " X" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lighty caption = " Y" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lightz caption = " Z" default = 0.0 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param spotrad caption = "Spotlight radius" default = 0.25 visible=@ltype=="Spotlight" endparam param spottype caption = "Spotlight focus" default = 0 enum = "Set focus" "Sharp" visible=@ltype=="Spotlight" endparam float param setfocus default = 1.0 visible=@ltype=="Spotlight"&& @spottype == "Set focus" endparam float param sdis caption = "Sphere brightness" default = 2.0 visible=@ltype=="Point source" || @ltype=="Spotlight" endparam float param dis caption = "Floor brightness" default = 1.0 visible=@floor==true && (@ltype=="Point source" || @ltype=="Spotlight") endparam param ambient caption = "Ambient light" default = 0.05 max = 1.0 min = 0.0 endparam color param amcolor caption = "Ambient color" default = rgb(192/255,192/255,192/255) endparam float param am caption = "Shadow level" default = 0.4 min = 0.0 max = 1.0 endparam heading caption = "Reflection parameters" endheading bool param reflect caption = "Show reflections" default = false endparam float param kr caption = "Reflect param" default = 1.0 min = 0.0 max = 1.0 visible=@reflect==true endparam float param krf caption = "Floor reflect param" default = 0.2 min = 0.0 max = 1.0 visible=@reflect==true endparam float param floorreflect caption = "Floor reflect dist" default = 1.0 visible=@reflect==true endparam param blendval caption = "Blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflect==true endparam param rblend caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @reflect==true endparam float param hrblend caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @reflect==true endparam param reflectf caption="Reflection off floor" default = false visible = @reflect==true endparam param blendvalf caption = "Floor blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflectf==true endparam heading caption = "Transparency parameters" endheading bool param tparent caption = "Set transparency" default = false endparam param tparentval caption = "Transparency (0-1)" default = 0.5 min = 0.0 max = 1.0 visible=@tparent==true endparam param rfi caption = "Refractive index" default = 1.5 min = 1.0 max = 4 visible=@tparent==true endparam float param krt caption = "Refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param krft caption = "Floor refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param floorrefract caption = "Floor refract dist" default = 1.0 visible=@tparent==true endparam param rblendt caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @tparent==true endparam float param hrblendt caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @tparent==true endparam param tmerge caption = "Refract merge mode" enum = "Normal" "Screen" "Hard Light" "Lighten" "Addition" default = 0 visible=@tparent==true endparam $ifdef VER40 heading text = "More realistic transparent coloring can often be obtained \ by switching colors." visible=@tparent==true && @colorPreset != "Gradient" endheading $endif bool param switch caption = "switch colors" default = false visible=@tparent==true && @colorPreset != "Gradient" endparam heading caption = "Floor Settings" endheading bool param floor caption ="Add floor" default = true endparam float param fa caption = "X direction" default = 0.0 visible=@floor==true endparam float param fb caption = "Y direction" default = 1.0 visible=@floor==true endparam float param fc caption = "Z direction" default = 0.0 visible=@floor==true endparam float param fd caption = "Position" default = -0.7 visible=@floor==true endparam heading caption = "Floor Patterns" endheading param flrtype caption = "Floor Type" default = 0 enum = "Checkerboard" "Fractal" "Plain" visible=@floor==true endparam float param checkscale caption = "Pattern scale" default = 0.3 visible=@floor==true && @flrtype != "Plain" endparam complex param poffset caption = "Pattern offset" default = (0,0) visible=@floor==true && @flrtype != "Plain" endparam param fctltype caption = "Fractal Type" default = 4 enum = "Barnsley" "Cayley Julia" "Gopalsamy" "Julia" "Mandelbrot" "Newton" "Phoenix" visible=@floor==true && @flrtype == "Fractal" endparam color param flrcolor caption = "Floor color #1" default = rgba(0/255,0/255,139/255,1) visible=@floor==true && (@flrtype == "Checkerboard" || @flrtype == "Plain") endparam color param flrcolor2 caption = "Floor color #2" default = rgba(176/255,224/255,230/255,1) visible=@floor==true && @flrtype == "Checkerboard" endparam param cmethod caption = "Converge method" default = 2 enum = "Halley" "Householder" "Newton" "Schroder" visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam param color_mode caption = "Color mode" default = 0 enum = "Distance" "Iteration" visible=@floor==true && @flrtype == "Fractal" && @colormethod != "Exponential smoothing" endparam param colormethod caption = "Trap" enum = "Exponential smoothing" "Simple traps" "Orbit traps" default = 0 visible=@floor==true && @flrtype == "Fractal" endparam param traptype caption = "Trap type" enum = "Arachnida2" "Archimedes" "Atzema spiral" "Butterfly" "Cardoid" \ "Ceil_floor" "Cf_plus" "Conchoid" "Cycloid" "Ellipse Catacaustic" \ "Gear" "Lemniscate" "Log spiral" "Maltese cross" "Product" "Quotient1" \ "Quotient2" "Rose" "Rose of Troy" "Serpentine" "Sum" "Tr_plus" \ "Trefoil" "Trifolium" "Trisectrix of Maclaurin" "Trunc_round" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" endparam param traptype2 caption = "Trap type" enum = "Astroid" "Box" "Cross" "Diamond" "Egg" "Heart" "Hyperbola" "Hypercross" \ "Lines" "Mirrored waves" "Pinch" "Point" "Spiral"\ "Radial waves" "Rectangle" "Ring" "Waves" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param pa caption = "Polar parameter" default = 0.2 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Lemniscate" ||@traptype == "Cardoid" \ ||@traptype == "Conchoid"||@traptype == "Log spiral"|| \ @traptype == "Rose"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Butterfly"||@traptype == "Gear" \ ||@traptype == "Arachnida2"||@traptype == "Maltese cross" \ ||@traptype == "Trifolium"||@traptype == "Serpentine" \ ||@traptype == "Trefoil"||@traptype == "Trisectrix of Maclaurin" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pb caption = "2nd polar parameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Conchoid"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Gear"||@traptype == "Serpentine" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pc caption = "3rd Polar parameter" default = 0.05 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && @traptype == "Rose of Troy" endparam param pn caption = "Polar integer" default = 3 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Gear" || @traptype == "Arachnida2") endparam param diameter caption = "Trap diameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Ring" || @traptype2 == "Egg" || \ @traptype2 == "Hyperbola" || @traptype2 == "Lines" ||\ @traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves"|| @traptype2 == "Spiral"\ || @traptype2 == "Heart") endparam param torder caption = "Trap order" default = 4.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Pinch" ||@traptype2 == "Egg" || \ @traptype2 == "Astroid" ||@traptype2 == "Waves"|| \ @traptype2 == "Mirrored Waves" || @traptype2 == "Radial Waves") endparam param tfreq caption = "Trap frequency" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves") endparam bool param mask caption = "Use mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam $ifdef VER40 heading text = "'Reverse mask' overrides 'Mask'." visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endheading $endif bool param rmask caption = "Use reverse mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param threshold caption = "Mask threshold" default = 0.1 visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param tcenter caption = "Trap center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param tasp caption = "Trap aspect" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param trot caption = "Trap rotation" default = 0.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam color param icolor caption = "Inside color" default = rgb(0,0,0) visible=@floor==true && @flrtype == "Fractal" endparam int param miter caption = "Maximum iterations" default = 100 visible=@floor==true && @flrtype == "Fractal" endparam complex param seed caption = "Seed" default = (-0.75,0.2) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Julia" endparam complex param cseed caption = "Seed" default = (0.360968017578125,0.00074462890625) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param phseed caption = "Seed" default = (0.56667, -0.5) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Phoenix" endparam complex param gseed caption = "Seed" default = (-0.19, -0.19) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Gopalsamy" endparam complex param bseed caption = "Seed" default = (1.025, 0.9875) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Barnsley" endparam complex param p1 caption = "Newton power" default = (3.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param mp1 caption = "Power" default = (2.0,0.0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Mandelbrot" || \ @fctltype == "Julia") endparam complex param p2 caption = "Newton root" default = (1.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param fmcenter caption = "Fractal center" default = (-0.5,0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Mandelbrot" endparam complex param fccenter caption = "Fractal center" default = (-0.0005781248605,0.0022031248985) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param fcenter caption = "Fractal center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Julia" || \ @fctltype == "Newton" || @fctltype == "Phoenix" || @fctltype == "Barnsley" \ || @fctltype == "Gopalsamy") endparam float param fmag caption = "Fractal magnification" default = 1.0 visible=@floor==true && @flrtype == "Fractal" endparam float param bailout caption = "Bailout" default = 10000 visible=@floor==true && @flrtype == "Fractal" endparam float param spread caption = "Color spread" default = 0.5 visible=@floor==true && @flrtype == "Fractal" endparam float param shift caption = "Color shift" default = 0.0 visible=@floor==true && @flrtype == "Fractal" endparam bool param fbound caption ="Floor boundaries?" default = false visible=@floor==true endparam float param leftbound caption ="Left boundary" default = 0.05 visible=@floor==true && @fbound == true endparam float param rightbound caption ="Right boundary" default = 0.95 visible=@floor==true && @fbound == true endparam float param topbound caption ="Top boundary" default = 2.0 visible=@floor==true && @fbound == true endparam float param bottombound caption ="Bottom boundary" default = -2.0 visible=@floor==true && @fbound == true endparam } SphereInversionsRayTrace {; Ron Barnett November 12, 2005 ; based upon an article by Baram and Herrmann, and an article by ; Borkovec, De Paris and Peikert ; Transparency/Refraction, relections from spheres ; to the floor, more fractal types added November 15,2005 $define debug global: int MaxLevel = @level int level = MaxLevel complex cs[1000000] float rad[1000000] float csz[1000000] float clr[1000000] float checkscale = @checkscale/#width*30 color colorswitch = rgb(0,0,0) float frac[#width,#height] int l = 0 int ir = 0 int si = 0 int sj = 0 bool continue = true complex rra = 0 float rrb = 0 float rrc = 0 float rrd = 0 float cencir = 0 int blast = 0 float kr = @kr float krf = @krf float krt = @krt float krft = @krft if @tparent kr = kr*(1-@tparentval) krf = krf*(1-@tparentval) krt = krt*@tparentval krft = krft*@tparentval endif int maxi = 0 complex il = 0 float ilz = 0 float radadj = 0 if @tparent radadj = @radadj else radadj = 1.00 endif float temp = 0 float agree = 100 float circumrad = 0 float thresh = @scircle/agree float c = 0 float p = (1+sqrt(5))/2 float ip = 1/p int ii = 0 int i = 0 int j = 0 int jfinal = 0 int jnumber = 0 int k = 0 int kfinal = 0 float scle = 0 float ascale = 0 if @basesolid == "tetrahedron" scle = 3+sqrt(6) ascale = @ascale elseif @basesolid == "cube" scle = 3+sqrt(3) ascale = @ascale*1.2 elseif @basesolid == "octahedron" scle = 1+sqrt(2)/2 ascale = @ascale*2 elseif @basesolid == "dodecahedron" scle = (3+sqrt(3)*(p-1))/(p+1) ascale = @ascale*1.5 endif scle = scle float baserad = 0 float mxi = 0 float fi = 0 float fj = 0 float expiter = 0 complex fij = 0 complex oldf = 0 complex fz = 0 complex fzp = 0 complex fzp2 = 0 float pwrtest = 10^(100/cabs(@p1)) bool bTest = false float isnear = cabs(@p2)^cabs(@p1)/@bailout complex fcenter = 0 float asp = #height/#width if asp < 1 ascale = ascale*asp endif complex phx = 0 complex phy = 0 complex gx = 0 complex gx1 = 0 complex gy = 0 float ddx = 0 float ddy = 0 float ddz = 0 float ddr = 0 float trap = 0 float closest = 1e318 complex ez = 0 float trapd = 0.0 float trapd2 = 0.0 complex trapz2 = (0,0) complex trapr = (0,1)^(@trot/90.0) complex trapcenter2 = @tcenter complex r0 = (0,0) complex rh = (0,1)^(@torder/8) complex zh = (0,0) float theta = 0 float rr = 0 float af1 = 0 float af2 = 0 complex astroid = 0 int trap_iter = 0 float sa = 0 float sb = 0 float sc = 0 float pd = 0 if @version >= 340 sa = @sa sb = @sb sc = @sc pd = @pd else sa = 0 sb = 1.0 sc = 0.0 pd = 0.01 endif if @flrtype == "Fractal" if @fctltype == "Mandelbrot" fcenter = @fmcenter while i < #width fi = (i*4/(#width)-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/(#height) - 2)/@fmag + imag(fcenter) fij = 0 while k < @miter fij = fij^@mp1+fi+flip(fj) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Julia" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter fij = fij^@mp1+@seed if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Newton" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^@p1 - @p2 fzp = @p1*fij^(@p1-1) fzp2 = @p1*(@p1-1)*fij^(@p1-2) if @cmethod == "Newton" fij = fij - fz/fzp elseif @cmethod == "Householder" fij = fij - fz/fzp*(1 + fz*fzp2/(2*fzp^2)) elseif @cmethod == "Halley" fij = fij - 2*fz*fzp/(2*fzp^2 - fz*fzp2) elseif @cmethod == "Schroder" fij = fij - fz*fzp/(fzp^2 - fz*fzp2) endif btest = (cabs(oldf-fij) < isnear) if !(!btest && (cabs(fij) < pwrtest)) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(!btest && (cabs(fij) < pwrtest)) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Cayley Julia" closest = 1e318 fcenter = @fccenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fi + flip(fj) while k < @miter oldf = fij fz = fij^3 - @cseed*fij - @cseed + 1 fzp = 3*fij^2 - @cseed fij = fij - fz/fzp btest = (cabs(oldf-fij) < isnear) if !(|fij - oldf| >= 1/@bailout) k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if !(|fij - oldf| >= 1/@bailout) if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Phoenix" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter phx = fij*fij + real(@phseed) + imag(@phseed)*phy phy = fij fij = phx if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 phx = 0 phy = 0 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Gopalsamy" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter gx = real(fij) gy = imag(fij) gx1 = -2*gx*gy + @gseed gy = gy*gy - gx*gx fij = gx1 + flip(gy) if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile elseif @fctltype == "Barnsley" closest = 1e318 fcenter = @fcenter while i < #width fi = (i*4/#width-2)/@fmag+real(fcenter) while j < #height fj = asp*(j*4/#height - 2)/@fmag + imag(fcenter) fij = fj + flip(fi) while k < @miter IF real(fij) >= 0 fij = (fij - 1) * @bseed ELSE fij = (fij + 1) * @bseed ENDIF if |fij| > @bailout k = @miter endif k = k + 1 if @colormethod=="Exponential smoothing" expiter = expiter + exp(-cabs(fij)) elseif @colormethod=="Simple traps" if @traptype == "Sum" trap = abs(real(fij)+imag(fij)) elseif @traptype == "Product" trap = abs(real(fij)*imag(fij)) elseif @traptype == "Quotient1" trap = abs(real(fij)/imag(fij)) elseif @traptype == "Quotient2" trap = abs(imag(fij)/real(fij)) elseif @traptype == "Ceil_floor" trap = abs(real(fij)-ceil(real(fij)))+abs(imag(fij)-floor(imag(fij))) elseif @traptype == "Trunc_round" trap = abs(real(fij)-round(real(fij)))+abs(imag(fij)-trunc(imag(fij))) elseif @traptype == "Cf_plus" trap = (real(fij)-ceil(real(fij))+imag(fij)-floor(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Tr_plus" trap = (real(fij)-round(real(fij))+imag(fij)-trunc(imag(fij))) if trap < 0 trap = 1e+318 endif elseif @traptype == "Lemniscate" theta = atan(imag(fij)/real(fij)) rr = @pa*(cos(2*theta))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cardoid" theta = atan(imag(fij)/real(fij)) rr = @pa*(1-cos(theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Conchoid" theta = atan(imag(fij)/real(fij)) rr = 0.1*(@pa + @pb*cos(theta))/cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Cycloid" theta = atan(imag(fij)/real(fij)) rr = cabs(fij) trap = cabs(fij) - cabs(rr*(theta-sin(theta)) - flip(rr*(1-cos(theta)))) elseif @traptype == "Archimedes" theta = atan(imag(fij)/real(fij)) rr = @pa*theta trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Log spiral" theta = atan(imag(fij)/real(fij)) rr = exp(@pa*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Rose" theta = atan(imag(fij)/real(fij)) rr = @pa*cos(theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Ellipse Catacaustic" theta = atan(imag(fij)/real(fij)) af1 = 4*@pa*(@pa-@pb)*(@pa*@pb)*sin(theta)^3/(@pa^2+@pb^2+(@pb^2-@pa^2)*cos(2*theta)) af2 = 4*@pb*(@pb^2-@pa^2)*cos(theta)^3/(@pa^2+@pb^2+3*(@pb^2-@pa^2)*cos(2*theta)) astroid = 0.1*(af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Butterfly" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*(exp(sin(theta))-2*cos(4*theta)+sin(1/24*(2*theta-#pi))) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Gear" theta = atan(imag(fij)/real(fij)) af1 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*cos(theta) af2 = (0.25*@pa+1/(5*@pb)*tanh(5*@pb*sin(@pn*theta)))*sin(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Arachnida2" theta = atan(imag(fij)/real(fij)) rr = 0.25*@pa*sin(@pn*theta)/sin((@pn+1)*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Maltese cross" theta = atan(imag(fij)/real(fij)) rr = 0.2*@pa/(cos(theta)*sin(theta)*(cos(theta)^2-sin(theta)^2))^0.5 trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trifolium" theta = atan(imag(fij)/real(fij)) rr = -@pa*cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Serpentine" theta = atan(imag(fij)/real(fij)) af1 = 0.2*@pa*cotan(theta) af2 = 0.2*@pb*sin(theta)*cos(theta) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Trefoil" theta = atan(imag(fij)/real(fij)) rr = 0.1*@pa/cos(3*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Trisectrix of Maclaurin" theta = atan(imag(fij)/real(fij)) rr = 0.5*@pa*sin(3*theta)/sin(2*theta) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) elseif @traptype == "Atzema spiral" theta = atan(imag(fij)/real(fij)) af1 = 0.5*@pa*(sin(theta)/theta-2*cos(theta)-theta*sin(theta)) af2 = 0.05*@pb*(cos(theta)/theta-2*sin(theta)+theta*cos(theta)) astroid = (af1 + flip(af2)) trap = cabs(fij) - cabs(astroid) elseif @traptype == "Rose of Troy" theta = atan(imag(fij)/real(fij)) rr = @pc*(1+10*@pa*sin(4*@pb*theta)) trap = cabs(fij) -cabs(rr*cos(theta) + flip(rr*sin(theta))) endif trap = abs(trap) if trap < closest closest = trap trap_iter = k endif elseif @colormethod == "Orbit traps" trapz2 = fij trapz2 = (trapz2 - trapcenter2) * trapr if @tasp != 1.0 trapz2 = real(trapz2) + flip(imag(trapz2) * @tasp) ; apply aspect endif if @traptype2 == "Point" trapd = cabs(trapz2) elseif @traptype2 == "Ring" trapd = abs(cabs(trapz2)-@diameter) elseif @traptype2 == "Egg" trapd = (cabs(trapz2-flip(@diameter)*2)+cabs(trapz2)*@torder*0.5)*0.25 elseif @traptype2 == "Hyperbola" trapd = abs(imag(trapz2) * real(trapz2) - @diameter) elseif @traptype2 == "Hypercross" trapd = abs(imag(trapz2) * real(trapz2)) elseif @traptype2 == "Cross" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 < trapd trapd = trapd2 endif elseif @traptype2 == "Astroid" trapd = abs(real(trapz2))^@torder + abs(imag(trapz2))^@torder if @torder < 0 trapd = 1/trapd endif elseif @traptype2 == "Diamond" trapd = abs(real(trapz2)) + abs(imag(trapz2)) elseif @traptype2 == "Rectangle" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif elseif @traptype2 == "Box" trapd = abs(real(trapz2)) trapd2 = abs(imag(trapz2)) if trapd2 > trapd trapd = trapd2 endif trapd = abs(trapd - @diameter) elseif @traptype2 == "Lines" trapd = abs(abs(imag(trapz2)) - @diameter) elseif @traptype2 == "Waves" trapd = abs(abs(imag(trapz2) + sin(real(trapz2)*@tfreq)*@torder*0.25) - @diameter) elseif @traptype2 == "Mirrored waves" trapd = abs(abs(imag(trapz2)) - @diameter + sin(real(trapz2)*@tfreq)*@torder*0.25) elseif @traptype2 == "Radial waves" trapd2 = atan2(trapz2) trapd = abs(cabs(trapz2) * (1 - sin(trapd2*@tfreq)*@torder*0.125) - @diameter) elseif @traptype2 == "Pinch" trapd2 = atan2(trapz2) if trapd2 < 0 trapd2 = trapd2 + 2*#pi endif trapd = sqrt(cabs(trapz2))/abs(sin(trapd2*@torder*0.5)) elseif @traptype2 == "Spiral" trapd = 1/(cabs(trapz2))*@diameter r0 = (0,1)^trapd trapz2 = trapz2*r0 trapd = atan(abs(imag(trapz2)/real(trapz2))) elseif @traptype2 == "Heart" zh = real(trapz2)+flip(abs(imag(trapz2))) zh = zh*rh*3/@diameter trapd = abs(real(zh)-sqr(imag(zh))+3) endif trapd = abs(trapd) if trapd < closest closest = trapd trap_iter = k endif endif endwhile if |fij| > @bailout if @colormethod=="Exponential smoothing" frac[i,j] = expiter if expiter >mxi mxi = expiter endif elseif @colormethod=="Simple traps" || @colormethod=="Orbit traps" if @mask && !@rmask && closest > @threshold frac[i,j] = -1 endif if @rmask == true && closest <= @threshold frac[i,j] = -1 endif ez = cos(closest)+flip(sin(closest)) closest = abs(atan2(ez)/(#pi)) if frac[i,j] >= 0 if @color_mode == "Distance" frac[i,j] = closest else frac[i,j] = trap_iter endif endif if closest >mxi mxi = closest endif endif else frac[i,j] = 0 endif j = j + 1 k = 0 expiter = 0 closest = 1e318 endwhile i = i + 1 j = 0 endwhile endif endif i = 1 j = 0 k = 0 int finish = 0 int lev = 2 int iii = 9 float fx = 0.0 float ffx = 0.0 float xx = 0.0 float yy = 0 float fy = 0.0 float ffy = 0.0 float ffz = 0 float zz = 0 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float tzmax = tymax float zmin = xmin ; floor parameters float fa = @fa float fb = @fb float fc = @fc float fd = @fd*#width*asp ; Color range variables and initialization. color colorMap [500, 2] int ranges = 8 int colorsUsed = 0 int offset = 0 if (@colorPreset == "Gradient") colorsUsed = @ncolor elseif (@colorPreset == "Generate") colorsUsed = @numRanges elseif (@colorPreset == "Custom") colorsUsed = @colorRanges else colorsUsed = @ncolor endif if (@colorPreset == "Gradient") ; Use the gradient for the color ranges. ranges = @totalColors offset = 0 elseif (@colorPreset == "Custom") ; User specified custom range. ; Initial values by Toby Marshall. colorMap [0,0] = @colorMax1, colorMap [0,1] = @colorMin1 colorMap [1,0] = @colorMax2, colorMap [1,1] = @colorMin2 colorMap [2,0] = @colorMax3, colorMap [2,1] = @colorMin3 colorMap [3,0] = @colorMax4, colorMap [3,1] = @colorMin4 colorMap [4,0] = @colorMax5, colorMap [4,1] = @colorMin5 colorMap [5,0] = @colorMax6, colorMap [5,1] = @colorMin6 colorMap [6,0] = @colorMax7, colorMap [6,1] = @colorMin7 colorMap [7,0] = @colorMax8, colorMap [7,1] = @colorMin8 colorMap [8,0] = @customMax9, colorMap [8,1] = @customMin9 colorMap [9,0] = @customMax10, colorMap [9,1] = @customMin10 colorMap [10,0] = @customMax11, colorMap [10,1] = @customMin11 colorMap [11,0] = @customMax12, colorMap [11,1] = @customMin12 colorMap [12,0] = @customMax13, colorMap [12,1] = @customMin13 colorMap [13,0] = @customMax14, colorMap [13,1] = @customMin14 colorMap [14,0] = @customMax15, colorMap [14,1] = @customMin15 colorMap [15,0] = @customMax16, colorMap [15,1] = @customMin16 colorMap [16,0] = @customMax17, colorMap [16,1] = @customMin17 colorMap [17,0] = @customMax18, colorMap [17,1] = @customMin18 colorMap [18,0] = @customMax19, colorMap [18,1] = @customMin19 colorMap [19,0] = @customMax20, colorMap [19,1] = @customMin20 colorMap [20,0] = @customMax21, colorMap [20,1] = @customMin21 colorMap [21,0] = @customMax22, colorMap [21,1] = @customMin22 colorMap [22,0] = @customMax23, colorMap [22,1] = @customMin23 colorMap [23,0] = @customMax24, colorMap [23,1] = @customMin24 ranges = @colorRanges offset = @colorOffset elseif (@colorPreset == "Generate") ; Compute the color ranges using the gradient. ranges = 0 offset = @colorOffset while ranges < @numRanges color gradientColor = gradient(ranges/@numRanges) colorMap [ranges,0] = hsl(hue(gradientColor), sat(gradientColor), @luminanceUpper) colorMap [ranges,1] = hsl(hue(gradientColor), sat(gradientColor), @luminanceLower) ranges = ranges + 1 endwhile elseif (@colorPreset == "Default") ; colorMap [0,0] = @defaultMax1, colorMap [0,1] = @defaultMin1 colorMap [1,0] = @defaultMax2, colorMap [1,1] = @defaultMin2 colorMap [2,0] = @defaultMax3, colorMap [2,1] = @defaultMin3 colorMap [3,0] = @defaultMax4, colorMap [3,1] = @defaultMin4 colorMap [4,0] = @defaultMax5, colorMap [4,1] = @defaultMin5 colorMap [5,0] = @defaultMax6, colorMap [5,1] = @defaultMin6 colorMap [6,0] = @defaultMax7, colorMap [6,1] = @defaultMin7 colorMap [7,0] = @defaultMax8, colorMap [7,1] = @defaultMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Default 12") ; Created by Toby Marshall. colorMap [0,0] = @default12Max1, colorMap [0,1] = @default12Min1 colorMap [1,0] = @default12Max2, colorMap [1,1] = @default12Min2 colorMap [2,0] = @default12Max3, colorMap [2,1] = @default12Min3 colorMap [3,0] = @default12Max4, colorMap [3,1] = @default12Min4 colorMap [4,0] = @default12Max5, colorMap [4,1] = @default12Min5 colorMap [5,0] = @default12Max6, colorMap [5,1] = @default12Min6 colorMap [6,0] = @default12Max7, colorMap [6,1] = @default12Min7 colorMap [7,0] = @default12Max8, colorMap [7,1] = @default12Min8 colorMap [8,0] = @default12Max9, colorMap [8,1] = @default12Min9 colorMap [9,0] = @default12Max10, colorMap [9,1] = @default12Min10 colorMap [10,0] = @default12Max11, colorMap [10,1] = @default12Min11 colorMap [11,0] = @default12Max12, colorMap [11,1] = @default12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Default 16") ; Created by Toby Marshall. colorMap [0,0] = @default16Max1, colorMap [0,1] = @default16Min1 colorMap [1,0] = @default16Max2, colorMap [1,1] = @default16Min2 colorMap [2,0] = @default16Max3, colorMap [2,1] = @default16Min3 colorMap [3,0] = @default16Max4, colorMap [3,1] = @default16Min4 colorMap [4,0] = @default16Max5, colorMap [4,1] = @default16Min5 colorMap [5,0] = @default16Max6, colorMap [5,1] = @default16Min6 colorMap [6,0] = @default16Max7, colorMap [6,1] = @default16Min7 colorMap [7,0] = @default16Max8, colorMap [7,1] = @default16Min8 colorMap [8,0] = @default16Max9, colorMap [8,1] = @default16Min9 colorMap [9,0] = @default16Max10, colorMap [9,1] = @default16Min10 colorMap [10,0] = @default16Max11, colorMap [10,1] = @default16Min11 colorMap [11,0] = @default16Max12, colorMap [11,1] = @default16Min12 colorMap [12,0] = @default16Max13, colorMap [12,1] = @default16Min13 colorMap [13,0] = @default16Max14, colorMap [13,1] = @default16Min14 colorMap [14,0] = @default16Max15, colorMap [14,1] = @default16Min15 colorMap [15,0] = @default16Max16, colorMap [15,1] = @default16Min16 ranges = 16 offset = @colorOffset elseif (@colorPreset == "Default 24") ; Created by Toby Marshall. colorMap [0,0] = @default24Max1, colorMap [0,1] = @default24Min1 colorMap [1,0] = @default24Max2, colorMap [1,1] = @default24Min2 colorMap [2,0] = @default24Max3, colorMap [2,1] = @default24Min3 colorMap [3,0] = @default24Max4, colorMap [3,1] = @default24Min4 colorMap [4,0] = @default24Max5, colorMap [4,1] = @default24Min5 colorMap [5,0] = @default24Max6, colorMap [5,1] = @default24Min6 colorMap [6,0] = @default24Max7, colorMap [6,1] = @default24Min7 colorMap [7,0] = @default24Max8, colorMap [7,1] = @default24Min8 colorMap [8,0] = @default24Max9, colorMap [8,1] = @default24Min9 colorMap [9,0] = @default24Max10, colorMap [9,1] = @default24Min10 colorMap [10,0] = @default24Max11, colorMap [10,1] = @default24Min11 colorMap [11,0] = @default24Max12, colorMap [11,1] = @default24Min12 colorMap [12,0] = @default24Max13, colorMap [12,1] = @default24Min13 colorMap [13,0] = @default24Max14, colorMap [13,1] = @default24Min14 colorMap [14,0] = @default24Max15, colorMap [14,1] = @default24Min15 colorMap [15,0] = @default24Max16, colorMap [15,1] = @default24Min16 colorMap [16,0] = @default24Max17, colorMap [16,1] = @default24Min17 colorMap [17,0] = @default24Max18, colorMap [17,1] = @default24Min18 colorMap [18,0] = @default24Max19, colorMap [18,1] = @default24Min19 colorMap [19,0] = @default24Max20, colorMap [19,1] = @default24Min20 colorMap [20,0] = @default24Max21, colorMap [20,1] = @default24Min21 colorMap [21,0] = @default24Max22, colorMap [21,1] = @default24Min22 colorMap [22,0] = @default24Max23, colorMap [22,1] = @default24Min23 colorMap [23,0] = @default24Max24, colorMap [23,1] = @default24Min24 ranges = 24 offset = @colorOffset elseif (@colorPreset == "Color Wheel 12") ; Created by Toby Marshall. colorMap [0,0] = @colorWheel12Max1, colorMap [0,1] = @colorWheel12Min1 colorMap [1,0] = @colorWheel12Max2, colorMap [1,1] = @colorWheel12Min2 colorMap [2,0] = @colorWheel12Max3, colorMap [2,1] = @colorWheel12Min3 colorMap [3,0] = @colorWheel12Max4, colorMap [3,1] = @colorWheel12Min4 colorMap [4,0] = @colorWheel12Max5, colorMap [4,1] = @colorWheel12Min5 colorMap [5,0] = @colorWheel12Max6, colorMap [5,1] = @colorWheel12Min6 colorMap [6,0] = @colorWheel12Max7, colorMap [6,1] = @colorWheel12Min7 colorMap [7,0] = @colorWheel12Max8, colorMap [7,1] = @colorWheel12Min8 colorMap [8,0] = @colorWheel12Max9, colorMap [8,1] = @colorWheel12Min9 colorMap [9,0] = @colorWheel12Max10, colorMap [9,1] = @colorWheel12Min10 colorMap [10,0] = @colorWheel12Max11, colorMap [10,1] = @colorWheel12Min11 colorMap [11,0] = @colorWheel12Max12, colorMap [11,1] = @colorWheel12Min12 ranges = 12 offset = @colorOffset elseif (@colorPreset == "Alhambra 8") ; Created by Toby Marshall. colorMap [0,0] = @alhambra8Max1, colorMap [0,1] = @alhambra8Min1 colorMap [1,0] = @alhambra8Max2, colorMap [1,1] = @alhambra8Min2 colorMap [2,0] = @alhambra8Max3, colorMap [2,1] = @alhambra8Min3 colorMap [3,0] = @alhambra8Max4, colorMap [3,1] = @alhambra8Min4 colorMap [4,0] = @alhambra8Max5, colorMap [4,1] = @alhambra8Min5 colorMap [5,0] = @alhambra8Max6, colorMap [5,1] = @alhambra8Min6 colorMap [6,0] = @alhambra8Max7, colorMap [6,1] = @alhambra8Min7 colorMap [7,0] = @alhambra8Max8, colorMap [7,1] = @alhambra8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Belvedere 8") ; Created by Toby Marshall. colorMap [0,0] = @belvedere8Max1, colorMap [0,1] = @belvedere8Min1 colorMap [1,0] = @belvedere8Max2, colorMap [1,1] = @belvedere8Min2 colorMap [2,0] = @belvedere8Max3, colorMap [2,1] = @belvedere8Min3 colorMap [3,0] = @belvedere8Max4, colorMap [3,1] = @belvedere8Min4 colorMap [4,0] = @belvedere8Max5, colorMap [4,1] = @belvedere8Min5 colorMap [5,0] = @belvedere8Max6, colorMap [5,1] = @belvedere8Min6 colorMap [6,0] = @belvedere8Max7, colorMap [6,1] = @belvedere8Min7 colorMap [7,0] = @belvedere8Max8, colorMap [7,1] = @belvedere8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Bouquet 8") ; Created by Toby Marshall. colorMap [0,0] = @bouquet8Max1, colorMap [0,1] = @bouquet8Min1 colorMap [1,0] = @bouquet8Max2, colorMap [1,1] = @bouquet8Min2 colorMap [2,0] = @bouquet8Max3, colorMap [2,1] = @bouquet8Min3 colorMap [3,0] = @bouquet8Max4, colorMap [3,1] = @bouquet8Min4 colorMap [4,0] = @bouquet8Max5, colorMap [4,1] = @bouquet8Min5 colorMap [5,0] = @bouquet8Max6, colorMap [5,1] = @bouquet8Min6 colorMap [6,0] = @bouquet8Max7, colorMap [6,1] = @bouquet8Min7 colorMap [7,0] = @bouquet8Max8, colorMap [7,1] = @bouquet8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Color Switch 8") ; Created by Toby Marshall. colorMap [0,0] = @colorSwitch8Max1, colorMap [0,1] = @colorSwitch8Min1 colorMap [1,0] = @colorSwitch8Max2, colorMap [1,1] = @colorSwitch8Min2 colorMap [2,0] = @colorSwitch8Max3, colorMap [2,1] = @colorSwitch8Min3 colorMap [3,0] = @colorSwitch8Max4, colorMap [3,1] = @colorSwitch8Min4 colorMap [4,0] = @colorSwitch8Max5, colorMap [4,1] = @colorSwitch8Min5 colorMap [5,0] = @colorSwitch8Max6, colorMap [5,1] = @colorSwitch8Min6 colorMap [6,0] = @colorSwitch8Max7, colorMap [6,1] = @colorSwitch8Min7 colorMap [7,0] = @colorSwitch8Max8, colorMap [7,1] = @colorSwitch8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Evening Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @eveningSky8Max1, colorMap [0,1] = @eveningSky8Min1 colorMap [1,0] = @eveningSky8Max2, colorMap [1,1] = @eveningSky8Min2 colorMap [2,0] = @eveningSky8Max3, colorMap [2,1] = @eveningSky8Min3 colorMap [3,0] = @eveningSky8Max4, colorMap [3,1] = @eveningSky8Min4 colorMap [4,0] = @eveningSky8Max5, colorMap [4,1] = @eveningSky8Min5 colorMap [5,0] = @eveningSky8Max6, colorMap [5,1] = @eveningSky8Min6 colorMap [6,0] = @eveningSky8Max7, colorMap [6,1] = @eveningSky8Min7 colorMap [7,0] = @eveningSky8Max8, colorMap [7,1] = @eveningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fantasia 8") ; Created by Toby Marshall. colorMap [0,0] = @fantasia8Max1, colorMap [0,1] = @fantasia8Min1 colorMap [1,0] = @fantasia8Max2, colorMap [1,1] = @fantasia8Min2 colorMap [2,0] = @fantasia8Max3, colorMap [2,1] = @fantasia8Min3 colorMap [3,0] = @fantasia8Max4, colorMap [3,1] = @fantasia8Min4 colorMap [4,0] = @fantasia8Max5, colorMap [4,1] = @fantasia8Min5 colorMap [5,0] = @fantasia8Max6, colorMap [5,1] = @fantasia8Min6 colorMap [6,0] = @fantasia8Max7, colorMap [6,1] = @fantasia8Min7 colorMap [7,0] = @fantasia8Max8, colorMap [7,1] = @fantasia8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Flowering Orchard 8") ; Created by Toby Marshall. colorMap [0,0] = @floweringOrchard8Max1, colorMap [0,1] = @floweringOrchard8Min1 colorMap [1,0] = @floweringOrchard8Max2, colorMap [1,1] = @floweringOrchard8Min2 colorMap [2,0] = @floweringOrchard8Max3, colorMap [2,1] = @floweringOrchard8Min3 colorMap [3,0] = @floweringOrchard8Max4, colorMap [3,1] = @floweringOrchard8Min4 colorMap [4,0] = @floweringOrchard8Max5, colorMap [4,1] = @floweringOrchard8Min5 colorMap [5,0] = @floweringOrchard8Max6, colorMap [5,1] = @floweringOrchard8Min6 colorMap [6,0] = @floweringOrchard8Max7, colorMap [6,1] = @floweringOrchard8Min7 colorMap [7,0] = @floweringOrchard8Max8, colorMap [7,1] = @floweringOrchard8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Morning Sky 8") ; Created by Toby Marshall. colorMap [0,0] = @morningSky8Max1, colorMap [0,1] = @morningSky8Min1 colorMap [1,0] = @morningSky8Max2, colorMap [1,1] = @morningSky8Min2 colorMap [2,0] = @morningSky8Max3, colorMap [2,1] = @morningSky8Min3 colorMap [3,0] = @morningSky8Max4, colorMap [3,1] = @morningSky8Min4 colorMap [4,0] = @morningSky8Max5, colorMap [4,1] = @morningSky8Min5 colorMap [5,0] = @morningSky8Max6, colorMap [5,1] = @morningSky8Min6 colorMap [6,0] = @morningSky8Max7, colorMap [6,1] = @morningSky8Min7 colorMap [7,0] = @morningSky8Max8, colorMap [7,1] = @morningSky8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel 8") ; colorMap [0,0] = @pastel8Max1, colorMap [0,1] = @pastel8Min1 colorMap [1,0] = @pastel8Max2, colorMap [1,1] = @pastel8Min2 colorMap [2,0] = @pastel8Max3, colorMap [2,1] = @pastel8Min3 colorMap [3,0] = @pastel8Max4, colorMap [3,1] = @pastel8Min4 colorMap [4,0] = @pastel8Max5, colorMap [4,1] = @pastel8Min5 colorMap [5,0] = @pastel8Max6, colorMap [5,1] = @pastel8Min6 colorMap [6,0] = @pastel8Max7, colorMap [6,1] = @pastel8Min7 colorMap [7,0] = @pastel8Max8, colorMap [7,1] = @pastel8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Pastel Rainbow 8") ; Created by Angela Wilczynski. colorMap [0,0] = @pastelRainbow8Max1, colorMap [0,1] = @pastelRainbow8Min1 colorMap [1,0] = @pastelRainbow8Max2, colorMap [1,1] = @pastelRainbow8Min2 colorMap [2,0] = @pastelRainbow8Max3, colorMap [2,1] = @pastelRainbow8Min3 colorMap [3,0] = @pastelRainbow8Max4, colorMap [3,1] = @pastelRainbow8Min4 colorMap [4,0] = @pastelRainbow8Max5, colorMap [4,1] = @pastelRainbow8Min5 colorMap [5,0] = @pastelRainbow8Max6, colorMap [5,1] = @pastelRainbow8Min6 colorMap [6,0] = @pastelRainbow8Max7, colorMap [6,1] = @pastelRainbow8Min7 colorMap [7,0] = @pastelRainbow8Max8, colorMap [7,1] = @pastelRainbow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Showtime 8") ; Created by Toby Marshall. colorMap [0,0] = @showtime8Max1, colorMap [0,1] = @showtime8Min1 colorMap [1,0] = @showtime8Max2, colorMap [1,1] = @showtime8Min2 colorMap [2,0] = @showtime8Max3, colorMap [2,1] = @showtime8Min3 colorMap [3,0] = @showtime8Max4, colorMap [3,1] = @showtime8Min4 colorMap [4,0] = @showtime8Max5, colorMap [4,1] = @showtime8Min5 colorMap [5,0] = @showtime8Max6, colorMap [5,1] = @showtime8Min6 colorMap [6,0] = @showtime8Max7, colorMap [6,1] = @showtime8Min7 colorMap [7,0] = @showtime8Max8, colorMap [7,1] = @showtime8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Soleil 8") ; Created by Toby Marshall. colorMap [0,0] = @soleil8Max1, colorMap [0,1] = @soleil8Min1 colorMap [1,0] = @soleil8Max2, colorMap [1,1] = @soleil8Min2 colorMap [2,0] = @soleil8Max3, colorMap [2,1] = @soleil8Min3 colorMap [3,0] = @soleil8Max4, colorMap [3,1] = @soleil8Min4 colorMap [4,0] = @soleil8Max5, colorMap [4,1] = @soleil8Min5 colorMap [5,0] = @soleil8Max6, colorMap [5,1] = @soleil8Min6 colorMap [6,0] = @soleil8Max7, colorMap [6,1] = @soleil8Min7 colorMap [7,0] = @soleil8Max8, colorMap [7,1] = @soleil8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Chill 8") ; Created by Toby Marshall. colorMap [0,0] = @chillMax1, colorMap [0,1] = @chillMin1 colorMap [1,0] = @chillMax2, colorMap [1,1] = @chillMin2 colorMap [2,0] = @chillMax3, colorMap [2,1] = @chillMin3 colorMap [3,0] = @chillMax4, colorMap [3,1] = @chillMin4 colorMap [4,0] = @chillMax5, colorMap [4,1] = @chillMin5 colorMap [5,0] = @chillMax6, colorMap [5,1] = @chillMin6 colorMap [6,0] = @chillMax7, colorMap [6,1] = @chillMin7 colorMap [7,0] = @chillMax8, colorMap [7,1] = @chillMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Cloud Nine 8") ; Created by Toby Marshall. colorMap [0,0] = @cloudNineMax1, colorMap [0,1] = @cloudNineMin1 colorMap [1,0] = @cloudNineMax2, colorMap [1,1] = @cloudNineMin2 colorMap [2,0] = @cloudNineMax3, colorMap [2,1] = @cloudNineMin3 colorMap [3,0] = @cloudNineMax4, colorMap [3,1] = @cloudNineMin4 colorMap [4,0] = @cloudNineMax5, colorMap [4,1] = @cloudNineMin5 colorMap [5,0] = @cloudNineMax6, colorMap [5,1] = @cloudNineMin6 colorMap [6,0] = @cloudNineMax7, colorMap [6,1] = @cloudNineMin7 colorMap [7,0] = @cloudNineMax8, colorMap [7,1] = @cloudNineMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "La Terra 8") ; Created by Toby Marshall. colorMap [0,0] = @laTerraMax1, colorMap [0,1] = @laTerraMin1 colorMap [1,0] = @laTerraMax2, colorMap [1,1] = @laTerraMin2 colorMap [2,0] = @laTerraMax3, colorMap [2,1] = @laTerraMin3 colorMap [3,0] = @laTerraMax4, colorMap [3,1] = @laTerraMin4 colorMap [4,0] = @laTerraMax5, colorMap [4,1] = @laTerraMin5 colorMap [5,0] = @laTerraMax6, colorMap [5,1] = @laTerraMin6 colorMap [6,0] = @laTerraMax7, colorMap [6,1] = @laTerraMin7 colorMap [7,0] = @laTerraMax8, colorMap [7,1] = @laTerraMin8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Santa Fe 8") ; Created by Toby Marshall. colorMap [0,0] = @santaFe8Max1, colorMap [0,1] = @santaFe8Min1 colorMap [1,0] = @santaFe8Max2, colorMap [1,1] = @santaFe8Min2 colorMap [2,0] = @santaFe8Max3, colorMap [2,1] = @santaFe8Min3 colorMap [3,0] = @santaFe8Max4, colorMap [3,1] = @santaFe8Min4 colorMap [4,0] = @santaFe8Max5, colorMap [4,1] = @santaFe8Min5 colorMap [5,0] = @santaFe8Max6, colorMap [5,1] = @santaFe8Min6 colorMap [6,0] = @santaFe8Max7, colorMap [6,1] = @santaFe8Min7 colorMap [7,0] = @santaFe8Max8, colorMap [7,1] = @santaFe8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Spring 8") ; Created by Toby Marshall. colorMap [0,0] = @spring8Max1, colorMap [0,1] = @spring8Min1 colorMap [1,0] = @spring8Max2, colorMap [1,1] = @spring8Min2 colorMap [2,0] = @spring8Max3, colorMap [2,1] = @spring8Min3 colorMap [3,0] = @spring8Max4, colorMap [3,1] = @spring8Min4 colorMap [4,0] = @spring8Max5, colorMap [4,1] = @spring8Min5 colorMap [5,0] = @spring8Max6, colorMap [5,1] = @spring8Min6 colorMap [6,0] = @spring8Max7, colorMap [6,1] = @spring8Min7 colorMap [7,0] = @spring8Max8, colorMap [7,1] = @spring8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Summer 8") ; Created by Toby Marshall. colorMap [0,0] = @summer8Max1, colorMap [0,1] = @summer8Min1 colorMap [1,0] = @summer8Max2, colorMap [1,1] = @summer8Min2 colorMap [2,0] = @summer8Max3, colorMap [2,1] = @summer8Min3 colorMap [3,0] = @summer8Max4, colorMap [3,1] = @summer8Min4 colorMap [4,0] = @summer8Max5, colorMap [4,1] = @summer8Min5 colorMap [5,0] = @summer8Max6, colorMap [5,1] = @summer8Min6 colorMap [6,0] = @summer8Max7, colorMap [6,1] = @summer8Min7 colorMap [7,0] = @summer8Max8, colorMap [7,1] = @summer8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fall 8") ; Created by Toby Marshall. colorMap [0,0] = @fall8Max1, colorMap [0,1] = @fall8Min1 colorMap [1,0] = @fall8Max2, colorMap [1,1] = @fall8Min2 colorMap [2,0] = @fall8Max3, colorMap [2,1] = @fall8Min3 colorMap [3,0] = @fall8Max4, colorMap [3,1] = @fall8Min4 colorMap [4,0] = @fall8Max5, colorMap [4,1] = @fall8Min5 colorMap [5,0] = @fall8Max6, colorMap [5,1] = @fall8Min6 colorMap [6,0] = @fall8Max7, colorMap [6,1] = @fall8Min7 colorMap [7,0] = @fall8Max8, colorMap [7,1] = @fall8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Winter 8") ; Created by Toby Marshall. colorMap [0,0] = @winter8Max1, colorMap [0,1] = @winter8Min1 colorMap [1,0] = @winter8Max2, colorMap [1,1] = @winter8Min2 colorMap [2,0] = @winter8Max3, colorMap [2,1] = @winter8Min3 colorMap [3,0] = @winter8Max4, colorMap [3,1] = @winter8Min4 colorMap [4,0] = @winter8Max5, colorMap [4,1] = @winter8Min5 colorMap [5,0] = @winter8Max6, colorMap [5,1] = @winter8Min6 colorMap [6,0] = @winter8Max7, colorMap [6,1] = @winter8Min7 colorMap [7,0] = @winter8Max8, colorMap [7,1] = @winter8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Mojave 8") ; Created by Toby Marshall. colorMap [0,0] = @mojave8Max1, colorMap [0,1] = @mojave8Min1 colorMap [1,0] = @mojave8Max2, colorMap [1,1] = @mojave8Min2 colorMap [2,0] = @mojave8Max3, colorMap [2,1] = @mojave8Min3 colorMap [3,0] = @mojave8Max4, colorMap [3,1] = @mojave8Min4 colorMap [4,0] = @mojave8Max5, colorMap [4,1] = @mojave8Min5 colorMap [5,0] = @mojave8Max6, colorMap [5,1] = @mojave8Min6 colorMap [6,0] = @mojave8Max7, colorMap [6,1] = @mojave8Min7 colorMap [7,0] = @mojave8Max8, colorMap [7,1] = @mojave8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green 8") ; colorMap [0,0] = @goldGreen8Max1, colorMap [0,1] = @goldGreen8Min1 colorMap [1,0] = @goldGreen8Max2, colorMap [1,1] = @goldGreen8Min2 colorMap [2,0] = @goldGreen8Max3, colorMap [2,1] = @goldGreen8Min3 colorMap [3,0] = @goldGreen8Max4, colorMap [3,1] = @goldGreen8Min4 colorMap [4,0] = @goldGreen8Max5, colorMap [4,1] = @goldGreen8Min5 colorMap [5,0] = @goldGreen8Max6, colorMap [5,1] = @goldGreen8Min6 colorMap [6,0] = @goldGreen8Max7, colorMap [6,1] = @goldGreen8Min7 colorMap [7,0] = @goldGreen8Max8, colorMap [7,1] = @goldGreen8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Green Alt 8") ; colorMap [0,0] = @goldGreenAlt8Max1, colorMap [0,1] = @goldGreenAlt8Min1 colorMap [1,0] = @goldGreenAlt8Max2, colorMap [1,1] = @goldGreenAlt8Min2 colorMap [2,0] = @goldGreenAlt8Max3, colorMap [2,1] = @goldGreenAlt8Min3 colorMap [3,0] = @goldGreenAlt8Max4, colorMap [3,1] = @goldGreenAlt8Min4 colorMap [4,0] = @goldGreenAlt8Max5, colorMap [4,1] = @goldGreenAlt8Min5 colorMap [5,0] = @goldGreenAlt8Max6, colorMap [5,1] = @goldGreenAlt8Min6 colorMap [6,0] = @goldGreenAlt8Max7, colorMap [6,1] = @goldGreenAlt8Min7 colorMap [7,0] = @goldGreenAlt8Max8, colorMap [7,1] = @goldGreenAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver 8") ; colorMap [0,0] = @goldSilver8Max1, colorMap [0,1] = @goldSilver8Min1 colorMap [1,0] = @goldSilver8Max2, colorMap [1,1] = @goldSilver8Min2 colorMap [2,0] = @goldSilver8Max3, colorMap [2,1] = @goldSilver8Min3 colorMap [3,0] = @goldSilver8Max4, colorMap [3,1] = @goldSilver8Min4 colorMap [4,0] = @goldSilver8Max5, colorMap [4,1] = @goldSilver8Min5 colorMap [5,0] = @goldSilver8Max6, colorMap [5,1] = @goldSilver8Min6 colorMap [6,0] = @goldSilver8Max7, colorMap [6,1] = @goldSilver8Min7 colorMap [7,0] = @goldSilver8Max8, colorMap [7,1] = @goldSilver8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue 8") ; colorMap [0,0] = @silverBlue8Max1, colorMap [0,1] = @silverBlue8Min1 colorMap [1,0] = @silverBlue8Max2, colorMap [1,1] = @silverBlue8Min2 colorMap [2,0] = @silverBlue8Max3, colorMap [2,1] = @silverBlue8Min3 colorMap [3,0] = @silverBlue8Max4, colorMap [3,1] = @silverBlue8Min4 colorMap [4,0] = @silverBlue8Max5, colorMap [4,1] = @silverBlue8Min5 colorMap [5,0] = @silverBlue8Max6, colorMap [5,1] = @silverBlue8Min6 colorMap [6,0] = @silverBlue8Max7, colorMap [6,1] = @silverBlue8Min7 colorMap [7,0] = @silverBlue8Max8, colorMap [7,1] = @silverBlue8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Silver/Blue Alt 8") ; colorMap [0,0] = @silverBlueAlt8Max1, colorMap [0,1] = @silverBlueAlt8Min1 colorMap [1,0] = @silverBlueAlt8Max2, colorMap [1,1] = @silverBlueAlt8Min2 colorMap [2,0] = @silverBlueAlt8Max3, colorMap [2,1] = @silverBlueAlt8Min3 colorMap [3,0] = @silverBlueAlt8Max4, colorMap [3,1] = @silverBlueAlt8Min4 colorMap [4,0] = @silverBlueAlt8Max5, colorMap [4,1] = @silverBlueAlt8Min5 colorMap [5,0] = @silverBlueAlt8Max6, colorMap [5,1] = @silverBlueAlt8Min6 colorMap [6,0] = @silverBlueAlt8Max7, colorMap [6,1] = @silverBlueAlt8Min7 colorMap [7,0] = @silverBlueAlt8Max8, colorMap [7,1] = @silverBlueAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Gold/Silver Alt 8") ; colorMap [0,0] = @goldSilverAlt8Max1, colorMap [0,1] = @goldSilverAlt8Min1 colorMap [1,0] = @goldSilverAlt8Max2, colorMap [1,1] = @goldSilverAlt8Min2 colorMap [2,0] = @goldSilverAlt8Max3, colorMap [2,1] = @goldSilverAlt8Min3 colorMap [3,0] = @goldSilverAlt8Max4, colorMap [3,1] = @goldSilverAlt8Min4 colorMap [4,0] = @goldSilverAlt8Max5, colorMap [4,1] = @goldSilverAlt8Min5 colorMap [5,0] = @goldSilverAlt8Max6, colorMap [5,1] = @goldSilverAlt8Min6 colorMap [6,0] = @goldSilverAlt8Max7, colorMap [6,1] = @goldSilverAlt8Min7 colorMap [7,0] = @goldSilverAlt8Max8, colorMap [7,1] = @goldSilverAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 8") ; colorMap [0,0] = @purpleYellow8Max1, colorMap [0,1] = @purpleYellow8Min1 colorMap [1,0] = @purpleYellow8Max2, colorMap [1,1] = @purpleYellow8Min2 colorMap [2,0] = @purpleYellow8Max3, colorMap [2,1] = @purpleYellow8Min3 colorMap [3,0] = @purpleYellow8Max4, colorMap [3,1] = @purpleYellow8Min4 colorMap [4,0] = @purpleYellow8Max5, colorMap [4,1] = @purpleYellow8Min5 colorMap [5,0] = @purpleYellow8Max6, colorMap [5,1] = @purpleYellow8Min6 colorMap [6,0] = @purpleYellow8Max7, colorMap [6,1] = @purpleYellow8Min7 colorMap [7,0] = @purpleYellow8Max8, colorMap [7,1] = @purpleYellow8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow Alt 8") ; colorMap [0,0] = @purpleYellowAlt8Max1, colorMap [0,1] = @purpleYellowAlt8Min1 colorMap [1,0] = @purpleYellowAlt8Max2, colorMap [1,1] = @purpleYellowAlt8Min2 colorMap [2,0] = @purpleYellowAlt8Max3, colorMap [2,1] = @purpleYellowAlt8Min3 colorMap [3,0] = @purpleYellowAlt8Max4, colorMap [3,1] = @purpleYellowAlt8Min4 colorMap [4,0] = @purpleYellowAlt8Max5, colorMap [4,1] = @purpleYellowAlt8Min5 colorMap [5,0] = @purpleYellowAlt8Max6, colorMap [5,1] = @purpleYellowAlt8Min6 colorMap [6,0] = @purpleYellowAlt8Max7, colorMap [6,1] = @purpleYellowAlt8Min7 colorMap [7,0] = @purpleYellowAlt8Max8, colorMap [7,1] = @purpleYellowAlt8Min8 ranges = 8 offset = @colorOffset elseif (@colorPreset == "Fourth of July 3") ; colorMap [0,0] = @fourthOfJuly3Max1, colorMap [0,1] = @fourthOfJuly3Min1 colorMap [1,0] = @fourthOfJuly3Max2, colorMap [1,1] = @fourthOfJuly3Min2 colorMap [2,0] = @fourthOfJuly3Max3, colorMap [2,1] = @fourthOfJuly3Min3 ranges = 3 offset = @colorOffset elseif (@colorPreset == "Blue/Silver 2") ; colorMap [0,0] = @blueSilver2Max1, colorMap [0,1] = @blueSilver2Min1 colorMap [1,0] = @blueSilver2Max2, colorMap [1,1] = @blueSilver2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Blue/White 2") ; colorMap [0,0] = @blueWhite2Max1, colorMap [0,1] = @blueWhite2Min1 colorMap [1,0] = @blueWhite2Max2, colorMap [1,1] = @blueWhite2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Magenta 2") ; colorMap [0,0] = @cyanMagenta2Max1, colorMap [0,1] = @cyanMagenta2Min1 colorMap [1,0] = @cyanMagenta2Max2, colorMap [1,1] = @cyanMagenta2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Cyan/Yellow 2") ; colorMap [0,0] = @cyanYellow2Max1, colorMap [0,1] = @cyanYellow2Min1 colorMap [1,0] = @cyanYellow2Max2, colorMap [1,1] = @cyanYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Gold/Green 2") ; colorMap [0,0] = @goldGreen2Max1, colorMap [0,1] = @goldGreen2Min1 colorMap [1,0] = @goldGreen2Max2, colorMap [1,1] = @goldGreen2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Purple/Yellow 2") ; colorMap [0,0] = @purpleYellow2Max1, colorMap [0,1] = @purpleYellow2Min1 colorMap [1,0] = @purpleYellow2Max2, colorMap [1,1] = @purpleYellow2Min2 ranges = 2 offset = @colorOffset elseif (@colorPreset == "Red/Tan 2") ; colorMap [0,0] = @redTan2Max1, colorMap [0,1] = @redTan2Min1 colorMap [1,0] = @redTan2Max2, colorMap [1,1] = @redTan2Min2 ranges = 2 offset = @colorOffset endif if (@perturbRanges == "8 Range Custom" && ranges == 8) ; If we are using 8 ranges, then take into account ; the rangeOrdering parameter. int range[8] ; Convert range ordering from 12345678 to .12345678 float ordering = @rangeOrder / 100000000 ; Convert .12345678 to 1.2345678 ordering = ordering * 10 ; Get the first digit int range[0] = trunc (ordering) ; Subract the first digit, i.e. 1.2345678 becomes .2345678 ordering = ordering - range[0] ; Get the second digit ordering = ordering * 10 int range[1] = trunc (ordering) ordering = ordering - range[1] ; Get the third digit ordering = ordering * 10 int range[2] = trunc (ordering) ordering = ordering - range[2] ; Get the fourth digit ordering = ordering * 10 int range[3] = trunc (ordering) ordering = ordering - range[3] ; Get the fifth digit ordering = ordering * 10 int range[4] = trunc (ordering) ordering = ordering - range[4] ; Get the sixth digit ordering = ordering * 10 int range[5] = trunc (ordering) ordering = ordering - range[5] ; Get the seventh digit ordering = ordering * 10 int range[6] = trunc (ordering) ordering = ordering - range[6] ; Get the eighth digit ordering = ordering * 10 int range[7] = round (ordering) ordering = ordering - range[7] ; Save the original order of the maps. color tempMap[8,2] tempMap[0,0] = colorMap[0,0], tempMap[0,1] = colorMap[0,1] tempMap[1,0] = colorMap[1,0], tempMap[1,1] = colorMap[1,1] tempMap[2,0] = colorMap[2,0], tempMap[2,1] = colorMap[2,1] tempMap[3,0] = colorMap[3,0], tempMap[3,1] = colorMap[3,1] tempMap[4,0] = colorMap[4,0], tempMap[4,1] = colorMap[4,1] tempMap[5,0] = colorMap[5,0], tempMap[5,1] = colorMap[5,1] tempMap[6,0] = colorMap[6,0], tempMap[6,1] = colorMap[6,1] tempMap[7,0] = colorMap[7,0], tempMap[7,1] = colorMap[7,1] ; Reorder the maps according to the rangeOrder parameter. colorMap[0,0] = tempMap[range[0]-1,0], colorMap[0,1] = tempMap[range[0]-1,1] colorMap[1,0] = tempMap[range[1]-1,0], colorMap[1,1] = tempMap[range[1]-1,1] colorMap[2,0] = tempMap[range[2]-1,0], colorMap[2,1] = tempMap[range[2]-1,1] colorMap[3,0] = tempMap[range[3]-1,0], colorMap[3,1] = tempMap[range[3]-1,1] colorMap[4,0] = tempMap[range[4]-1,0], colorMap[4,1] = tempMap[range[4]-1,1] colorMap[5,0] = tempMap[range[5]-1,0], colorMap[5,1] = tempMap[range[5]-1,1] colorMap[6,0] = tempMap[range[6]-1,0], colorMap[6,1] = tempMap[range[6]-1,1] colorMap[7,0] = tempMap[range[7]-1,0], colorMap[7,1] = tempMap[range[7]-1,1] endif ; ; put inversion set and base set here if @basesolid == "tetrahedron" ; base set cs[6] = (1,1) csz[6] = 1 cs[7] = (-1,-1) csz[7] = 1 cs[8] = (-1,1) csz[8] = -1 cs[9] = (1,-1) csz[9] = -1 baserad = sqrt(2) rad[6] = baserad rad[7] = rad[6] rad[8] = rad[6] rad[9] = rad[6] cs[10] = (0,0) csz[10] = 0 rad[10] = (sqrt(2)+sqrt(3)) circumrad = rad[10] ; inversion set cs[1] = scle*(-1,-1) csz[1] = -scle cs[2] = scle*(1,1) csz[2] = -scle cs[3] = scle*(1,-1) csz[3] = scle cs[4] = scle*(-1,1) csz[4] = scle rad[1] = (scle-1)*(200/(100+@scle2)) rad[2] = rad[1] rad[3] = rad[1] rad[4] = rad[1] cs[5] = (0,0) csz[5] = 0 rad[5] = 1 elseif @basesolid == "cube" ; base set cs[8] = (1,1) csz[8] = 1 cs[9] = (-1,1) csz[9] = 1 cs[10] = (1,-1) csz[10] = 1 cs[11] = (1,1) csz[11] = -1 cs[12] = (-1,-1) csz[12] = 1 cs[13] = (-1,1) csz[13] = -1 cs[14] = (1,-1) csz[14] = -1 cs[15] = (-1,-1) csz[15] = -1 baserad = 1 rad[8] = baserad rad[9] = rad[8] rad[10] = rad[8] rad[11] = rad[8] rad[12] = rad[8] rad[13] = rad[8] rad[14] = rad[8] rad[15] = rad[8] cs[16] = (0,0) csz[16] = 0 rad[16] = 1+sqrt(3) circumrad = rad[16] ; inversion set cs[1] = (1,0)*scle csz[1] = 0 cs[2] = (0,1)*scle csz[2] = 0 cs[3] = (0,0)*scle csz[3] = scle cs[4] = (-1,0)*scle csz[4] = 0 cs[5] = (0,-1)*scle csz[5] = 0 cs[6] = (0,0)*scle csz[6] = -scle rad[1] = (sqrt(6)+sqrt(2))*(100/(100+@scle2)) rad[2] = rad[1] rad[3] = rad[1] rad[4] = rad[1] rad[5] = rad[1] rad[6] = rad[1] cs[7] = (0,0) csz[7] = 0 rad[7] = sqrt(2) elseif @basesolid == "octahedron" ; base set cs[10] = (1,0) csz[10] = 0 cs[11] = (0,1) csz[11] = 0 cs[12] = (0,0) csz[12] = 1 cs[13] = (-1,0) csz[13] = 0 cs[14] = (0,-1) csz[14] = 0 cs[15] = (0,0) csz[15] = -1 baserad = sqrt(2)/2 rad[10] = baserad rad[11] = rad[10] rad[12] = rad[10] rad[13] = rad[10] rad[14] = rad[10] rad[15] = rad[10] cs[16] = (0,0) csz[16] = 0 rad[16] = 1+sqrt(2)/2 ; inversion set cs[1] = (1,1)*scle csz[1] = scle cs[2] = (-1,1)*scle csz[2] = scle cs[3] = (1,-1)*scle csz[3] = scle cs[4] = (1,1)*scle csz[4] = -scle cs[5] = (-1,-1)*scle csz[5] = scle cs[6] = (-1,1)*scle csz[6] = -scle cs[7] = (1,-1)*scle csz[7] = -scle cs[8] = (-1,-1)*scle csz[8] = -scle rad[1] = (1+sqrt(2))*(100/(100+@scle2)) rad[2] = rad[1] rad[3] = rad[1] rad[4] = rad[1] rad[5] = rad[1] rad[6] = rad[1] rad[7] = rad[1] rad[8] = rad[1] cs[9] = (0,0) csz[9] = 0 rad[9] = sqrt(2)/2 elseif @basesolid == "dodecahedron" ; base set cs[14] = (1,1) csz[14] = 1 cs[15] = (-1,1) csz[15] = 1 cs[16] = (1,-1) csz[16] = 1 cs[17] = (1,1) csz[17] = -1 cs[18] = (-1,-1) csz[18] = 1 cs[19] = (-1,1) csz[19] = -1 cs[20] = (1,-1) csz[20] = -1 cs[21] = (-1,-1) csz[21] = -1 cs[22] = flip(ip) csz[22] = p cs[23] = -flip(ip) csz[23] = p cs[24] = flip(ip) csz[24] = -p cs[25] = -flip(ip) csz[25] = -p cs[26] = (ip+flip(p)) csz[26] = 0 cs[27] = (-ip+flip(p)) csz[27] = 0 cs[28] = (ip-flip(p)) csz[28] = 0 cs[29] = (-ip-flip(p)) csz[29] = -0 cs[30] = p csz[30] = ip cs[31] = -p csz[31] = ip cs[32] = p csz[32] = -ip cs[33] = -p csz[33] = -ip baserad = p-1 rad[14] = baserad rad[15] = rad[14] rad[16] = rad[14] rad[17] = rad[14] rad[18] = rad[14] rad[19] = rad[14] rad[20] = rad[14] rad[21] = rad[14] rad[22] = rad[14] rad[23] = rad[14] rad[24] = rad[14] rad[25] = rad[14] rad[26] = rad[14] rad[27] = rad[14] rad[28] = rad[14] rad[29] = rad[14] rad[30] = rad[14] rad[31] = rad[14] rad[32] = rad[14] rad[33] = rad[14] cs[34] = (0,0) csz[34] = 0 circumrad = sqrt(3)+p-1 rad[34] = circumrad ; inversion set cs[1] = (1,0)*scle csz[1] = p*scle cs[2] = (1,0)*scle csz[2] = -p*scle cs[3] = (-1,0)*scle csz[3] = p*scle cs[4] = (-1,0)*scle csz[4] = -p*scle cs[5] = flip(p)*scle csz[5] = scle cs[6] = flip(p)*scle csz[6] = -scle cs[7] = -flip(p)*scle csz[7] = scle cs[8] = -flip(p)*scle csz[8] = -scle cs[9] = (p+flip(1))*scle csz[9] = 0 cs[10] = (p-flip(1))*scle csz[10] = 0 cs[11] = (-p+flip(1))*scle csz[11] = 0 cs[12] = (-p-flip(1))*scle csz[12] = 0 rad[1] = scle*2*sqrt(3)/3*(100/(100+@scle2)) rad[2] = rad[1] rad[3] = rad[1] rad[4] = rad[1] rad[5] = rad[1] rad[6] = rad[1] rad[7] = rad[1] rad[8] = rad[1] rad[9] = rad[1] rad[10] = rad[1] rad[11] = rad[1] rad[12] = rad[1] cs[13] = (0,0) csz[13] = 0 rad[13] = p endif lev = 0 if @basesolid == "tetrahedron" j = 6 jnumber = j-1 jfinal = 10 elseif @basesolid == "cube" j = 8 jnumber = j - 1 jfinal = 16 elseif @basesolid == "octahedron" j = 10 jnumber = j - 1 jfinal = 16 elseif @basesolid == "dodecahedron" j = 14 jnumber = j - 1 jfinal = 34 endif while j <= jfinal if @method == 0 clr[j] = lev elseif @method == 1 clr[j] = sqrt(2)/abs(rad[j])^@adj+0.01 elseif @method == 2 clr[j] = j^@adj+0.01 elseif @method == 3 clr[j] = sqrt(|cs[j]*2|+csz[j]^2)^@adj+0.01 elseif @method == 4 clr[j] = j-jnumber elseif @method == 5 if abs(rad[j])< @rthresh clr[j] = 2 else clr[j] = 1 endif endif j = j + 1 endwhile ; Traverse the levels int startbase = 0 if @basesolid == "tetrahedron" iii = 6 startbase = iii ii = 11 kfinal = 5 elseif @basesolid == "cube" iii = 8 startbase = iii ii = 17 kfinal = 7 elseif @basesolid == "octahedron" iii = 10 startbase = iii ii = 17 kfinal = 9 elseif @basesolid == "dodecahedron" iii = 14 startbase = iii ii = 35 kfinal = 13 endif finish = ii lev = 1 k = 1 while lev <= level while iii < finish while k <=kfinal il = cs[iii]-cs[k] ilz = csz[iii]-csz[k] ; do the inversion temp = rad[k]^2/(|il|+ilz^2-rad[iii]^2) if temp*rad[iii] < rad[iii] && temp*rad[iii] > @scircle rad[ii] = temp*rad[iii] cs[ii] = temp*il + cs[k] csz[ii] = temp*ilz + csz[k] if @method == 0 clr[ii] = lev elseif @method == 1 clr[ii] = sqrt(2)/abs(rad[ii])^@adj+0.01 elseif @method == 2 clr[ii] = (ii)^@adj+0.01 elseif @method == 3 clr[ii] = sqrt(|cs[ii]*2|+csz[ii]^2)^@adj+0.01 elseif @method == 4 clr[ii] = clr[iii] elseif @method == 5 if abs(rad[ii])< @rthresh clr[ii] = 2 else clr[ii] = 1 endif endif ii = ii + 1 if ii >= 999999 lev = level+1 k = kfinal+1 iii = finish endif if lev < 4 i = startbase while i < ii-1 ddx = real(cs[i])-real(cs[ii-1]) ddy = imag(cs[i])-imag(cs[ii-1]) ddz = csz[i]-csz[ii-1] ddr = rad[i]-rad[ii-1] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c == 0 i = ii-1 ii = ii-1 endif i = i + 1 endwhile endif endif k = k + 1 endwhile k = 1 iii = iii + 1 endwhile if lev == 1 cs[ii] = (0,0) csz[ii] = 0 if @basesolid == "tetrahedron" rad[ii] = sqrt(3)-sqrt(2) blast = 5 elseif @basesolid == "cube" rad[ii] = sqrt(3)-1 blast = 9 elseif @basesolid == "octahedron" rad[ii] = 1-sqrt(2)/2 blast = 7 elseif @basesolid == "dodecahedron" rad[ii] = sqrt(3)-p+1 blast = 21 endif cencir = rad[ii] if @method == 0 clr[ii] = 1 elseif @method == 1 clr[ii] = sqrt(2)/abs(rad[ii])^@adj+0.01 elseif @method == 2 clr[ii] = (ii)^@adj+0.01 elseif @method == 3 clr[ii] = sqrt(|cs[ii]*2|+csz[ii]^2)^@adj+0.01 elseif @method == 4 clr[ii] = blast elseif @method == 5 if abs(rad[ii])< @rthresh clr[ii] = 2 else clr[ii] = 1 endif endif ii = ii+1 finish=finish+1 endif if finish == ii lev = level+1 else lev = lev+1 endif ;if !@rdup ; finish = iii j = ii-finish if j > 0 l = round((j)/2) + 1 ir = j continue = true repeat if l > 1 l = l-1 rra = cs[l-1+finish] rrb = rad[l-1+finish] rrc = clr[l-1+finish] rrd = csz[l-1+finish] else rra = cs[ir-1+finish] rrb = rad[ir-1+finish] rrc = clr[ir-1+finish] rrd = csz[ir-1+finish] cs[ir-1+finish] = cs[finish] rad[ir-1+finish] = rad[finish] clr[ir-1+finish] = clr[finish] csz[ir-1+finish] = csz[finish] ir = ir-1 if ir == 0 cs[finish] = rra rad[finish] = rrb clr[finish] = rrc csz[finish] = rrd continue = false endif endif if continue == true si = l sj = 2*l endif while (sj <= ir) && (continue == true) if sj < ir ddx = real(cs[sj-1+finish])-real(cs[sj+finish]) ddy = imag(cs[sj-1+finish])-imag(cs[sj+finish]) ddz = csz[sj-1+finish]-csz[sj+finish] ddr = rad[sj-1+finish]-rad[sj+finish] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c < 0 sj = sj + 1 endif endif ddx = real(rra)-real(cs[sj-1+finish]) ddy = imag(rra)-imag(cs[sj-1+finish]) ddz = rrd-csz[sj+finish] ddr = rrb-rad[sj-1+finish] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c < 0 cs[si-1+finish] = cs[sj-1+finish] rad[si-1+finish] = rad[sj-1+finish] clr[si-1+finish] = clr[sj-1+finish] csz[si-1+finish] = csz[sj-1+finish] si = sj sj = sj + sj else sj = ir + 1 endif endwhile if (continue == true) cs[si-1+finish] = rra rad[si-1+finish] = rrb clr[si-1+finish] = rrc csz[si-1+finish] = rrd endif until continue == false ; eliminate duplicates in place for index 'finish' to index 'ii' ir = finish l = finish while ir < ii ddx = real(cs[ir])-real(cs[ir-1]) ddy = imag(cs[ir])-imag(cs[ir-1]) ddz = csz[ir]-csz[ir-1] ddr = rad[ir]-rad[ir-1] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c == 0 ir = ir + 1 else cs[l] = cs[ir] rad[l] = rad[ir] clr[l] = clr[ir] csz[l] = csz[ir] ir = ir +1 l = l + 1 endif endwhile ii = l endif ;endif finish = ii endwhile maxi = ii-1 if @basesolid == "tetrahedron" if @base iii = 6 else iii = 11 endif elseif @basesolid == "cube" if @base iii = 8 else iii = 17 endif elseif @basesolid == "octahedron" if @base iii = 10 else iii = 17 endif elseif @basesolid == "dodecahedron" if @base iii = 14 else iii = 35 endif endif ; sort array by circle identity ; the sort goes from index 'finish' to index 'ii' ;if !@rdup thresh = thresh/100 finish = iii j = ii-finish if j > 0 l = round((j)/2) + 1 ir = j continue = true repeat if l > 1 l = l-1 rra = cs[l-1+finish] rrb = rad[l-1+finish] rrc = clr[l-1+finish] rrd = csz[l-1+finish] else rra = cs[ir-1+finish] rrb = rad[ir-1+finish] rrc = clr[ir-1+finish] rrd = csz[ir-1+finish] cs[ir-1+finish] = cs[finish] rad[ir-1+finish] = rad[finish] clr[ir-1+finish] = clr[finish] csz[ir-1+finish] = csz[finish] ir = ir-1 if ir == 0 cs[finish] = rra rad[finish] = rrb clr[finish] = rrc csz[finish] = rrd continue = false endif endif if continue == true si = l sj = 2*l endif while (sj <= ir) && (continue == true) if sj < ir ddx = real(cs[sj-1+finish])-real(cs[sj+finish]) ddy = imag(cs[sj-1+finish])-imag(cs[sj+finish]) ddz = csz[sj-1+finish]-csz[sj+finish] ddr = rad[sj-1+finish]-rad[sj+finish] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c < 0 sj = sj + 1 endif endif ddx = real(rra)-real(cs[sj-1+finish]) ddy = imag(rra)-imag(cs[sj-1+finish]) ddz = rrd-csz[sj+finish] ddr = rrb-rad[sj-1+finish] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c < 0 cs[si-1+finish] = cs[sj-1+finish] rad[si-1+finish] = rad[sj-1+finish] clr[si-1+finish] = clr[sj-1+finish] csz[si-1+finish] = csz[sj-1+finish] si = sj sj = sj + sj else sj = ir + 1 endif endwhile if (continue == true) cs[si-1+finish] = rra rad[si-1+finish] = rrb clr[si-1+finish] = rrc csz[si-1+finish] = rrd endif until continue == false ; eliminate duplicates in place for index 'finish' to index 'ii' ir = finish l = finish while ir < ii ddx = real(cs[ir])-real(cs[ir-1]) ddy = imag(cs[ir])-imag(cs[ir-1]) ddz = csz[ir]-csz[ir-1] ddr = rad[ir]-rad[ir-1] if ddx < -thresh c = -1 elseif ddx > thresh c = 1 elseif ddy < -thresh c = -1 elseif ddy > thresh c = 1 elseif ddz < -thresh c = -1 elseif ddz > thresh c = 1 elseif ddr < -thresh c = -1 elseif ddr > thresh c = 1 else c = 0 endif if c == 0 ir = ir + 1 else cs[l] = cs[ir] rad[l] = rad[ir] clr[l] = clr[ir] csz[l] = csz[ir] ir = ir +1 l = l + 1 endif endwhile ii = l maxi = ii-1 endif ;endif ascale = ascale/radadj float radius = 0 while iii <= maxi radius = abs((rad[iii])) if (radius <= baserad)||(radius <= cencir) && radius < @scle3 && \ (real(cs[iii])*sa+imag(cs[iii])*sb+csz[iii]*sc <= pd||!@slice) fx = real(cs[iii])*ascale*radadj fy = imag(cs[iii])*ascale*radadj zz = csz[iii]*ascale*radadj if radius == baserad radius = radius*radadj endif tymax = txmax tzmax = txmax ffx = fx - xmin ffy = fy - ymin ffy = tymax*asp - ffy tymax = txmax tzmax = txmax ffx = ffx/txmax ffy = ffy/tymax ffz = (zz-zmin)/tzmax xx = ffx ; ; rotation around the z axis ; xx = ffx ffx = 0.5 + (ffx - 0.5 - @rotoffx/txmax)*cos(#angle) - \ (ffy - 0.5 - @rotoffy/tymax)*sin(#angle) ffy = 0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(#angle) + \ (xx - 0.5 - @rotoffx/txmax)*sin(#angle) ; ; rotation around the y axis ; xx = ffx ffx = (0.5 + (ffz - 0.5 - @rotoffz/txmax)*sin(@zangle*pi/180) + \ (ffx - 0.5 - @rotoffx/txmax)*cos(@zangle*pi/180))*#width ffz = (0.5 + (ffz - 0.5 - @rotoffz/tzmax)*cos(@zangle*pi/180) - \ (xx - 0.5 - @rotoffx/txmax)*sin(@zangle*pi/180)) ; ; rotation around the x axis ; yy = ffy ffy = (0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(@xangle*pi/180) - \ (ffz - 0.5 - @rotoffz/tzmax)*sin(@xangle*pi/180))*#width ffz = (0.5 + (yy - 0.5 - @rotoffy/tymax)*sin(@xangle*pi/180) + \ (ffz - 0.5 - @rotoffz/tzmax)*cos(@xangle*pi/180))*#width ; ; final translation ; ffx = ffx + @transx*#width ffy = ffy + @transy*#width ffz = ffz + @transz*#width cs[iii] = (ffx+flip(ffy)) csz[iii] = ffz rad[iii] = round(radius*#width/txmax)*ascale if rad[iii] < 1 && @version >= 102 rad[iii] = 1 endif else rad[iii] = -1 endif iii = iii + 1 endwhile ; if @switch && @tparent int i = 0 while i < 200 colorswitch = colormap[i,0] colormap[i,0] = colormap[i,1] colormap[i,1] = colorswitch i = i + 1 endwhile endif init: ; initialize camera vector float vx = 0.0 float vy = 0.0 float vz = 0.0 float vd = 0.0 ; this is used for normalizing all vectors ; ; refraction vector array (continuation of camera vector through refractions) float vxt[300] float vyt[300] float vzt[300] ; initialize light vector float lx = 0.0 float ly = 0.0 float lz = 0.0 ; ; initialize intersection point float xi = 0 float yi = 0 float zi = 0 ; ; initialize floor intersection point float xf = 0 float yf = 0 float zf = 0 ; ; initialize reflection intersection point float xr = 0 float yr = 0 float zr = 0 ; ; initialize floor reflection intersection point float xrf = 0 float yrf = 0 float zrf = 0 ; ; floor intersection array for refraction vector float xft[100] float yft[100] float zft[100] ; refraction intersection array float xit[300] float yit[300] float zit[300] int it = 0 int jt = 0 ; surface normal array for refraction intersections float lxtt[300] float lytt[300] float lztt[300] float ctheta2 = 0 ; refraction angle float rfi = 0 ; refractive index ratio float tdt[100] ; distance from back of sphere to floor (refracted ray) float dt[100] ; distance from back of sphere to next closest sphere (refracted ray) ; initialize to 1e10 it = 0 while it < 100 tdt[it]= 1e10 dt[it] = 1e10 it = it + 1 endwhile float ldt[100] ; distance from floor intersection to light (refracted ray) float floormodt[100] float fractalmodt[100] ; initialize to 10 it = 0 while it < 100 floormodt[it] = 10 fractalmodt[it] = 10 it = it + 1 endwhile float rdt[100] ; radius of closest sphere on refraction path float ldst[100] ; distance from closest sphere on refraction path to floor bool stop = false float tindex[100] ; color index for refracted spheres float colrT[100] ; color parameter for refracted spheres float ltfact[100] ; refracted floor fade according to lighting model color colorft[100] ; refracted floor color value float ltt[100] ; dot product of light vector and normal and refract intersection float colorPosT[100] ; color parameter for refracted spheres float hvalt[100] ; hightlight parameter for refracted spheres int xcrd = #x int ycrd = #y bool inside = true if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*#magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*#magn float transx = (#width)*0.5; float transy = (#height)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd<0 || xcrd>=#width || ycrd<0 || ycrd>=#height) inside = false endif endif float ambient = @ambient float hval = 0 ; highlight param for spheres float hvalR = 0 ; highlight param for sphere reflections float hvalRF = 0 ; highlight param for sphere reflections off floor float colorPos = 0 ; color param for spheres float colorPosR = 0 ; color param for sphere reflections float colorPosRF = 0 ; color param for sphere reflections off floor int rangeNum = 0 ; color ranges for spheres int rangeNumR = 0 ; color ranges for sphere reflections int rangeNumRF = 0 ; color ranges for sphere reflections off floor int rangeNumT[100] ; color ranges for sphere refractions color color1 = rgb(0,0,0) color color2 = rgb(0,0,0) color tempcolor = rgb(0,0,0) color colorf = rgb(0,0,0) int floormod = 10 int floormodr = 10 float fractalmod = 10 float fractalmodr = 10 color fractalcolor = rgb(0,0,0) color amcolor = @amcolor float extent = 1.0 - @extent float ctheta = 0 ; cos of angle between camera ray and floor normal float ortheta = 0 ; dot product of camera position and floor normal float dirtheta = 0 ; negative cos of angle between camera ray and floor normal float leftbound = @leftbound*#width float rightbound = @rightbound*#width float topbound = -@topbound*#width*asp float bottombound = -@bottombound*#width*asp float rd = 0 ; radius of closest sphere float td = 1e10 ; distance to closest sphere float tdr = 1e10 ; distance to closest reflection sphere float ld = 0 ; distance from light to floor intersection float ltfac = 0 ; floor fade according to lighting model float ltfacr = 0 ; floor reflection on sphere fade according to lighting model float lds = 0 ; distance from light to closest sphere with floor reflection float st = 0 float sd = 0 ; bool trapped = false ; if frac[xcrd,ycrd] == -1 ; trapped = true ; endif ; light position float lightx = @lightx*#width float lighty = @lighty*#width*asp float lightz = @lightz*#width*asp ; camera position float camx = 0 float camy = 0 float camz = 0 ; float z0 = @vplane*#width*asp float zl = @lplane*#width*asp ; camx = @camerax*#width camy = @cameray*#width*asp camz = @cameraz*#width*asp ; ; create the camera vector ; vx = xcrd-(#width-@cpointx*#width) -camx vy = ycrd-(@cpointy*#width-#width)*asp -camy vz = -z0 - camz vd = 1/sqrt(vx*vx+vy*vy+vz*vz) vx = vx*vd vy = vy*vd vz = vz*vd ; create vector for light direction if @ltype == "Point source" || @ltype == "Spotlight" lx = #width-@lpointx*#width-lightx ly = (@lpointy*#width-#width)*asp-lighty lz = -zl-lightz else float elevation = -@elevation float d2r = #pi/180; degrees to radians conversion factor lx = -cos(@angle*d2r) * cos(elevation*d2r) ly = -sin(@angle*d2r) * cos(elevation*d2r) lz = sin(elevation*d2r) endif vd = 1/sqrt(lx*lx+ly*ly+lz*lz) lx = -lx*vd ly = -ly*vd lz = -lz*vd ; ; initialize normal vector for intersection point float lxt = 0 float lyt = 0 float lzt = 0 ; ; initialize normal vector for intersection point on floor float lxtf = 0 float lytf = 0 float lztf = 0 ; ; initialize normal vector for intersection point at reflection object float lxn = 0 float lyn = 0 float lzn = 0 ; ; initialize reflection vector float lxr = 0 float lyr = 0 float lzr = 0 ; ; initialize reflection vector from floor float lxfr = 0 float lyfr = 0 float lzfr = 0 ; float bi = 0 float ci = 0 float arg = 0 float ti1 = 0 float ti2 = 0 float ti = 0 float colr = 0 ; gradient sphere color parameter float colrR = 0 ; gradient sphere relection color parameter float colrRF = 0 ; gradient sphere refraction color parameter float colorPos = 0 ; sphere color float lt = 0 ; dot product of light vector and normal float d = 1e10 ; distance from camera to closest float ss = 1e10 float ro = 1e10 ; distance from intersection to closest reflection sphere float dx = 0 float dy = 0 float dz = 0 float am = 0 ; shadow color float am2 = 0 ; shadow parameter float cindex = 0 float lrf = 0 ; reflection on floor coloring int rspf = 0 ; index of sphere reflected onto floor float rof = 1e10 ; distance from intersection to next refraction int ri = 1 int ristart = 0 if @basesolid == "tetrahedron" ristart = 6 elseif @basesolid == "cube" ristart = 8 elseif @basesolid == "octahedron" ristart = 10 elseif @basesolid == "dodecahedron" ristart = 14 endif int rsp = 0 ; index of reflection sphere float lr = 0 ; reflection coloring int di = 0 float rindex = 0 float rindexf = 0 ; ; create floor ; if @floor ; floor normal lxtf = fa lytf = fb lztf = fc vd = 1/sqrt(lxtf*lxtf+lytf*lytf+lztf*lztf) lxtf = lxtf*vd lytf = lytf*vd lztf = lztf*vd ; dot product with ray origin ortheta = lxtf*camx+lytf*camy+lztf*camz ; dot product with camera vector dirtheta = lxtf*vx+lytf*vy+lztf*vz ; distance from camera to intersection td = -(ortheta+fd)/dirtheta ; intersection point with camera ray if td > 0 xf = camx+vx*td yf = camy+vy*td zf = camz+vz*td endif ; distance to light if @ltype == "Point source" if td > 0 ld = sqrt((lightx-xf)^2 + (lighty-yf)^2+ (lightz-zf)^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ld = 1234567890 endif elseif @ltype == "Spotlight" st = (xf-lightx)*lx + (yf-lighty)*ly + (zf-lightz)*lz sd = sqrt((lightx-xf+lx*st)^2+(lighty-yf+ly*st)^2+(lightz-zf+lz*st)^2) if @spottype == "Sharp" ld = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ld = 1-@ambient endif elseif @spottype == "Set focus" ld = (sd/(@spotrad*#width*asp))^@setfocus if ld < 0.8 ld = 0 else ld = ld - 0.8 endif if ld > 1-@ambient ld = 1-@ambient endif endif endif if @fbound == true ; put bounds on the floor if xf < leftbound || zf < topbound || xf > rightbound || zf > bottombound td = 0 ld = 1234567890 endif endif ; setup checkerboard complex fp = (lytf+lztf)*xf + lxtf*yf + \ flip((lxtf+lytf)*zf + lztf*yf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormod = 0 else floormod = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmod = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width/2*asp)%trunc(#width*asp)] endif ; is the floor point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if rad[ri] != -1 if ri != di ; eliminate self-shadow bi = (lx*(xf-real(cs[ri]))+ly*(yf-imag(cs[ri]))+lz*(zf-csz[ri])) ci = (xf-real(cs[ri]))^2+(yf-imag(cs[ri]))^2+(zf-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am2 = @am endif endif endif endif ri = ri + 1 endwhile endif ss = 1e10 ; ; is there a reflection object to reflect onto the floor? ; if @version >=300 if @reflect && @reflectf ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxtf*vx-lytf*vy-lztf*vz ; N.I lxfr = -vx+2*lxtf*ctheta lyfr = -vy+2*lytf*ctheta lzfr = -vz+2*lztf*ctheta vd = 1/sqrt(lxfr*lxfr+lyfr*lyfr+lzfr*lzfr) lxfr = lxfr*vd lyfr = lyfr*vd lzfr = lzfr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 while ri <= maxi if rad[ri] != -1 bi = (lxfr*(xf-real(cs[ri]))+lyfr*(yf-imag(cs[ri]))+lzfr*(zf-csz[ri])) ci = (xf-real(cs[ri]))^2+(yf-imag(cs[ri]))^2+(zf-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < rof ; find closest reflection object rof = ti rspf = ri ; index of reflection object endif endif endif ri = ri + 1 endwhile if rof != 1e10 && @reflectf==true ; find intersection point on reflection object xr = xf+lxfr*rof yr = yf+lyfr*rof zr = zf+lzfr*rof ; ; create the normal at the intersection point lxn = -(xr-real(cs[rspf]))/rad[rspf] lyn = (yr-imag(cs[rspf]))/rad[rspf] lzn = (zr-csz[rspf])/rad[rspf] vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection ; if colorsUsed == 8 && !@reflect if colorsUsed == 8 rindexf = trunc(clr[rspf]) if (trunc(rindexf/colorsUsed+0.01)%2) == 0 rindexf = rindexf%colorsUsed else rindexf = colorsUsed-1-(rindexf)%(colorsUsed) endif else rindexf = trunc(clr[rspf])%colorsUsed endif lrf = -(lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif endif ; ri = ristart ti = 0 while ri <= maxi if rad[ri] != -1 bi = vx*(camx-real(cs[ri]))+vy*(camy-imag(cs[ri]))+vz*(camz-csz[ri]) ci = (camx-real(cs[ri]))^2+(camy-imag(cs[ri]))^2+(camz-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < d ; find closest object d = ti dx = real(cs[ri]) dy = imag(cs[ri]) dz = csz[ri] di = ri rd = rad[ri] if colorsUsed == 8 && !@reflect cindex = trunc(clr[ri]) if (trunc(cindex/colorsUsed+0.01)%2) == 0 cindex = cindex%colorsUsed else cindex = colorsUsed-1-(cindex)%(colorsUsed) endif else cindex = trunc(clr[ri])%colorsUsed endif endif endif ri = ri+1 endwhile if d > 0 && d != 1e10 ; intersection point outside object xi = camx+vx*d yi = camy+vy*d zi = camz+vz*d ; distance to light if @ltype == "Point source" if tdr > 0 lds = sqrt((lightx-xi)^2 + (lighty-yi)^2+ (lightz-zi)^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else lds = 1234567890 endif elseif @ltype == "Spotlight" st = (xi-lightx)*lx + (yi-lighty)*ly + (zi-lightz)*lz sd = sqrt((lightx-xi+lx*st)^2+(lighty-yi+ly*st)^2+(lightz-zi+lz*st)^2) if @spottype == "Sharp" lds = 0.0 if (sd/(@spotrad*#width*asp)) > 1 lds = 1-@ambient endif elseif @spottype == "Set focus" lds = (sd/(@spotrad*#width*asp))^@setfocus if lds < 0.8 lds = 0 else lds = lds - 0.8 endif if lds > 1-@ambient lds = 1-@ambient endif endif endif ; ; is the point in a shadow? ; create vector to light source and check for object hits if @am != 0 ri = ristart while ri <= maxi if rad[ri] != -1 if ri != di ; eliminate self-shadow bi = (lx*(xi-real(cs[ri]))+ly*(yi-imag(cs[ri]))+lz*(zi-csz[ri])) ci = (xi-real(cs[ri]))^2+(yi-imag(cs[ri]))^2+(zi-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects shadow sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ss ss = ti am = (1.0/@totalColors)*@am+(1.0/@totalColors)*(cindex+(1-@scale/2)/2)-0.015 endif endif endif endif ri = ri + 1 endwhile endif ; ; create the normals at the intersection points ; lxt = (xi-dx)/rd lyt = (yi-dy)/rd lzt = (zi-dz)/rd vd = 1/sqrt(lxt*lxt+lyt*lyt+lzt*lzt) lxt = lxt*vd lyt = lyt*vd lzt = lzt*vd ; ; check for reflections ; if @reflect == true ; ; create reflection vector [R = I+2*N*(N.I)] ; ctheta = -lxt*vx-lyt*vy-lzt*vz ; N.I lxr = vx+2*lxt*ctheta lyr = vy+2*lyt*ctheta lzr = vz+2*lzt*ctheta vd = 1/sqrt(lxr*lxr+lyr*lyr+lzr*lzr) lxr = lxr*vd lyr = lyr*vd lzr = lzr*vd ; ; is there a reflection object? ; ri = ristart ti = 0 lr = 0 while ri <= maxi if rad[ri] != -1 if di != ri ; eliminate self-reflection bi = (lxr*(xi-real(cs[ri]))+lyr*(yi-imag(cs[ri]))+lzr*(zi-csz[ri])) ci = (xi-real(cs[ri]))^2+(yi-imag(cs[ri]))^2+(zi-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects reflection sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif if ti > 0 && ti < ro ; find closest reflection object ro = ti rsp = ri ; index of reflection object endif endif endif endif ri = ri + 1 endwhile ; ; Is the floor closer? if @floor == true ; intersection point with reflection ray ; dot product with ray origin ortheta = lxtf*xi+lytf*yi+lztf*zi ; dot product with reflection vector dirtheta = lxtf*lxr+lytf*lyr+lztf*lzr ; distance from camera to intersection tdr = -(ortheta+fd)/dirtheta if tdr > 0 xrf = xi+lxr*tdr yrf = yi+lyr*tdr zrf = zi+lzr*tdr endif endif if tdr < ro && tdr > 0 ; floor is closest reflection object if @fbound == true ; put bounds on the floor if xrf < leftbound || zrf < topbound || xrf > rightbound || zrf > bottombound tdr = 0 endif endif ; setup checkerboard complex fp = (lytf+lztf)*xrf + lxtf*yrf + \ flip((lxtf+lytf)*zrf + lztf*yrf)+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodr = 0 else floormodr = 1 endif elseif @flrtype == "Fractal" fp = abs(fp) fractalmodr = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif else if ro != 1e10 && @reflect==true ; find intersection point on reflection object xr = xi+lxr*ro yr = yi+lyr*ro zr = zi+lzr*ro ; ; create the normal at the intersection point lxn = (xr-real(cs[rsp]))/rad[rsp] lyn = (yr-imag(cs[rsp]))/rad[rsp] lzn = (zr-csz[rsp])/rad[rsp] vd = 1/sqrt(lxn*lxn+lyn*lyn+lzn*lzn) lxn = lxn*vd lyn = lyn*vd lzn = lzn*vd ; set the color indexing for the reflection if colorsUsed == 8 && !@reflect rindex = trunc(clr[rsp]) if (trunc(rindex/colorsUsed+0.01)%2) == 0 rindex = rindex%colorsUsed else rindex = colorsUsed-1-(rindex)%(colorsUsed) endif else rindex = trunc(clr[rsp])%colorsUsed endif lr = (lxn*lx+lyn*ly+lzn*lz)*kr ; reflection coloring endif endif endif ; ; tranparency code ; ; ; initialize initial array values ; ; refraction vectors vxt[0] = vx vyt[0] = vy vzt[0] = vz ; sphere intersection points xit[0] = xi yit[0] = yi zit[0] = zi lxtt[0] = lxt lytt[0] = lyt lztt[0] = lzt ; array indices it = 0 jt = 0 stop = false if @tparent while !stop ltt[jt] = 0 ldt[jt] = 0 ldst[jt] = 0 ; calculate surface normal ; float dlast = di lxtt[it] = (xit[it]-real(cs[di]))/rad[di] lytt[it] = (yit[it]-imag(cs[di]))/rad[di] lztt[it] = (zit[it]-csz[di])/rad[di] vd = 1/sqrt(lxtt[it]*lxtt[it]+lytt[it]*lytt[it]+lztt[it]*lztt[it]) lxtt[it] = lxtt[it]*vd lytt[it] = lytt[it]*vd lztt[it] = lztt[it]*vd ; ; calculate refraction vector #1 ; ; T = [I/rfi-(ctheta2-ctheta/rfi)*N] ; Snell's law: sin(angle1)/sin(angle2) = rf2/rf1 = rfi rfi = @rfi ctheta = -lxtt[it]*vxt[it]-lytt[it]*vyt[it]-lztt[it]*vzt[it] ; N.I ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) ; T.I vxt[it+1] = vxt[it]/rfi-lxtt[it]*(ctheta2-ctheta/rfi) vyt[it+1] = vyt[it]/rfi-lytt[it]*(ctheta2-ctheta/rfi) vzt[it+1] = vzt[it]/rfi-lztt[it]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+1]*vxt[it+1]+vyt[it+1]*vyt[it+1]+vzt[it+1]*vzt[it+1]) vxt[it+1] = vxt[it+1]*vd vyt[it+1] = vyt[it+1]*vd vzt[it+1] = vzt[it+1]*vd ; ; find intersection in back of sphere ; bi = vxt[it+1]*(xit[it]-real(cs[di]))+vyt[it+1]*(yit[it]-imag(cs[di]))+vzt[it+1]*(zit[it]-csz[di]) ci = (xit[it]-real(cs[di]))^2+(yit[it]-imag(cs[di]))^2+(zit[it]-csz[di])^2-rad[di]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 < ti2 ; find largest ti ti = ti2 else ti = ti1 endif endif xit[it+1] = xit[it]+vxt[it+1]*ti yit[it+1] = yit[it]+vyt[it+1]*ti zit[it+1] = zit[it]+vzt[it+1]*ti ; ; calculate surface normal #2 ; lxtt[it+1] = -(xit[it+1]-real(cs[di]))/rad[di] lytt[it+1] = -(yit[it+1]-imag(cs[di]))/rad[di] lztt[it+1] = -(zit[it+1]-csz[di])/rad[di] vd = 1/sqrt(lxtt[it+1]*lxtt[it+1]+lytt[it+1]*lytt[it+1]+lztt[it+1]*lztt[it+1]) lxtt[it+1] = lxtt[it+1]*vd lytt[it+1] = lytt[it+1]*vd lztt[it+1] = lztt[it+1]*vd ; ; calculate refraction vector #2 ; ctheta = -lxtt[it+1]*vxt[it+1]-lytt[it+1]*vyt[it+1]-lztt[it+1]*vzt[it+1] ; N.I rfi = 1/@rfi ctheta2 = sqrt(1 - (1-ctheta^2)/rfi^2) vxt[it+2] = vxt[it+1]/rfi-lxtt[it+1]*(ctheta2-ctheta/rfi) vyt[it+2] = vyt[it+1]/rfi-lytt[it+1]*(ctheta2-ctheta/rfi) vzt[it+2] = vzt[it+1]/rfi-lztt[it+1]*(ctheta2-ctheta/rfi) vd = 1/sqrt(vxt[it+2]*vxt[it+2]+vyt[it+2]*vyt[it+2]+vzt[it+2]*vzt[it+2]) vxt[it+2] = vxt[it+2]*vd vyt[it+2] = vyt[it+2]*vd vzt[it+2] = vzt[it+2]*vd ; ; determine intersection of reflection vector with floor ; ; dot product with ray origin at back of sphere ortheta = lxtf*xit[it+1]+lytf*yit[it+1]+lztf*zit[it+1] ; dot product with 2nd refraction vector dirtheta = lxtf*vxt[it+2]+lytf*vyt[it+2]+lztf*vzt[it+2] ; distance from back of sphere to intersection with floor tdt[jt] = -(ortheta+fd)/dirtheta ; intersection point with 2nd refraction ray if tdt[jt] > 0 xft[jt] = xit[it+1]+vxt[it+2]*tdt[jt] yft[jt] = yit[it+1]+vyt[it+2]*tdt[jt] zft[jt] = zit[it+1]+vzt[it+2]*tdt[jt] endif ; ; distance from floor interection to light ; if @ltype == "Point source" if tdt[jt] > 0 ldt[jt] = sqrt((lightx-xft[jt])^2 + (lighty-yft[jt])^2+ (lightz-zft[jt])^2)/ \ sqrt((lightx-xcrd)^2 + (lighty-ycrd)^2+ (lightz-z0)^2) else ldt[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xft[jt]-lightx)*lx + (yft[jt]-lighty)*ly + (zft[jt]-lightz)*lz sd = sqrt((lightx-xft[jt]+lx*st)^2+(lighty-yft[jt]+ly*st)^2+(lightz-zft[jt]+lz*st)^2) if @spottype == "Sharp" ldt[jt] = 0.0 if (sd/(@spotrad*#width*asp)) > 1 ldt[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldt[jt] = (sd/(@spotrad*#width*asp))^@setfocus if ldt[jt] < 0.8 ldt[jt] = 0 else ldt[jt] = ldt[jt] - 0.8 endif if ldt[jt] > 1-@ambient ldt[jt] = 1-@ambient endif endif endif ; if @fbound == true ; put bounds on the floor if xft[jt] < leftbound || zft[jt] < topbound || xft[jt] > rightbound || zft[jt] > bottombound tdt[jt] = 0 ldt[jt] = 1234567890 endif endif ; ; setup checkerboard complex fp = (lytf+lztf)*xft[jt] + lxtf*yft[jt] + \ flip((lxtf+lytf)*zft[jt] + lztf*yft[jt])+ \ real(@poffset)*#width + flip(imag(@poffset)*#height) if @flrtype == "Checkerboard" fp = floor(fp*checkscale) if ((real(fp) + imag(fp)) % 2 == 0) floormodt[jt] = 0 else floormodt[jt] = 1 endif ; setup fractal pattern elseif @flrtype == "Fractal" fp = abs(fp) fractalmodt[jt] = frac[floor(real(fp)*checkscale*#width/2)%#width, \ floor(imag(fp)*checkscale*#width*asp/2)%trunc(#width*asp)] endif ; ; find closest sphere or terminate ; ri = ristart ti = 0 dt[jt] = 1e10 while ri <= maxi if rad[ri] != -1 && ri != dlast bi = vxt[it+2]*(xit[it+1]-real(cs[ri]))+vyt[it+2]*(yit[it+1]-imag(cs[ri]))+vzt[it+2]*(zit[it+1]-csz[ri]) ci = (xit[it+1]-real(cs[ri]))^2+(yit[it+1]-imag(cs[ri]))^2+(zit[it+1]-csz[ri])^2-rad[ri]^2 arg = bi*bi-ci if (arg > 0) ; ray intersects sphere ti1 = -bi - sqrt(arg) ti2 = -bi + sqrt(arg) if ti1 > ti2 ; find smallest ti ti = ti2 else ti = ti1 endif endif if ti > 0 && ti < dt[jt] ; find closest object dt[jt] = ti dx = real(cs[ri]) dy = imag(cs[ri]) dz = csz[ri] di = ri ; this will be used in the next level rdt[jt] = rad[ri] if colorsUsed == 8 && !@reflect tindex[jt] = trunc(clr[ri]) if (trunc(tindex[jt]/colorsUsed+0.01)%2) == 0 tindex[jt] = tindex[jt]%colorsUsed else tindex[jt] = colorsUsed-1-(tindex[jt])%(colorsUsed) endif else tindex[jt] = trunc(clr[ri])%colorsUsed endif endif endif ri = ri+1 endwhile ; ; intersection point with next sphere ; if dt[jt] > 0 && dt[jt] != 1e10 ; intersection point outside object xit[it+2] = xit[it+1]+vxt[it+2]*dt[jt] yit[it+2] = yit[it+1]+vyt[it+2]*dt[jt] zit[it+2] = zit[it+1]+vzt[it+2]*dt[jt] ; ; distance of intersection to light ; if @ltype == "Point source" if td > 0 ldst[jt] = sqrt((lightx-xit[it+2])^2 + (lighty-yit[it+2])^2+ (lightz-zit[it+2])^2)/ \ sqrt((lightx)^2 + (lighty)^2+ (lightz)^2) else ldst[jt] = 1234567890 endif elseif @ltype == "Spotlight" st = (xit[it+2]-lightx)*lx + (yit[it+2]-lighty)*ly + (zit[it+2]-lightz)*lz sd = sqrt((lightx-xit[it+2]+lx*st)^2+(lighty-yit[it+2]+ly*st)^2+(lightz-zit[it+2]+lz*st)^2) if @spottype == "Sharp" ldst[jt] = 0.0 if (sd/(@spotrad*#width)) > 1 ldst[jt] = 1-@ambient endif elseif @spottype == "Set focus" ldst[jt] = (sd/(@spotrad*#width))^@setfocus if ldst[jt] < 0.8 ldst[jt] = 0 else ldst[jt] = ldst[jt] - 0.8 endif if ldst[jt] > 1-@ambient ldst[jt] = 1-@ambient endif endif endif ; calculation of surface normal #3 ; lxtt[it+2] = (xit[it+2]-dx)/rdt[jt] lytt[it+2] = (yit[it+2]-dy)/rdt[jt] lztt[it+2] = (zit[it+2]-dz)/rdt[jt] vd = 1/sqrt(lxtt[it+2]*lxtt[it+2]+lytt[it+2]*lytt[it+2]+lztt[it+2]*lztt[it+2]) lxtt[it+2] = lxtt[it+2]*vd lytt[it+2] = lytt[it+2]*vd lztt[it+2] = lztt[it+2]*vd ; ; dot product of light vector and normal vector ; ltt[jt] = (lx*lxtt[it+2]+ly*lytt[it+2]+lz*lztt[it+2])*krt colrT[jt] = (1.0/@totalColors)*@scale/2*ltt[jt]+0.25*(tindex[jt]+(1-@scale/2)/2)-0.015 colorPosT[jt] = @scale/2*ltt[jt] endif it = it+2 jt = jt+1 if dt[jt-1] == 1e10 stop = true jt = jt-1 it = it-2 endif endwhile endif ; ; dot product of light vector and normal vector ; lt = (lx*lxt+ly*lyt+lz*lzt) colorPos = @scale/2*lt colorPosR = @scale/2*lr if @reflect == true if lr != 0 colrR = (1.0/@totalColors)*@scale/2*lr+0.25*(rindex+(1-@scale/2)/2)-0.015 colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif else colr = (1.0/@totalColors)*@scale/2*lt+0.25*(cindex+(1-@scale/2)/2)-0.015 endif endif if rof != 1e10 && @reflectf && @floor colorPosRF = @scale/2*lrf colrRF = (1.0/@totalColors)*@scale/2*lrf+0.25*(rindexf+(1-@scale/2)/2)-0.015 endif ; if @tparent ; am = am*(1-@tparentval) ; am2 = am2*(1-@tparentval) ; endif ; loop: final: ; if @applymapping && !inside && @solid #solid = true endif ; Perturb the ranges, if specified. rangeNum = trunc(cindex) if rangeNum < 0 rangeNum = rangeNum * -1 endif rangeNum = (rangeNum + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNum < ranges / 2) rangeNum = (rangeNum + rangeNum) % ranges else rangeNum = (rangeNum + rangeNum + 1) % ranges endif else ; Number of ranges is odd. rangeNum = (rangeNum + rangeNum) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNum / 2) * 2) == rangeNum) ; rangeNum is even. rangeNum = rangeNum - trunc (rangeNum / 2) else ; rangeNum is odd. rangeNum = rangeNum + trunc ((ranges - rangeNum) / 2) endif endif if colorPos > 0.5 colorPos = (colorPos - 0.5) / 0.5 else colorPos = colorPos / 0.5 endif if @highlight_type == "none" hval = 0 elseif @highlight_type == "linear" if colorPos > extent hval = (5*@highlight*(colorPos-extent)/(1-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "log" if colorPos > extent hval = (5*@highlight*log(colorPos-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "exponential" if colorPos > extent hval = (5*@highlight*(exp(colorPos-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hval = 0 endif endif if @reflect == true ; Perturb the ranges, if specified. rangeNumR = trunc(rindex) if rangeNumR < 0 rangeNumR = rangeNumR * -1 endif rangeNumR = (rangeNumR + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumR < ranges / 2) rangeNumR = (rangeNumR + rangeNumR) % ranges else rangeNumR = (rangeNumR + rangeNumR + 1) % ranges endif else ; Number of ranges is odd. rangeNumR = (rangeNumR + rangeNumR) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumR / 2) * 2) == rangeNumR) ; rangeNumR is even. rangeNumR = rangeNumR - trunc (rangeNumR / 2) else ; rangeNumR is odd. rangeNumR = rangeNumR + trunc ((ranges - rangeNumR) / 2) endif endif if colorPosR > 0.5 colorPosR = (colorPosR - 0.5) / 0.5 else colorPosR = colorPosR / 0.5 endif if @highlight_type == "none" hvalR = 0 elseif @highlight_type == "linear" if colorPosR > extent hvalR = (5*@highlight*(colorPosR-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "log" if colorPosR > extent hvalR = (5*@highlight*log(colorPosR-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalR = 0 endif elseif @highlight_type == "exponential" if colorPosR > extent hvalR = (5*@highlight*(exp(colorPosR-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalR = 0 endif endif ; Perturb the ranges, if specified. rangenumRF = trunc(rindexf) if rangenumRF < 0 rangenumRF = rangenumRF * -1 endif rangenumRF = (rangenumRF + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangenumRF < ranges / 2) rangenumRF = (rangenumRF + rangenumRF) % ranges else rangenumRF = (rangenumRF + rangenumRF + 1) % ranges endif else ; Number of ranges is odd. rangenumRF = (rangenumRF + rangenumRF) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangenumRF / 2) * 2) == rangenumRF) ; rangenumRF is even. rangenumRF = rangenumRF - trunc (rangenumRF / 2) else ; rangenumRF is odd. rangenumRF = rangenumRF + trunc ((ranges - rangenumRF) / 2) endif endif if colorPosRF > 0.5 colorPosRF = (colorPosRF - 0.5) / 0.5 else colorPosRF = colorPosRF / 0.5 endif if @highlight_type == "none" hvalRF = 0 elseif @highlight_type == "linear" if colorPosRF > extent hvalRF = (5*@highlight*(colorPosRF-extent)/(1-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "log" if colorPosRF > extent hvalRF = (5*@highlight*log(colorPosRF-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif elseif @highlight_type == "exponential" if colorPosRF > extent hvalRF = (5*@highlight*(exp(colorPosRF-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else ; hvalRF = 0 endif endif endif if @tparent it = 0 while it <= jt ; Perturb the ranges, if specified. rangeNumT[it] = trunc(tindex[it]) if rangeNumT[it] < 0 rangeNumT[it] = rangeNumT[it] * -1 endif rangeNumT[it] = (rangeNumT[it] + offset) % ranges if (@perturbRanges == "Even/Odd") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 2 4 6 1 3 5 7 if ((trunc (ranges / 2) * 2) == ranges) ; Number of ranges is even. if (rangeNumT[it] < ranges / 2) rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges else rangeNumT[it] = (rangeNumT[it] + rangeNumT[it] + 1) % ranges endif else ; Number of ranges is odd. rangeNumT[it] = (rangeNumT[it] + rangeNumT[it]) % ranges endif elseif (@perturbRanges == "1st Half / 2nd Half") ; If range ordering is 0 1 2 3 4 5 6 7, ; then range selected becomes 0 4 1 5 2 6 3 7 if ((trunc (rangeNumT[it] / 2) * 2) == rangeNumT[it]) ; rangeNumT[it] is even. rangeNumT[it] = rangeNumT[it] - trunc (rangeNumT[it] / 2) else ; rangeNumT[it] is odd. rangeNumT[it] = rangeNumT[it] + trunc ((ranges - rangeNumT[it]) / 2) endif endif if colorPosT[it] > 0.5 colorPosT[it] = (colorPosT[it] - 0.5) / 0.5 else colorPosT[it] = colorPosT[it] / 0.5 endif if @highlight_type == "none" hvalt[it] = 0 elseif @highlight_type == "linear" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(colorPosT[it]-extent)/(1-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "log" if colorPosT[it] > extent hvalt[it] = (5*@highlight*log(colorPosT[it]-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif elseif @highlight_type == "exponential" if colorPosT[it] > extent hvalt[it] = (5*@highlight*(exp(colorPosT[it]-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hvalt[it] = 0 endif endif it = it + 1 endwhile endif if lds > @sdis lds = @sdis endif it = 0 while it <= jt if ldst[it] > @sdis ldst[it] = @sdis endif ; have refracted floor fade according to lighting model ltfact[it] = ldt[it]/@dis/@floorrefract if ldt[it] == 1234567890 ltfact[it] = 0 elseif ltfact[it] < 0 ltfact[it] = 0 elseif ltfact[it] > 1 ltfact[it] = 1 endif ; if ltfact[it] > krft ; ltfact[it] = krft ; endif If ltfact[it]+am2 > 1 ltfact[it] = 1-am2 endif if dt[it] > tdt[it] && tdt[it] > 0 && ltfact[it] >= 0 if @flrtype == "Checkerboard" if floormodt[it] == 0 colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif floormodt[it] == 1 colorft[it] = blend(@flrcolor2,rgb(0,0,0),ltfact[it]+am2) endif elseif @flrtype == "Plain" colorft[it] = blend(@flrcolor,rgb(0,0,0),ltfact[it]+am2) elseif @flrtype == "Fractal" if fractalmodt[it] == 0 fractalcolor = @icolor colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) else fractalcolor = gradient((fractalmodt[it]/mxi)^@spread+@shift) colorft[it] = blend(fractalcolor,rgb(0,0,0),ltfact[it]+am2) endif endif else colorft[it] = rgba(0,0,0,1) endif it = it+ 1 endwhile if colr == 0 && (td == 0 || td == 1e10) if @solid #solid = true else if @colorPreset == "Gradient" colorf = gradient(0) else if @switch colorf = colormap[0,0] else colorf = colormap[0,1] endif endif endif else if @am == 0 if @colorPreset == "Gradient" if @reflect == true if lr != 0 color1 = gradient(colrR/2) color2 = gradient(colr/2) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(colr/2) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(color1,color2,1-@blendval) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if am < colr/2 if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = gradient(colr/2 - am) color2 = gradient(colr/2) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = gradient(colr/2 - am) color2 = gradient(colr/2) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@cblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend-am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif else if @colorPreset == "Gradient" if @reflect == true if lr != 0 ; compose reflection color1 = gradient(colrR/2) color2 = gradient(colr/2) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color2 = gradient(0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else colorf = gradient(0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = gradient(colrT[it]/2) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else if @reflect == true if lr != 0 ; compose reflection color1 = blend(colorMap[rangeNumR,1], blend(colorMap[rangeNumR,0],@hcolor,hvalR^@hrblend), colorPosR^@rblend) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) tempcolor = blend(color1,color2,1-@blendval) ; compose shadow color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) color2 = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) ; compose colorf color1 = tempcolor colorf = compose(color1,blend(color1,mergedarken(color1,color2),@am),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif else color1 = blend(colorMap[rangeNum,1], hsl(hue(colorMap[rangeNum,0]), sat(colorMap[rangeNum,0]), 0.5-@am/2), @am) color2 = blend(colorMap[rangeNum,1], blend(colorMap[rangeNum,0],@hcolor,hval^@hblend), colorPos^@cblend) colorf = compose(color1,blend(color2,mergedarken(color1,color2),alpha(color1)),1.0) colorf = blend(colorf,rgb(0,0,0),lds/@sdis) if @tparent it = jt color colorlayer = rgba(0,0,0,1) color colorlayer2 = rgba(0,0,0,0) while it >= 0 if ltt[it] !=0 colorft[it] = blend(colorMap[rangeNumT[it],1], blend(colorMap[rangeNumT[it],0],@hcolor,hvalt[it]^@hrblendt), colorPosT[it]^@rblendt) colorft[it] = blend(colorft[it],rgb(0,0,0),ldst[it]/@sdis) if @tmerge == "Normal" colorlayer = compose(colorlayer, blend(colorft[it], mergenormal(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Screen" colorlayer = compose(colorlayer, blend(colorft[it], mergescreen(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Hard Light" colorlayer = compose(colorlayer, blend(colorft[it], mergehardlight(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Lighten" colorlayer = compose(colorlayer, blend(colorft[it], mergelighten(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) elseif @tmerge == "Addition" colorlayer = compose(colorlayer, blend(colorft[it], mergeaddition(colorlayer, colorft[it]), alpha(colorlayer)), (1-@tparentval)) endif else colorlayer2 = compose(colorlayer2, blend(colorft[it], mergenormal(colorlayer2, colorft[it]), alpha(colorlayer2)), (1.001-@tparentval)) endif it = it - 1 endwhile colorlayer = colorlayer+colorlayer2*krft colorf = blend(colorlayer,colorf,1-@tparentval) endif endif endif endif endif endif ; have floor fade according to lighting model ltfac = ld/@dis if ld == 1234567890 ltfac = 0 elseif ltfac < 0 ltfac = 0 elseif ltfac > 1 ltfac = 1 endif If ltfac+am2 > 1 ltfac = 1-am2 endif ; have floor reflection fade according to lighting model ltfacr = tdr/td/@floorreflect if lds == 1234567890 ltfacr = 0 elseif ltfacr < 0 ltfacr = 0 elseif ltfacr > 1 ltfacr = 1 endif if ltfacr>krf ltfacr = krf endif ; ltfacr = ltfacr*ltfac ; apply floor and floor reflection coloring if @reflect == true && tdr > 0 && tdr < ro if @flrtype == "Checkerboard" if floormodr == 0 colorf = blend(colorf,@flrcolor,krf-ltfacr) else colorf = blend(colorf,@flrcolor2,krf-ltfacr) endif elseif @flrtype == "Plain" colorf = blend(colorf,@flrcolor,krf-ltfacr) else if fractalmodr == 0 fractalcolor = @icolor colorf = blend(colorf,fractalcolor,krf-ltfacr) else fractalcolor = gradient((fractalmodr/mxi)^@spread+@shift) colorf = blend(colorf,fractalcolor,krf-ltfacr) endif endif endif if d > td && td > 0 && ltfac >= 0 if @flrtype == "Checkerboard" if floormod == 0 colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) elseif floormod == 1 colorf = blend(@flrcolor2,rgb(0,0,0),ltfac+am2) endif elseif @flrtype == "Plain" colorf = blend(@flrcolor,rgb(0,0,0),ltfac+am2) else if fractalmod == 0 fractalcolor = @icolor colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) elseif fractalmod == -1 && @solid #solid = true else fractalcolor = gradient((fractalmod/mxi)^@spread+@shift) colorf = blend(fractalcolor,rgb(0,0,0),ltfac+am2) ; colorf = blend(colorf,rgb(0,0,0),am2) endif endif endif if @reflectf && @floor && rof != 1e10 && d > td if @colorPreset == "Gradient" color1 = gradient(colrRF/2) else color1 = blend(colorMap[rangeNumRF,1], blend(colorMap[rangeNumRF,0], \ @hcolor,hvalRF), colorPosRF) endif colorf = blend(color1, colorf,(1-@blendvalf)) endif #color = blend(colorf, amcolor, ambient) default: param version caption = "Formula Version" default = 340 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam $ifdef VER40 heading text="Base upon articles of Peikert and Herrmann. The packing \ is space filling. \ Direct coloring methods provided by \ Ken Childress. \ Use with Pixel in mt.ufm or Pixel Offset in \ reb.ufm" endheading $else heading caption="Sphere Inversions Raytrace" endheading heading caption="Direct coloring methods provided by" endheading heading caption="Ken Childress." endheading heading caption="Use with Pixel formula in mt.ufm" endheading render=false $endif title="Sphere Inversions Raytrace" param solid caption="solid background?" default=false visible= !@floor||@applymapping||@fbound || @mask || @rmask endparam param applyMapping caption = "Apply Mapping" default = false endparam $ifdef VER40 heading text="The base set consists of tangent spheres that are centered on the \ vertices of a Platonic solid." endheading $endif param basesolid caption = "Base solid" default = 0 enum = "tetrahedron" "cube" "octahedron" "dodecahedron" endparam $ifdef VER40 heading text="The actual number of iterations may be less than \ 'Max Iters' if all new generations are smaller \ than the 'Smallest Sphere' setting or if the sphere \ array size is reached." endheading $endif param level caption = "Max Iters (1-100)" default = 100 min = 0 max = 100 endparam $ifdef VER40 heading text="Decreasing 'Smallest Sphere' will increase the \ amount of detail, but rending speed will decrease." endheading $endif param scircle caption = "Smallest Sphere" default = 0.025 endparam bool param base caption = "Show Base Set" default = true endparam bool param slice caption = "Slice Gasket" default = false endparam heading caption = "Slicing Plane" visible = @slice endheading float param sa caption = "X Direction" default = 0.0 visible = @slice endparam float param sb caption = "Y Direction" default = 1.0 visible = @slice endparam float param sc caption = "Z Direction" default = 0.0 visible = @slice endparam float param pd caption = "Position" default = 0.01 visible = @slice endparam heading caption = "Sphere Parameters" endheading $ifdef VER40 heading text = "Changes the outer inversion circles. Use to change image \ characteristics." endheading $endif param scle2 caption = "Outer adj" default =0.0 min = -5 max = 5 endparam $ifdef VER40 heading text ="Use to remove largest spheres from the display." endheading $endif param scle3 caption = "Max sphere (.01-1.5)" default = 1.5 ; min = 0.01 ; max = 1.5 endparam $ifdef VER40 heading text = "Use 'Magnification' below in place of 'Magnification on \ the Location Tab." endheading $endif param ascale caption = "Magnification" default = 0.4 endparam $ifdef VER40 heading caption = "Rotations & Translations" expanded = false endheading heading text = "Z Rotation is on the Location Tab." endheading $else heading caption = "Rotations & Translations" endheading heading caption = "Z Rotation is on the" endheading heading caption = "Location Tab." endheading $endif param xangle caption = "X Axis Rotation" default = 0.0 hint = "This is the fixed (horizontal) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param zangle caption = "Y Axis Rotation" default = 0.0 hint = "This is the fixed (vertical) Y Axis. It is performed \ after the normal fractal rotation(s) and zooms." endparam param rotoffx caption = "Rotation Center X Offset" default = 0.0 endparam param rotoffy caption = "Rotation Center Y Offset" default = 0.0 endparam param rotoffz caption = "Rotation Center Z Offset" default = 0.0 endparam param transx caption = "X Final Translation" default = 0.0 endparam param transy caption = "Y Final Translation" default = -0.15 endparam param transz caption = "Z Final Translation" default = 0.0 endparam ;-------------------------------------------------------------------- ; Color Settings ;-------------------------------------------------------------------- heading caption = "Color Settings" endheading param colorPreset caption = "Color Preset" enum = "Gradient" "Custom" "Generate" "Default" "Default 12" \ "Default 16" "Default 24" "Color Wheel 12" "Alhambra 8" \ "Belvedere 8" "Bouquet 8" "Color Switch 8" "Evening Sky 8" \ "Fantasia 8" "Flowering Orchard 8" "Morning Sky 8" "Pastel 8" \ "Pastel Rainbow 8" "Showtime 8" "Soleil 8" "Chill 8" \ "Cloud Nine 8" "La Terra 8" "Santa Fe 8" "Spring 8" "Summer 8" \ "Fall 8" "Winter 8" "Mojave 8" "Gold/Green 8" "Gold/Green Alt 8" \ "Gold/Silver 8" "Gold/Silver Alt 8" "Purple/Yellow 8" \ "Purple/Yellow Alt 8" "Silver/Blue 8" "Silver/Blue Alt 8" \ "Fourth of July 3" "Blue/Silver 2" "Blue/White 2" "Cyan/Magenta 2" \ "Cyan/Yellow 2" "Gold/Green 2" "Purple/Yellow 2" "Red/Tan 2" default = 2 hint = "Use 'Gradient' for colors from the gradient. \ Use 'Custom' to set your own color ranges. \ Use 'Default' for the default colors. \ Use 'Generate' to create 3D-like colors from the \ gradient (allows using the gradient randomize function). \ Use any of the other predefined settings for those colors." endparam param customize caption = "Show/Customize" default = false hint = "Check to customize the selected color preset. NOTE: If you \ modify the default values for any of the range(s), you cannot \ get back to the default values for the range(s) you modify \ unless you reload the UCL." visible = (@colorPreset != "Gradient") && (@colorPreset != "Generate") \ && (@colorPreset != "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Custom ;-------------------------------------------------------------------- heading caption = " Custom Color Settings" visible = (@colorPreset == "Custom") endheading color param colorMax1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMin1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@colorPreset == "Custom") endparam color param colorMax2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMin2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@colorRanges >= 2) && (@colorPreset == "Custom") endparam color param colorMax3 caption = "Color Range 3 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMin3 caption = "Color Range 3 Low" default = rgb(100/255,36/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@colorRanges >= 3) && (@colorPreset == "Custom") endparam color param colorMax4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMin4 caption = "Color Range 4 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@colorRanges >= 4) && (@colorPreset == "Custom") endparam color param colorMax5 caption = "Color Range 5 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMin5 caption = "Color Range 5 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@colorRanges >= 5) && (@colorPreset == "Custom") endparam color param colorMax6 caption = "Color Range 6 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMin6 caption = "Color Range 6 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #6." visible = (@colorRanges >= 6) && (@colorPreset == "Custom") endparam color param colorMax7 caption = "Color Range 7 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMin7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #7." visible = (@colorRanges >= 7) && (@colorPreset == "Custom") endparam color param colorMax8 caption = "Color Range 8 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param colorMin8 caption = "Color Range 8 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #8." visible = (@colorRanges >= 8) && (@colorPreset == "Custom") endparam color param customMax9 caption = "Color Range 9 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMin9 caption = "Color Range 9 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #9." visible = (@colorRanges >= 9) && (@colorPreset == "Custom") endparam color param customMax10 caption = "Color Range 10 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMin10 caption = "Color Range 10 Low" default = rgb(94/255,18/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@colorRanges >= 10) && (@colorPreset == "Custom") endparam color param customMax11 caption = "Color Range 11 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMin11 caption = "Color Range 11 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@colorRanges >= 11) && (@colorPreset == "Custom") endparam color param customMax12 caption = "Color Range 12 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMin12 caption = "Color Range 12 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@colorRanges >= 12) && (@colorPreset == "Custom") endparam color param customMax13 caption = "Color Range 13 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMin13 caption = "Color Range 13 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #13." visible = (@colorRanges >= 13) && (@colorPreset == "Custom") endparam color param customMax14 caption = "Color Range 14 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMin14 caption = "Color Range 14 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #14." visible = (@colorRanges >= 14) && (@colorPreset == "Custom") endparam color param customMax15 caption = "Color Range 15 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMin15 caption = "Color Range 15 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #15." visible = (@colorRanges >= 15) && (@colorPreset == "Custom") endparam color param customMax16 caption = "Color Range 16 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMin16 caption = "Color Range 16 Low" default = rgb(69/255,0/255,82/255) hint = "Specifies the color at the low end of Range #16." visible = (@colorRanges >= 16) && (@colorPreset == "Custom") endparam color param customMax17 caption = "Color Range 17 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMin17 caption = "Color Range 17 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #17." visible = (@colorRanges >= 17) && (@colorPreset == "Custom") endparam color param customMax18 caption = "Color Range 18 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMin18 caption = "Color Range 18 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #18." visible = (@colorRanges >= 18) && (@colorPreset == "Custom") endparam color param customMax19 caption = "Color Range 19 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMin19 caption = "Color Range 19 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #19." visible = (@colorRanges >= 19) && (@colorPreset == "Custom") endparam color param customMax20 caption = "Color Range 20 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMin20 caption = "Color Range 20 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #20." visible = (@colorRanges >= 20) && (@colorPreset == "Custom") endparam color param customMax21 caption = "Color Range 21 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMin21 caption = "Color Range 21 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #21." visible = (@colorRanges >= 21) && (@colorPreset == "Custom") endparam color param customMax22 caption = "Color Range 22 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMin22 caption = "Color Range 22 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #22." visible = (@colorRanges >= 22) && (@colorPreset == "Custom") endparam color param customMax23 caption = "Color Range 23 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMin23 caption = "Color Range 23 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #23." visible = (@colorRanges >= 23) && (@colorPreset == "Custom") endparam color param customMax24 caption = "Color Range 24 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam color param customMin24 caption = "Color Range 24 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #24." visible = (@colorRanges >= 24) && (@colorPreset == "Custom") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default ;-------------------------------------------------------------------- heading caption = " Default Settings" visible = (@customize && @colorPreset == "Default") endheading color param defaultMax1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax2 caption = "Color Range 2 High" default = rgb(252/255,0/255,172/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin2 caption = "Color Range 2 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax3 caption = "Color Range 3 High" default = rgb(252/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax4 caption = "Color Range 4 High" default = rgb(252/255,128/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin4 caption = "Color Range 4 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax5 caption = "Color Range 5 High" default = rgb(252/255,252/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin5 caption = "Color Range 5 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax6 caption = "Color Range 6 High" default = rgb(0/255,252/255,128/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin7 caption = "Color Range 7 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default") endparam color param defaultMax8 caption = "Color Range 8 High" default = rgb(64/255,64/255,252/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default") endparam color param defaultMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 12 ;-------------------------------------------------------------------- heading caption = " Default 12 Color Settings" visible = (@customize && @colorPreset == "Default 12") endheading color param default12Max1 caption = "Color Range 1 High" default = rgb(255/255,85/255,253/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min1 caption = "Color Range 1 Low" default = rgb(98/255,0/255,76/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max2 caption = "Color Range 2 High" default = rgb(252/255,0/255,143/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min2 caption = "Color Range 2 Low" default = rgb(98/255,0/255,54/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min3 caption = "Color Range 3 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max4 caption = "Color Range 4 High" default = rgb(255/255,97/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min4 caption = "Color Range 4 Low" default = rgb(104/255,27/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min5 caption = "Color Range 5 Low" default = rgb(110/255,54/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max6 caption = "Color Range 6 High" default = rgb(255/255,248/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min6 caption = "Color Range 6 Low" default = rgb(102/255,60/255,6/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,58/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min7 caption = "Color Range 7 Low" default = rgb(0/255,76/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,205/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min8 caption = "Color Range 8 Low" default = rgb(0/255,89/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max9 caption = "Color Range 9 High" default = rgb(0/255,194/255,255/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min9 caption = "Color Range 9 Low" default = rgb(0/255,80/255,92/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max10 caption = "Color Range 10 High" default = rgb(35/255,109/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min10 caption = "Color Range 10 Low" default = rgb(0/255,4/255,102/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max11 caption = "Color Range 11 High" default = rgb(149/255,53/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min11 caption = "Color Range 11 Low" default = rgb(53/255,0/255,96/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Max12 caption = "Color Range 12 High" default = rgb(195/255,0/255,252/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam color param default12Min12 caption = "Color Range 12 Low" default = rgb(58/255,0/255,84/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 16 ;-------------------------------------------------------------------- heading caption = " Default 16 Color Settings" visible = (@customize && @colorPreset == "Default 16") endheading color param default16Max1 caption = "Color Range 1 High" default = rgb(255/255,31/255,114/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min1 caption = "Color Range 1 Low" default = rgb(94/255,0/255,40/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min2 caption = "Color Range 2 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max3 caption = "Color Range 3 High" default = rgb(255/255,78/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min3 caption = "Color Range 3 Low" default = rgb(88/255,27/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max4 caption = "Color Range 4 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min4 caption = "Color Range 4 Low" default = rgb(90/255,30/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max5 caption = "Color Range 5 High" default = rgb(255/255,187/255,31/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min5 caption = "Color Range 5 Low" default = rgb(88/255,38/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min6 caption = "Color Range 6 Low" default = rgb(96/255,57/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max7 caption = "Color Range 7 High" default = rgb(170/255,255/255,37/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min7 caption = "Color Range 7 Low" default = rgb(41/255,68/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max8 caption = "Color Range 8 High" default = rgb(0/255,255/255,94/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min8 caption = "Color Range 8 Low" default = rgb(0/255,62/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max9 caption = "Color Range 9 High" default = rgb(0/255,238/255,203/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min9 caption = "Color Range 9 Low" default = rgb(0/255,64/255,54/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max10 caption = "Color Range 10 High" default = rgb(11/255,166/255,255/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min10 caption = "Color Range 10 Low" default = rgb(0/255,38/255,78/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max11 caption = "Color Range 11 High" default = rgb(0/255,68/255,255/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min11 caption = "Color Range 11 Low" default = rgb(0/255,20/255,88/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max12 caption = "Color Range 12 High" default = rgb(99/255,0/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min12 caption = "Color Range 12 Low" default = rgb(47/255,0/255,94/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max13 caption = "Color Range 13 High" default = rgb(145/255,0/255,255/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min13 caption = "Color Range 13 Low" default = rgb(69/255,0/255,102/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max14 caption = "Color Range 14 High" default = rgb(221/255,0/255,255/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min14 caption = "Color Range 14 Low" default = rgb(86/255,0/255,100/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max15 caption = "Color Range 15 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min15 caption = "Color Range 15 Low" default = rgb(90/255,0/255,75/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Max16 caption = "Color Range 16 High" default = rgb(255/255,0/255,140/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam color param default16Min16 caption = "Color Range 16 Low" default = rgb(96/255,0/255,60/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 16") endparam ;-------------------------------------------------------------------- ; Color Defaults for Default 24 ;-------------------------------------------------------------------- heading caption = " Default 24 Color Settings" visible = (@customize && @colorPreset == "Default 24") endheading color param default24Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,211/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min1 caption = "Color Range 1 Low" default = rgb(104/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max2 caption = "Color Range 2 High" default = rgb(255/255,0/255,134/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min2 caption = "Color Range 2 Low" default = rgb(106/255,0/255,55/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max3 caption = "Color Range 3 High" default = rgb(255/255,35/255,88/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max4 caption = "Color Range 4 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max5 caption = "Color Range 5 High" default = rgb(255/255,54/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min5 caption = "Color Range 5 Low" default = rgb(92/255,26/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max6 caption = "Color Range 6 High" default = rgb(255/255,85/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min6 caption = "Color Range 6 Low" default = rgb(96/255,27/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max7 caption = "Color Range 7 High" default = rgb(255/255,118/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min7 caption = "Color Range 7 Low" default = rgb(100/255,38/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min8 caption = "Color Range 8 Low" default = rgb(90/255,40/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max9 caption = "Color Range 9 High" default = rgb(255/255,203/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min9 caption = "Color Range 9 Low" default = rgb(82/255,54/255,0/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max10 caption = "Color Range 10 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min10 caption = "Color Range 10 Low" default = rgb(92/255,61/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max11 caption = "Color Range 11 High" default = rgb(229/255,255/255,0/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min11 caption = "Color Range 11 Low" default = rgb(68/255,68/255,0/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max12 caption = "Color Range 12 High" default = rgb(191/255,255/255,0/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min12 caption = "Color Range 12 Low" default = rgb(32/255,64/255,0/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max13 caption = "Color Range 13 High" default = rgb(0/255,255/255,55/255) hint = "Specifies the color at the high end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min13 caption = "Color Range 13 Low" default = rgb(0/255,78/255,0/255) hint = "Specifies the color at the low end of Range #13." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max14 caption = "Color Range 14 High" default = rgb(0/255,255/255,136/255) hint = "Specifies the color at the high end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min14 caption = "Color Range 14 Low" default = rgb(0/255,66/255,30/255) hint = "Specifies the color at the low end of Range #14." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max15 caption = "Color Range 15 High" default = rgb(0/255,255/255,203/255) hint = "Specifies the color at the high end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min15 caption = "Color Range 15 Low" default = rgb(0/255,62/255,48/255) hint = "Specifies the color at the low end of Range #15." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max16 caption = "Color Range 16 High" default = rgb(0/255,255/255,255/255) hint = "Specifies the color at the high end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min16 caption = "Color Range 16 Low" default = rgb(0/255,71/255,74/255) hint = "Specifies the color at the low end of Range #16." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max17 caption = "Color Range 17 High" default = rgb(0/255,212/255,255/255) hint = "Specifies the color at the high end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min17 caption = "Color Range 17 Low" default = rgb(0/255,57/255,82/255) hint = "Specifies the color at the low end of Range #17." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max18 caption = "Color Range 18 High" default = rgb(0/255,153/255,255/255) hint = "Specifies the color at the high end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min18 caption = "Color Range 18 Low" default = rgb(0/255,37/255,104/255) hint = "Specifies the color at the low end of Range #18." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max19 caption = "Color Range 19 High" default = rgb(0/255,90/255,255/255) hint = "Specifies the color at the high end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min19 caption = "Color Range 19 Low" default = rgb(0/255,0/255,102/255) hint = "Specifies the color at the low end of Range #19." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max20 caption = "Color Range 20 High" default = rgb(92/255,77/255,255/255) hint = "Specifies the color at the high end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min20 caption = "Color Range 20 Low" default = rgb(28/255,0/255,94/255) hint = "Specifies the color at the low end of Range #20." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max21 caption = "Color Range 21 High" default = rgb(131/255,67/255,255/255) hint = "Specifies the color at the high end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min21 caption = "Color Range 21 Low" default = rgb(57/255,0/255,112/255) hint = "Specifies the color at the low end of Range #21." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max22 caption = "Color Range 22 High" default = rgb(175/255,0/255,255/255) hint = "Specifies the color at the high end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min22 caption = "Color Range 22 Low" default = rgb(57/255,0/255,86/255) hint = "Specifies the color at the low end of Range #22." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max23 caption = "Color Range 23 High" default = rgb(209/255,0/255,255/255) hint = "Specifies the color at the high end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min23 caption = "Color Range 23 Low" default = rgb(64/255,0/255,76/255) hint = "Specifies the color at the low end of Range #23." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Max24 caption = "Color Range 24 High" default = rgb(255/255,0/255,255/255) hint = "Specifies the color at the high end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam color param default24Min24 caption = "Color Range 24 Low" default = rgb(84/255,0/255,84/255) hint = "Specifies the color at the low end of Range #24." visible = (@customize && @colorPreset == "Default 24") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Wheel 12 ;-------------------------------------------------------------------- heading caption = " Color Wheel 12 Settings" visible = (@customize && @colorPreset == "Color Wheel 12") endheading color param colorWheel12Max1 caption = "Color Range 1 High" default = rgb(142/255,117/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min1 caption = "Color Range 1 Low" default = rgb(52/255,0/255,100/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max2 caption = "Color Range 2 High" default = rgb(224/255,9/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,84/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max3 caption = "Color Range 3 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min3 caption = "Color Range 3 Low" default = rgb(92/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max4 caption = "Color Range 4 High" default = rgb(252/255,167/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min4 caption = "Color Range 4 Low" default = rgb(95/255,54/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max5 caption = "Color Range 5 High" default = rgb(190/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min5 caption = "Color Range 5 Low" default = rgb(63/255,84/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max6 caption = "Color Range 6 High" default = rgb(0/255,231/255,213/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min6 caption = "Color Range 6 Low" default = rgb(4/255,62/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max7 caption = "Color Range 7 High" default = rgb(182/255,27/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min7 caption = "Color Range 7 Low" default = rgb(53/255,0/255,92/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max8 caption = "Color Range 8 High" default = rgb(255/255,33/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min8 caption = "Color Range 8 Low" default = rgb(80/255,0/255,53/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max9 caption = "Color Range 9 High" default = rgb(255/255,110/255,0/255) hint = "Specifies the color at the high end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min9 caption = "Color Range 9 Low" default = rgb(101/255,25/255,21/255) hint = "Specifies the color at the low end of Range #9." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max10 caption = "Color Range 10 High" default = rgb(255/255,241/255,0/255) hint = "Specifies the color at the high end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min10 caption = "Color Range 10 Low" default = rgb(88/255,69/255,0/255) hint = "Specifies the color at the low end of Range #10." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max11 caption = "Color Range 11 High" default = rgb(0/255,248/255,103/255) hint = "Specifies the color at the high end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min11 caption = "Color Range 11 Low" default = rgb(0/255,83/255,15/255) hint = "Specifies the color at the low end of Range #11." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Max12 caption = "Color Range 12 High" default = rgb(27/255,119/255,255/255) hint = "Specifies the color at the high end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam color param colorWheel12Min12 caption = "Color Range 12 Low" default = rgb(0/255,31/255,92/255) hint = "Specifies the color at the low end of Range #12." visible = (@customize && @colorPreset == "Color Wheel 12") endparam ;-------------------------------------------------------------------- ; Color Defaults for Alhambra 8 ;-------------------------------------------------------------------- heading caption = " Alhambra 8 Settings" visible = (@customize && @colorPreset == "Alhambra 8") endheading color param alhambra8Max1 caption = "Color Range 1 High" default = rgb(15/255,222/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min1 caption = "Color Range 1 Low" default = rgb(0/255,43/255,52/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max2 caption = "Color Range 2 High" default = rgb(255/255,204/255,75/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min2 caption = "Color Range 2 Low" default = rgb(92/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max3 caption = "Color Range 3 High" default = rgb(188/255,152/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min3 caption = "Color Range 3 Low" default = rgb(41/255,0/255,70/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max4 caption = "Color Range 4 High" default = rgb(255/255,155/255,109/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min4 caption = "Color Range 4 Low" default = rgb(95/255,36/255,14/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max5 caption = "Color Range 5 High" default = rgb(121/255,180/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min5 caption = "Color Range 5 Low" default = rgb(0/255,47/255,91/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max6 caption = "Color Range 6 High" default = rgb(255/255,131/255,126/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min6 caption = "Color Range 6 Low" default = rgb(104/255,20/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max7 caption = "Color Range 7 High" default = rgb(33/255,255/255,220/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min7 caption = "Color Range 7 Low" default = rgb(0/255,67/255,49/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Max8 caption = "Color Range 8 High" default = rgb(255/255,177/255,93/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam color param alhambra8Min8 caption = "Color Range 8 Low" default = rgb(100/255,44/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Alhambra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Belvedere 8 ;-------------------------------------------------------------------- heading caption = " Belvedere 8 Settings" visible = (@customize && @colorPreset == "Belvedere 8") endheading color param belvedere8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min1 caption = "Color Range 1 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min2 caption = "Color Range 2 Low" default = rgb(92/255,92/255,122/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max3 caption = "Color Range 3 High" default = rgb(123/255,201/255,254/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min3 caption = "Color Range 3 Low" default = rgb(0/255,45/255,68/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max4 caption = "Color Range 4 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min4 caption = "Color Range 4 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max5 caption = "Color Range 5 High" default = rgb(255/255,230/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min5 caption = "Color Range 5 Low" default = rgb(162/255,28/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max6 caption = "Color Range 6 High" default = rgb(0/255,255/255,217/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min6 caption = "Color Range 6 Low" default = rgb(0/255,54/255,46/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max7 caption = "Color Range 7 High" default = rgb(255/255,20/255,70/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min7 caption = "Color Range 7 Low" default = rgb(100/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Max8 caption = "Color Range 8 High" default = rgb(95/255,84/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam color param belvedere8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,89/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Belvedere 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Bouquet 8 ;-------------------------------------------------------------------- heading caption = " Bouquet 8 Settings" visible = (@customize && @colorPreset == "Bouquet 8") endheading color param bouquet8Max1 caption = "Color Range 1 High" default = rgb(0/255,255/255,131/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min1 caption = "Color Range 1 Low" default = rgb(0/255,84/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max2 caption = "Color Range 2 High" default = rgb(52/255,255/255,198/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min2 caption = "Color Range 2 Low" default = rgb(0/255,82/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max3 caption = "Color Range 3 High" default = rgb(0/255,244/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min3 caption = "Color Range 3 Low" default = rgb(0/255,64/255,74/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max4 caption = "Color Range 4 High" default = rgb(180/255,169/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min4 caption = "Color Range 4 Low" default = rgb(40/255,12/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max5 caption = "Color Range 5 High" default = rgb(251/255,148/255,230/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min5 caption = "Color Range 5 Low" default = rgb(100/255,20/255,67/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max6 caption = "Color Range 6 High" default = rgb(255/255,101/255,140/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min6 caption = "Color Range 6 Low" default = rgb(84/255,15/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max7 caption = "Color Range 7 High" default = rgb(255/255,149/255,111/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min7 caption = "Color Range 7 Low" default = rgb(77/255,36/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Max8 caption = "Color Range 8 High" default = rgb(255/255,252/255,125/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam color param bouquet8Min8 caption = "Color Range 8 Low" default = rgb(95/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Bouquet 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Color Switch 8 ;-------------------------------------------------------------------- heading caption = " Color Switch 8 Settings" visible = (@customize && @colorPreset == "Color Switch 8") endheading color param colorSwitch8Max1 caption = "Color Range 1 High" default = rgb(255/255,33/255,52/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min1 caption = "Color Range 1 Low" default = rgb(90/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max2 caption = "Color Range 2 High" default = rgb(61/255,136/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,82/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,44/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min3 caption = "Color Range 3 Low" default = rgb(0/255,70/255,7/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max4 caption = "Color Range 4 High" default = rgb(255/255,131/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min4 caption = "Color Range 4 Low" default = rgb(105/255,40/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max5 caption = "Color Range 5 High" default = rgb(255/255,27/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min5 caption = "Color Range 5 Low" default = rgb(104/255,0/255,78/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max6 caption = "Color Range 6 High" default = rgb(168/255,87/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min6 caption = "Color Range 6 Low" default = rgb(35/255,0/255,58/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max7 caption = "Color Range 7 High" default = rgb(0/255,252/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min7 caption = "Color Range 7 Low" default = rgb(0/255,60/255,60/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,38/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam color param colorSwitch8Min8 caption = "Color Range 8 Low" default = rgb(90/255,90/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Color Switch 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Evening Sky 8 ;-------------------------------------------------------------------- heading caption = " Evening Sky 8 Settings" visible = (@customize && @colorPreset == "Evening Sky 8") endheading color param eveningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,238/255,222/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min1 caption = "Color Range 1 Low" default = rgb(50/255,35/255,35/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max2 caption = "Color Range 2 High" default = rgb(255/255,226/255,85/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min2 caption = "Color Range 2 Low" default = rgb(85/255,54/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max3 caption = "Color Range 3 High" default = rgb(249/255,148/255,216/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min3 caption = "Color Range 3 Low" default = rgb(79/255,20/255,57/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max4 caption = "Color Range 4 High" default = rgb(159/255,159/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min4 caption = "Color Range 4 Low" default = rgb(22/255,16/255,54/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,175/255,79/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min5 caption = "Color Range 5 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max6 caption = "Color Range 6 High" default = rgb(124/255,190/255,251/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min6 caption = "Color Range 6 Low" default = rgb(13/255,40/255,62/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max7 caption = "Color Range 7 High" default = rgb(255/255,111/255,123/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min7 caption = "Color Range 7 Low" default = rgb(57/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Max8 caption = "Color Range 8 High" default = rgb(111/255,255/255,245/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam color param eveningSky8Min8 caption = "Color Range 8 Low" default = rgb(0/255,60/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Evening Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fantasia 8 ;-------------------------------------------------------------------- heading caption = " Fantasia 8 Settings" visible = (@customize && @colorPreset == "Fantasia 8") endheading color param fantasia8Max1 caption = "Color Range 1 High" default = rgb(255/255,230/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min1 caption = "Color Range 1 Low" default = rgb(102/255,81/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max2 caption = "Color Range 2 High" default = rgb(230/255,78/255,208/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min2 caption = "Color Range 2 Low" default = rgb(104/255,0/255,52/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max3 caption = "Color Range 3 High" default = rgb(180/255,119/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min3 caption = "Color Range 3 Low" default = rgb(56/255,0/255,82/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max4 caption = "Color Range 4 High" default = rgb(0/255,228/255,150/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min4 caption = "Color Range 4 Low" default = rgb(0/255,50/255,30/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max5 caption = "Color Range 5 High" default = rgb(131/255,148/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min5 caption = "Color Range 5 Low" default = rgb(38/255,31/255,85/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max6 caption = "Color Range 6 High" default = rgb(255/255,182/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min6 caption = "Color Range 6 Low" default = rgb(76/255,40/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max7 caption = "Color Range 7 High" default = rgb(252/255,0/255,113/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min7 caption = "Color Range 7 Low" default = rgb(84/255,0/255,34/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Max8 caption = "Color Range 8 High" default = rgb(0/255,232/255,249/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam color param fantasia8Min8 caption = "Color Range 8 Low" default = rgb(0/255,64/255,78/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fantasia 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Flowering Orchard 8 ;-------------------------------------------------------------------- heading caption = " Flowering Orchard 8 Settings" visible = (@customize && @colorPreset == "Flowering Orchard 8") endheading color param floweringOrchard8Max1 caption = "Color Range 1 High" default = rgb(255/255,188/255,213/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min1 caption = "Color Range 1 Low" default = rgb(132/255,30/255,66/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max2 caption = "Color Range 2 High" default = rgb(240/255,135/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min2 caption = "Color Range 2 Low" default = rgb(70/255,0/255,59/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max3 caption = "Color Range 3 High" default = rgb(255/255,75/255,153/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min3 caption = "Color Range 3 Low" default = rgb(104/255,15/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max4 caption = "Color Range 4 High" default = rgb(71/255,213/255,119/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min4 caption = "Color Range 4 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max5 caption = "Color Range 5 High" default = rgb(255/255,102/255,209/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min5 caption = "Color Range 5 Low" default = rgb(116/255,10/255,86/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max6 caption = "Color Range 6 High" default = rgb(154/255,199/255,51/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min6 caption = "Color Range 6 Low" default = rgb(28/255,44/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max7 caption = "Color Range 7 High" default = rgb(255/255,162/255,228/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min7 caption = "Color Range 7 Low" default = rgb(110/255,0/255,55/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Max8 caption = "Color Range 8 High" default = rgb(255/255,201/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam color param floweringOrchard8Min8 caption = "Color Range 8 Low" default = rgb(145/255,20/255,54/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Flowering Orchard 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Morning Sky 8 ;-------------------------------------------------------------------- heading caption = " Morning Sky 8 Settings" visible = (@customize && @colorPreset == "Morning Sky 8") endheading color param morningSky8Max1 caption = "Color Range 1 High" default = rgb(255/255,178/255,217/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min1 caption = "Color Range 1 Low" default = rgb(79/255,29/255,57/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max2 caption = "Color Range 2 High" default = rgb(107/255,246/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min2 caption = "Color Range 2 Low" default = rgb(13/255,70/255,75/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max3 caption = "Color Range 3 High" default = rgb(255/255,199/255,137/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min3 caption = "Color Range 3 Low" default = rgb(62/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max4 caption = "Color Range 4 High" default = rgb(241/255,245/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min4 caption = "Color Range 4 Low" default = rgb(16/255,24/255,46/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max5 caption = "Color Range 5 High" default = rgb(255/255,177/255,188/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min5 caption = "Color Range 5 Low" default = rgb(54/255,14/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max6 caption = "Color Range 6 High" default = rgb(248/255,236/255,236/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min6 caption = "Color Range 6 Low" default = rgb(49/255,38/255,35/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max7 caption = "Color Range 7 High" default = rgb(129/255,201/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min7 caption = "Color Range 7 Low" default = rgb(0/255,56/255,70/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,146/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam color param morningSky8Min8 caption = "Color Range 8 Low" default = rgb(89/255,76/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Morning Sky 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel 8 ;-------------------------------------------------------------------- heading caption = " Pastel 8 Settings" visible = (@customize && @colorPreset == "Pastel 8") endheading color param pastel8Max1 caption = "Color Range 1 High" default = rgb(147/255,255/255,193/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min1 caption = "Color Range 1 Low" default = rgb(0/255,48/255,16/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max2 caption = "Color Range 2 High" default = rgb(147/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,48/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max3 caption = "Color Range 3 High" default = rgb(148/255,148/255,253/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min3 caption = "Color Range 3 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max4 caption = "Color Range 4 High" default = rgb(199/255,149/255,253/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max5 caption = "Color Range 5 High" default = rgb(255/255,147/255,221/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min5 caption = "Color Range 5 Low" default = rgb(96/255,0/255,32/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max6 caption = "Color Range 6 High" default = rgb(254/255,148/255,148/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min6 caption = "Color Range 6 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max7 caption = "Color Range 7 High" default = rgb(255/255,202/255,147/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min7 caption = "Color Range 7 Low" default = rgb(160/255,16/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,147/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam color param pastel8Min8 caption = "Color Range 8 Low" default = rgb(152/255,64/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Pastel Rainbow 8 ;-------------------------------------------------------------------- heading caption = " Pastel Rainbow 8 Settings" visible = (@customize && @colorPreset == "Pastel Rainbow 8") endheading color param pastelRainbow8Max1 caption = "Color Range 1 High" default = rgb(242/255,246/255,174/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min1 caption = "Color Range 1 Low" default = rgb(20/255,48/255,12/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max2 caption = "Color Range 2 High" default = rgb(182/255,242/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min2 caption = "Color Range 2 Low" default = rgb(20/255,44/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max3 caption = "Color Range 3 High" default = rgb(202/255,202/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min3 caption = "Color Range 3 Low" default = rgb(36/255,36/255,48/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max4 caption = "Color Range 4 High" default = rgb(255/255,170/255,170/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min4 caption = "Color Range 4 Low" default = rgb(89/255,0/255,24/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max5 caption = "Color Range 5 High" default = rgb(255/255,246/255,178/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min5 caption = "Color Range 5 Low" default = rgb(40/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max6 caption = "Color Range 6 High" default = rgb(255/255,238/255,206/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min6 caption = "Color Range 6 Low" default = rgb(52/255,16/255,40/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max7 caption = "Color Range 7 High" default = rgb(214/255,222/255,161/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min7 caption = "Color Range 7 Low" default = rgb(4/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Max8 caption = "Color Range 8 High" default = rgb(255/255,230/255,246/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam color param pastelRainbow8Min8 caption = "Color Range 8 Low" default = rgb(70/255,50/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Pastel Rainbow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Showtime 8 ;-------------------------------------------------------------------- heading caption = " Showtime 8 Settings" visible = (@customize && @colorPreset == "Showtime 8") endheading color param showtime8Max1 caption = "Color Range 1 High" default = rgb(241/255,53/255,82/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min1 caption = "Color Range 1 Low" default = rgb(88/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max2 caption = "Color Range 2 High" default = rgb(255/255,121/255,52/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min2 caption = "Color Range 2 Low" default = rgb(107/255,29/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max3 caption = "Color Range 3 High" default = rgb(253/255,168/255,67/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min3 caption = "Color Range 3 Low" default = rgb(97/255,42/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max4 caption = "Color Range 4 High" default = rgb(255/255,231/255,21/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min4 caption = "Color Range 4 Low" default = rgb(140/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max5 caption = "Color Range 5 High" default = rgb(58/255,219/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min5 caption = "Color Range 5 Low" default = rgb(0/255,36/255,83/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max6 caption = "Color Range 6 High" default = rgb(9/255,116/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min6 caption = "Color Range 6 Low" default = rgb(33/255,30/255,81/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max7 caption = "Color Range 7 High" default = rgb(105/255,71/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min7 caption = "Color Range 7 Low" default = rgb(36/255,0/255,76/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Max8 caption = "Color Range 8 High" default = rgb(187/255,32/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam color param showtime8Min8 caption = "Color Range 8 Low" default = rgb(50/255,0/255,56/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Showtime 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Soleil 8 ;-------------------------------------------------------------------- heading caption = " Soleil 8 Settings" visible = (@customize && @colorPreset == "Soleil 8") endheading color param soleil8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,35/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min1 caption = "Color Range 1 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max2 caption = "Color Range 2 High" default = rgb(255/255,209/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min2 caption = "Color Range 2 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max3 caption = "Color Range 3 High" default = rgb(231/255,237/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min3 caption = "Color Range 3 Low" default = rgb(54/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max4 caption = "Color Range 4 High" default = rgb(255/255,141/255,49/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min4 caption = "Color Range 4 Low" default = rgb(92/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,156/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min5 caption = "Color Range 5 Low" default = rgb(76/255,44/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max6 caption = "Color Range 6 High" default = rgb(255/255,158/255,17/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min6 caption = "Color Range 6 Low" default = rgb(59/255,24/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,217/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min7 caption = "Color Range 7 Low" default = rgb(76/255,41/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Max8 caption = "Color Range 8 High" default = rgb(255/255,184/255,53/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam color param soleil8Min8 caption = "Color Range 8 Low" default = rgb(76/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Soleil 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Chill 8 ;-------------------------------------------------------------------- heading caption = " Chill 8 Settings" visible = (@customize && @colorPreset == "Chill 8") endheading color param chillMax1 caption = "Color Range 1 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin1 caption = "Color Range 1 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax2 caption = "Color Range 2 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax3 caption = "Color Range 3 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin3 caption = "Color Range 3 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax4 caption = "Color Range 4 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax5 caption = "Color Range 5 High" default = rgb(233/255,245/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin5 caption = "Color Range 5 Low" default = rgb(0/255,21/255,60/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax6 caption = "Color Range 6 High" default = rgb(182/255,201/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,76/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax7 caption = "Color Range 7 High" default = rgb(0/255,34/255,136/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin7 caption = "Color Range 7 Low" default = rgb(9/255,9/255,59/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMax8 caption = "Color Range 8 High" default = rgb(0/255,75/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam color param chillMin8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,25/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Chill 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cloud Nine 8 ;-------------------------------------------------------------------- heading caption = " Cloud Nine 8 Settings" visible = (@customize && @colorPreset == "Cloud Nine 8") endheading color param cloudNineMax1 caption = "Color Range 1 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin1 caption = "Color Range 1 Low" default = rgb(143/255,60/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax2 caption = "Color Range 2 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin2 caption = "Color Range 2 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax3 caption = "Color Range 3 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin3 caption = "Color Range 3 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax4 caption = "Color Range 4 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin4 caption = "Color Range 4 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax5 caption = "Color Range 5 High" default = rgb(255/255,255/255,173/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin5 caption = "Color Range 5 Low" default = rgb(140/255,63/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax6 caption = "Color Range 6 High" default = rgb(247/255,214/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin6 caption = "Color Range 6 Low" default = rgb(139/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax7 caption = "Color Range 7 High" default = rgb(212/255,255/255,249/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin7 caption = "Color Range 7 Low" default = rgb(0/255,53/255,20/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMax8 caption = "Color Range 8 High" default = rgb(255/255,221/255,217/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam color param cloudNineMin8 caption = "Color Range 8 Low" default = rgb(115/255,21/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Cloud Nine 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for La Terra 8 ;-------------------------------------------------------------------- heading caption = " La Terra 8 Settings" visible = (@customize && @colorPreset == "La Terra 8") endheading color param laTerraMax1 caption = "Color Range 1 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin1 caption = "Color Range 1 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax2 caption = "Color Range 2 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin2 caption = "Color Range 2 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax3 caption = "Color Range 3 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin3 caption = "Color Range 3 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax4 caption = "Color Range 4 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin4 caption = "Color Range 4 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax5 caption = "Color Range 5 High" default = rgb(255/255,174/255,103/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin5 caption = "Color Range 5 Low" default = rgb(102/255,47/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax6 caption = "Color Range 6 High" default = rgb(255/255,242/255,39/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin6 caption = "Color Range 6 Low" default = rgb(100/255,58/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax7 caption = "Color Range 7 High" default = rgb(170/255,86/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin7 caption = "Color Range 7 Low" default = rgb(92/255,29/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMax8 caption = "Color Range 8 High" default = rgb(190/255,118/255,13/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam color param laTerraMin8 caption = "Color Range 8 Low" default = rgb(84/255,41/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "La Terra 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Santa Fe 8 ;-------------------------------------------------------------------- heading caption = " Santa Fe 8 Settings" visible = (@customize && @colorPreset == "Santa Fe 8") endheading color param santaFe8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min1 caption = "Color Range 1 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max2 caption = "Color Range 2 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min2 caption = "Color Range 2 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max3 caption = "Color Range 3 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min3 caption = "Color Range 3 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max4 caption = "Color Range 4 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min4 caption = "Color Range 4 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,76/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min5 caption = "Color Range 5 Low" default = rgb(122/255,52/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max6 caption = "Color Range 6 High" default = rgb(0/255,229/255,222/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min6 caption = "Color Range 6 Low" default = rgb(0/255,48/255,51/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max7 caption = "Color Range 7 High" default = rgb(255/255,200/255,140/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min7 caption = "Color Range 7 Low" default = rgb(82/255,21/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Max8 caption = "Color Range 8 High" default = rgb(255/255,157/255,82/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam color param santaFe8Min8 caption = "Color Range 8 Low" default = rgb(130/255,0/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Santa Fe 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Spring 8 ;-------------------------------------------------------------------- heading caption = " Spring 8 Settings" visible = (@customize && @colorPreset == "Spring 8") endheading color param spring8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min1 caption = "Color Range 1 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max2 caption = "Color Range 2 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min2 caption = "Color Range 2 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max3 caption = "Color Range 3 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min3 caption = "Color Range 3 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max4 caption = "Color Range 4 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min4 caption = "Color Range 4 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,145/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min5 caption = "Color Range 5 Low" default = rgb(110/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max6 caption = "Color Range 6 High" default = rgb(215/255,182/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min6 caption = "Color Range 6 Low" default = rgb(86/255,0/255,110/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max7 caption = "Color Range 7 High" default = rgb(189/255,246/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min7 caption = "Color Range 7 Low" default = rgb(0/255,51/255,54/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Max8 caption = "Color Range 8 High" default = rgb(255/255,181/255,237/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam color param spring8Min8 caption = "Color Range 8 Low" default = rgb(92/255,0/255,31/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Spring 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Summer 8 ;-------------------------------------------------------------------- heading caption = " Summer 8 Settings" visible = (@customize && @colorPreset == "Summer 8") endheading color param summer8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min1 caption = "Color Range 1 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max2 caption = "Color Range 2 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max3 caption = "Color Range 3 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min3 caption = "Color Range 3 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max4 caption = "Color Range 4 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min5 caption = "Color Range 5 Low" default = rgb(64/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max6 caption = "Color Range 6 High" default = rgb(255/255,64/255,64/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min6 caption = "Color Range 6 Low" default = rgb(64/255,0/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max7 caption = "Color Range 7 High" default = rgb(0/255,255/255,101/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min7 caption = "Color Range 7 Low" default = rgb(0/255,62/255,22/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Max8 caption = "Color Range 8 High" default = rgb(64/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam color param summer8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,64/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Summer 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fall 8 ;-------------------------------------------------------------------- heading caption = " Fall 8 Settings" visible = (@customize && @colorPreset == "Fall 8") endheading color param fall8Max1 caption = "Color Range 1 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min1 caption = "Color Range 1 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max2 caption = "Color Range 2 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min2 caption = "Color Range 2 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max3 caption = "Color Range 3 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min3 caption = "Color Range 3 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max4 caption = "Color Range 4 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min4 caption = "Color Range 4 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max5 caption = "Color Range 5 High" default = rgb(255/255,235/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min5 caption = "Color Range 5 Low" default = rgb(136/255,46/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max6 caption = "Color Range 6 High" default = rgb(255/255,61/255,32/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min6 caption = "Color Range 6 Low" default = rgb(96/255,26/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max7 caption = "Color Range 7 High" default = rgb(255/255,184/255,26/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min7 caption = "Color Range 7 Low" default = rgb(86/255,24/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Max8 caption = "Color Range 8 High" default = rgb(255/255,107/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam color param fall8Min8 caption = "Color Range 8 Low" default = rgb(112/255,29/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Fall 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Winter 8 ;-------------------------------------------------------------------- heading caption = " Winter 8 Settings" visible = (@customize && @colorPreset == "Winter 8") endheading color param winter8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min1 caption = "Color Range 1 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max2 caption = "Color Range 2 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min2 caption = "Color Range 2 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max3 caption = "Color Range 3 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min3 caption = "Color Range 3 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max4 caption = "Color Range 4 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min4 caption = "Color Range 4 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min5 caption = "Color Range 5 Low" default = rgb(65/255,65/255,87/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max6 caption = "Color Range 6 High" default = rgb(163/255,186/255,209/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min6 caption = "Color Range 6 Low" default = rgb(35/255,35/255,61/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max7 caption = "Color Range 7 High" default = rgb(173/255,166/255,157/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min7 caption = "Color Range 7 Low" default = rgb(78/255,65/255,52/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Max8 caption = "Color Range 8 High" default = rgb(113/255,118/255,140/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam color param winter8Min8 caption = "Color Range 8 Low" default = rgb(20/255,32/255,68/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Winter 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Mojave 8 ;-------------------------------------------------------------------- heading caption = " Mojave 8 Settings" visible = (@customize && @colorPreset == "Mojave 8") endheading color param mojave8Max1 caption = "Color Range 1 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min1 caption = "Color Range 1 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max2 caption = "Color Range 2 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min2 caption = "Color Range 2 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max3 caption = "Color Range 3 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min3 caption = "Color Range 3 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max4 caption = "Color Range 4 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min4 caption = "Color Range 4 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max5 caption = "Color Range 5 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min5 caption = "Color Range 5 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max6 caption = "Color Range 6 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min6 caption = "Color Range 6 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max7 caption = "Color Range 7 High" default = rgb(255/255,169/255,50/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min7 caption = "Color Range 7 Low" default = rgb(116/255,0/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Max8 caption = "Color Range 8 High" default = rgb(255/255,243/255,120/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam color param mojave8Min8 caption = "Color Range 8 Low" default = rgb(86/255,31/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Mojave 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green 8 Settings" visible = (@customize && @colorPreset == "Gold/Green 8") endheading color param goldGreen8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max5 caption = "Color Range 5 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min5 caption = "Color Range 5 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max7 caption = "Color Range 7 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min7 caption = "Color Range 7 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam color param goldGreen8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Green Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Green Alt 8") endheading color param goldGreenAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max4 caption = "Color Range 4 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max6 caption = "Color Range 6 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Max8 caption = "Color Range 8 High" default = rgb(0/255,129/255,8/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam color param goldGreenAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Green Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver 8") endheading color param goldSilver8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min2 caption = "Color Range 2 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min4 caption = "Color Range 4 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min5 caption = "Color Range 5 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min7 caption = "Color Range 7 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam color param goldSilver8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Silver Alt 8 ;-------------------------------------------------------------------- heading caption = " Gold/Silver Alt 8 Settings" visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endheading color param goldSilverAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min2 caption = "Color Range 2 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min3 caption = "Color Range 3 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min4 caption = "Color Range 4 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min5 caption = "Color Range 5 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min6 caption = "Color Range 6 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min7 caption = "Color Range 7 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam color param goldSilverAlt8Min8 caption = "Color Range 8 Low" default = rgb(125/255,125/255,125/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Gold/Silver Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 8") endheading color param purpleYellow8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max2 caption = "Color Range 2 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min2 caption = "Color Range 2 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max4 caption = "Color Range 4 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min4 caption = "Color Range 4 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min5 caption = "Color Range 5 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min7 caption = "Color Range 7 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam color param purpleYellow8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow Alt 8 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow Alt 8 Settings" visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endheading color param purpleYellowAlt8Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max3 caption = "Color Range 3 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min3 caption = "Color Range 3 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min4 caption = "Color Range 4 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max5 caption = "Color Range 5 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min5 caption = "Color Range 5 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max6 caption = "Color Range 6 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min6 caption = "Color Range 6 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max7 caption = "Color Range 7 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min7 caption = "Color Range 7 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Max8 caption = "Color Range 8 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam color param purpleYellowAlt8Min8 caption = "Color Range 8 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Purple/Yellow Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue 8") endheading color param silverBlue8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max4 caption = "Color Range 4 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min4 caption = "Color Range 4 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max5 caption = "Color Range 5 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min5 caption = "Color Range 5 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max7 caption = "Color Range 7 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min7 caption = "Color Range 7 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam color param silverBlue8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Silver/Blue Alt 8 ;-------------------------------------------------------------------- heading caption = " Silver/Blue Alt 8 Settings" visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endheading color param silverBlueAlt8Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min1 caption = "Color Range 1 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min3 caption = "Color Range 3 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #3." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max4 caption = "Color Range 4 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min4 caption = "Color Range 4 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #4." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max5 caption = "Color Range 5 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min5 caption = "Color Range 5 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #5." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max6 caption = "Color Range 6 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min6 caption = "Color Range 6 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #6." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max7 caption = "Color Range 7 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min7 caption = "Color Range 7 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #7." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Max8 caption = "Color Range 8 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam color param silverBlueAlt8Min8 caption = "Color Range 8 Low" default = rgb(0/255,0/255,96/255) hint = "Specifies the color at the low end of Range #8." visible = (@customize && @colorPreset == "Silver/Blue Alt 8") endparam ;-------------------------------------------------------------------- ; Color Defaults for Fourth of July 3 ;-------------------------------------------------------------------- heading caption = " Fourth of July 3 Settings" visible = (@customize && @colorPreset == "Fourth of July 3") endheading color param fourthOfJuly3Max1 caption = "Color Range 1 High" default = rgb(255/255,0/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min1 caption = "Color Range 1 Low" default = rgb(128/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max2 caption = "Color Range 2 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min2 caption = "Color Range 2 Low" default = rgb(0/255,0/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Max3 caption = "Color Range 3 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam color param fourthOfJuly3Min3 caption = "Color Range 3 Low" default = rgb(128/255,128/255,128/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Fourth of July 3") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/Silver 2 ;-------------------------------------------------------------------- heading caption = " Blue/Silver 2 Settings" visible = (@customize && @colorPreset == "Blue/Silver 2") endheading color param blueSilver2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam color param blueSilver2Min2 caption = "Color Range 2 Low" default = rgb(97/255,97/255,97/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/Silver 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Blue/White 2 ;-------------------------------------------------------------------- heading caption = " Blue/White 2 Settings" visible = (@customize && @colorPreset == "Blue/White 2") endheading color param blueWhite2Max1 caption = "Color Range 1 High" default = rgb(64/255,64/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min1 caption = "Color Range 1 Low" default = rgb(0/255,0/255,97/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam color param blueWhite2Min2 caption = "Color Range 2 Low" default = rgb(124/255,124/255,124/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Blue/White 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Magenta 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Magenta 2 Settings" visible = (@customize && @colorPreset == "Cyan/Magenta 2") endheading color param cyanMagenta2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Max2 caption = "Color Range 2 High" default = rgb(255/255,128/255,255/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam color param cyanMagenta2Min2 caption = "Color Range 2 Low" default = rgb(64/255,0/255,64/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Magenta 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Cyan/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Cyan/Yellow 2 Settings" visible = (@customize && @colorPreset == "Cyan/Yellow 2") endheading color param cyanYellow2Max1 caption = "Color Range 1 High" default = rgb(128/255,255/255,255/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min1 caption = "Color Range 1 Low" default = rgb(0/255,64/255,64/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam color param cyanYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Cyan/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Gold/Green 2 ;-------------------------------------------------------------------- heading caption = " Gold/Green 2 Settings" visible = (@customize && @colorPreset == "Gold/Green 2") endheading color param goldGreen2Max1 caption = "Color Range 1 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min1 caption = "Color Range 1 Low" default = rgb(153/255,64/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Max2 caption = "Color Range 2 High" default = rgb(0/255,129/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam color param goldGreen2Min2 caption = "Color Range 2 Low" default = rgb(0/255,32/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Gold/Green 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Purple/Yellow 2 ;-------------------------------------------------------------------- heading caption = " Purple/Yellow 2 Settings" visible = (@customize && @colorPreset == "Purple/Yellow 2") endheading color param purpleYellow2Max1 caption = "Color Range 1 High" default = rgb(172/255,96/255,252/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min1 caption = "Color Range 1 Low" default = rgb(72/255,0/255,80/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Max2 caption = "Color Range 2 High" default = rgb(255/255,255/255,0/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam color param purpleYellow2Min2 caption = "Color Range 2 Low" default = rgb(155/255,65/255,0/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Purple/Yellow 2") endparam ;-------------------------------------------------------------------- ; Color Defaults for Red/Tan 2 ;-------------------------------------------------------------------- heading caption = " Red/Tan 2 Settings" visible = (@customize && @colorPreset == "Red/Tan 2") endheading color param redTan2Max1 caption = "Color Range 1 High" default = rgb(255/255,32/255,32/255) hint = "Specifies the color at the high end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min1 caption = "Color Range 1 Low" default = rgb(96/255,0/255,0/255) hint = "Specifies the color at the low end of Range #1." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Max2 caption = "Color Range 2 High" default = rgb(255/255,208/255,152/255) hint = "Specifies the color at the high end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam color param redTan2Min2 caption = "Color Range 2 Low" default = rgb(128/255,108/255,60/255) hint = "Specifies the color at the low end of Range #2." visible = (@customize && @colorPreset == "Red/Tan 2") endparam param highlight_type caption = "Color Highlight Type" default = 1 enum = "none" "linear" "log" "exponential" hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param extent caption = "Highlight Extent" default = 0.05 min = 0.0 max = 0.5 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param hblend caption = "Highlight power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam color param hcolor caption = "Highlight color" default = rgb(255/255,255/255,255/255) visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param scale caption = "color scale adj" default = 1.0 endparam float param cblend caption = "color blend power" default = 3.0 visible = @colorPreset != "Gradient" endparam param method caption = "color method" enum = "level" "size" "index" "position" "generator" "size threshold" default = 0 hint = "Tetrahedron has 4 generators, Cube has 6 generators, \ Octahedron has 8 generators, Dodecahedron has 12 generators." endparam param rthresh caption = "Size thresh" default = 0.5 visible = @method == 5 endparam param adj caption = "color methd adj" default = 1.0 endparam float param luminanceUpper caption = "Lum. Upper Value" default = 0.6 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the upper value \ when generating the ranges from the gradient. This value \ is used with the brighter end of the color range." visible = (@colorPreset == "Generate") endparam float param luminanceLower caption = "Lum. Lower Value" default = 0.1 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the lower value \ when generating the ranges from the gradient. This value \ is used with the darker end of the color range." visible = (@colorPreset == "Generate") endparam int param totalColors caption = "# Colors in Gradient" default = 8 min = 1 max = 8 visible = (@colorPreset == "Gradient") endparam int param ncolor caption = "# Colors to Use" default = 8 min = 1 max = 24 visible = (@colorPreset != "Generate") endparam int param colorRanges caption = "Number of Ranges" default = 8 min = 1 max = 24 hint = "The number of color ranges (1..24)." visible = (@colorPreset == "Custom") endparam int param numRanges caption = "Number of Ranges" default = 8 min = 1 max = 500 hint = "The number of color ranges." visible = (@colorPreset == "Generate") endparam param perturbRanges caption = "Perturb Ranges" enum = "None" "Even/Odd" "1st Half / 2nd Half" "8 Range Custom" default = 0 hint = "Modify the way the ranges are assigned to the elements. \ 'None' = Assign in Order (0 1 2 3 4 5 6 7); 'Even Odd' = \ Assign Even Ranges, then Odd Ranges (0 2 4 6 1 3 5 7); \ '1st Half / 2nd Half' = Assign from first half of range, \ then 2nd half (0 4 1 5 2 6 3 7); '8 Range Custom' = Assign \ the ordering by entering digits 1-8. Only works for ranges \ with 8 colors." visible = ((@colorPreset == "Custom" && @colorRanges >= 3) || \ (@colorPreset == "Generate" && @numRanges >= 3) || \ (@colorPreset != "Custom" && @colorPreset != "Generate" && \ @colorPreset != "Gradient")) endparam int param rangeOrder caption = "Range Order" default = 12345678 min = 11111111 max = 88888888 hint = "Specify the color range ordering. Use digits 1-8 to specify \ the order the ranges will be used. For example, to reverse \ the ordering, specify 87654321. To alternate, use 13572468. \ If color map or preset is defined that does not contain exactly \ 8 ranges, then this parameter will not have any effect." visible = (@perturbRanges == "8 Range Custom") endparam int param colorOffset caption = "Range Offset" default = 0 min = 0 max = 23 hint = "This is used to rotate the color ranges. The offset can \ range from 0 to 23, where 23 is the maximum number of ranges \ that can be specified using the 'Generate' Color Preset." visible = (@colorPreset != "Gradient") endparam $ifdef VER40 heading caption = "Camera Settings" expanded = false endheading heading text = "Camera Origin" endheading $else heading caption = " Camera Origin" endheading $endif float param camerax caption = " X" default = 0.5 endparam float param cameray caption = " Y" default = -1.4 endparam float param cameraz caption = " Z" default = 10 endparam $ifdef VER40 heading text = "Camera Point At" endheading $else heading caption = " Camera Point At" endheading $endif float param cpointx caption = " X" default = 1.0 endparam float param cpointy caption = " Y" default = 0.7 endparam float param vplane caption = " Z" default = 2.0 endparam heading caption = "Illumination" endheading param ltype caption = "Light type" default = 1 enum = "Point source" "Spotlight" "Infinite light" endparam param angle caption = "Light Rotation" default = -60 hint = "Gives the rotation of the light source, in degrees." visible=@ltype == "Infinite light" endparam param elevation caption = "Light Elevation" default = 60 hint = "Gives the elevation of the light source, in degrees." visible=@ltype == "Infinite light" endparam $ifdef VER40 heading text = "Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Origin" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lpointx caption = " X" default = 1 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lpointy caption = " Y" default = 3 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lplane caption = " Z" default = 5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam $ifdef VER40 heading text = "Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $else heading caption = " Light Point At" visible=@ltype == "Point source" || @ltype == "Spotlight" endheading $endif float param lightx caption = " X" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lighty caption = " Y" default = 0.5 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param lightz caption = " Z" default = 0.0 visible=@ltype == "Point source" || @ltype == "Spotlight" endparam float param spotrad caption = "Spotlight radius" default = 0.25 visible=@ltype=="Spotlight" endparam param spottype caption = "Spotlight focus" default = 0 enum = "Set focus" "Sharp" visible=@ltype=="Spotlight" endparam float param setfocus default = 1.0 visible=@ltype=="Spotlight"&& @spottype == "Set focus" endparam float param sdis caption = "Sphere brightness" default = 2.0 visible=@ltype=="Point source" || @ltype=="Spotlight" endparam float param dis caption = "Floor brightness" default = 1.0 visible=@floor==true && (@ltype=="Point source" || @ltype=="Spotlight") endparam param ambient caption = "Ambient light" default = 0.05 max = 1.0 min = 0.0 endparam color param amcolor caption = "Ambient color" default = rgb(192/255,192/255,192/255) endparam float param am caption = "Shadow level" default = 0.4 min = 0.0 max = 1.0 endparam heading caption = "Reflection parameters" endheading bool param reflect caption = "Show reflections" default = false endparam float param kr caption = "Reflect param" default = 1.0 min = 0.0 max = 1.0 visible=@reflect==true endparam float param krf caption = "Floor reflect param" default = 0.2 min = 0.0 max = 1.0 visible=@reflect==true endparam float param floorreflect caption = "Floor reflect dist" default = 1.0 visible=@reflect==true endparam param blendval caption = "Blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflect==true endparam param rblend caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @reflect==true endparam float param hrblend caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @reflect==true endparam param reflectf caption="Reflection off floor" default = false visible = @reflect==true endparam param blendvalf caption = "Floor blend value" default = 0.25 max = 1.0 min = 0.0 visible=@reflectf==true endparam heading caption = "Transparency parameters" endheading bool param tparent caption = "Set transparency" default = false endparam param tparentval caption = "Transparency (0-1)" default = 0.5 min = 0.0 max = 1.0 visible=@tparent==true endparam param rfi caption = "Refractive index" default = 1.5 min = 1.0 max = 4 visible=@tparent==true endparam float param krt caption = "Refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param krft caption = "Floor refract param" default = 1.0 min = 0.0 max = 1.0 visible=@tparent==true endparam float param floorrefract caption = "Floor refract dist" default = 1.0 visible=@tparent==true endparam param rblendt caption = "Blend power" default = 3.0 visible=@colorPreset != "Gradient" && @tparent==true endparam float param hrblendt caption = "Highlite rflct power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @tparent==true endparam param tmerge caption = "Refract merge mode" enum = "Normal" "Screen" "Hard Light" "Lighten" "Addition" default = 0 visible=@tparent==true endparam $ifdef VER40 heading text = "Some spheres slightly interpenetrate which can create unwanted \ visual effects. The 'Sphere spread' parameter \ provides correction by moving the spheres apart." visible=@tparent==true endheading $endif param radadj caption = "Sphere spread" default = 1.05 visible=@tparent==true endparam $ifdef VER40 heading text = "More realistic transparent coloring can often be obtained \ by switching colors." visible=@tparent==true && @colorPreset != "Gradient" endheading $endif bool param switch caption = "switch colors" default = false visible=@tparent==true && @colorPreset != "Gradient" endparam heading caption = "Floor Settings" endheading bool param floor caption ="Add floor" default = true endparam float param fa caption = "X direction" default = 0.0 visible=@floor==true endparam float param fb caption = "Y direction" default = 1.0 visible=@floor==true endparam float param fc caption = "Z direction" default = 0.0 visible=@floor==true endparam float param fd caption = "Position" default = -0.9 visible=@floor==true endparam heading caption = "Floor Patterns" endheading param flrtype caption = "Floor Type" default = 0 enum = "Checkerboard" "Fractal" "Plain" visible=@floor==true endparam float param checkscale caption = "Pattern scale" default = 0.3 max = 1.0 min = 0.01 visible=@floor==true && @flrtype != "Plain" endparam complex param poffset caption = "Pattern offset" default = (0,0) visible=@floor==true && @flrtype != "Plain" endparam param fctltype caption = "Fractal Type" default = 4 enum = "Barnsley" "Cayley Julia" "Gopalsamy" "Julia" "Mandelbrot" "Newton" "Phoenix" visible=@floor==true && @flrtype == "Fractal" endparam color param flrcolor caption = "Floor color #1" default = rgba(0/255,0/255,139/255,1) visible=@floor==true && (@flrtype == "Checkerboard" || @flrtype == "Plain") endparam color param flrcolor2 caption = "Floor color #2" default = rgba(176/255,224/255,230/255,1) visible=@floor==true && @flrtype == "Checkerboard" endparam param cmethod caption = "Converge method" default = 2 enum = "Halley" "Householder" "Newton" "Schroder" visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam param color_mode caption = "Color mode" default = 0 enum = "Distance" "Iteration" visible=@floor==true && @flrtype == "Fractal" && @colormethod != "Exponential smoothing" endparam param colormethod caption = "Trap" enum = "Exponential smoothing" "Simple traps" "Orbit traps" default = 0 visible=@floor==true && @flrtype == "Fractal" endparam param traptype caption = "Trap type" enum = "Arachnida2" "Archimedes" "Atzema spiral" "Butterfly" "Cardoid" \ "Ceil_floor" "Cf_plus" "Conchoid" "Cycloid" "Ellipse Catacaustic" \ "Gear" "Lemniscate" "Log spiral" "Maltese cross" "Product" "Quotient1" \ "Quotient2" "Rose" "Rose of Troy" "Serpentine" "Sum" "Tr_plus" \ "Trefoil" "Trifolium" "Trisectrix of Maclaurin" "Trunc_round" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" endparam param traptype2 caption = "Trap type" enum = "Astroid" "Box" "Cross" "Diamond" "Egg" "Heart" "Hyperbola" "Hypercross" \ "Lines" "Mirrored waves" "Pinch" "Point" "Spiral"\ "Radial waves" "Rectangle" "Ring" "Waves" default = 0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param pa caption = "Polar parameter" default = 0.2 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Lemniscate" ||@traptype == "Cardoid" \ ||@traptype == "Conchoid"||@traptype == "Log spiral"|| \ @traptype == "Rose"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Butterfly"||@traptype == "Gear" \ ||@traptype == "Arachnida2"||@traptype == "Maltese cross" \ ||@traptype == "Trifolium"||@traptype == "Serpentine" \ ||@traptype == "Trefoil"||@traptype == "Trisectrix of Maclaurin" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pb caption = "2nd polar parameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Conchoid"||@traptype == "Ellipse Catacaustic" \ ||@traptype == "Gear"||@traptype == "Serpentine" \ ||@traptype == "Atzema spiral"||@traptype == "Rose of Troy") endparam param pc caption = "3rd Polar parameter" default = 0.05 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && @traptype == "Rose of Troy" endparam param pn caption = "Polar integer" default = 3 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Simple traps" \ && (@traptype == "Gear" || @traptype == "Arachnida2") endparam param diameter caption = "Trap diameter" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Ring" || @traptype2 == "Egg" || \ @traptype2 == "Hyperbola" || @traptype2 == "Lines" ||\ @traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves"|| @traptype2 == "Spiral"\ || @traptype2 == "Heart") endparam param torder caption = "Trap order" default = 4.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Pinch" ||@traptype2 == "Egg" || \ @traptype2 == "Astroid" ||@traptype2 == "Waves"|| \ @traptype2 == "Mirrored Waves" || @traptype2 == "Radial Waves") endparam param tfreq caption = "Trap frequency" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" \ && (@traptype2 == "Waves"|| @traptype2 == "Mirrored Waves" \ || @traptype2 == "Radial Waves") endparam bool param mask caption = "Use mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam $ifdef VER40 heading text = "'Reverse mask' overrides 'Mask'." visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endheading $endif bool param rmask caption = "Use reverse mask" default = false visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param threshold caption = "Mask threshold" default = 0.1 visible=@floor==true && @flrtype == "Fractal" && (@colormethod == "Orbit traps" \ || @colormethod == "Simple traps") endparam param tcenter caption = "Trap center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param tasp caption = "Trap aspect" default = 1.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam param trot caption = "Trap rotation" default = 0.0 visible=@floor==true && @flrtype == "Fractal" && @colormethod == "Orbit traps" endparam color param icolor caption = "Inside color" default = rgb(0,0,0) visible=@floor==true && @flrtype == "Fractal" endparam int param miter caption = "Maximum iterations" default = 100 visible=@floor==true && @flrtype == "Fractal" endparam complex param seed caption = "Seed" default = (-0.75,0.2) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Julia" endparam complex param cseed caption = "Seed" default = (0.360968017578125,0.00074462890625) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param phseed caption = "Seed" default = (0.56667, -0.5) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Phoenix" endparam complex param gseed caption = "Seed" default = (-0.19, -0.19) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Gopalsamy" endparam complex param bseed caption = "Seed" default = (1.025, 0.9875) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Barnsley" endparam complex param p1 caption = "Newton power" default = (3.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param mp1 caption = "Power" default = (2.0,0.0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Mandelbrot" || \ @fctltype == "Julia") endparam complex param p2 caption = "Newton root" default = (1.0,0.0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Newton" endparam complex param fmcenter caption = "Fractal center" default = (-0.5,0) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Mandelbrot" endparam complex param fccenter caption = "Fractal center" default = (-0.0005781248605,0.0022031248985) visible=@floor==true && @flrtype == "Fractal" && @fctltype == "Cayley Julia" endparam complex param fcenter caption = "Fractal center" default = (0,0) visible=@floor==true && @flrtype == "Fractal" && (@fctltype == "Julia" || \ @fctltype == "Newton" || @fctltype == "Phoenix" || @fctltype == "Barnsley" \ || @fctltype == "Gopalsamy") endparam float param fmag caption = "Fractal magnification" default = 1.0 visible=@floor==true && @flrtype == "Fractal" endparam float param bailout caption = "Bailout" default = 10000 visible=@floor==true && @flrtype == "Fractal" endparam float param spread caption = "Color spread" default = 0.5 visible=@floor==true && @flrtype == "Fractal" endparam float param shift caption = "Color shift" default = 0.0 visible=@floor==true && @flrtype == "Fractal" endparam bool param fbound caption ="Floor boundaries?" default = false visible=@floor==true endparam float param leftbound caption ="Left boundary" default = 0.05 visible=@floor==true && @fbound == true endparam float param rightbound caption ="Right boundary" default = 0.95 visible=@floor==true && @fbound == true endparam float param topbound caption ="Top boundary" default = 2.0 visible=@floor==true && @fbound == true endparam float param bottombound caption ="Bottom boundary" default = -2.0 visible=@floor==true && @fbound == true endparam } IFSMobius{; Ron Barnett, December 4, 2005 ; Based upon the Apophysis ucl for Affine transforms ; It uses a single Mobius transform and a single circle inversion ; tranform (both can be used alone) along with multiple circles to ; use as inversion/transform circles. ; code modified from Mark Townsend, Erik Reckase and Susan Chambless ; Mapping to a Riemann sphere included as an option ; Added visible circles and handles for manual circle entry October 2006 ; Updated October 15, 2009 global: $define debug ; for Damien's handles routine int digits[11] digits[0] = 432534 digits[1] = 139874 digits[2] = 1000086 digits[3] = 430742 digits[4] = 195170 digits[5] = 925327 digits[6] = 433798 digits[7] = 139807 digits[8] = 431766 digits[9] = 399254 digits[10] = 0 ; Initialization and parameter array initialization int seed = 123456789 int seed2 = @seed2 int seed3 = @seed3 int seed4 = @seed4 float ang = 0 complex im = (0,1) float incMult = 1.0 + (@percentInc*.01) int pwid = trunc(#width*incMult) int phgt = trunc(#height*incMult) int pix[(trunc(#width*(1.0+(@percentInc*.01)))*@oversample)+40,\ (trunc(#height*(1.0+(@percentInc*.01)))*@oversample)+40,4] int pwid = trunc(#width*incMult) ; int phgt = trunc(#height*incMult) ; rgb storage + extra for entire image - BIG float iterbuf[1,3] ; storage for an iterated point int fuse = 15 ; skip this many iterations when starting to iterate float prefilter_white = 2^10 ; parameterize? float sf_gauss[20,20] ; contains gaussian spatial filter kernel color newcmap[256] ; modified colormap from gradient int scl_cmap[256,4] ; white-balanced colormap float xc = real(#center) ; Scaling constants float yc = -imag(#center) complex theta = 0 complex r = 0 complex qa = 0 complex qb = 0 complex qc = 0 complex qx = 0 complex qy = 0 complex cx = 0 complex cy = 0 complex af1 = 0 complex af2 = 0 int ptype = 0 float xx = 0 float yy = 0 int gutter_width = 20 ; assume that a 20x20 gaussian is the max int x = 0, int y = 0, int z = 0 ; counter initialization complex cs[50] float rad[50] complex ed[8] complex mob[4] complex mob2[4] complex mobn[4] complex mobi[4] complex mobc[4] complex mobk[4] complex mobki[4] complex mobg[6,4] float ku = @su float kv = 0 float kx = @sx float ky = 0 float kk = 0 complex gtab = 0 int i = 1 float ang = 2*#pi/@circles complex ipi = flip(#pi); complex cr1 = exp((0,0)*ang+ipi) complex cr2 = exp((0,1)*ang+ipi) float rdd = cabs(cr1-cr2)/2 float dd = cabs(cr1) float dtan = sqrt(dd*dd-rdd*rdd) float scle = (dd+rdd)/dtan complex p = (1e10,1e10) float pert = 0 float pert2 = 0 complex det = 0 complex temp1 = 0 complex temp2 = 0 complex temp3 = 0 complex temp4 = 0 complex Tr = 0 complex mk = 0 float del = 0 int fail2 = 0 int fail3 = 0 int fail4 = 0 int fail5 = 0 int fail6 = 0 mobk[0] = (1,0) mobk[1] = (0,-1) mobk[2] = (1,0) mobk[3] = (0,1) det = mobk[0]*mobk[3]-mobk[1]*mobk[2] det = 1/sqrt(det) mobk[0] = mobk[0]*det mobk[1] = mobk[1]*det mobk[2] = mobk[2]*det mobk[3] = mobk[3]*det det = mobk[0]*mobk[3]-mobk[1]*mobk[2] mobki[0] = mobk[3] mobki[1] = -mobk[1] mobki[2] = -mobk[2] mobki[3] = mobk[0] if real(det) <= 0 mobki[0] = -conj(mobki[0]) mobki[1] = -conj(mobki[1]) mobki[2] = -conj(mobki[2]) mobki[3] = -conj(mobki[3]) endif int j = 0 if @ifsmethod == "Circle inversions" i = 1 while i <= @circles cs[i] = exp(flip(i-1)*ang+ipi)*scle i = i + 1 endwhile cs[i] = 0 rad[1] = cabs(cs[1]-cs[2])/2 i = 2 while i <= @circles rad[i] = rad[1] i = i + 1 endwhile rad[i] = cabs(cs[1])-rad[1] i = 1 while i <= @circles+1 if @perturb == "radius" if @radpert == "Expand all" rad[i] = rad[i]*@pert elseif @radpert == "Expand inner" if i == @circles+1 rad[i] = rad[i]*@pert endif elseif @radpert == "Expand outer" if i <= @circles rad[i] = rad[i]*@pert endif else seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert rad[i] = rad[i]*pert endif elseif @perturb == "position" seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert seed2 = random(seed2) pert2 = (abs(seed2/#randomrange)*@pertrand+1)*@pert cs[i] = real(cs[i])*pert + flip(imag(cs[i])*pert2) endif i = i + 1 endwhile if @addbound cs[i] = 0 rad[i] = cabs(cs[1]) + rad[1] endif elseif @ifsmethod == "Schottky" if @subschottky == "Kissing" ; uses formula on page 170 of "Indra's Pearls" ky = sqrt(kx^2-1) kv = sqrt(ku^2-1) if @plus == "Larger root" kk = (1+sqrt(1-ky^2*kv^2))/(ky*kv) else kk = (1-sqrt(1-ky^2*kv^2))/(ky*kv) endif cs[0] = flip(kk*ku/kv) ;a cs[1] = kx/ky ;b cs[2] = -flip(kk*ku/kv) ;A cs[3] = -kx/ky ;B rad[0] = kk/kv ;ra rad[1] = 1/ky ;rb rad[2] = kk/kv ;rA rad[3] = 1/ky ;rB i = 0 while i < 4 if @perturb == "radius" seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert rad[i] = rad[i]*pert elseif @perturb == "position" seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert seed2 = random(seed2) pert2 = (abs(seed2/#randomrange)*@pertrand+1)*@pert cs[i] = real(cs[i])*pert + flip(imag(cs[i])*pert2) endif i = i + 1 endwhile elseif @subschottky == "Indra's Net" float corr = 1.0101 cs[0] = (-sqrt(3)-2)/2 cs[1] = (sqrt(3)/2+1 + flip(sqrt(3) + 1.5))/2 cs[2] = (sqrt(3)/2+1 - flip(sqrt(3) + 1.5))/2 cs[3] = (sqrt(3)+2)/20*corr cs[4] = -cs[3]/2+flip(sqrt(3)+1.5)/20*corr cs[5] = -cs[3]/2-flip(sqrt(3)+1.5)/20*corr rad[0] = (sqrt(3) + 1.5)/2 rad[1] = rad[0] rad[2] = rad[0] rad[3] = (sqrt(3) + 1.5)/20*corr rad[4] = rad[3] rad[5] = rad[3] i = 0 while i < 6 if @perturb == "radius" seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert rad[i] = rad[i]*pert elseif @perturb == "position" seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert seed2 = random(seed2) pert2 = (abs(seed2/#randomrange)*@pertrand+1)*@pert cs[i] = real(cs[i])*pert + flip(imag(cs[i])*pert2) endif i = i + 1 endwhile elseif @subschottky == "Disjoint" cs[0] = (1.112,1.202) ;a cs[1] = (0.877,-0.948) ;b cs[2] = (-1.178,-1.112) ;A cs[3] = (-0.812,0.872) ;B rad[0] = 0.8 ;ra rad[1] = 1.045 ;rA rad[2] = 0.775 ;rb rad[3] = 1.125 ;rB while i < 4 if @perturb == "radius" seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert rad[i] = rad[i]*pert elseif @perturb == "position" seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert seed2 = random(seed2) pert2 = (abs(seed2/#randomrange)*@pertrand+1)*@pert cs[i] = real(cs[i])*pert + flip(imag(cs[i])*pert2) endif i = i + 1 endwhile endif elseif @ifsmethod == "Random Circles" i = 1 while i <= @circles2 if i == 1 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[1] = pert + flip(pert2) seed3 = random(seed3) pert = seed3/#randomrange rad[1] = pert else if !@outcir seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) if @tangent == "First" rad[i] = cabs(cabs(cs[1]-cs[i])- rad[1]) elseif @tangent == "Sequence" rad[i] = cabs(cabs(cs[i-1]-cs[i])- rad[i-1]) endif elseif @outcir if !@dis seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while cabs(cs[1]-cs[i])<= rad[1] seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) endwhile if @tangent == "First" rad[i] = cabs(cabs(cs[1]-cs[i])- rad[1]) elseif @tangent == "Sequence" rad[i] = cabs(cabs(cs[i-1]-cs[i])- rad[i-1]) endif elseif @dis if i == 2 if @tangent == "First" seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while cabs(cs[1]-cs[i])<= rad[1] && fail2 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail2 = fail2 + 1 endwhile rad[i] = cabs(cabs(cs[1]-cs[i])- rad[1]) elseif @tangent == "Sequence" seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while cabs(cs[1]-cs[i])<= rad[1]&& fail2 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail2 = fail2 + 1 endwhile rad[i] = cabs(cabs(cs[i-1]-cs[i])- rad[i-1]) endif elseif i == 3 if @tangent == "First" seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while (cabs(cs[1]-cs[i])<= rad[1] || \ cabs(cs[2]-cs[i])<= rad[2] || \ cabs(cs[2]-cs[i]) <= cabs(cs[1]-cs[i]))&& fail3 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail3 = fail3 + 1 endwhile rad[i] = cabs(cabs(cs[1]-cs[i])- rad[1]) elseif @tangent == "Sequence" pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while (cabs(cs[1]-cs[i])<= rad[1] || \ cabs(cs[2]-cs[i])<= rad[2] || \ cabs(cs[2]-cs[i]) >= cabs(cs[1]-cs[i]))&& fail3 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail3 = fail3 + 1 endwhile rad[i] = cabs(cabs(cs[i-1]-cs[i])- rad[i-1]) endif elseif i == 4 if @tangent == "First" seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while (cabs(cs[1]-cs[i])<= rad[1] || \ cabs(cs[2]-cs[i])<= rad[2] || \ cabs(cs[3]-cs[i])<= rad[3] || \ cabs(cs[2]-cs[i]) <= cabs(cs[1]-cs[i]) || \ cabs(cs[3]-cs[i]) <= cabs(cs[1]-cs[i]))&& fail4 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail4 = fail4 + 1 endwhile rad[i] = cabs(cabs(cs[1]-cs[i])- rad[1]) elseif @tangent == "Sequence" seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while (cabs(cs[1]-cs[i])<= rad[1] || \ cabs(cs[2]-cs[i])<= rad[2] || \ cabs(cs[3]-cs[i])<= rad[3] || \ cabs(cs[3]-cs[i]) >= cabs(cs[1]-cs[i]) || \ cabs(cs[3]-cs[i]) >= cabs(cs[2]-cs[i]))&& fail4 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail4 = fail4 + 1 endwhile rad[i] = cabs(cabs(cs[i-1]-cs[i])- rad[i-1]) endif elseif i == 5 if @tangent == "First" seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while (cabs(cs[1]-cs[i])<= rad[1] || \ cabs(cs[2]-cs[i])<= rad[2] || \ cabs(cs[3]-cs[i])<= rad[3] || \ cabs(cs[4]-cs[i])<= rad[4] || \ cabs(cs[2]-cs[i]) <= cabs(cs[1]-cs[i]) || \ cabs(cs[3]-cs[i]) <= cabs(cs[1]-cs[i]) || \ cabs(cs[4]-cs[i]) <= cabs(cs[1]-cs[i]))&& fail5 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail5 = fail5 + 1 endwhile rad[i] = cabs(cabs(cs[1]-cs[i])- rad[1]) elseif @tangent == "Sequence" seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while (cabs(cs[1]-cs[i])<= rad[1] || \ cabs(cs[2]-cs[i])<= rad[2] || \ cabs(cs[3]-cs[i])<= rad[3] || \ cabs(cs[4]-cs[i])<= rad[4] || \ cabs(cs[4]-cs[i]) >= cabs(cs[1]-cs[i]) || \ cabs(cs[4]-cs[i]) >= cabs(cs[2]-cs[i]) || \ cabs(cs[4]-cs[i]) >= cabs(cs[3]-cs[i]))&& fail5 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail5 = fail5 + 1 endwhile rad[i] = cabs(cabs(cs[i-1]-cs[i])- rad[i-1]) endif elseif i == 6 if @tangent == "First" seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while (cabs(cs[1]-cs[i])<= rad[1] || \ cabs(cs[2]-cs[i])<= rad[2] || \ cabs(cs[3]-cs[i])<= rad[3] || \ cabs(cs[4]-cs[i])<= rad[4] || \ cabs(cs[5]-cs[i])<= rad[5] || \ cabs(cs[2]-cs[i]) <= cabs(cs[1]-cs[i]) || \ cabs(cs[3]-cs[i]) <= cabs(cs[1]-cs[i]) || \ cabs(cs[4]-cs[i]) <= cabs(cs[1]-cs[i])|| \ cabs(cs[5]-cs[i]) <= cabs(cs[1]-cs[i]))&& fail6 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail6 = fail6 + 1 endwhile rad[i] = cabs(cabs(cs[1]-cs[i])- rad[1]) elseif @tangent == "Sequence" seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while (cabs(cs[1]-cs[i])<= rad[1] || \ cabs(cs[2]-cs[i])<= rad[2] || \ cabs(cs[3]-cs[i])<= rad[3] || \ cabs(cs[4]-cs[i])<= rad[4] || \ cabs(cs[5]-cs[i])<= rad[5] || \ cabs(cs[5]-cs[i]) >= cabs(cs[1]-cs[i]) || \ cabs(cs[5]-cs[i]) >= cabs(cs[2]-cs[i]) || \ cabs(cs[5]-cs[i]) >= cabs(cs[3]-cs[i]) || \ cabs(cs[5]-cs[i]) >= cabs(cs[4]-cs[i]))&& fail6 <= 100 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) fail6 = fail6 + 1 endwhile rad[i] = cabs(cabs(cs[i-1]-cs[i])- rad[i-1]) endif elseif i > 6 seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) while cabs(cs[1]-cs[i])<= rad[1] seed3 = random(seed3) pert = seed3/#randomrange seed3 = random(seed3) pert2 = seed3/#randomrange cs[i] = pert + flip(pert2) endwhile if @tangent == "First" rad[i] = cabs(cabs(cs[1]-cs[i])- rad[1]) elseif @tangent == "Sequence" rad[i] = cabs(cabs(cs[i-1]-cs[i])- rad[i-1]) endif endif endif endif endif if (fail2 > 100 || fail3 > 100 || fail4 > 100 || \ fail5 > 100 || fail6 > 100) && @dis i = 0 j = j + 1 fail2 = 0 fail3 = 0 fail4 = 0 fail5 = 0 fail6 = 0 seed3 = random(@seed3+j) endif i = i + 1 endwhile i = 1 while i <= @circles2 if @perturb == "radius" seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert rad[i] = rad[i]*pert elseif @perturb == "position" seed2 = random(seed2) pert = (abs(seed2/#randomrange)*@pertrand+1)*@pert seed2 = random(seed2) pert2 = (abs(seed2/#randomrange)*@pertrand+1)*@pert cs[i] = real(cs[i])*pert + flip(imag(cs[i])*pert2) endif i = i + 1 endwhile elseif @ifsmethod == "Manual Entry" cs[1] = @cir1 ed[1] = @cir1r if @cirtype == "Center-edge" rad[1] = cabs(@cir1-@cir1r) else rad[1] = @rad1 ed[1] = cs[1] + @rad1 endif cs[2] = @cir2 ed[2] = @cir2r if @cirtype == "Center-edge" rad[2] = cabs(@cir2-@cir2r) else rad[2] = @rad2 ed[2] = cs[2] + @rad2 endif cs[3] = @cir3 ed[3] = @cir3r if @cirtype == "Center-edge" rad[3] = cabs(@cir3-@cir3r) else rad[3] = @rad3 ed[3] = cs[3] + @rad3 endif cs[4] = @cir4 ed[4] = @cir4r if @cirtype == "Center-edge" rad[4] = cabs(@cir4-@cir4r) else rad[4] = @rad4 ed[4] = cs[4] + @rad4 endif cs[5] = @cir5 ed[5] = @cir5r if @cirtype == "Center-edge" rad[5] = cabs(@cir5-@cir5r) else rad[5] = @rad5 ed[5] = cs[5] + @rad5 endif cs[6] = @cir6 ed[6] = @cir6r if @cirtype == "Center-edge" rad[6] = cabs(@cir6-@cir6r) else rad[6] = @rad6 ed[6] = cs[6] + @rad6 endif endif if @mobiustype == "Explicit" if @mobiusparam == "Matrix" mob[0] = @moba mob[1] = @mobb mob[2] = @mobc mob[3] = @mobd else mob[0] = @mobcen/@mobrad mob[1] = @mobrad - |@mobcen|/@mobrad mob[2] = 1/@mobrad mob[3] = -conj(@mobcen)/@mobrad endif ; normalize det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det Tr = mob[0]+mob[3] ; trace elseif @mobiustype == "Grandma" gz = 0.5*sqrt(@ta^2*@tb^2-4*@ta^2-4*@tb^2+4*@tabAB+8) tab = 0.5*@ta*@tb-gz if @alttab tab = 0.5*@ta*@tb+gz endif gQ = sqrt(2-@tabAB) gR = sqrt(2+@tabAB) if cabs(@tabAB+im*gQ*gR)<2 gR = -gR endif gz0 = (tab-2)*(@tb+gR)/(@tb*tab-2*@ta+im*gQ*tab) mobg[0,0] = (@tb-im*gQ)/2 mobg[0,1] = (@tb*tab-2*@ta-im*gQ*tab)/((2*tab+4)*gz0) mobg[0,2] = (@tb*tab-2*@ta+im*gQ*tab)*gz0/(2*tab-4) mobg[0,3] = (@tb+im*gQ)/2 mobg[1,0] = mobg[0,3] mobg[1,1] = -mobg[0,1] mobg[1,2] = -mobg[0,2] mobg[1,3] = mobg[0,0] mobg[2,0] = @ta/2 mobg[2,1] = (@ta*tab-2*@tb+2*im*gQ)/((2*tab+4)*gz0) mobg[2,2] = (@ta*tab-2*@tb-2*im*gQ)*gz0/(2*tab-4) mobg[2,3] = @ta/2 mobg[3,0] = mobg[2,3] mobg[3,1] = -mobg[2,1] mobg[3,2] = -mobg[2,2] mobg[3,3] = mobg[2,0] elseif @mobiustype == "Riley" mobg[0,0] = 1 mobg[0,1] = 0 mobg[0,2] = @rc mobg[0,3] = 1 det = mobg[0,0]*mobg[0,3]-mobg[0,1]*mobg[0,2] det = 1/sqrt(det) mobg[0,0] = mobg[0,0]*det mobg[0,1] = mobg[0,1]*det mobg[0,2] = mobg[0,2]*det mobg[0,3] = mobg[0,3]*det mobg[1,0] = mobg[0,3] mobg[1,1] = -mobg[0,1] mobg[1,2] = -mobg[0,2] mobg[1,3] = mobg[0,0] mobg[2,0] = 1 mobg[2,2] = 0 mobg[2,1] = 2 mobg[2,3] = 1 mobg[3,0] = mobg[2,3] mobg[3,1] = -mobg[2,1] mobg[3,2] = -mobg[2,2] mobg[3,3] = mobg[2,0] elseif @mobiustype == "Jorgensen" gtab = (@ta*@tb-sqrt(@ta*@ta*@tb*@tb-4*(@ta*@ta+@tb*@tb)))/2 mobg[0,0] = @ta-@tb/gtab mobg[0,1] = @ta/gtab^2 mobg[0,2] = @ta mobg[0,3] = @tb/gtab det = mobg[0,0]*mobg[0,3]-mobg[0,1]*mobg[0,2] det = 1/sqrt(det) mobg[0,0] = mobg[0,0]*det mobg[0,1] = mobg[0,1]*det mobg[0,2] = mobg[0,2]*det mobg[0,3] = mobg[0,3]*det mobg[1,0] = mobg[0,3] mobg[1,1] = -mobg[0,1] mobg[1,2] = -mobg[0,2] mobg[1,3] = mobg[0,0] mobg[2,0] = @tb-@ta/gtab mobg[2,2] = -@tb/gtab^2 mobg[2,1] = -@tb mobg[2,3] = @ta/gtab det = mobg[2,0]*mobg[2,3]-mobg[2,1]*mobg[2,2] det = 1/sqrt(det) mobg[2,0] = mobg[2,0]*det mobg[2,1] = mobg[2,1]*det mobg[2,2] = mobg[2,2]*det mobg[2,3] = mobg[2,3]*det mobg[3,0] = mobg[2,3] mobg[3,1] = -mobg[2,1] mobg[3,2] = -mobg[2,2] mobg[3,3] = mobg[2,0] elseif @mobiustype == "Maskit" mobg[0,0] = @m mobg[0,1] = 1 mobg[0,2] = 1 mobg[0,3] = 0 det = mobg[0,0]*mobg[0,3]-mobg[0,1]*mobg[0,2] det = 1/sqrt(det) mobg[0,0] = mobg[0,0]*det mobg[0,1] = mobg[0,1]*det mobg[0,2] = mobg[0,2]*det mobg[0,3] = mobg[0,3]*det mobg[1,0] = mobg[0,3] mobg[1,1] = -mobg[0,1] mobg[1,2] = -mobg[0,2] mobg[1,3] = mobg[0,0] mobg[2,0] = 1 mobg[2,2] = 0 mobg[2,1] = 2 mobg[2,3] = 1 mobg[3,0] = mobg[2,3] mobg[3,1] = -mobg[2,1] mobg[3,2] = -mobg[2,2] mobg[3,3] = mobg[2,0] elseif @mobiustype == "Maskit-Kra" mobg[0,0] = 1 mobg[0,1] = 2 mobg[0,2] = 0 mobg[0,3] = 1 mobg[1,0] = mobg[0,3] mobg[1,1] = -mobg[0,1] mobg[1,2] = -mobg[0,2] mobg[1,3] = mobg[0,0] mobg[2,0] = 1 mobg[2,1] = 0 mobg[2,2] = 2 mobg[2,3] = 1 mobg[3,0] = mobg[2,3] mobg[3,1] = -mobg[2,1] mobg[3,2] = -mobg[2,2] mobg[3,3] = mobg[2,0] mobg[4,0] = 1+@m*@m2 mobg[4,1] = @m mobg[4,2] = @m2 mobg[4,3] = 1 det = mobg[4,0]*mobg[4,3]-mobg[4,1]*mobg[4,2] det = 1/sqrt(det) mobg[4,0] = mobg[4,0]*det mobg[4,1] = mobg[4,1]*det mobg[4,2] = mobg[4,2]*det mobg[4,3] = mobg[4,3]*det mobg[5,0] = mobg[4,3] mobg[5,1] = -mobg[4,1] mobg[5,2] = -mobg[4,2] mobg[5,3] = mobg[4,0] elseif @mobiustype == "Random" if @mtype == "loxodromic" if @sgroupl == "General" repeat seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[0] = pert + flip(pert2) seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[1] = pert + flip(pert2) seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[2] = pert + flip(pert2) seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[3] = pert + flip(pert2) ; normalize det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det Tr = mob[0]+mob[3] ; trace mk = ((Tr + sqrt(Tr^2-4))/2)^2 ; loxodromic if and only if cabs(mk) != 1 until cabs(mk)!= 1 else if !@pc if @pcr repeat seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[0] = pert + flip(pert2) ; center of circle 2 seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[3] = -pert - flip(pert2) ; -center of circle 1 seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[1] = pert*pert2 + mob[0]*mob[3] mob[2] = 1 det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det until (pert+pert2) < cabs(mob[0]+mob[3]) else repeat seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[0] = pert + flip(pert2) ; center of circle 2 mob[3] = mob[0] ; -center of circle 1 seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[1] = pert*pert2 + mob[0]*mob[3] mob[2] = 1 det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det until (pert+pert2) < cabs(mob[0]+mob[3]) endif else if @pcr repeat seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[0] = pert + flip(pert2) ; center of circle 2 seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[3] = -pert - flip(pert2) ; -center of circle 1 mob[1] = 1 + mob[0]*mob[3] mob[2] = 1 det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det until 2 < cabs(mob[0]+mob[3]) else repeat seed4 = random(seed4) pert = seed4/#randomrange seed4 = random(seed4) pert2 = seed4/#randomrange mob[0] = pert + flip(pert2) ; center of circle 2 mob[3] = mob[0] ; -center of circle 1 mob[1] = 1 + mob[0]*mob[3] mob[2] = 1 det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det until 2 < cabs(mob[0]+mob[3]) endif endif endif elseif @mtype == "hyperbolic" if @sgroup == "Extended real line" repeat seed4 = random(seed4) pert = seed4/#randomrange mob[0] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[1] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[2] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[3] = pert ; normalize det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det Tr = mob[0]+mob[3] ; trace mk = ((Tr + sqrt(Tr^2-4))/2)^2 ; hyperbolic if and only if mk != 1 and mk real until mk != 1 && imag(mk) == 0 else repeat seed4 = random(seed4) pert = seed4/#randomrange mob[0] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[1] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[2] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[3] = pert ; normalize det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det ; product of mob and cayley inverse det = mob[0]*mob[3]-mob[1]*mob[2] temp1 = mob[0] temp2 = mob[1] temp3 = mob[2] temp4 = mob[3] if real(det) < 0 mob[0] = temp1*conj(mobki[0])+temp2*conj(mobki[2]) mob[1] = temp1*conj(mobki[1])+temp2*conj(mobki[3]) mob[2] = temp3*conj(mobki[0])+temp4*conj(mobki[2]) mob[3] = temp3*conj(mobki[1])+temp4*conj(mobki[3]) else mob[0] = temp1*mobki[0]+temp2*mobki[2] mob[1] = temp1*mobki[1]+temp2*mobki[3] mob[2] = temp3*mobki[0]+temp4*mobki[2] mob[3] = temp3*mobki[1]+temp4*mobki[3] endif ; previous product and product with cayley det = mobk[0]*mobk[3]-mobk[1]*mobk[2] temp1 = mob[0] temp2 = mob[1] temp3 = mob[2] temp4 = mob[3] if real(det) < 0 mob[0] = mobk[0]*conj(temp1)+mobk[1]*conj(temp3) mob[1] = mobk[0]*conj(temp2)+mobk[1]*conj(temp4) mob[2] = mobk[2]*conj(temp1)+mobk[3]*conj(temp3) mob[3] = mobk[2]*conj(temp2)+mobk[3]*conj(temp4) else mob[0] = mobk[0]*temp1+mobk[1]*temp3 mob[1] = mobk[0]*temp2+mobk[1]*temp4 mob[2] = mobk[2]*temp1+mobk[3]*temp3 mob[3] = mobk[2]*temp2+mobk[3]*temp4 endif until abs(real(mob[0])) > 1 && real(mob[0]) == real(mob[3]) endif elseif @mtype == "elliptic" if @sgroup == "Extended real line" repeat seed4 = random(seed4) pert = seed4/#randomrange mob[0] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[1] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[2] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[3] = pert ; normalize det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det Tr = mob[0]+mob[3] ; trace mk = ((Tr + sqrt(Tr^2-4))/2)^2 ; elliptic if |mk| = 1 and imag(Tr) = 0 until cabs(mk) == 1 && imag(Tr) == 0 else repeat seed4 = random(seed4) pert = seed4/#randomrange mob[0] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[1] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[2] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[3] = pert ; normalize det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det ; product of mob and cayley inverse det = mob[0]*mob[3]-mob[1]*mob[2] temp1 = mob[0] temp2 = mob[1] temp3 = mob[2] temp4 = mob[3] if real(det) < 0 mob[0] = temp1*conj(mobki[0])+temp2*conj(mobki[2]) mob[1] = temp1*conj(mobki[1])+temp2*conj(mobki[3]) mob[2] = temp3*conj(mobki[0])+temp4*conj(mobki[2]) mob[3] = temp3*conj(mobki[1])+temp4*conj(mobki[3]) else mob[0] = temp1*mobki[0]+temp2*mobki[2] mob[1] = temp1*mobki[1]+temp2*mobki[3] mob[2] = temp3*mobki[0]+temp4*mobki[2] mob[3] = temp3*mobki[1]+temp4*mobki[3] endif ; previous product and product with cayley det = mobk[0]*mobk[3]-mobk[1]*mobk[2] temp1 = mob[0] temp2 = mob[1] temp3 = mob[2] temp4 = mob[3] if real(det) < 0 mob[0] = mobk[0]*conj(temp1)+mobk[1]*conj(temp3) mob[1] = mobk[0]*conj(temp2)+mobk[1]*conj(temp4) mob[2] = mobk[2]*conj(temp1)+mobk[3]*conj(temp3) mob[3] = mobk[2]*conj(temp2)+mobk[3]*conj(temp4) else mob[0] = mobk[0]*temp1+mobk[1]*temp3 mob[1] = mobk[0]*temp2+mobk[1]*temp4 mob[2] = mobk[2]*temp1+mobk[3]*temp3 mob[3] = mobk[2]*temp2+mobk[3]*temp4 endif until abs(real(mob[0]))<1 && real(mob[0]) == real(mob[3]) endif elseif @mtype == "parabolic" if @sgroup == "Extended real line" repeat seed4 = random(seed4) pert = seed4/#randomrange mob[0] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[1] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[2] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[3] = pert ; normalize det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det ; trace is real and equal to -2 or 2 until real(mob[1])*real(mob[2]) > 0 && imag(det) == 0 if real(mob[0]) > 0 mob[0] = 1+sqrt(2+mob[1]*mob[2]) mob[3] = 2-mob[0] else mob[0] = -1+sqrt(2+mob[1]*mob[2]) mob[3] = -2-mob[0] endif else repeat seed4 = random(seed4) pert = seed4/#randomrange mob[0] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[1] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[2] = pert seed4 = random(seed4) pert = seed4/#randomrange mob[3] = pert ; normalize det = mob[0]*mob[3]-mob[1]*mob[2] det = 1/sqrt(det) mob[0] = mob[0]*det mob[1] = mob[1]*det mob[2] = mob[2]*det mob[3] = mob[3]*det ; product of mob and cayley inverse det = mob[0]*mob[3]-mob[1]*mob[2] temp1 = mob[0] temp2 = mob[1] temp3 = mob[2] temp4 = mob[3] if real(det) < 0 mob[0] = temp1*conj(mobki[0])+temp2*conj(mobki[2]) mob[1] = temp1*conj(mobki[1])+temp2*conj(mobki[3]) mob[2] = temp3*conj(mobki[0])+temp4*conj(mobki[2]) mob[3] = temp3*conj(mobki[1])+temp4*conj(mobki[3]) else mob[0] = temp1*mobki[0]+temp2*mobki[2] mob[1] = temp1*mobki[1]+temp2*mobki[3] mob[2] = temp3*mobki[0]+temp4*mobki[2] mob[3] = temp3*mobki[1]+temp4*mobki[3] endif ; previous product and product with cayley det = mobk[0]*mobk[3]-mobk[1]*mobk[2] temp1 = mob[0] temp2 = mob[1] temp3 = mob[2] temp4 = mob[3] if real(det) < 0 mob[0] = mobk[0]*conj(temp1)+mobk[1]*conj(temp3) mob[1] = mobk[0]*conj(temp2)+mobk[1]*conj(temp4) mob[2] = mobk[2]*conj(temp1)+mobk[3]*conj(temp3) mob[3] = mobk[2]*conj(temp2)+mobk[3]*conj(temp4) else mob[0] = mobk[0]*temp1+mobk[1]*temp3 mob[1] = mobk[0]*temp2+mobk[1]*temp4 mob[2] = mobk[2]*temp1+mobk[3]*temp3 mob[3] = mobk[2]*temp2+mobk[3]*temp4 endif until abs(abs(real(mob[0]))-1)<= 0.001 && real(mob[0]) == real(mob[3]) if real(mob[0])> 0 del = real(mob[0])-1 mob[0] = mob[0]-del mob[3] = mob[3]-del else del = real(mob[0])+1 mob[0] = mob[0]-del mob[3] = mob[3]-del endif endif endif endif ; create the inverse matrix if @mobiustype != "Inversion" det = mob[0]*mob[3]-mob[1]*mob[2] mobi[0] = mob[3] mobi[1] = -mob[1] mobi[2] = -mob[2] mobi[3] = mob[0] if real(det) <= 0 mobi[0] = -conj(mobi[0]) mobi[1] = -conj(mobi[1]) mobi[2] = -conj(mobi[2]) mobi[3] = -conj(mobi[3]) endif endif mob2[0] = mob[0] mob2[1] = mob[1] mob2[2] = mob[2] mob2[3] = mob[3] ; generate the gaussian kernel for spatial filtration int filter_width = round(2*2.5*@oversample*@spat_filt_rad); ; maintain parity with oversample int chk = filter_width + @oversample if (chk % 2 == 1 && filter_width > 0) filter_width = filter_width + 1 endif ; limit to gutter width if (filter_width-@oversample)>(2*gutter_width) filter_width = filter_width - 2 endif ; calculate gaussian float ii, float jj, float tot=0.0 x=0 while (x=0) ; generate the x and y location in the image xp = (iterbuf[0,0]-xc) yp = (iterbuf[0,1]-yc) x = floor((xp*cosan - yp*sinan)*nuscale + wd2) y = floor((xp*sinan + yp*cosan)*nuscale + ht2) ; is this in our image? if (x>=0 && x=0 && y255) clr_index = 255 endif ; add the *color* to the accumulator ; check for overflow later if behind == 1 pix[x,y,0] = pix[x,y,0] + scl_cmap[clr_index,0] pix[x,y,1] = pix[x,y,1] + scl_cmap[clr_index,1] pix[x,y,2] = pix[x,y,2] + scl_cmap[clr_index,2] pix[x,y,3] = pix[x,y,3] + scl_cmap[clr_index,3] elseif @tparent == 1 pix[x,y,0] = pix[x,y,0] + trunc(@tparent*scl_cmap[clr_index,0]) pix[x,y,1] = pix[x,y,1] + trunc(@tparent*scl_cmap[clr_index,1]) pix[x,y,2] = pix[x,y,2] + trunc(@tparent*scl_cmap[clr_index,2]) pix[x,y,3] = pix[x,y,3] + trunc(@tparent*scl_cmap[clr_index,3]) else pix[x,y,0] = pix[x,y,0] + trunc(@tparent*tz/1.5*scl_cmap[clr_index,0]) pix[x,y,1] = pix[x,y,1] + trunc(@tparent*tz/1.5*scl_cmap[clr_index,1]) pix[x,y,2] = pix[x,y,2] + trunc(@tparent*tz/1.5*scl_cmap[clr_index,2]) pix[x,y,3] = pix[x,y,3] + trunc(@tparent*tz/1.5*scl_cmap[clr_index,3]) endif endif endif ; iterate some more it = it + 1 endwhile float k1 = @contrast * @brightness * prefilter_white * 268.0 / 256.0 float area = #height * #width / (scale * scale * @oversample * @oversample) float k2 = @oversample*@oversample / (@contrast * area * @white_level * @iter_density) ; loop through each pixel and perform log calculation x = 0 float ls = 0, float lc[4] while (x < wd) y = 0 while (y < ht) if (pix[x,y,3]>0) ls = k1 * log(1.0 + pix[x,y,3]*k2) / pix[x,y,3] lc[0] = pix[x,y,0] * ls lc[1] = pix[x,y,1] * ls lc[2] = pix[x,y,2] * ls lc[3] = pix[x,y,3] * ls pix[x,y,0] = round(lc[0] + 0.5) pix[x,y,1] = round(lc[1] + 0.5) pix[x,y,2] = round(lc[2] + 0.5) pix[x,y,3] = round(lc[3] + 0.5) endif y = y + 1 endwhile x = x + 1 endwhile ; precalculate a gamma term float g = 1/@gamma if (@showc && @ifsmethod == "Manual Entry") && (@showm && @mobiustype == \ "Explicit" && @mobiusparam == "Circle") cs[@mannum+1] = @mobcen ed[@mannum+1] = cs[@mannum+1] + @mobrad rad[@mannum+1] = @mobrad endif if !(@showc && @ifsmethod == "Manual Entry") && (@showm && @mobiustype == \ "Explicit" && @mobiusparam == "Circle") cs[1] = @mobcen ed[1] = cs[1] + @mobrad rad[1] = @mobrad endif final: float fr = 0 float fg = 0 float fb = 0 float fo = 0 float t[4] float lgs = 0 float invalp = 0 int xid, int yid t[0] = 0, t[1] = 0, t[2] = 0, t[3] = 0 ; apply the spatial filter, if necessary int xadj, int yadj int sfadj = gutter_width - floor((filter_width-1)/2) int xcrd = #x*@oversample int ycrd = #y*@oversample bool inside = true if (@applyMapping == true) ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center)) float dyy = (imag(#pixel)-imag(#center)) xcrd = floor((transx + (dxx*cosan + dyy*sinan)*scale)*@oversample) ycrd = floor((transy + (dxx*sinan - dyy*cosan)*scale)*@oversample) ; is this in our image? if (xcrd<0 || xcrd>=wd || ycrd<0 || ycrd>=ht) inside = false endif endif if (inside) if (filter_width>0) xid = 0 while (xid 0.0) lgs = ((alpha/prefilter_white)^(g-1))/prefilter_white alpha = (alpha/prefilter_white)^g if alpha<0.0 alpha = 0.0 elseif alpha>1.0 alpha = 1.0 endif else lgs = 0.0 endif invalp = 1.0-alpha fr = lgs * t[0] fg = lgs * t[1] fb = lgs * t[2] fo = lgs * t[3] if !@maketrans #color = rgba(fr,fg,fb,fo) + @bk_color*invalp else #color = rgba(fr,fg,fb,@alpha) + @bk_color*invalp endif else #color = @bk_color endif ; Handles code modified from the Deluxe Clipping tranform of Damien Jones. float redval = 0 float greenval = 0 float blueval = 0 redval = ((trunc(red(rgb(fr,fg,fb) + @bk_color*invalp)*256)+128)%256)/256 greenval = ((trunc(green(rgb(fr,fg,fb) + @bk_color*invalp)*256)+128)%256)/256 blueval = ((trunc(blue(rgb(fr,fg,fb) + @bk_color*invalp)*256)+128)%256)/256 int mi = 1 int mj = 1 int k = 1 complex anchorpoints[15] int anchorpointtype[15] int anchorpointnumber[15] int anchorpointcount = 0 float dx = 0 float dy = 0 float sx = 0 float sy = 0 float ndx = 0 float ndy = 0 float sa = 0 float ca = 0 int mannum = 0 if (@showc && @ifsmethod == "Manual Entry") || (@showm && @mobiustype == \ "Explicit" && @mobiusparam == "Circle") mannum = @mannum if @showm && @mobiustype == "Explicit" && @mobiusparam == "Circle" mannum = mannum + 1 endif if !(@showc && @ifsmethod == "Manual Entry") mannum = 1 endif while mj <= mannum*2 if mj % 2 == 1 anchorpointtype[mj] = 2 anchorpoints[mj] = cs[ceil(mj/2)] anchorpointnumber[mj] = ceil(mj/2) else anchorpointtype[mj] = 0 anchorpoints[mj] = ed[trunc(mj/2)] anchorpointnumber[mj] = trunc(mj/2) endif mj = mj + 1 endwhile anchorpointcount = mj-1 while mi <= mannum if (cabs(cs[mi]-#pixel) >= rad[mi]-@handlewidth/scale/2) &&\ (cabs(cs[mi]-#pixel) <= rad[mi]+@handlewidth/scale/2) && \ abs(atan2(cs[mi]-#pixel))*rad[mi]*10 % 2 > 1 #color = rgb(redval,greenval,blueval) endif mi = mi + 1 endwhile mj = 1 while (mj < anchorpointcount+1) ; handle sa = sin(#angle) ca = cos(#angle) sx = real(anchorpoints[mj]) sy = imag(anchorpoints[mj]) dx = (ca*(real(#pixel)-sx)+sa*(imag(#pixel)-sy))*scale dy = (ca*(imag(#pixel)-sy)-sa*(real(#pixel)-sx))*scale dx = abs(dx*#stretch + dy*tan(#skew)) dy = abs(dy) ndx = (ca*(real(#pixel)-sx)+sa*(imag(#pixel)-sy))*scale ndy = -(ca*(imag(#pixel)-sy)-sa*(real(#pixel)-sx))*scale ndx = ndx*#stretch - ndy*tan(#skew) IF ((anchorpointtype[mj] == 0 && \ (dx >= @handlesize || dy >= @handlesize) && \ (dx < @handlesize+@handlewidth && dy < @handlesize+@handlewidth)) || \ (anchorpointtype[mj] == 1 && \ dx*dx+dy*dy >= @handlesize*@handlesize && dx*dx+dy*dy < sqr(@handlesize+@handlewidth)) || \ (anchorpointtype[mj] == 2 && \ dx+dy >= @handlesize && dx+dy < @handlesize+@handlewidth) || \ (anchorpointtype[mj] == 3 && \ 2*abs(dx-dy) < @handlewidth && (dx < @handlesize+@handlewidth && dy < @handlesize+@handlewidth))) #color = rgb(redval,greenval,blueval) ENDIF IF (ndx >= @handlesize+@handlewidth && ndx < @handlesize+@handlewidth*10 && \ ndy >= @handlesize+@handlewidth && ndy < @handlesize+@handlewidth*6) dx = floor((ndx-@handlesize-@handlewidth)/@handlewidth) dy = floor((ndy-@handlesize-@handlewidth)/@handlewidth) IF (dx < 4) IF (anchorpointnumber[mj] < 10) k = anchorpointnumber[mj] ELSE k = floor(anchorpointnumber[mj] / 10) ENDIF ELSEIF (dx > 4) IF (anchorpointnumber[mj] < 10) k = 10 ELSE k = anchorpointnumber[mj] % 10 ENDIF dx = dx - 5 ELSE k = 10 ENDIF dx = (3-dx) + 4*dy dy = 2^dx IF (floor(digits[k] / dy) % 2 > 0) #color = rgb(redval,greenval,blueval) ENDIF ENDIF mj = mj + 1 endwhile endif default: title = "IFS Mobius" helpfile = "IFS Mobius.chm" render = false float param version default = 2.10 visible = false endparam $ifdef VER40 heading text = "This is an IFS system that uses circle inversions \ and Mobius transforms. The image can be mapped to a \ Riemann sphere." endheading $endif bool param applyMapping caption = "Apply Mapping" default = true visible = false endparam float param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam bool param maketrans caption = "Transparent foreground" default = false endparam float param alpha caption = "Alpha value" default = 0 visible = @maketrans endparam heading caption = "Circle Settings" visible = @mobiustype != "Grandma" && @mobiustype != "Riley" \ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit" \ && @mobiustype != "Maskit-Kra" endheading $ifdef VER40 heading text ="Manual entry has the option to show circles and circle handles \ for easy modification. Because of the handles options, the \ circles are defined by center and and edge points. \ The handles are based upon the Deluxe Clipping uxf of Damien Jones. \ You will probably need to decrease the magnification to see the \ all the full circles." visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" endheading $endif param ifsmethod caption = "Circle Options" default = 0 enum = "Circle Inversions" "Random Circles" "Schottky" "Manual Entry" visible = @mobiustype != "Grandma" && @mobiustype != "Riley" \ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit" \ && @mobiustype != "Maskit-Kra" endparam int param mannum caption = "# of manual circles" default = 4 min = 2 max = 6 visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" endparam param cirtype caption = "Circle type" default = 0 enum = "Center-edge" "Center-radius" visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" endparam bool param showc caption = "Show circles and handles" default = false visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" endparam param handlesize caption = "Handle Size" default = 6 visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" && @showc hint = "Sets the size of the inside area of the handle. You may need to adjust this \ to make the handles more visible on some fractals." endparam param handlewidth caption = "Handle Thickness" default = 2 visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" && @showc hint = "Sets the thickness of the handles. You may need to adjust this to make the \ handles more visible on some fractals." endparam complex param cir1 caption = "Center 1" default = (-0.18,0.1835) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" endparam float param rad1 caption = "Radius 1" default = 0.469 visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @cirtype == "Center-radius" endparam complex param cir1r caption = "Edge 1" default = (-0.649,0.1835) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" && \ @cirtype == "Center-edge" endparam complex param cir2 caption = "Center 2" default = (0.485,-0.3276) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" endparam float param rad2 caption = "Radius 2" default = 1.3077 visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @cirtype == "Center-radius" endparam complex param cir2r caption = "Edge 2" default = (-0.8227,-0.3276) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @cirtype == "Center-edge" endparam complex param cir3 caption = "Center 3" default = (0.8714,-0.4626) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @mannum >= 3 endparam complex param cir3r caption = "Edge 3" default = (-0.0286,-0.4626) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @mannum >= 3 && \ @cirtype == "Center-edge" endparam float param rad3 caption = "Radius 3" default = 0.9 visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @cirtype == "Center-radius" && @mannum >= 3 endparam complex param cir4 caption = "Center 4" default = (0.52928,-0.15627) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @mannum >= 4 endparam complex param cir4r caption = "Edge 4" default = (0.09027,-0.15627) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @mannum >= 4 && \ @cirtype == "Center-edge" endparam float param rad4 caption = "Radius 4" default = 0.43901 visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @cirtype == "Center-radius" && @mannum >= 4 endparam complex param cir5 caption = "Center 5" default = (0.981897,0.945374) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @mannum >= 5 endparam complex param cir5r caption = "Edge 5" default = (0.18944,0.945374) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @mannum >= 5 && \ @cirtype == "Center-edge" endparam float param rad5 caption = "Radius 5" default = 0.792457 visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @cirtype == "Center-radius" && @mannum >= 5 endparam complex param cir6 caption = "Center 6" default = (-0.49544,0.81767) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @mannum >= 6 endparam complex param cir6r caption = "Edge 6" default = (-1.18608,0.81767) visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @mannum >= 6 && \ @cirtype == "Center-edge" endparam float param rad6 caption = "Radius 6" default = 0.69064 visible = @ifsmethod == "Manual Entry" && @mobiustype != "Grandma" \ && @mobiustype != "Riley" && @mobiustype != "Jorgensen" && \ @mobiustype != "Maskit" && @mobiustype != "Maskit-Kra" \ && @cirtype == "Center-radius" && @mannum >= 6 endparam param addbound caption = "Add bounding circle" default = false visible = @ifsmethod == "Circle Inversions"&& \ @mobiustype != "Riley" && @mobiustype != "Jorgensen" \ && @mobiustype != "Maskit"&& @mobiustype != "Maskit-Kra" \ && @mobiustype != "Grandma" endparam param subschottky caption = "Schottky methods" default = 1 enum = "Disjoint" "Indra's Net" "Kissing" visible=@ifsmethod == "Schottky" && @mobiustype != "Grandma" && \ @mobiustype != "Riley" && @mobiustype != "Jorgensen" \ && @mobiustype != "Maskit"&& @mobiustype != "Maskit-Kra" endparam param plus caption = "k value" default = 0 enum = "Smaller root" "Larger root" visible = @ifsmethod == "Schottky" && @subschottky == "Kissing" && \ @mobiustype != "Grandma" && @mobiustype != "Riley" \ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam float param su caption = "Param for a-A circles" default = 1.143 min = 1.0 visible = @ifsmethod == "Schottky" && @subschottky == "Kissing" && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam float param sx caption = "Param for b-B circles" default = 1.958 min = 1.0 visible = @ifsmethod == "Schottky" && @subschottky == "Kissing" && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam bool param outcir caption = "All centers outside first" default = true visible = @ifsmethod == "Random Circles" && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam $ifdef VER40 heading text = "Non-overlapping and tangent according to the chosen tangent method." visible = @dis && @outcir && @ifsmethod != "Circle Inversions" && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endheading $endif bool param dis caption = "First 6 no overlap" default = false visible = @ifsmethod == "Random Circles" && @outcir && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam int param circles caption = "# of circles" default = 3 min = 3 max = 50 visible = @ifsmethod == "Circle Inversions" && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam $ifdef VER40 heading text = "Not all seed values can successfully generate non overlapping \ circles. Unsuccessful seed values are automatically incremented \ until a solution is found. This may result in identical circle sets \ for sequential user selected seed values." visible = @dis && @outcir && @ifsmethod != "Circle Inversions" && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endheading $endif int param seed3 caption = "Seed for rand circles" default = 1010101 visible = @ifsmethod == "Random Circles" && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam int param circles2 caption = "# of circles" default = 5 min = 3 max = 50 visible = @ifsmethod == "Random Circles" && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam param tangent caption = "Tangent method" default = 0 enum = "First" "Sequence" visible = @ifsmethod == "Random Circles" && \ @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam param perturb caption = "Perturb method" default = 0 enum = "none" "radius" "position" visible = @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" && @ifsmethod != "Manual Entry" endparam int param seed2 caption = "Seed for perturb" default = 1122334455 visible = ((@radpert == "Expand random" || @perturb == "position" || \ @ifsmethod == "Random Circles" || @ifsmethod == "Schottky") \ && @perturb != "none") && @mobiustype != "Grandma" && \ @mobiustype != "Riley"&& @mobiustype != "Jorgensen" \ && @mobiustype != "Maskit"&& @mobiustype != "Maskit-Kra" \ && @ifsmethod != "Manual Entry" endparam param radpert caption = "Radius pert" default = 0 enum = "Expand all" "Expand inner" "Expand outer" "Expand random" visible = @perturb == "radius" && @ifsmethod != "Random Circles" && \ @ifsmethod != "Schottky" && @mobiustype != "Grandma" &&\ @mobiustype != "Riley"&& @mobiustype != "Jorgensen" \ && @mobiustype != "Maskit"&& @mobiustype != "Maskit-Kra" \ && @ifsmethod != "Manual Entry" endparam param pert caption = "Expand value" default = 1.0 visible = @perturb != "none" && @mobiustype != "Grandma"&&\ @mobiustype != "Riley"&& @mobiustype != "Jorgensen" \ && @mobiustype != "Maskit"&& @mobiustype != "Maskit-Kra" \ && @ifsmethod != "Manual Entry" endparam param pertrand caption = "Random weight" default = 0.1 visible = ((@perturb != "none" && (@radpert == "Expand random" || \ @perturb == "position"))|| (@ifsmethod == "Random Circles" \ || @ifsmethod == "Schottky"&& @perturb != "none")) \ && @mobiustype != "Grandma" && @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" && @ifsmethod != "Manual Entry" endparam heading caption = "Mobius settings" endheading param mobiustype caption = "Mobius type" default = 1 enum = "Explicit" "Inversion" "Jorgensen" "Grandma" "Random" "Riley"\ "Maskit" "Maskit-Kra" endparam int param seed4 caption = "Seed for Mobius" default = 123455 visible = @mobiustype == "Random" endparam param mobiusparam caption = "Parameter type" default = 0 enum = "Matrix" "Circle" visible = @mobiustype == "Explicit" endparam bool param show caption = "Show parameters" default = false visible = @mobiustype == "Explicit" endparam bool param showm caption = "Show circle and handles" default = false visible = @mobiustype == "Explicit" && @mobiusparam == "Circle" endparam complex param moba caption = "a" default = (1,-1) visible = @mobiustype == "Explicit" && @show && @mobiusparam == "Matrix" endparam complex param mobb caption = "b" default = (0,-1) visible = @mobiustype == "Explicit" && @show && @mobiusparam == "Matrix" endparam complex param mobc caption = "c" default = (0,1) visible = @mobiustype == "Explicit" && @show && @mobiusparam == "Matrix" endparam complex param mobd caption = "d" default = (1,1) visible = @mobiustype == "Explicit" && @show && @mobiusparam == "Matrix" endparam complex param mobcen caption = "Center" default = (1,-1) visible = @mobiustype == "Explicit" && @show && @mobiusparam == "Circle" endparam float param mobrad caption = "Radius" default = 1 visible = @mobiustype == "Explicit" && @show && @mobiusparam == "Circle" endparam complex param m caption = "Maskit param" default = (0,2) visible=@mobiustype=="Maskit" || @mobiustype=="Maskit-Kra" endparam complex param m2 caption = "2nd Maskit param" default = (0.3,1.57) visible=@mobiustype=="Maskit-Kra" endparam complex param rc caption = "Riley param" default = (0.05,0.93) visible=@mobiustype=="Riley" endparam complex param ta caption = "Trace a" default = (1.9,0.05) visible = @mobiustype == "Grandma" || @mobiustype == "Jorgensen" endparam complex param tb caption = "Trace b" default = (1.9,-0.05) visible = @mobiustype == "Grandma" || @mobiustype == "Jorgensen" endparam bool param alttab caption ="Alternate trace ab" default = false visible = @mobiustype == "Grandma" endparam complex param tabAB caption = "Trace abAB" default = (1,0) visible = @mobiustype == "Grandma" endparam param flavor caption = "Flavor" default = 2 enum = "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" visible = @mobiustype != "Inversion" && (!@usemat || @mix) \ && @mobiustype != "Grandma"&& @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam param combine caption = "Combination method" default = 0 enum = "Mix 1" "Mix 2" "Mix 3" visible = @mobiustype != "Inversion" && (!@usemat || @mix) \ && @mobiustype != "Grandma"&& @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam float param iweight caption = "Inversion weight" default = 0.3 min = 0 max = 1 visible = @mobiustype != "Inversion" && (!@usemat || @mix) \ && @mobiustype != "Grandma"&& @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"\ && @mobiustype != "Maskit-Kra" endparam param mtype caption = "Mobius category" default = 0 enum = "loxodromic" "hyperbolic" "elliptic" "parabolic" visible = @mobiustype == "Random" endparam param sgroup caption = "Subgroup" default = 0 enum = "Extended real line" "Unit circle" visible = @mtype != "loxodromic" && @mobiustype == "Random" endparam param sgroupl caption = "Subgroup" default = 0 enum = "General" "Paired circles" visible = @mtype == "loxodromic" && @mobiustype == "Random" endparam bool param pcr caption = "Both circles random" default = true visible = @mtype == "loxodromic" && @mobiustype == "Random" \ && @sgroupl == "Paired circles" endparam $ifdef VER40 heading text = "If selected, sink and source circles are unit circles." visible = @mtype == "loxodromic" && @mobiustype == "Random" \ && @sgroupl == "Paired circles" && @pc endheading $endif bool param pc caption = "Unit circles" default = false visible = @mtype == "loxodromic" && @mobiustype == "Random" \ && @sgroupl == "Paired circles" endparam bool param usemat caption = "Matrix Methods" default = false visible = @mobiustype != "Inversion"&& @mobiustype != "Grandma"&& \ @mobiustype != "Riley"&& @mobiustype != "Jorgensen" \ && @mobiustype != "Maskit"&& @mobiustype != "Maskit-Kra" endparam bool param mix caption = "Mix for Matrix" default = false visible = @mobiustype != "Inversion" && @usemat&& @mobiustype != "Grandma" \ && @mobiustype != "Riley"&& @mobiustype != "Jorgensen" \ && @mobiustype != "Maskit"&& @mobiustype != "Maskit-Kra" endparam param moption caption = "Matrix Options" default = 0 enum = "Conjugate (MCInvM)" "Conjugate (CMInvC)" \ "Composite (CM)" "Composite (MC)" visible = @usemat&& @mobiustype != "Grandma"&& @mobiustype != "Riley"\ && @mobiustype != "Jorgensen" && @mobiustype != "Maskit"&& @mobiustype != "Maskit-Kra" endparam heading caption = "Spiralize settings" visible = @spiralize endheading bool param spiralize caption = "Spiralize" default = false endparam float param contract caption = "Contraction" default = 0.6 visible = @spiralize endparam float param rotate caption = "Rotation (deg)" default = 10.0 visible = @spiralize endparam heading caption = "Rotate Riemann Sphere" visible = @rmap endheading bool param rmap caption = "Map to Riemann" default = false endparam float param @sphrad caption = "Sphere radius" default = 1.5 visible = @rmap endparam float param @zoom caption = "Magnification" default = 1.0 visible = @rmap endparam float param @xangle caption = "X axis" default = 0.0 visible = @rmap endparam float param @yangle caption = "Y axis" default = 180.0 visible = @rmap endparam float param @xlate caption = "X translate" default = 0.0 visible = @rmap endparam float param @ylate caption = "Y translate" default = 0.0 visible = @rmap endparam float param @tparent caption = "Transparency" default = 1.0 min = 0.0 max = 1.0 visible = @rmap endparam heading caption = "Polar transforms" visible = @polar != "none" endheading param polar caption = "Polar transforms" default = 0 enum = "none" "Ampersand" "Arachnida 1" "Arachnida 2" "Archimedes" \ "Astroid" "Atzema Spiral" "Bean" "Bicorn" "Bicuspid" "Bifolium" \ "Bow" "Butterfly" "Cardiod" "Cassini Ovals" "Cayley's Sextic" \ "Circle Catacaustic" "Circle" "Cissoid of Diocles" "Cochleoid" \ "Conchoid" "Cotes' Spiral" "Cruciform" "Curtate Cycloid" "Cycloid" \ "Cycloid of Seva" "Deltoid Catacaustic" "Devil's Curve" \ "Dipole Curve" "Dumbbell Curve" "Eight Curve" "Ellipse Catacaustic" \ "Ellipse Evolute" "Epicycloid" "Epispiral" "Folium of Descartes" \ "Gear Curve" "Hipopede" "Hyperbola" \ "Kampyle of Eudoxus" "Kappa Curve" "Keratoid Cusp" "Knot Curve" \ "Lemniscate" "Limacon of Pascal" "Line" "Links Curve" "Lituus" \ "Log Spiral" "Log Spiral Catacaustic" "Maltese Cross" "Nephroid" \ "Ophiuride" "Parabola" "Piriform" "Poinsot Spiral 1" \ "Poinsot Spiral 2" "Quadratrix of Hippias" \ "Quadrifolium" "Rose" "Rose of Troy" "Scarabaeus" \ "Semicubical Parabola" "Stirrup Curve" \ "Strophoid" "Swastika Curve" "Teardrop Curve" "Tractrix" \ "Trefoil" "Trifolium" \ "Trisectrix of Maclaurin" "Tschirnhausen Cubic" endparam param composite caption = "Polar comp method" default = 0 enum = "add" "multiply" visible = @polar != "none" endparam float param pwght caption = "Weight" default = 1.0 visible = @polar != "none" endparam float param a caption = "Polar parameter" default = 0.2 visible = @polar != "none" && @polar != "cycloid" endparam float param b caption = "2nd Polar Parameter" default = 1.0 visible=@polar == "atzema spiral" || @polar == "bicuspid" || @polar == "bow" \ || @polar == "cassini ovals" || @polar == "circle catacaustic" \ || @polar == "circle" || @polar == "conchoid" || @polar == "cruciform" \ || @polar == "curtate cycloid" || @polar == "deltoid catacaustic" \ || @polar == "devil's curve" || @polar == "ellipse catacaustic" \ || @polar == "ellipse evolute" || @polar == "epicycloid" \ || @polar == "gear curve" || @polar == "hipopede" || @polar == "limacon of pascal"\ || @polar == "log spiral catacaustic" || @polar == "ophiuride" \ || @polar == "parabola" || @polar == "piriform" || @polar == "rose of troy"\ || @polar == "scarabaeus" || @polar == "semicubical parabola" \ || @polar == "Strophoid" || @polar == "teardrop curve" endparam param cp caption = "3rd Polar parameter" default = 0.05 visible=@polar == "rose of troy" endparam param pn caption = "Polar Integer" default = 3 visible = @polar == "Arachnida 1" || @polar == "Arachnida 2" ||\ @polar == "epispiral" || @polar == "gear curve" || \ @polar == "poinsot spiral 1" || @polar == "poinsot spiral 2" ||\ @polar == "teardrop curve" endparam param apwr caption = "Polar Power" default = (3.0,3.0) visible = @polar == "astroid" || @polar == "Bean" || @polar == "ellipse evolute" endparam func afn1 caption = "Polar Fn 1" default = cos() visible = @polar == "astroid" || @polar == "Bean" ||@polar == "deltoid catacaustic"\ || @polar == "ellipse evolute"|| @polar == "epicycloid" \ || @polar == "nephroid" || @polar == "tractrix" endfunc func afn2 caption = "Polar Fn 2" default = sin() visible = @polar == "astroid" || @polar == "Bean"||@polar == "deltoid catacaustic"\ || @polar == "ellipse evolute"|| @polar == "epicycloid"\ || @polar == "nephroid" || @polar == "tractrix" endfunc bool param negroot caption = "Use negative root" default = false visible = @polar == "Ampersand" || @polar == "bicuspid" \ || @polar == "cassini ovals" || @polar == "keratoid cusp" \ || @polar == "knot curve" || @polar == "links curve" \ || @polar == "stirrup curve" endparam heading caption = "Render Settings" endheading int param iter_density caption = "Sample Density" default = 5 min = 1 hint = "By default, the number of iterations run by the program \ is this value times the total number of pixels in the image. \ If the image appears spotty, increase this value." endparam float param spat_filt_rad caption = "Filter Radius" default = 0.1 min = 0.0 hint = "This radius controls the amount of 'smearing' applied to the \ image. It specifically controls the size of the gaussian \ kernel that is convolved with the image. Setting to 0.0 \ turns the filter off. Try values around 0.3, with the \ spatial oversample set to 2 or 3 for nice results. " endparam int param oversample caption = "Oversample" default = 1 min = 1 hint = "Increasing this parameter increases the number of iterations \ as well as the number of histogram bins, effectively allowing \ anti-aliasing to be performed. A value of 2 increases the \ number of bins by 4x, 3 by 9x, etc." endparam heading caption = "Color Settings" endheading color param bk_color caption = "Background Color" default = rgba(0,0,0,1.0) endparam float param contrast caption = "Contrast" default = 1.0 min = 1.0 endparam float param brightness caption = "Brightness" default = 4.0 endparam float param gamma caption = "Gamma" default = 4.0 min = 1.0 endparam int param white_level caption = "White Level" default = 200 min = 0 max = 255 endparam float param colorsym caption = "Color symmetry" default = 0.0 min = 0.0 max = 1.0 endparam } simpletraps_Enhanced_bark { ; Ron Barnett, October 2003 global: float texture[101,101] texture[ 1, 1] = 0.761 texture[ 2, 1] = 0.757 texture[ 3, 1] = 0.408 texture[ 4, 1] = 0.000 texture[ 5, 1] = 0.294 texture[ 6, 1] = 0.553 texture[ 7, 1] = 0.635 texture[ 8, 1] = 0.592 texture[ 9, 1] = 0.506 texture[ 10, 1] = 0.541 texture[ 11, 1] = 0.749 texture[ 12, 1] = 0.749 texture[ 13, 1] = 0.651 texture[ 14, 1] = 0.392 texture[ 15, 1] = 0.451 texture[ 16, 1] = 0.537 texture[ 17, 1] = 0.639 texture[ 18, 1] = 0.733 texture[ 19, 1] = 0.737 texture[ 20, 1] = 0.220 texture[ 21, 1] = 0.047 texture[ 22, 1] = 0.145 texture[ 23, 1] = 0.176 texture[ 24, 1] = 0.416 texture[ 25, 1] = 0.541 texture[ 26, 1] = 0.573 texture[ 27, 1] = 0.475 texture[ 28, 1] = 0.651 texture[ 29, 1] = 0.773 texture[ 30, 1] = 0.584 texture[ 31, 1] = 0.361 texture[ 32, 1] = 0.396 texture[ 33, 1] = 0.188 texture[ 34, 1] = 0.506 texture[ 35, 1] = 0.482 texture[ 36, 1] = 0.471 texture[ 37, 1] = 0.965 texture[ 38, 1] = 0.827 texture[ 39, 1] = 0.647 texture[ 40, 1] = 0.514 texture[ 41, 1] = 0.471 texture[ 42, 1] = 0.431 texture[ 43, 1] = 0.102 texture[ 44, 1] = 0.227 texture[ 45, 1] = 0.451 texture[ 46, 1] = 0.569 texture[ 47, 1] = 0.671 texture[ 48, 1] = 0.502 texture[ 49, 1] = 0.678 texture[ 50, 1] = 0.745 texture[ 51, 1] = 0.780 texture[ 52, 1] = 0.725 texture[ 53, 1] = 0.569 texture[ 54, 1] = 0.035 texture[ 55, 1] = 0.231 texture[ 56, 1] = 0.541 texture[ 57, 1] = 0.604 texture[ 58, 1] = 0.635 texture[ 59, 1] = 0.529 texture[ 60, 1] = 0.537 texture[ 61, 1] = 0.733 texture[ 62, 1] = 0.745 texture[ 63, 1] = 0.714 texture[ 64, 1] = 0.396 texture[ 65, 1] = 0.416 texture[ 66, 1] = 0.525 texture[ 67, 1] = 0.624 texture[ 68, 1] = 0.671 texture[ 69, 1] = 0.769 texture[ 70, 1] = 0.337 texture[ 71, 1] = 0.043 texture[ 72, 1] = 0.157 texture[ 73, 1] = 0.133 texture[ 74, 1] = 0.341 texture[ 75, 1] = 0.541 texture[ 76, 1] = 0.580 texture[ 77, 1] = 0.486 texture[ 78, 1] = 0.580 texture[ 79, 1] = 0.635 texture[ 80, 1] = 0.561 texture[ 81, 1] = 0.416 texture[ 82, 1] = 0.373 texture[ 83, 1] = 0.188 texture[ 84, 1] = 0.561 texture[ 85, 1] = 0.427 texture[ 86, 1] = 0.580 texture[ 87, 1] = 0.980 texture[ 88, 1] = 0.788 texture[ 89, 1] = 0.616 texture[ 90, 1] = 0.502 texture[ 91, 1] = 0.486 texture[ 92, 1] = 0.373 texture[ 93, 1] = 0.078 texture[ 94, 1] = 0.282 texture[ 95, 1] = 0.482 texture[ 96, 1] = 0.569 texture[ 97, 1] = 0.616 texture[ 98, 1] = 0.569 texture[ 99, 1] = 0.718 texture[ 100, 1] = 0.718 texture[ 1, 2] = 0.678 texture[ 2, 2] = 0.463 texture[ 3, 2] = 0.341 texture[ 4, 2] = 0.227 texture[ 5, 2] = 0.584 texture[ 6, 2] = 0.627 texture[ 7, 2] = 0.651 texture[ 8, 2] = 0.451 texture[ 9, 2] = 0.616 texture[ 10, 2] = 0.549 texture[ 11, 2] = 0.678 texture[ 12, 2] = 0.890 texture[ 13, 2] = 0.463 texture[ 14, 2] = 0.286 texture[ 15, 2] = 0.678 texture[ 16, 2] = 0.624 texture[ 17, 2] = 0.604 texture[ 18, 2] = 0.773 texture[ 19, 2] = 0.596 texture[ 20, 2] = 0.231 texture[ 21, 2] = 0.365 texture[ 22, 2] = 0.239 texture[ 23, 2] = 0.408 texture[ 24, 2] = 0.671 texture[ 25, 2] = 0.725 texture[ 26, 2] = 0.596 texture[ 27, 2] = 0.384 texture[ 28, 2] = 0.384 texture[ 29, 2] = 0.592 texture[ 30, 2] = 0.514 texture[ 31, 2] = 0.447 texture[ 32, 2] = 0.573 texture[ 33, 2] = 0.549 texture[ 34, 2] = 0.361 texture[ 35, 2] = 0.596 texture[ 36, 2] = 0.420 texture[ 37, 2] = 0.761 texture[ 38, 2] = 0.871 texture[ 39, 2] = 0.824 texture[ 40, 2] = 0.608 texture[ 41, 2] = 0.537 texture[ 42, 2] = 0.408 texture[ 43, 2] = 0.098 texture[ 44, 2] = 0.580 texture[ 45, 2] = 0.506 texture[ 46, 2] = 0.529 texture[ 47, 2] = 0.580 texture[ 48, 2] = 0.404 texture[ 49, 2] = 0.569 texture[ 50, 2] = 0.663 texture[ 51, 2] = 0.663 texture[ 52, 2] = 0.518 texture[ 53, 2] = 0.416 texture[ 54, 2] = 0.227 texture[ 55, 2] = 0.541 texture[ 56, 2] = 0.624 texture[ 57, 2] = 0.639 texture[ 58, 2] = 0.482 texture[ 59, 2] = 0.596 texture[ 60, 2] = 0.573 texture[ 61, 2] = 0.608 texture[ 62, 2] = 0.890 texture[ 63, 2] = 0.651 texture[ 64, 2] = 0.227 texture[ 65, 2] = 0.639 texture[ 66, 2] = 0.627 texture[ 67, 2] = 0.604 texture[ 68, 2] = 0.725 texture[ 69, 2] = 0.690 texture[ 70, 2] = 0.263 texture[ 71, 2] = 0.361 texture[ 72, 2] = 0.243 texture[ 73, 2] = 0.373 texture[ 74, 2] = 0.651 texture[ 75, 2] = 0.737 texture[ 76, 2] = 0.624 texture[ 77, 2] = 0.416 texture[ 78, 2] = 0.341 texture[ 79, 2] = 0.376 texture[ 80, 2] = 0.451 texture[ 81, 2] = 0.439 texture[ 82, 2] = 0.584 texture[ 83, 2] = 0.471 texture[ 84, 2] = 0.427 texture[ 85, 2] = 0.553 texture[ 86, 2] = 0.447 texture[ 87, 2] = 0.788 texture[ 88, 2] = 0.878 texture[ 89, 2] = 0.824 texture[ 90, 2] = 0.549 texture[ 91, 2] = 0.541 texture[ 92, 2] = 0.263 texture[ 93, 2] = 0.141 texture[ 94, 2] = 0.573 texture[ 95, 2] = 0.486 texture[ 96, 2] = 0.525 texture[ 97, 2] = 0.525 texture[ 98, 2] = 0.439 texture[ 99, 2] = 0.608 texture[ 100, 2] = 0.651 texture[ 1, 3] = 0.749 texture[ 2, 3] = 0.431 texture[ 3, 3] = 0.067 texture[ 4, 3] = 0.420 texture[ 5, 3] = 0.780 texture[ 6, 3] = 0.812 texture[ 7, 3] = 0.816 texture[ 8, 3] = 0.525 texture[ 9, 3] = 0.580 texture[ 10, 3] = 0.439 texture[ 11, 3] = 0.541 texture[ 12, 3] = 0.706 texture[ 13, 3] = 0.231 texture[ 14, 3] = 0.208 texture[ 15, 3] = 0.627 texture[ 16, 3] = 0.651 texture[ 17, 3] = 0.827 texture[ 18, 3] = 0.953 texture[ 19, 3] = 0.329 texture[ 20, 3] = 0.486 texture[ 21, 3] = 0.592 texture[ 22, 3] = 0.541 texture[ 23, 3] = 0.882 texture[ 24, 3] = 0.800 texture[ 25, 3] = 0.639 texture[ 26, 3] = 0.529 texture[ 27, 3] = 0.608 texture[ 28, 3] = 0.608 texture[ 29, 3] = 0.604 texture[ 30, 3] = 0.745 texture[ 31, 3] = 0.322 texture[ 32, 3] = 0.122 texture[ 33, 3] = 0.596 texture[ 34, 3] = 0.569 texture[ 35, 3] = 0.310 texture[ 36, 3] = 0.337 texture[ 37, 3] = 0.573 texture[ 38, 3] = 0.757 texture[ 39, 3] = 0.871 texture[ 40, 3] = 0.678 texture[ 41, 3] = 0.447 texture[ 42, 3] = 0.196 texture[ 43, 3] = 0.220 texture[ 44, 3] = 0.761 texture[ 45, 3] = 0.706 texture[ 46, 3] = 0.486 texture[ 47, 3] = 0.471 texture[ 48, 3] = 0.690 texture[ 49, 3] = 0.447 texture[ 50, 3] = 0.506 texture[ 51, 3] = 0.737 texture[ 52, 3] = 0.573 texture[ 53, 3] = 0.067 texture[ 54, 3] = 0.306 texture[ 55, 3] = 0.749 texture[ 56, 3] = 0.780 texture[ 57, 3] = 0.835 texture[ 58, 3] = 0.518 texture[ 59, 3] = 0.584 texture[ 60, 3] = 0.463 texture[ 61, 3] = 0.486 texture[ 62, 3] = 0.737 texture[ 63, 3] = 0.396 texture[ 64, 3] = 0.118 texture[ 65, 3] = 0.604 texture[ 66, 3] = 0.639 texture[ 67, 3] = 0.800 texture[ 68, 3] = 0.953 texture[ 69, 3] = 0.475 texture[ 70, 3] = 0.396 texture[ 71, 3] = 0.682 texture[ 72, 3] = 0.439 texture[ 73, 3] = 0.855 texture[ 74, 3] = 0.824 texture[ 75, 3] = 0.671 texture[ 76, 3] = 0.518 texture[ 77, 3] = 0.549 texture[ 78, 3] = 0.635 texture[ 79, 3] = 0.733 texture[ 80, 3] = 0.733 texture[ 81, 3] = 0.157 texture[ 82, 3] = 0.176 texture[ 83, 3] = 0.647 texture[ 84, 3] = 0.549 texture[ 85, 3] = 0.263 texture[ 86, 3] = 0.384 texture[ 87, 3] = 0.580 texture[ 88, 3] = 0.773 texture[ 89, 3] = 0.859 texture[ 90, 3] = 0.635 texture[ 91, 3] = 0.420 texture[ 92, 3] = 0.122 texture[ 93, 3] = 0.322 texture[ 94, 3] = 0.812 texture[ 95, 3] = 0.671 texture[ 96, 3] = 0.486 texture[ 97, 3] = 0.518 texture[ 98, 3] = 0.651 texture[ 99, 3] = 0.427 texture[ 100, 3] = 0.596 texture[ 1, 4] = 0.745 texture[ 2, 4] = 0.494 texture[ 3, 4] = 0.055 texture[ 4, 4] = 0.341 texture[ 5, 4] = 0.635 texture[ 6, 4] = 0.769 texture[ 7, 4] = 0.690 texture[ 8, 4] = 0.525 texture[ 9, 4] = 0.506 texture[ 10, 4] = 0.502 texture[ 11, 4] = 0.573 texture[ 12, 4] = 0.608 texture[ 13, 4] = 0.165 texture[ 14, 4] = 0.294 texture[ 15, 4] = 0.745 texture[ 16, 4] = 0.812 texture[ 17, 4] = 0.890 texture[ 18, 4] = 0.584 texture[ 19, 4] = 0.141 texture[ 20, 4] = 0.337 texture[ 21, 4] = 0.298 texture[ 22, 4] = 0.702 texture[ 23, 4] = 0.706 texture[ 24, 4] = 0.420 texture[ 25, 4] = 0.318 texture[ 26, 4] = 0.451 texture[ 27, 4] = 0.580 texture[ 28, 4] = 0.537 texture[ 29, 4] = 0.663 texture[ 30, 4] = 0.549 texture[ 31, 4] = 0.176 texture[ 32, 4] = 0.067 texture[ 33, 4] = 0.173 texture[ 34, 4] = 0.361 texture[ 35, 4] = 0.286 texture[ 36, 4] = 0.310 texture[ 37, 4] = 0.451 texture[ 38, 4] = 0.451 texture[ 39, 4] = 0.561 texture[ 40, 4] = 0.553 texture[ 41, 4] = 0.482 texture[ 42, 4] = 0.200 texture[ 43, 4] = 0.459 texture[ 44, 4] = 0.659 texture[ 45, 4] = 0.624 texture[ 46, 4] = 0.569 texture[ 47, 4] = 0.502 texture[ 48, 4] = 0.580 texture[ 49, 4] = 0.573 texture[ 50, 4] = 0.537 texture[ 51, 4] = 0.651 texture[ 52, 4] = 0.608 texture[ 53, 4] = 0.086 texture[ 54, 4] = 0.227 texture[ 55, 4] = 0.608 texture[ 56, 4] = 0.780 texture[ 57, 4] = 0.733 texture[ 58, 4] = 0.518 texture[ 59, 4] = 0.482 texture[ 60, 4] = 0.482 texture[ 61, 4] = 0.553 texture[ 62, 4] = 0.639 texture[ 63, 4] = 0.267 texture[ 64, 4] = 0.200 texture[ 65, 4] = 0.678 texture[ 66, 4] = 0.824 texture[ 67, 4] = 0.882 texture[ 68, 4] = 0.635 texture[ 69, 4] = 0.173 texture[ 70, 4] = 0.286 texture[ 71, 4] = 0.337 texture[ 72, 4] = 0.616 texture[ 73, 4] = 0.733 texture[ 74, 4] = 0.451 texture[ 75, 4] = 0.349 texture[ 76, 4] = 0.431 texture[ 77, 4] = 0.573 texture[ 78, 4] = 0.482 texture[ 79, 4] = 0.596 texture[ 80, 4] = 0.561 texture[ 81, 4] = 0.118 texture[ 82, 4] = 0.075 texture[ 83, 4] = 0.196 texture[ 84, 4] = 0.420 texture[ 85, 4] = 0.298 texture[ 86, 4] = 0.384 texture[ 87, 4] = 0.451 texture[ 88, 4] = 0.482 texture[ 89, 4] = 0.604 texture[ 90, 4] = 0.549 texture[ 91, 4] = 0.494 texture[ 92, 4] = 0.212 texture[ 93, 4] = 0.537 texture[ 94, 4] = 0.647 texture[ 95, 4] = 0.616 texture[ 96, 4] = 0.596 texture[ 97, 4] = 0.529 texture[ 98, 4] = 0.592 texture[ 99, 4] = 0.592 texture[ 100, 4] = 0.569 texture[ 1, 5] = 0.639 texture[ 2, 5] = 0.275 texture[ 3, 5] = 0.035 texture[ 4, 5] = 0.376 texture[ 5, 5] = 0.506 texture[ 6, 5] = 0.322 texture[ 7, 5] = 0.420 texture[ 8, 5] = 0.702 texture[ 9, 5] = 0.663 texture[ 10, 5] = 0.561 texture[ 11, 5] = 0.737 texture[ 12, 5] = 0.678 texture[ 13, 5] = 0.322 texture[ 14, 5] = 0.420 texture[ 15, 5] = 0.812 texture[ 16, 5] = 0.965 texture[ 17, 5] = 0.792 texture[ 18, 5] = 0.376 texture[ 19, 5] = 0.176 texture[ 20, 5] = 0.157 texture[ 21, 5] = 0.329 texture[ 22, 5] = 0.788 texture[ 23, 5] = 0.514 texture[ 24, 5] = 0.157 texture[ 25, 5] = 0.580 texture[ 26, 5] = 0.518 texture[ 27, 5] = 0.212 texture[ 28, 5] = 0.373 texture[ 29, 5] = 0.714 texture[ 30, 5] = 0.494 texture[ 31, 5] = 0.133 texture[ 32, 5] = 0.035 texture[ 33, 5] = 0.118 texture[ 34, 5] = 0.208 texture[ 35, 5] = 0.294 texture[ 36, 5] = 0.263 texture[ 37, 5] = 0.251 texture[ 38, 5] = 0.329 texture[ 39, 5] = 0.592 texture[ 40, 5] = 0.584 texture[ 41, 5] = 0.569 texture[ 42, 5] = 0.420 texture[ 43, 5] = 0.365 texture[ 44, 5] = 0.439 texture[ 45, 5] = 0.714 texture[ 46, 5] = 0.702 texture[ 47, 5] = 0.647 texture[ 48, 5] = 0.580 texture[ 49, 5] = 0.420 texture[ 50, 5] = 0.463 texture[ 51, 5] = 0.635 texture[ 52, 5] = 0.384 texture[ 53, 5] = 0.047 texture[ 54, 5] = 0.294 texture[ 55, 5] = 0.518 texture[ 56, 5] = 0.349 texture[ 57, 5] = 0.384 texture[ 58, 5] = 0.663 texture[ 59, 5] = 0.694 texture[ 60, 5] = 0.584 texture[ 61, 5] = 0.678 texture[ 62, 5] = 0.749 texture[ 63, 5] = 0.341 texture[ 64, 5] = 0.420 texture[ 65, 5] = 0.737 texture[ 66, 5] = 0.980 texture[ 67, 5] = 0.816 texture[ 68, 5] = 0.459 texture[ 69, 5] = 0.173 texture[ 70, 5] = 0.165 texture[ 71, 5] = 0.239 texture[ 72, 5] = 0.749 texture[ 73, 5] = 0.549 texture[ 74, 5] = 0.145 texture[ 75, 5] = 0.553 texture[ 76, 5] = 0.580 texture[ 77, 5] = 0.231 texture[ 78, 5] = 0.294 texture[ 79, 5] = 0.502 texture[ 80, 5] = 0.471 texture[ 81, 5] = 0.118 texture[ 82, 5] = 0.035 texture[ 83, 5] = 0.145 texture[ 84, 5] = 0.227 texture[ 85, 5] = 0.306 texture[ 86, 5] = 0.239 texture[ 87, 5] = 0.263 texture[ 88, 5] = 0.361 texture[ 89, 5] = 0.608 texture[ 90, 5] = 0.573 texture[ 91, 5] = 0.561 texture[ 92, 5] = 0.404 texture[ 93, 5] = 0.349 texture[ 94, 5] = 0.486 texture[ 95, 5] = 0.733 texture[ 96, 5] = 0.690 texture[ 97, 5] = 0.682 texture[ 98, 5] = 0.553 texture[ 99, 5] = 0.416 texture[ 100, 5] = 0.471 texture[ 1, 6] = 0.506 texture[ 2, 6] = 0.176 texture[ 3, 6] = 0.212 texture[ 4, 6] = 0.420 texture[ 5, 6] = 0.459 texture[ 6, 6] = 0.459 texture[ 7, 6] = 0.604 texture[ 8, 6] = 0.690 texture[ 9, 6] = 0.678 texture[ 10, 6] = 0.608 texture[ 11, 6] = 0.827 texture[ 12, 6] = 0.745 texture[ 13, 6] = 0.514 texture[ 14, 6] = 0.651 texture[ 15, 6] = 0.651 texture[ 16, 6] = 0.773 texture[ 17, 6] = 0.663 texture[ 18, 6] = 0.212 texture[ 19, 6] = 0.365 texture[ 20, 6] = 0.200 texture[ 21, 6] = 0.255 texture[ 22, 6] = 0.573 texture[ 23, 6] = 0.408 texture[ 24, 6] = 0.298 texture[ 25, 6] = 0.420 texture[ 26, 6] = 0.592 texture[ 27, 6] = 0.451 texture[ 28, 6] = 0.541 texture[ 29, 6] = 0.788 texture[ 30, 6] = 0.757 texture[ 31, 6] = 0.486 texture[ 32, 6] = 0.153 texture[ 33, 6] = 0.298 texture[ 34, 6] = 0.733 texture[ 35, 6] = 0.608 texture[ 36, 6] = 0.714 texture[ 37, 6] = 0.408 texture[ 38, 6] = 0.282 texture[ 39, 6] = 0.427 texture[ 40, 6] = 0.678 texture[ 41, 6] = 0.745 texture[ 42, 6] = 0.596 texture[ 43, 6] = 0.404 texture[ 44, 6] = 0.541 texture[ 45, 6] = 0.635 texture[ 46, 6] = 0.804 texture[ 47, 6] = 0.663 texture[ 48, 6] = 0.800 texture[ 49, 6] = 0.690 texture[ 50, 6] = 0.824 texture[ 51, 6] = 0.678 texture[ 52, 6] = 0.208 texture[ 53, 6] = 0.188 texture[ 54, 6] = 0.373 texture[ 55, 6] = 0.459 texture[ 56, 6] = 0.459 texture[ 57, 6] = 0.569 texture[ 58, 6] = 0.659 texture[ 59, 6] = 0.702 texture[ 60, 6] = 0.635 texture[ 61, 6] = 0.769 texture[ 62, 6] = 0.824 texture[ 63, 6] = 0.486 texture[ 64, 6] = 0.702 texture[ 65, 6] = 0.627 texture[ 66, 6] = 0.773 texture[ 67, 6] = 0.725 texture[ 68, 6] = 0.282 texture[ 69, 6] = 0.306 texture[ 70, 6] = 0.255 texture[ 71, 6] = 0.188 texture[ 72, 6] = 0.561 texture[ 73, 6] = 0.447 texture[ 74, 6] = 0.306 texture[ 75, 6] = 0.408 texture[ 76, 6] = 0.553 texture[ 77, 6] = 0.459 texture[ 78, 6] = 0.525 texture[ 79, 6] = 0.824 texture[ 80, 6] = 0.769 texture[ 81, 6] = 0.404 texture[ 82, 6] = 0.133 texture[ 83, 6] = 0.427 texture[ 84, 6] = 0.745 texture[ 85, 6] = 0.627 texture[ 86, 6] = 0.682 texture[ 87, 6] = 0.341 texture[ 88, 6] = 0.282 texture[ 89, 6] = 0.475 texture[ 90, 6] = 0.690 texture[ 91, 6] = 0.690 texture[ 92, 6] = 0.514 texture[ 93, 6] = 0.404 texture[ 94, 6] = 0.561 texture[ 95, 6] = 0.690 texture[ 96, 6] = 0.800 texture[ 97, 6] = 0.627 texture[ 98, 6] = 0.773 texture[ 99, 6] = 0.659 texture[ 100, 6] = 0.843 texture[ 1, 7] = 0.227 texture[ 2, 7] = 0.227 texture[ 3, 7] = 0.231 texture[ 4, 7] = 0.408 texture[ 5, 7] = 0.529 texture[ 6, 7] = 0.463 texture[ 7, 7] = 0.725 texture[ 8, 7] = 0.592 texture[ 9, 7] = 0.553 texture[ 10, 7] = 0.624 texture[ 11, 7] = 0.627 texture[ 12, 7] = 0.420 texture[ 13, 7] = 0.761 texture[ 14, 7] = 0.937 texture[ 15, 7] = 0.318 texture[ 16, 7] = 0.537 texture[ 17, 7] = 0.502 texture[ 18, 7] = 0.157 texture[ 19, 7] = 0.267 texture[ 20, 7] = 0.184 texture[ 21, 7] = 0.231 texture[ 22, 7] = 0.682 texture[ 23, 7] = 0.635 texture[ 24, 7] = 0.651 texture[ 25, 7] = 0.682 texture[ 26, 7] = 0.592 texture[ 27, 7] = 0.267 texture[ 28, 7] = 0.239 texture[ 29, 7] = 0.624 texture[ 30, 7] = 0.573 texture[ 31, 7] = 0.502 texture[ 32, 7] = 0.349 texture[ 33, 7] = 0.463 texture[ 34, 7] = 0.529 texture[ 35, 7] = 0.608 texture[ 36, 7] = 0.678 texture[ 37, 7] = 0.757 texture[ 38, 7] = 0.835 texture[ 39, 7] = 0.639 texture[ 40, 7] = 0.682 texture[ 41, 7] = 0.529 texture[ 42, 7] = 0.361 texture[ 43, 7] = 0.396 texture[ 44, 7] = 0.506 texture[ 45, 7] = 0.604 texture[ 46, 7] = 0.678 texture[ 47, 7] = 0.635 texture[ 48, 7] = 0.718 texture[ 49, 7] = 0.678 texture[ 50, 7] = 0.624 texture[ 51, 7] = 0.361 texture[ 52, 7] = 0.184 texture[ 53, 7] = 0.212 texture[ 54, 7] = 0.329 texture[ 55, 7] = 0.553 texture[ 56, 7] = 0.447 texture[ 57, 7] = 0.702 texture[ 58, 7] = 0.635 texture[ 59, 7] = 0.537 texture[ 60, 7] = 0.624 texture[ 61, 7] = 0.627 texture[ 62, 7] = 0.439 texture[ 63, 7] = 0.596 texture[ 64, 7] = 1.000 texture[ 65, 7] = 0.451 texture[ 66, 7] = 0.459 texture[ 67, 7] = 0.569 texture[ 68, 7] = 0.184 texture[ 69, 7] = 0.227 texture[ 70, 7] = 0.227 texture[ 71, 7] = 0.145 texture[ 72, 7] = 0.647 texture[ 73, 7] = 0.659 texture[ 74, 7] = 0.627 texture[ 75, 7] = 0.690 texture[ 76, 7] = 0.639 texture[ 77, 7] = 0.365 texture[ 78, 7] = 0.176 texture[ 79, 7] = 0.486 texture[ 80, 7] = 0.604 texture[ 81, 7] = 0.529 texture[ 82, 7] = 0.396 texture[ 83, 7] = 0.514 texture[ 84, 7] = 0.494 texture[ 85, 7] = 0.639 texture[ 86, 7] = 0.682 texture[ 87, 7] = 0.780 texture[ 88, 7] = 0.816 texture[ 89, 7] = 0.647 texture[ 90, 7] = 0.678 texture[ 91, 7] = 0.494 texture[ 92, 7] = 0.353 texture[ 93, 7] = 0.431 texture[ 94, 7] = 0.518 texture[ 95, 7] = 0.659 texture[ 96, 7] = 0.651 texture[ 97, 7] = 0.635 texture[ 98, 7] = 0.714 texture[ 99, 7] = 0.678 texture[ 100, 7] = 0.647 texture[ 1, 8] = 0.196 texture[ 2, 8] = 0.145 texture[ 3, 8] = 0.173 texture[ 4, 8] = 0.376 texture[ 5, 8] = 0.592 texture[ 6, 8] = 0.718 texture[ 7, 8] = 0.780 texture[ 8, 8] = 0.553 texture[ 9, 8] = 0.604 texture[ 10, 8] = 0.627 texture[ 11, 8] = 0.733 texture[ 12, 8] = 0.651 texture[ 13, 8] = 0.867 texture[ 14, 8] = 0.475 texture[ 15, 8] = 0.310 texture[ 16, 8] = 0.718 texture[ 17, 8] = 0.310 texture[ 18, 8] = 0.231 texture[ 19, 8] = 0.329 texture[ 20, 8] = 0.184 texture[ 21, 8] = 0.286 texture[ 22, 8] = 0.678 texture[ 23, 8] = 0.757 texture[ 24, 8] = 0.761 texture[ 25, 8] = 0.718 texture[ 26, 8] = 0.635 texture[ 27, 8] = 0.118 texture[ 28, 8] = 0.212 texture[ 29, 8] = 0.616 texture[ 30, 8] = 0.475 texture[ 31, 8] = 0.463 texture[ 32, 8] = 0.494 texture[ 33, 8] = 0.608 texture[ 34, 8] = 0.482 texture[ 35, 8] = 0.212 texture[ 36, 8] = 0.408 texture[ 37, 8] = 0.647 texture[ 38, 8] = 0.596 texture[ 39, 8] = 0.647 texture[ 40, 8] = 0.592 texture[ 41, 8] = 0.486 texture[ 42, 8] = 0.373 texture[ 43, 8] = 0.420 texture[ 44, 8] = 0.463 texture[ 45, 8] = 0.459 texture[ 46, 8] = 0.322 texture[ 47, 8] = 0.561 texture[ 48, 8] = 0.769 texture[ 49, 8] = 0.804 texture[ 50, 8] = 0.835 texture[ 51, 8] = 0.286 texture[ 52, 8] = 0.118 texture[ 53, 8] = 0.153 texture[ 54, 8] = 0.318 texture[ 55, 8] = 0.561 texture[ 56, 8] = 0.651 texture[ 57, 8] = 0.769 texture[ 58, 8] = 0.592 texture[ 59, 8] = 0.604 texture[ 60, 8] = 0.647 texture[ 61, 8] = 0.694 texture[ 62, 8] = 0.635 texture[ 63, 8] = 0.769 texture[ 64, 8] = 0.584 texture[ 65, 8] = 0.294 texture[ 66, 8] = 0.694 texture[ 67, 8] = 0.365 texture[ 68, 8] = 0.176 texture[ 69, 8] = 0.349 texture[ 70, 8] = 0.200 texture[ 71, 8] = 0.188 texture[ 72, 8] = 0.596 texture[ 73, 8] = 0.733 texture[ 74, 8] = 0.714 texture[ 75, 8] = 0.714 texture[ 76, 8] = 0.671 texture[ 77, 8] = 0.200 texture[ 78, 8] = 0.129 texture[ 79, 8] = 0.322 texture[ 80, 8] = 0.376 texture[ 81, 8] = 0.525 texture[ 82, 8] = 0.529 texture[ 83, 8] = 0.627 texture[ 84, 8] = 0.384 texture[ 85, 8] = 0.200 texture[ 86, 8] = 0.486 texture[ 87, 8] = 0.639 texture[ 88, 8] = 0.624 texture[ 89, 8] = 0.651 texture[ 90, 8] = 0.573 texture[ 91, 8] = 0.451 texture[ 92, 8] = 0.376 texture[ 93, 8] = 0.439 texture[ 94, 8] = 0.471 texture[ 95, 8] = 0.459 texture[ 96, 8] = 0.306 texture[ 97, 8] = 0.663 texture[ 98, 8] = 0.757 texture[ 99, 8] = 0.816 texture[ 100, 8] = 0.769 texture[ 1, 9] = 0.153 texture[ 2, 9] = 0.098 texture[ 3, 9] = 0.047 texture[ 4, 9] = 0.145 texture[ 5, 9] = 0.408 texture[ 6, 9] = 0.957 texture[ 7, 9] = 0.769 texture[ 8, 9] = 0.506 texture[ 9, 9] = 0.537 texture[ 10, 9] = 0.514 texture[ 11, 9] = 0.773 texture[ 12, 9] = 0.980 texture[ 13, 9] = 0.902 texture[ 14, 9] = 0.282 texture[ 15, 9] = 0.624 texture[ 16, 9] = 0.792 texture[ 17, 9] = 0.239 texture[ 18, 9] = 0.184 texture[ 19, 9] = 0.275 texture[ 20, 9] = 0.133 texture[ 21, 9] = 0.427 texture[ 22, 9] = 0.878 texture[ 23, 9] = 0.855 texture[ 24, 9] = 0.757 texture[ 25, 9] = 0.627 texture[ 26, 9] = 0.702 texture[ 27, 9] = 0.165 texture[ 28, 9] = 0.298 texture[ 29, 9] = 0.694 texture[ 30, 9] = 0.502 texture[ 31, 9] = 0.373 texture[ 32, 9] = 0.459 texture[ 33, 9] = 0.365 texture[ 34, 9] = 0.310 texture[ 35, 9] = 0.188 texture[ 36, 9] = 0.439 texture[ 37, 9] = 0.463 texture[ 38, 9] = 0.584 texture[ 39, 9] = 0.608 texture[ 40, 9] = 0.365 texture[ 41, 9] = 0.408 texture[ 42, 9] = 0.541 texture[ 43, 9] = 0.384 texture[ 44, 9] = 0.569 texture[ 45, 9] = 0.486 texture[ 46, 9] = 0.086 texture[ 47, 9] = 0.263 texture[ 48, 9] = 0.651 texture[ 49, 9] = 0.737 texture[ 50, 9] = 0.827 texture[ 51, 9] = 0.294 texture[ 52, 9] = 0.075 texture[ 53, 9] = 0.035 texture[ 54, 9] = 0.118 texture[ 55, 9] = 0.310 texture[ 56, 9] = 0.902 texture[ 57, 9] = 0.788 texture[ 58, 9] = 0.518 texture[ 59, 9] = 0.561 texture[ 60, 9] = 0.502 texture[ 61, 9] = 0.639 texture[ 62, 9] = 0.933 texture[ 63, 9] = 0.965 texture[ 64, 9] = 0.365 texture[ 65, 9] = 0.525 texture[ 66, 9] = 0.824 texture[ 67, 9] = 0.275 texture[ 68, 9] = 0.165 texture[ 69, 9] = 0.294 texture[ 70, 9] = 0.145 texture[ 71, 9] = 0.298 texture[ 72, 9] = 0.827 texture[ 73, 9] = 0.855 texture[ 74, 9] = 0.769 texture[ 75, 9] = 0.616 texture[ 76, 9] = 0.706 texture[ 77, 9] = 0.286 texture[ 78, 9] = 0.196 texture[ 79, 9] = 0.471 texture[ 80, 9] = 0.353 texture[ 81, 9] = 0.404 texture[ 82, 9] = 0.427 texture[ 83, 9] = 0.392 texture[ 84, 9] = 0.255 texture[ 85, 9] = 0.200 texture[ 86, 9] = 0.518 texture[ 87, 9] = 0.475 texture[ 88, 9] = 0.635 texture[ 89, 9] = 0.580 texture[ 90, 9] = 0.341 texture[ 91, 9] = 0.439 texture[ 92, 9] = 0.525 texture[ 93, 9] = 0.392 texture[ 94, 9] = 0.627 texture[ 95, 9] = 0.376 texture[ 96, 9] = 0.078 texture[ 97, 9] = 0.349 texture[ 98, 9] = 0.678 texture[ 99, 9] = 0.749 texture[ 100, 9] = 0.749 texture[ 1, 10] = 0.176 texture[ 2, 10] = 0.078 texture[ 3, 10] = 0.035 texture[ 4, 10] = 0.329 texture[ 5, 10] = 0.525 texture[ 6, 10] = 0.639 texture[ 7, 10] = 0.584 texture[ 8, 10] = 0.553 texture[ 9, 10] = 0.596 texture[ 10, 10] = 0.725 texture[ 11, 10] = 0.757 texture[ 12, 10] = 0.945 texture[ 13, 10] = 0.663 texture[ 14, 10] = 0.243 texture[ 15, 10] = 0.596 texture[ 16, 10] = 0.835 texture[ 17, 10] = 0.365 texture[ 18, 10] = 0.373 texture[ 19, 10] = 0.353 texture[ 20, 10] = 0.086 texture[ 21, 10] = 0.337 texture[ 22, 10] = 0.816 texture[ 23, 10] = 0.773 texture[ 24, 10] = 0.596 texture[ 25, 10] = 0.431 texture[ 26, 10] = 0.616 texture[ 27, 10] = 0.212 texture[ 28, 10] = 0.208 texture[ 29, 10] = 0.706 texture[ 30, 10] = 0.678 texture[ 31, 10] = 0.608 texture[ 32, 10] = 0.584 texture[ 33, 10] = 0.275 texture[ 34, 10] = 0.298 texture[ 35, 10] = 0.447 texture[ 36, 10] = 0.408 texture[ 37, 10] = 0.459 texture[ 38, 10] = 0.706 texture[ 39, 10] = 0.678 texture[ 40, 10] = 0.502 texture[ 41, 10] = 0.337 texture[ 42, 10] = 0.549 texture[ 43, 10] = 0.553 texture[ 44, 10] = 0.788 texture[ 45, 10] = 0.718 texture[ 46, 10] = 0.263 texture[ 47, 10] = 0.157 texture[ 48, 10] = 0.616 texture[ 49, 10] = 0.773 texture[ 50, 10] = 0.506 texture[ 51, 10] = 0.196 texture[ 52, 10] = 0.090 texture[ 53, 10] = 0.020 texture[ 54, 10] = 0.263 texture[ 55, 10] = 0.525 texture[ 56, 10] = 0.624 texture[ 57, 10] = 0.584 texture[ 58, 10] = 0.541 texture[ 59, 10] = 0.573 texture[ 60, 10] = 0.690 texture[ 61, 10] = 0.725 texture[ 62, 10] = 0.953 texture[ 63, 10] = 0.816 texture[ 64, 10] = 0.212 texture[ 65, 10] = 0.537 texture[ 66, 10] = 0.816 texture[ 67, 10] = 0.408 texture[ 68, 10] = 0.337 texture[ 69, 10] = 0.420 texture[ 70, 10] = 0.118 texture[ 71, 10] = 0.220 texture[ 72, 10] = 0.800 texture[ 73, 10] = 0.804 texture[ 74, 10] = 0.659 texture[ 75, 10] = 0.408 texture[ 76, 10] = 0.604 texture[ 77, 10] = 0.322 texture[ 78, 10] = 0.086 texture[ 79, 10] = 0.584 texture[ 80, 10] = 0.702 texture[ 81, 10] = 0.616 texture[ 82, 10] = 0.549 texture[ 83, 10] = 0.255 texture[ 84, 10] = 0.329 texture[ 85, 10] = 0.459 texture[ 86, 10] = 0.416 texture[ 87, 10] = 0.518 texture[ 88, 10] = 0.757 texture[ 89, 10] = 0.635 texture[ 90, 10] = 0.420 texture[ 91, 10] = 0.322 texture[ 92, 10] = 0.580 texture[ 93, 10] = 0.604 texture[ 94, 10] = 0.867 texture[ 95, 10] = 0.624 texture[ 96, 10] = 0.188 texture[ 97, 10] = 0.227 texture[ 98, 10] = 0.682 texture[ 99, 10] = 0.761 texture[ 100, 10] = 0.408 texture[ 1, 11] = 0.227 texture[ 2, 11] = 0.090 texture[ 3, 11] = 0.098 texture[ 4, 11] = 0.651 texture[ 5, 11] = 0.773 texture[ 6, 11] = 0.604 texture[ 7, 11] = 0.616 texture[ 8, 11] = 0.392 texture[ 9, 11] = 0.549 texture[ 10, 11] = 0.835 texture[ 11, 11] = 0.855 texture[ 12, 11] = 0.525 texture[ 13, 11] = 0.208 texture[ 14, 11] = 0.553 texture[ 15, 11] = 0.835 texture[ 16, 11] = 0.804 texture[ 17, 11] = 0.694 texture[ 18, 11] = 0.471 texture[ 19, 11] = 0.196 texture[ 20, 11] = 0.024 texture[ 21, 11] = 0.439 texture[ 22, 11] = 0.714 texture[ 23, 11] = 0.537 texture[ 24, 11] = 0.569 texture[ 25, 11] = 0.529 texture[ 26, 11] = 0.569 texture[ 27, 11] = 0.212 texture[ 28, 11] = 0.376 texture[ 29, 11] = 0.816 texture[ 30, 11] = 0.769 texture[ 31, 11] = 0.651 texture[ 32, 11] = 0.816 texture[ 33, 11] = 0.286 texture[ 34, 11] = 0.208 texture[ 35, 11] = 0.647 texture[ 36, 11] = 0.659 texture[ 37, 11] = 0.663 texture[ 38, 11] = 0.592 texture[ 39, 11] = 0.718 texture[ 40, 11] = 0.749 texture[ 41, 11] = 0.392 texture[ 42, 11] = 0.459 texture[ 43, 11] = 0.639 texture[ 44, 11] = 0.773 texture[ 45, 11] = 0.682 texture[ 46, 11] = 0.243 texture[ 47, 11] = 0.404 texture[ 48, 11] = 0.749 texture[ 49, 11] = 0.812 texture[ 50, 11] = 0.580 texture[ 51, 11] = 0.251 texture[ 52, 11] = 0.122 texture[ 53, 11] = 0.055 texture[ 54, 11] = 0.541 texture[ 55, 11] = 0.827 texture[ 56, 11] = 0.537 texture[ 57, 11] = 0.627 texture[ 58, 11] = 0.416 texture[ 59, 11] = 0.475 texture[ 60, 11] = 0.816 texture[ 61, 11] = 0.882 texture[ 62, 11] = 0.639 texture[ 63, 11] = 0.239 texture[ 64, 11] = 0.439 texture[ 65, 11] = 0.824 texture[ 66, 11] = 0.792 texture[ 67, 11] = 0.706 texture[ 68, 11] = 0.486 texture[ 69, 11] = 0.243 texture[ 70, 11] = 0.024 texture[ 71, 11] = 0.306 texture[ 72, 11] = 0.757 texture[ 73, 11] = 0.553 texture[ 74, 11] = 0.561 texture[ 75, 11] = 0.529 texture[ 76, 11] = 0.584 texture[ 77, 11] = 0.282 texture[ 78, 11] = 0.310 texture[ 79, 11] = 0.835 texture[ 80, 11] = 0.804 texture[ 81, 11] = 0.694 texture[ 82, 11] = 0.800 texture[ 83, 11] = 0.173 texture[ 84, 11] = 0.329 texture[ 85, 11] = 0.682 texture[ 86, 11] = 0.671 texture[ 87, 11] = 0.647 texture[ 88, 11] = 0.604 texture[ 89, 11] = 0.745 texture[ 90, 11] = 0.702 texture[ 91, 11] = 0.361 texture[ 92, 11] = 0.502 texture[ 93, 11] = 0.659 texture[ 94, 11] = 0.816 texture[ 95, 11] = 0.592 texture[ 96, 11] = 0.188 texture[ 97, 11] = 0.502 texture[ 98, 11] = 0.804 texture[ 99, 11] = 0.804 texture[ 100, 11] = 0.486 texture[ 1, 12] = 0.157 texture[ 2, 12] = 0.196 texture[ 3, 12] = 0.086 texture[ 4, 12] = 0.208 texture[ 5, 12] = 0.561 texture[ 6, 12] = 0.694 texture[ 7, 12] = 0.761 texture[ 8, 12] = 0.725 texture[ 9, 12] = 0.537 texture[ 10, 12] = 0.525 texture[ 11, 12] = 0.898 texture[ 12, 12] = 0.376 texture[ 13, 12] = 0.447 texture[ 14, 12] = 0.914 texture[ 15, 12] = 0.878 texture[ 16, 12] = 0.694 texture[ 17, 12] = 0.957 texture[ 18, 12] = 0.502 texture[ 19, 12] = 0.086 texture[ 20, 12] = 0.012 texture[ 21, 12] = 0.580 texture[ 22, 12] = 0.780 texture[ 23, 12] = 0.549 texture[ 24, 12] = 0.596 texture[ 25, 12] = 0.573 texture[ 26, 12] = 0.647 texture[ 27, 12] = 0.392 texture[ 28, 12] = 0.494 texture[ 29, 12] = 0.702 texture[ 30, 12] = 0.616 texture[ 31, 12] = 0.659 texture[ 32, 12] = 0.651 texture[ 33, 12] = 0.408 texture[ 34, 12] = 0.212 texture[ 35, 12] = 0.694 texture[ 36, 12] = 0.824 texture[ 37, 12] = 0.773 texture[ 38, 12] = 0.706 texture[ 39, 12] = 0.561 texture[ 40, 12] = 0.463 texture[ 41, 12] = 0.282 texture[ 42, 12] = 0.635 texture[ 43, 12] = 0.671 texture[ 44, 12] = 0.757 texture[ 45, 12] = 0.745 texture[ 46, 12] = 0.275 texture[ 47, 12] = 0.749 texture[ 48, 12] = 0.812 texture[ 49, 12] = 0.788 texture[ 50, 12] = 0.592 texture[ 51, 12] = 0.165 texture[ 52, 12] = 0.184 texture[ 53, 12] = 0.118 texture[ 54, 12] = 0.153 texture[ 55, 12] = 0.514 texture[ 56, 12] = 0.671 texture[ 57, 12] = 0.725 texture[ 58, 12] = 0.737 texture[ 59, 12] = 0.561 texture[ 60, 12] = 0.475 texture[ 61, 12] = 0.878 texture[ 62, 12] = 0.514 texture[ 63, 12] = 0.282 texture[ 64, 12] = 0.871 texture[ 65, 12] = 0.914 texture[ 66, 12] = 0.706 texture[ 67, 12] = 0.957 texture[ 68, 12] = 0.592 texture[ 69, 12] = 0.098 texture[ 70, 12] = 0.000 texture[ 71, 12] = 0.396 texture[ 72, 12] = 0.847 texture[ 73, 12] = 0.541 texture[ 74, 12] = 0.616 texture[ 75, 12] = 0.635 texture[ 76, 12] = 0.463 texture[ 77, 12] = 0.373 texture[ 78, 12] = 0.427 texture[ 79, 12] = 0.690 texture[ 80, 12] = 0.690 texture[ 81, 12] = 0.663 texture[ 82, 12] = 0.627 texture[ 83, 12] = 0.318 texture[ 84, 12] = 0.294 texture[ 85, 12] = 0.780 texture[ 86, 12] = 0.816 texture[ 87, 12] = 0.761 texture[ 88, 12] = 0.682 texture[ 89, 12] = 0.549 texture[ 90, 12] = 0.384 texture[ 91, 12] = 0.286 texture[ 92, 12] = 0.635 texture[ 93, 12] = 0.682 texture[ 94, 12] = 0.788 texture[ 95, 12] = 0.624 texture[ 96, 12] = 0.255 texture[ 97, 12] = 0.824 texture[ 98, 12] = 0.788 texture[ 99, 12] = 0.780 texture[ 100, 12] = 0.486 texture[ 1, 13] = 0.420 texture[ 2, 13] = 0.459 texture[ 3, 13] = 0.239 texture[ 4, 13] = 0.031 texture[ 5, 13] = 0.541 texture[ 6, 13] = 0.788 texture[ 7, 13] = 0.749 texture[ 8, 13] = 0.773 texture[ 9, 13] = 0.694 texture[ 10, 13] = 0.671 texture[ 11, 13] = 0.867 texture[ 12, 13] = 0.396 texture[ 13, 13] = 0.898 texture[ 14, 13] = 0.933 texture[ 15, 13] = 0.212 texture[ 16, 13] = 0.596 texture[ 17, 13] = 0.902 texture[ 18, 13] = 0.486 texture[ 19, 13] = 0.086 texture[ 20, 13] = 0.031 texture[ 21, 13] = 0.239 texture[ 22, 13] = 0.431 texture[ 23, 13] = 0.494 texture[ 24, 13] = 0.471 texture[ 25, 13] = 0.580 texture[ 26, 13] = 0.659 texture[ 27, 13] = 0.635 texture[ 28, 13] = 0.682 texture[ 29, 13] = 0.549 texture[ 30, 13] = 0.541 texture[ 31, 13] = 0.486 texture[ 32, 13] = 0.427 texture[ 33, 13] = 0.439 texture[ 34, 13] = 0.439 texture[ 35, 13] = 0.671 texture[ 36, 13] = 0.616 texture[ 37, 13] = 0.569 texture[ 38, 13] = 0.702 texture[ 39, 13] = 0.659 texture[ 40, 13] = 0.239 texture[ 41, 13] = 0.286 texture[ 42, 13] = 0.431 texture[ 43, 13] = 0.690 texture[ 44, 13] = 0.678 texture[ 45, 13] = 0.584 texture[ 46, 13] = 0.635 texture[ 47, 13] = 0.867 texture[ 48, 13] = 0.749 texture[ 49, 13] = 0.859 texture[ 50, 13] = 0.384 texture[ 51, 13] = 0.337 texture[ 52, 13] = 0.482 texture[ 53, 13] = 0.286 texture[ 54, 13] = 0.020 texture[ 55, 13] = 0.431 texture[ 56, 13] = 0.800 texture[ 57, 13] = 0.757 texture[ 58, 13] = 0.773 texture[ 59, 13] = 0.714 texture[ 60, 13] = 0.616 texture[ 61, 13] = 0.902 texture[ 62, 13] = 0.416 texture[ 63, 13] = 0.702 texture[ 64, 13] = 1.000 texture[ 65, 13] = 0.318 texture[ 66, 13] = 0.431 texture[ 67, 13] = 0.922 texture[ 68, 13] = 0.553 texture[ 69, 13] = 0.118 texture[ 70, 13] = 0.020 texture[ 71, 13] = 0.196 texture[ 72, 13] = 0.427 texture[ 73, 13] = 0.482 texture[ 74, 13] = 0.561 texture[ 75, 13] = 0.365 texture[ 76, 13] = 0.463 texture[ 77, 13] = 0.702 texture[ 78, 13] = 0.635 texture[ 79, 13] = 0.604 texture[ 80, 13] = 0.624 texture[ 81, 13] = 0.451 texture[ 82, 13] = 0.420 texture[ 83, 13] = 0.431 texture[ 84, 13] = 0.494 texture[ 85, 13] = 0.678 texture[ 86, 13] = 0.584 texture[ 87, 13] = 0.569 texture[ 88, 13] = 0.733 texture[ 89, 13] = 0.549 texture[ 90, 13] = 0.188 texture[ 91, 13] = 0.318 texture[ 92, 13] = 0.471 texture[ 93, 13] = 0.706 texture[ 94, 13] = 0.678 texture[ 95, 13] = 0.541 texture[ 96, 13] = 0.694 texture[ 97, 13] = 0.804 texture[ 98, 13] = 0.745 texture[ 99, 13] = 0.898 texture[ 100, 13] = 0.306 texture[ 1, 14] = 0.898 texture[ 2, 14] = 0.651 texture[ 3, 14] = 0.165 texture[ 4, 14] = 0.129 texture[ 5, 14] = 0.690 texture[ 6, 14] = 0.827 texture[ 7, 14] = 0.804 texture[ 8, 14] = 0.745 texture[ 9, 14] = 0.745 texture[ 10, 14] = 1.000 texture[ 11, 14] = 0.627 texture[ 12, 14] = 0.341 texture[ 13, 14] = 0.965 texture[ 14, 14] = 0.580 texture[ 15, 14] = 0.110 texture[ 16, 14] = 0.749 texture[ 17, 14] = 0.769 texture[ 18, 14] = 0.243 texture[ 19, 14] = 0.141 texture[ 20, 14] = 0.200 texture[ 21, 14] = 0.000 texture[ 22, 14] = 0.392 texture[ 23, 14] = 0.835 texture[ 24, 14] = 0.384 texture[ 25, 14] = 0.584 texture[ 26, 14] = 0.780 texture[ 27, 14] = 0.769 texture[ 28, 14] = 0.812 texture[ 29, 14] = 0.725 texture[ 30, 14] = 0.518 texture[ 31, 14] = 0.275 texture[ 32, 14] = 0.506 texture[ 33, 14] = 0.514 texture[ 34, 14] = 0.663 texture[ 35, 14] = 0.616 texture[ 36, 14] = 0.475 texture[ 37, 14] = 0.561 texture[ 38, 14] = 0.651 texture[ 39, 14] = 0.647 texture[ 40, 14] = 0.514 texture[ 41, 14] = 0.553 texture[ 42, 14] = 0.651 texture[ 43, 14] = 0.690 texture[ 44, 14] = 0.671 texture[ 45, 14] = 0.561 texture[ 46, 14] = 0.553 texture[ 47, 14] = 0.914 texture[ 48, 14] = 0.816 texture[ 49, 14] = 0.804 texture[ 50, 14] = 0.384 texture[ 51, 14] = 0.761 texture[ 52, 14] = 0.733 texture[ 53, 14] = 0.231 texture[ 54, 14] = 0.086 texture[ 55, 14] = 0.580 texture[ 56, 14] = 0.835 texture[ 57, 14] = 0.804 texture[ 58, 14] = 0.773 texture[ 59, 14] = 0.663 texture[ 60, 14] = 0.992 texture[ 61, 14] = 0.800 texture[ 62, 14] = 0.263 texture[ 63, 14] = 0.847 texture[ 64, 14] = 0.757 texture[ 65, 14] = 0.110 texture[ 66, 14] = 0.604 texture[ 67, 14] = 0.867 texture[ 68, 14] = 0.337 texture[ 69, 14] = 0.122 texture[ 70, 14] = 0.208 texture[ 71, 14] = 0.035 texture[ 72, 14] = 0.239 texture[ 73, 14] = 0.816 texture[ 74, 14] = 0.502 texture[ 75, 14] = 0.482 texture[ 76, 14] = 0.804 texture[ 77, 14] = 0.792 texture[ 78, 14] = 0.812 texture[ 79, 14] = 0.804 texture[ 80, 14] = 0.471 texture[ 81, 14] = 0.298 texture[ 82, 14] = 0.506 texture[ 83, 14] = 0.525 texture[ 84, 14] = 0.714 texture[ 85, 14] = 0.573 texture[ 86, 14] = 0.486 texture[ 87, 14] = 0.584 texture[ 88, 14] = 0.678 texture[ 89, 14] = 0.608 texture[ 90, 14] = 0.518 texture[ 91, 14] = 0.580 texture[ 92, 14] = 0.678 texture[ 93, 14] = 0.678 texture[ 94, 14] = 0.678 texture[ 95, 14] = 0.459 texture[ 96, 14] = 0.596 texture[ 97, 14] = 0.859 texture[ 98, 14] = 0.824 texture[ 99, 14] = 0.757 texture[ 100, 14] = 0.396 texture[ 1, 15] = 0.780 texture[ 2, 15] = 0.561 texture[ 3, 15] = 0.239 texture[ 4, 15] = 0.404 texture[ 5, 15] = 0.635 texture[ 6, 15] = 0.725 texture[ 7, 15] = 0.745 texture[ 8, 15] = 0.804 texture[ 9, 15] = 0.678 texture[ 10, 15] = 0.871 texture[ 11, 15] = 0.322 texture[ 12, 15] = 0.133 texture[ 13, 15] = 0.769 texture[ 14, 15] = 0.353 texture[ 15, 15] = 0.329 texture[ 16, 15] = 0.788 texture[ 17, 15] = 0.835 texture[ 18, 15] = 0.404 texture[ 19, 15] = 0.384 texture[ 20, 15] = 0.608 texture[ 21, 15] = 0.102 texture[ 22, 15] = 0.561 texture[ 23, 15] = 0.898 texture[ 24, 15] = 0.341 texture[ 25, 15] = 0.553 texture[ 26, 15] = 0.745 texture[ 27, 15] = 0.604 texture[ 28, 15] = 0.745 texture[ 29, 15] = 0.992 texture[ 30, 15] = 0.749 texture[ 31, 15] = 0.494 texture[ 32, 15] = 0.671 texture[ 33, 15] = 0.506 texture[ 34, 15] = 0.541 texture[ 35, 15] = 0.694 texture[ 36, 15] = 0.624 texture[ 37, 15] = 0.569 texture[ 38, 15] = 0.718 texture[ 39, 15] = 0.439 texture[ 40, 15] = 0.647 texture[ 41, 15] = 0.678 texture[ 42, 15] = 0.827 texture[ 43, 15] = 0.671 texture[ 44, 15] = 0.584 texture[ 45, 15] = 0.596 texture[ 46, 15] = 0.604 texture[ 47, 15] = 0.792 texture[ 48, 15] = 0.898 texture[ 49, 15] = 0.749 texture[ 50, 15] = 0.447 texture[ 51, 15] = 0.725 texture[ 52, 15] = 0.647 texture[ 53, 15] = 0.298 texture[ 54, 15] = 0.337 texture[ 55, 15] = 0.647 texture[ 56, 15] = 0.714 texture[ 57, 15] = 0.749 texture[ 58, 15] = 0.804 texture[ 59, 15] = 0.651 texture[ 60, 15] = 0.824 texture[ 61, 15] = 0.459 texture[ 62, 15] = 0.075 texture[ 63, 15] = 0.635 texture[ 64, 15] = 0.514 texture[ 65, 15] = 0.251 texture[ 66, 15] = 0.718 texture[ 67, 15] = 0.855 texture[ 68, 15] = 0.537 texture[ 69, 15] = 0.282 texture[ 70, 15] = 0.647 texture[ 71, 15] = 0.176 texture[ 72, 15] = 0.396 texture[ 73, 15] = 0.914 texture[ 74, 15] = 0.439 texture[ 75, 15] = 0.482 texture[ 76, 15] = 0.737 texture[ 77, 15] = 0.635 texture[ 78, 15] = 0.651 texture[ 79, 15] = 0.867 texture[ 80, 15] = 0.671 texture[ 81, 15] = 0.514 texture[ 82, 15] = 0.659 texture[ 83, 15] = 0.482 texture[ 84, 15] = 0.569 texture[ 85, 15] = 0.690 texture[ 86, 15] = 0.584 texture[ 87, 15] = 0.604 texture[ 88, 15] = 0.714 texture[ 89, 15] = 0.439 texture[ 90, 15] = 0.608 texture[ 91, 15] = 0.678 texture[ 92, 15] = 0.843 texture[ 93, 15] = 0.627 texture[ 94, 15] = 0.584 texture[ 95, 15] = 0.553 texture[ 96, 15] = 0.624 texture[ 97, 15] = 0.804 texture[ 98, 15] = 0.902 texture[ 99, 15] = 0.702 texture[ 100, 15] = 0.416 texture[ 1, 16] = 0.639 texture[ 2, 16] = 0.651 texture[ 3, 16] = 0.592 texture[ 4, 16] = 0.647 texture[ 5, 16] = 0.671 texture[ 6, 16] = 0.647 texture[ 7, 16] = 0.690 texture[ 8, 16] = 0.914 texture[ 9, 16] = 0.737 texture[ 10, 16] = 0.361 texture[ 11, 16] = 0.110 texture[ 12, 16] = 0.275 texture[ 13, 16] = 0.671 texture[ 14, 16] = 0.208 texture[ 15, 16] = 0.337 texture[ 16, 16] = 0.855 texture[ 17, 16] = 0.945 texture[ 18, 16] = 0.580 texture[ 19, 16] = 0.282 texture[ 20, 16] = 0.329 texture[ 21, 16] = 0.251 texture[ 22, 16] = 0.745 texture[ 23, 16] = 0.671 texture[ 24, 16] = 0.518 texture[ 25, 16] = 0.549 texture[ 26, 16] = 0.475 texture[ 27, 16] = 0.506 texture[ 28, 16] = 0.812 texture[ 29, 16] = 1.000 texture[ 30, 16] = 0.608 texture[ 31, 16] = 0.416 texture[ 32, 16] = 0.757 texture[ 33, 16] = 0.718 texture[ 34, 16] = 0.549 texture[ 35, 16] = 0.502 texture[ 36, 16] = 0.541 texture[ 37, 16] = 0.459 texture[ 38, 16] = 0.616 texture[ 39, 16] = 0.580 texture[ 40, 16] = 0.616 texture[ 41, 16] = 0.706 texture[ 42, 16] = 0.706 texture[ 43, 16] = 0.702 texture[ 44, 16] = 0.616 texture[ 45, 16] = 0.749 texture[ 46, 16] = 0.639 texture[ 47, 16] = 0.365 texture[ 48, 16] = 0.824 texture[ 49, 16] = 0.714 texture[ 50, 16] = 0.286 texture[ 51, 16] = 0.561 texture[ 52, 16] = 0.718 texture[ 53, 16] = 0.608 texture[ 54, 16] = 0.639 texture[ 55, 16] = 0.651 texture[ 56, 16] = 0.635 texture[ 57, 16] = 0.663 texture[ 58, 16] = 0.859 texture[ 59, 16] = 0.855 texture[ 60, 16] = 0.459 texture[ 61, 16] = 0.145 texture[ 62, 16] = 0.196 texture[ 63, 16] = 0.608 texture[ 64, 16] = 0.286 texture[ 65, 16] = 0.263 texture[ 66, 16] = 0.769 texture[ 67, 16] = 0.937 texture[ 68, 16] = 0.694 texture[ 69, 16] = 0.231 texture[ 70, 16] = 0.341 texture[ 71, 16] = 0.200 texture[ 72, 16] = 0.682 texture[ 73, 16] = 0.737 texture[ 74, 16] = 0.529 texture[ 75, 16] = 0.537 texture[ 76, 16] = 0.486 texture[ 77, 16] = 0.494 texture[ 78, 16] = 0.733 texture[ 79, 16] = 0.855 texture[ 80, 16] = 0.420 texture[ 81, 16] = 0.482 texture[ 82, 16] = 0.773 texture[ 83, 16] = 0.682 texture[ 84, 16] = 0.514 texture[ 85, 16] = 0.514 texture[ 86, 16] = 0.514 texture[ 87, 16] = 0.459 texture[ 88, 16] = 0.541 texture[ 89, 16] = 0.604 texture[ 90, 16] = 0.616 texture[ 91, 16] = 0.714 texture[ 92, 16] = 0.714 texture[ 93, 16] = 0.659 texture[ 94, 16] = 0.608 texture[ 95, 16] = 0.792 texture[ 96, 16] = 0.596 texture[ 97, 16] = 0.427 texture[ 98, 16] = 0.859 texture[ 99, 16] = 0.702 texture[ 100, 16] = 0.329 texture[ 1, 17] = 0.459 texture[ 2, 17] = 0.553 texture[ 3, 17] = 0.914 texture[ 4, 17] = 0.835 texture[ 5, 17] = 0.678 texture[ 6, 17] = 0.553 texture[ 7, 17] = 0.647 texture[ 8, 17] = 1.000 texture[ 9, 17] = 0.843 texture[ 10, 17] = 0.294 texture[ 11, 17] = 0.157 texture[ 12, 17] = 0.514 texture[ 13, 17] = 0.718 texture[ 14, 17] = 0.298 texture[ 15, 17] = 0.263 texture[ 16, 17] = 0.725 texture[ 17, 17] = 0.827 texture[ 18, 17] = 0.349 texture[ 19, 17] = 0.392 texture[ 20, 17] = 0.110 texture[ 21, 17] = 0.420 texture[ 22, 17] = 0.694 texture[ 23, 17] = 0.596 texture[ 24, 17] = 0.812 texture[ 25, 17] = 0.518 texture[ 26, 17] = 0.376 texture[ 27, 17] = 0.659 texture[ 28, 17] = 0.745 texture[ 29, 17] = 0.714 texture[ 30, 17] = 0.580 texture[ 31, 17] = 0.608 texture[ 32, 17] = 0.737 texture[ 33, 17] = 0.624 texture[ 34, 17] = 0.447 texture[ 35, 17] = 0.647 texture[ 36, 17] = 0.647 texture[ 37, 17] = 0.157 texture[ 38, 17] = 0.365 texture[ 39, 17] = 0.725 texture[ 40, 17] = 0.761 texture[ 41, 17] = 0.706 texture[ 42, 17] = 0.616 texture[ 43, 17] = 0.757 texture[ 44, 17] = 0.780 texture[ 45, 17] = 0.792 texture[ 46, 17] = 0.592 texture[ 47, 17] = 0.431 texture[ 48, 17] = 0.694 texture[ 49, 17] = 0.725 texture[ 50, 17] = 0.337 texture[ 51, 17] = 0.349 texture[ 52, 17] = 0.561 texture[ 53, 17] = 0.878 texture[ 54, 17] = 0.878 texture[ 55, 17] = 0.702 texture[ 56, 17] = 0.569 texture[ 57, 17] = 0.592 texture[ 58, 17] = 0.925 texture[ 59, 17] = 0.957 texture[ 60, 17] = 0.404 texture[ 61, 17] = 0.129 texture[ 62, 17] = 0.427 texture[ 63, 17] = 0.737 texture[ 64, 17] = 0.318 texture[ 65, 17] = 0.227 texture[ 66, 17] = 0.569 texture[ 67, 17] = 0.882 texture[ 68, 17] = 0.404 texture[ 69, 17] = 0.353 texture[ 70, 17] = 0.157 texture[ 71, 17] = 0.255 texture[ 72, 17] = 0.706 texture[ 73, 17] = 0.604 texture[ 74, 17] = 0.827 texture[ 75, 17] = 0.553 texture[ 76, 17] = 0.376 texture[ 77, 17] = 0.616 texture[ 78, 17] = 0.835 texture[ 79, 17] = 0.463 texture[ 80, 17] = 0.263 texture[ 81, 17] = 0.663 texture[ 82, 17] = 0.733 texture[ 83, 17] = 0.573 texture[ 84, 17] = 0.427 texture[ 85, 17] = 0.690 texture[ 86, 17] = 0.549 texture[ 87, 17] = 0.157 texture[ 88, 17] = 0.416 texture[ 89, 17] = 0.757 texture[ 90, 17] = 0.780 texture[ 91, 17] = 0.690 texture[ 92, 17] = 0.624 texture[ 93, 17] = 0.800 texture[ 94, 17] = 0.745 texture[ 95, 17] = 0.804 texture[ 96, 17] = 0.541 texture[ 97, 17] = 0.482 texture[ 98, 17] = 0.733 texture[ 99, 17] = 0.690 texture[ 100, 17] = 0.275 texture[ 1, 18] = 0.451 texture[ 2, 18] = 0.541 texture[ 3, 18] = 0.902 texture[ 4, 18] = 0.816 texture[ 5, 18] = 0.682 texture[ 6, 18] = 0.651 texture[ 7, 18] = 0.663 texture[ 8, 18] = 0.902 texture[ 9, 18] = 0.878 texture[ 10, 18] = 0.365 texture[ 11, 18] = 0.459 texture[ 12, 18] = 0.690 texture[ 13, 18] = 0.792 texture[ 14, 18] = 0.459 texture[ 15, 18] = 0.267 texture[ 16, 18] = 0.835 texture[ 17, 18] = 0.624 texture[ 18, 18] = 0.408 texture[ 19, 18] = 0.486 texture[ 20, 18] = 0.035 texture[ 21, 18] = 0.427 texture[ 22, 18] = 0.514 texture[ 23, 18] = 0.627 texture[ 24, 18] = 0.910 texture[ 25, 18] = 0.835 texture[ 26, 18] = 0.824 texture[ 27, 18] = 0.804 texture[ 28, 18] = 0.745 texture[ 29, 18] = 0.596 texture[ 30, 18] = 0.725 texture[ 31, 18] = 0.745 texture[ 32, 18] = 0.678 texture[ 33, 18] = 0.596 texture[ 34, 18] = 0.447 texture[ 35, 18] = 0.427 texture[ 36, 18] = 0.608 texture[ 37, 18] = 0.243 texture[ 38, 18] = 0.129 texture[ 39, 18] = 0.529 texture[ 40, 18] = 0.584 texture[ 41, 18] = 0.553 texture[ 42, 18] = 0.651 texture[ 43, 18] = 0.843 texture[ 44, 18] = 0.898 texture[ 45, 18] = 0.745 texture[ 46, 18] = 0.420 texture[ 47, 18] = 0.275 texture[ 48, 18] = 0.384 texture[ 49, 18] = 0.780 texture[ 50, 18] = 0.306 texture[ 51, 18] = 0.349 texture[ 52, 18] = 0.541 texture[ 53, 18] = 0.859 texture[ 54, 18] = 0.867 texture[ 55, 18] = 0.694 texture[ 56, 18] = 0.659 texture[ 57, 18] = 0.678 texture[ 58, 18] = 0.871 texture[ 59, 18] = 0.937 texture[ 60, 18] = 0.494 texture[ 61, 18] = 0.365 texture[ 62, 18] = 0.714 texture[ 63, 18] = 0.773 texture[ 64, 18] = 0.549 texture[ 65, 18] = 0.251 texture[ 66, 18] = 0.718 texture[ 67, 18] = 0.702 texture[ 68, 18] = 0.349 texture[ 69, 18] = 0.561 texture[ 70, 18] = 0.078 texture[ 71, 18] = 0.282 texture[ 72, 18] = 0.525 texture[ 73, 18] = 0.592 texture[ 74, 18] = 0.898 texture[ 75, 18] = 0.827 texture[ 76, 18] = 0.824 texture[ 77, 18] = 0.804 texture[ 78, 18] = 0.749 texture[ 79, 18] = 0.310 texture[ 80, 18] = 0.627 texture[ 81, 18] = 0.733 texture[ 82, 18] = 0.678 texture[ 83, 18] = 0.592 texture[ 84, 18] = 0.404 texture[ 85, 18] = 0.447 texture[ 86, 18] = 0.608 texture[ 87, 18] = 0.196 texture[ 88, 18] = 0.157 texture[ 89, 18] = 0.584 texture[ 90, 18] = 0.553 texture[ 91, 18] = 0.553 texture[ 92, 18] = 0.678 texture[ 93, 18] = 0.878 texture[ 94, 18] = 0.890 texture[ 95, 18] = 0.663 texture[ 96, 18] = 0.353 texture[ 97, 18] = 0.255 texture[ 98, 18] = 0.486 texture[ 99, 18] = 0.816 texture[ 100, 18] = 0.208 texture[ 1, 19] = 0.604 texture[ 2, 19] = 0.690 texture[ 3, 19] = 0.737 texture[ 4, 19] = 0.757 texture[ 5, 19] = 0.749 texture[ 6, 19] = 0.855 texture[ 7, 19] = 0.937 texture[ 8, 19] = 0.812 texture[ 9, 19] = 0.365 texture[ 10, 19] = 0.133 texture[ 11, 19] = 0.420 texture[ 12, 19] = 0.812 texture[ 13, 19] = 0.780 texture[ 14, 19] = 0.459 texture[ 15, 19] = 0.537 texture[ 16, 19] = 0.812 texture[ 17, 19] = 0.549 texture[ 18, 19] = 0.537 texture[ 19, 19] = 0.243 texture[ 20, 19] = 0.267 texture[ 21, 19] = 0.671 texture[ 22, 19] = 0.518 texture[ 23, 19] = 0.471 texture[ 24, 19] = 0.933 texture[ 25, 19] = 1.000 texture[ 26, 19] = 0.965 texture[ 27, 19] = 0.761 texture[ 28, 19] = 0.482 texture[ 29, 19] = 0.627 texture[ 30, 19] = 0.690 texture[ 31, 19] = 0.647 texture[ 32, 19] = 0.718 texture[ 33, 19] = 0.835 texture[ 34, 19] = 0.616 texture[ 35, 19] = 0.118 texture[ 36, 19] = 0.592 texture[ 37, 19] = 0.871 texture[ 38, 19] = 0.286 texture[ 39, 19] = 0.420 texture[ 40, 19] = 0.537 texture[ 41, 19] = 0.694 texture[ 42, 19] = 0.702 texture[ 43, 19] = 0.745 texture[ 44, 19] = 0.859 texture[ 45, 19] = 0.471 texture[ 46, 19] = 0.341 texture[ 47, 19] = 0.129 texture[ 48, 19] = 0.427 texture[ 49, 19] = 0.749 texture[ 50, 19] = 0.231 texture[ 51, 19] = 0.518 texture[ 52, 19] = 0.714 texture[ 53, 19] = 0.718 texture[ 54, 19] = 0.769 texture[ 55, 19] = 0.761 texture[ 56, 19] = 0.843 texture[ 57, 19] = 0.933 texture[ 58, 19] = 0.871 texture[ 59, 19] = 0.416 texture[ 60, 19] = 0.176 texture[ 61, 19] = 0.310 texture[ 62, 19] = 0.773 texture[ 63, 19] = 0.827 texture[ 64, 19] = 0.494 texture[ 65, 19] = 0.506 texture[ 66, 19] = 0.804 texture[ 67, 19] = 0.604 texture[ 68, 19] = 0.525 texture[ 69, 19] = 0.337 texture[ 70, 19] = 0.200 texture[ 71, 19] = 0.616 texture[ 72, 19] = 0.573 texture[ 73, 19] = 0.451 texture[ 74, 19] = 0.847 texture[ 75, 19] = 1.000 texture[ 76, 19] = 0.992 texture[ 77, 19] = 0.804 texture[ 78, 19] = 0.416 texture[ 79, 19] = 0.549 texture[ 80, 19] = 0.733 texture[ 81, 19] = 0.690 texture[ 82, 19] = 0.745 texture[ 83, 19] = 0.855 texture[ 84, 19] = 0.506 texture[ 85, 19] = 0.122 texture[ 86, 19] = 0.773 texture[ 87, 19] = 0.773 texture[ 88, 19] = 0.243 texture[ 89, 19] = 0.502 texture[ 90, 19] = 0.525 texture[ 91, 19] = 0.718 texture[ 92, 19] = 0.702 texture[ 93, 19] = 0.769 texture[ 94, 19] = 0.835 texture[ 95, 19] = 0.404 texture[ 96, 19] = 0.361 texture[ 97, 19] = 0.098 texture[ 98, 19] = 0.529 texture[ 99, 19] = 0.824 texture[ 100, 19] = 0.243 texture[ 1, 20] = 0.639 texture[ 2, 20] = 0.663 texture[ 3, 20] = 0.549 texture[ 4, 20] = 0.549 texture[ 5, 20] = 0.663 texture[ 6, 20] = 0.922 texture[ 7, 20] = 0.976 texture[ 8, 20] = 0.584 texture[ 9, 20] = 0.243 texture[ 10, 20] = 0.067 texture[ 11, 20] = 0.529 texture[ 12, 20] = 0.761 texture[ 13, 20] = 0.329 texture[ 14, 20] = 0.651 texture[ 15, 20] = 0.745 texture[ 16, 20] = 0.486 texture[ 17, 20] = 0.471 texture[ 18, 20] = 0.451 texture[ 19, 20] = 0.075 texture[ 20, 20] = 0.337 texture[ 21, 20] = 0.486 texture[ 22, 20] = 0.580 texture[ 23, 20] = 0.494 texture[ 24, 20] = 0.769 texture[ 25, 20] = 0.788 texture[ 26, 20] = 0.933 texture[ 27, 20] = 0.682 texture[ 28, 20] = 0.231 texture[ 29, 20] = 0.718 texture[ 30, 20] = 0.749 texture[ 31, 20] = 0.733 texture[ 32, 20] = 0.859 texture[ 33, 20] = 0.871 texture[ 34, 20] = 0.529 texture[ 35, 20] = 0.035 texture[ 36, 20] = 0.518 texture[ 37, 20] = 0.914 texture[ 38, 20] = 0.682 texture[ 39, 20] = 0.871 texture[ 40, 20] = 0.922 texture[ 41, 20] = 0.788 texture[ 42, 20] = 0.639 texture[ 43, 20] = 0.690 texture[ 44, 20] = 0.671 texture[ 45, 20] = 0.227 texture[ 46, 20] = 0.263 texture[ 47, 20] = 0.200 texture[ 48, 20] = 0.627 texture[ 49, 20] = 0.718 texture[ 50, 20] = 0.267 texture[ 51, 20] = 0.592 texture[ 52, 20] = 0.694 texture[ 53, 20] = 0.553 texture[ 54, 20] = 0.525 texture[ 55, 20] = 0.671 texture[ 56, 20] = 0.902 texture[ 57, 20] = 0.957 texture[ 58, 20] = 0.659 texture[ 59, 20] = 0.251 texture[ 60, 20] = 0.102 texture[ 61, 20] = 0.361 texture[ 62, 20] = 0.827 texture[ 63, 20] = 0.376 texture[ 64, 20] = 0.604 texture[ 65, 20] = 0.749 texture[ 66, 20] = 0.569 texture[ 67, 20] = 0.459 texture[ 68, 20] = 0.506 texture[ 69, 20] = 0.090 texture[ 70, 20] = 0.294 texture[ 71, 20] = 0.486 texture[ 72, 20] = 0.580 texture[ 73, 20] = 0.518 texture[ 74, 20] = 0.733 texture[ 75, 20] = 0.780 texture[ 76, 20] = 0.914 texture[ 77, 20] = 0.800 texture[ 78, 20] = 0.212 texture[ 79, 20] = 0.682 texture[ 80, 20] = 0.745 texture[ 81, 20] = 0.788 texture[ 82, 20] = 0.855 texture[ 83, 20] = 0.867 texture[ 84, 20] = 0.373 texture[ 85, 20] = 0.063 texture[ 86, 20] = 0.694 texture[ 87, 20] = 0.871 texture[ 88, 20] = 0.671 texture[ 89, 20] = 0.902 texture[ 90, 20] = 0.922 texture[ 91, 20] = 0.773 texture[ 92, 20] = 0.635 texture[ 93, 20] = 0.702 texture[ 94, 20] = 0.561 texture[ 95, 20] = 0.208 texture[ 96, 20] = 0.267 texture[ 97, 20] = 0.227 texture[ 98, 20] = 0.682 texture[ 99, 20] = 0.694 texture[ 100, 20] = 0.294 texture[ 1, 21] = 0.573 texture[ 2, 21] = 0.525 texture[ 3, 21] = 0.639 texture[ 4, 21] = 0.553 texture[ 5, 21] = 0.541 texture[ 6, 21] = 0.769 texture[ 7, 21] = 0.953 texture[ 8, 21] = 0.514 texture[ 9, 21] = 0.188 texture[ 10, 21] = 0.110 texture[ 11, 21] = 0.573 texture[ 12, 21] = 0.749 texture[ 13, 21] = 0.451 texture[ 14, 21] = 0.416 texture[ 15, 21] = 0.682 texture[ 16, 21] = 0.624 texture[ 17, 21] = 0.365 texture[ 18, 21] = 0.227 texture[ 19, 21] = 0.031 texture[ 20, 21] = 0.075 texture[ 21, 21] = 0.569 texture[ 22, 21] = 0.871 texture[ 23, 21] = 0.859 texture[ 24, 21] = 0.639 texture[ 25, 21] = 0.537 texture[ 26, 21] = 0.757 texture[ 27, 21] = 0.529 texture[ 28, 21] = 0.408 texture[ 29, 21] = 0.827 texture[ 30, 21] = 0.827 texture[ 31, 21] = 0.898 texture[ 32, 21] = 0.647 texture[ 33, 21] = 0.416 texture[ 34, 21] = 0.427 texture[ 35, 21] = 0.384 texture[ 36, 21] = 0.824 texture[ 37, 21] = 0.914 texture[ 38, 21] = 0.957 texture[ 39, 21] = 0.910 texture[ 40, 21] = 0.843 texture[ 41, 21] = 0.702 texture[ 42, 21] = 0.635 texture[ 43, 21] = 0.706 texture[ 44, 21] = 0.549 texture[ 45, 21] = 0.502 texture[ 46, 21] = 0.275 texture[ 47, 21] = 0.408 texture[ 48, 21] = 0.725 texture[ 49, 21] = 0.592 texture[ 50, 21] = 0.514 texture[ 51, 21] = 0.596 texture[ 52, 21] = 0.502 texture[ 53, 21] = 0.639 texture[ 54, 21] = 0.580 texture[ 55, 21] = 0.529 texture[ 56, 21] = 0.702 texture[ 57, 21] = 0.922 texture[ 58, 21] = 0.596 texture[ 59, 21] = 0.220 texture[ 60, 21] = 0.098 texture[ 61, 21] = 0.451 texture[ 62, 21] = 0.804 texture[ 63, 21] = 0.514 texture[ 64, 21] = 0.384 texture[ 65, 21] = 0.647 texture[ 66, 21] = 0.659 texture[ 67, 21] = 0.396 texture[ 68, 21] = 0.239 texture[ 69, 21] = 0.067 texture[ 70, 21] = 0.020 texture[ 71, 21] = 0.427 texture[ 72, 21] = 0.827 texture[ 73, 21] = 0.882 texture[ 74, 21] = 0.678 texture[ 75, 21] = 0.514 texture[ 76, 21] = 0.725 texture[ 77, 21] = 0.659 texture[ 78, 21] = 0.353 texture[ 79, 21] = 0.800 texture[ 80, 21] = 0.835 texture[ 81, 21] = 0.867 texture[ 82, 21] = 0.604 texture[ 83, 21] = 0.404 texture[ 84, 21] = 0.365 texture[ 85, 21] = 0.431 texture[ 86, 21] = 0.871 texture[ 87, 21] = 0.902 texture[ 88, 21] = 0.957 texture[ 89, 21] = 0.914 texture[ 90, 21] = 0.812 texture[ 91, 21] = 0.690 texture[ 92, 21] = 0.608 texture[ 93, 21] = 0.690 texture[ 94, 21] = 0.431 texture[ 95, 21] = 0.475 texture[ 96, 21] = 0.188 texture[ 97, 21] = 0.525 texture[ 98, 21] = 0.694 texture[ 99, 21] = 0.561 texture[ 100, 21] = 0.529 texture[ 1, 22] = 0.651 texture[ 2, 22] = 0.596 texture[ 3, 22] = 0.639 texture[ 4, 22] = 0.651 texture[ 5, 22] = 0.682 texture[ 6, 22] = 0.882 texture[ 7, 22] = 0.902 texture[ 8, 22] = 0.294 texture[ 9, 22] = 0.055 texture[ 10, 22] = 0.196 texture[ 11, 22] = 0.608 texture[ 12, 22] = 0.827 texture[ 13, 22] = 0.725 texture[ 14, 22] = 0.596 texture[ 15, 22] = 0.780 texture[ 16, 22] = 0.816 texture[ 17, 22] = 0.518 texture[ 18, 22] = 0.196 texture[ 19, 22] = 0.008 texture[ 20, 22] = 0.227 texture[ 21, 22] = 0.925 texture[ 22, 22] = 1.000 texture[ 23, 22] = 0.737 texture[ 24, 22] = 0.604 texture[ 25, 22] = 0.761 texture[ 26, 22] = 0.718 texture[ 27, 22] = 0.404 texture[ 28, 22] = 0.502 texture[ 29, 22] = 0.671 texture[ 30, 22] = 0.596 texture[ 31, 22] = 0.596 texture[ 32, 22] = 0.384 texture[ 33, 22] = 0.361 texture[ 34, 22] = 0.212 texture[ 35, 22] = 0.486 texture[ 36, 22] = 0.855 texture[ 37, 22] = 0.937 texture[ 38, 22] = 0.953 texture[ 39, 22] = 0.898 texture[ 40, 22] = 0.718 texture[ 41, 22] = 0.706 texture[ 42, 22] = 0.690 texture[ 43, 22] = 0.463 texture[ 44, 22] = 0.725 texture[ 45, 22] = 0.827 texture[ 46, 22] = 0.447 texture[ 47, 22] = 0.541 texture[ 48, 22] = 0.749 texture[ 49, 22] = 0.616 texture[ 50, 22] = 0.404 texture[ 51, 22] = 0.647 texture[ 52, 22] = 0.608 texture[ 53, 22] = 0.635 texture[ 54, 22] = 0.671 texture[ 55, 22] = 0.671 texture[ 56, 22] = 0.855 texture[ 57, 22] = 0.925 texture[ 58, 22] = 0.408 texture[ 59, 22] = 0.075 texture[ 60, 22] = 0.145 texture[ 61, 22] = 0.553 texture[ 62, 22] = 0.827 texture[ 63, 22] = 0.773 texture[ 64, 22] = 0.624 texture[ 65, 22] = 0.769 texture[ 66, 22] = 0.812 texture[ 67, 22] = 0.580 texture[ 68, 22] = 0.227 texture[ 69, 22] = 0.043 texture[ 70, 22] = 0.102 texture[ 71, 22] = 0.780 texture[ 72, 22] = 1.000 texture[ 73, 22] = 0.792 texture[ 74, 22] = 0.592 texture[ 75, 22] = 0.761 texture[ 76, 22] = 0.745 texture[ 77, 22] = 0.486 texture[ 78, 22] = 0.447 texture[ 79, 22] = 0.475 texture[ 80, 22] = 0.518 texture[ 81, 22] = 0.502 texture[ 82, 22] = 0.392 texture[ 83, 22] = 0.286 texture[ 84, 22] = 0.239 texture[ 85, 22] = 0.549 texture[ 86, 22] = 0.890 texture[ 87, 22] = 0.937 texture[ 88, 22] = 0.957 texture[ 89, 22] = 0.878 texture[ 90, 22] = 0.694 texture[ 91, 22] = 0.725 texture[ 92, 22] = 0.647 texture[ 93, 22] = 0.451 texture[ 94, 22] = 0.788 texture[ 95, 22] = 0.745 texture[ 96, 22] = 0.376 texture[ 97, 22] = 0.580 texture[ 98, 22] = 0.725 texture[ 99, 22] = 0.584 texture[ 100, 22] = 0.427 texture[ 1, 23] = 0.690 texture[ 2, 23] = 0.584 texture[ 3, 23] = 0.624 texture[ 4, 23] = 0.769 texture[ 5, 23] = 0.988 texture[ 6, 23] = 0.980 texture[ 7, 23] = 0.780 texture[ 8, 23] = 0.133 texture[ 9, 23] = 0.035 texture[ 10, 23] = 0.337 texture[ 11, 23] = 0.737 texture[ 12, 23] = 0.678 texture[ 13, 23] = 0.816 texture[ 14, 23] = 0.980 texture[ 15, 23] = 0.969 texture[ 16, 23] = 0.824 texture[ 17, 23] = 0.439 texture[ 18, 23] = 0.239 texture[ 19, 23] = 0.055 texture[ 20, 23] = 0.427 texture[ 21, 23] = 0.937 texture[ 22, 23] = 1.000 texture[ 23, 23] = 0.816 texture[ 24, 23] = 0.749 texture[ 25, 23] = 0.651 texture[ 26, 23] = 0.506 texture[ 27, 23] = 0.596 texture[ 28, 23] = 0.769 texture[ 29, 23] = 0.659 texture[ 30, 23] = 0.459 texture[ 31, 23] = 0.227 texture[ 32, 23] = 0.231 texture[ 33, 23] = 0.420 texture[ 34, 23] = 0.573 texture[ 35, 23] = 0.486 texture[ 36, 23] = 0.482 texture[ 37, 23] = 0.725 texture[ 38, 23] = 0.969 texture[ 39, 23] = 0.804 texture[ 40, 23] = 0.624 texture[ 41, 23] = 0.506 texture[ 42, 23] = 0.624 texture[ 43, 23] = 0.573 texture[ 44, 23] = 0.882 texture[ 45, 23] = 0.702 texture[ 46, 23] = 0.494 texture[ 47, 23] = 0.671 texture[ 48, 23] = 0.682 texture[ 49, 23] = 0.659 texture[ 50, 23] = 0.518 texture[ 51, 23] = 0.714 texture[ 52, 23] = 0.635 texture[ 53, 23] = 0.596 texture[ 54, 23] = 0.725 texture[ 55, 23] = 0.957 texture[ 56, 23] = 1.000 texture[ 57, 23] = 0.835 texture[ 58, 23] = 0.212 texture[ 59, 23] = 0.008 texture[ 60, 23] = 0.227 texture[ 61, 23] = 0.706 texture[ 62, 23] = 0.690 texture[ 63, 23] = 0.788 texture[ 64, 23] = 0.980 texture[ 65, 23] = 0.969 texture[ 66, 23] = 0.855 texture[ 67, 23] = 0.514 texture[ 68, 23] = 0.275 texture[ 69, 23] = 0.078 texture[ 70, 23] = 0.286 texture[ 71, 23] = 0.878 texture[ 72, 23] = 1.000 texture[ 73, 23] = 0.871 texture[ 74, 23] = 0.725 texture[ 75, 23] = 0.694 texture[ 76, 23] = 0.514 texture[ 77, 23] = 0.592 texture[ 78, 23] = 0.714 texture[ 79, 23] = 0.431 texture[ 80, 23] = 0.408 texture[ 81, 23] = 0.184 texture[ 82, 23] = 0.263 texture[ 83, 23] = 0.447 texture[ 84, 23] = 0.573 texture[ 85, 23] = 0.463 texture[ 86, 23] = 0.494 texture[ 87, 23] = 0.812 texture[ 88, 23] = 0.957 texture[ 89, 23] = 0.773 texture[ 90, 23] = 0.616 texture[ 91, 23] = 0.494 texture[ 92, 23] = 0.573 texture[ 93, 23] = 0.616 texture[ 94, 23] = 0.914 texture[ 95, 23] = 0.584 texture[ 96, 23] = 0.451 texture[ 97, 23] = 0.671 texture[ 98, 23] = 0.714 texture[ 99, 23] = 0.635 texture[ 100, 23] = 0.537 texture[ 1, 24] = 0.910 texture[ 2, 24] = 0.737 texture[ 3, 24] = 0.859 texture[ 4, 24] = 0.847 texture[ 5, 24] = 0.976 texture[ 6, 24] = 0.824 texture[ 7, 24] = 0.376 texture[ 8, 24] = 0.102 texture[ 9, 24] = 0.102 texture[ 10, 24] = 0.341 texture[ 11, 24] = 0.867 texture[ 12, 24] = 0.749 texture[ 13, 24] = 0.898 texture[ 14, 24] = 1.000 texture[ 15, 24] = 0.882 texture[ 16, 24] = 0.635 texture[ 17, 24] = 0.310 texture[ 18, 24] = 0.196 texture[ 19, 24] = 0.102 texture[ 20, 24] = 0.471 texture[ 21, 24] = 0.933 texture[ 22, 24] = 0.957 texture[ 23, 24] = 0.910 texture[ 24, 24] = 0.659 texture[ 25, 24] = 0.580 texture[ 26, 24] = 0.537 texture[ 27, 24] = 0.647 texture[ 28, 24] = 0.749 texture[ 29, 24] = 0.749 texture[ 30, 24] = 0.780 texture[ 31, 24] = 0.294 texture[ 32, 24] = 0.110 texture[ 33, 24] = 0.349 texture[ 34, 24] = 0.788 texture[ 35, 24] = 0.843 texture[ 36, 24] = 0.659 texture[ 37, 24] = 0.659 texture[ 38, 24] = 0.922 texture[ 39, 24] = 0.812 texture[ 40, 24] = 0.745 texture[ 41, 24] = 0.569 texture[ 42, 24] = 0.396 texture[ 43, 24] = 0.937 texture[ 44, 24] = 0.859 texture[ 45, 24] = 0.561 texture[ 46, 24] = 0.475 texture[ 47, 24] = 0.294 texture[ 48, 24] = 0.431 texture[ 49, 24] = 0.816 texture[ 50, 24] = 0.902 texture[ 51, 24] = 0.922 texture[ 52, 24] = 0.804 texture[ 53, 24] = 0.867 texture[ 54, 24] = 0.843 texture[ 55, 24] = 0.969 texture[ 56, 24] = 0.867 texture[ 57, 24] = 0.471 texture[ 58, 24] = 0.110 texture[ 59, 24] = 0.118 texture[ 60, 24] = 0.227 texture[ 61, 24] = 0.812 texture[ 62, 24] = 0.800 texture[ 63, 24] = 0.871 texture[ 64, 24] = 1.000 texture[ 65, 24] = 0.925 texture[ 66, 24] = 0.682 texture[ 67, 24] = 0.341 texture[ 68, 24] = 0.227 texture[ 69, 24] = 0.110 texture[ 70, 24] = 0.353 texture[ 71, 24] = 0.902 texture[ 72, 24] = 0.953 texture[ 73, 24] = 0.937 texture[ 74, 24] = 0.706 texture[ 75, 24] = 0.624 texture[ 76, 24] = 0.541 texture[ 77, 24] = 0.639 texture[ 78, 24] = 0.718 texture[ 79, 24] = 0.827 texture[ 80, 24] = 0.788 texture[ 81, 24] = 0.184 texture[ 82, 24] = 0.133 texture[ 83, 24] = 0.420 texture[ 84, 24] = 0.855 texture[ 85, 24] = 0.816 texture[ 86, 24] = 0.624 texture[ 87, 24] = 0.702 texture[ 88, 24] = 0.925 texture[ 89, 24] = 0.773 texture[ 90, 24] = 0.769 texture[ 91, 24] = 0.502 texture[ 92, 24] = 0.471 texture[ 93, 24] = 1.000 texture[ 94, 24] = 0.757 texture[ 95, 24] = 0.573 texture[ 96, 24] = 0.482 texture[ 97, 24] = 0.286 texture[ 98, 24] = 0.486 texture[ 99, 24] = 0.878 texture[ 100, 24] = 0.898 texture[ 1, 25] = 0.867 texture[ 2, 25] = 0.871 texture[ 3, 25] = 0.827 texture[ 4, 25] = 0.847 texture[ 5, 25] = 0.965 texture[ 6, 25] = 0.714 texture[ 7, 25] = 0.416 texture[ 8, 25] = 0.416 texture[ 9, 25] = 0.153 texture[ 10, 25] = 0.208 texture[ 11, 25] = 0.725 texture[ 12, 25] = 0.773 texture[ 13, 25] = 0.878 texture[ 14, 25] = 0.969 texture[ 15, 25] = 0.580 texture[ 16, 25] = 0.255 texture[ 17, 25] = 0.220 texture[ 18, 25] = 0.122 texture[ 19, 25] = 0.047 texture[ 20, 25] = 0.188 texture[ 21, 25] = 0.635 texture[ 22, 25] = 0.859 texture[ 23, 25] = 0.945 texture[ 24, 25] = 0.769 texture[ 25, 25] = 0.569 texture[ 26, 25] = 0.647 texture[ 27, 25] = 0.659 texture[ 28, 25] = 0.671 texture[ 29, 25] = 0.847 texture[ 30, 25] = 0.769 texture[ 31, 25] = 0.263 texture[ 32, 25] = 0.118 texture[ 33, 25] = 0.663 texture[ 34, 25] = 0.910 texture[ 35, 25] = 1.000 texture[ 36, 25] = 0.827 texture[ 37, 25] = 0.494 texture[ 38, 25] = 0.816 texture[ 39, 25] = 0.878 texture[ 40, 25] = 0.773 texture[ 41, 25] = 0.494 texture[ 42, 25] = 0.200 texture[ 43, 25] = 0.761 texture[ 44, 25] = 0.584 texture[ 45, 25] = 0.463 texture[ 46, 25] = 0.678 texture[ 47, 25] = 0.176 texture[ 48, 25] = 0.267 texture[ 49, 25] = 0.957 texture[ 50, 25] = 0.922 texture[ 51, 25] = 0.835 texture[ 52, 25] = 0.867 texture[ 53, 25] = 0.847 texture[ 54, 25] = 0.804 texture[ 55, 25] = 0.953 texture[ 56, 25] = 0.792 texture[ 57, 25] = 0.427 texture[ 58, 25] = 0.431 texture[ 59, 25] = 0.196 texture[ 60, 25] = 0.133 texture[ 61, 25] = 0.647 texture[ 62, 25] = 0.800 texture[ 63, 25] = 0.847 texture[ 64, 25] = 1.000 texture[ 65, 25] = 0.659 texture[ 66, 25] = 0.263 texture[ 67, 25] = 0.239 texture[ 68, 25] = 0.145 texture[ 69, 25] = 0.047 texture[ 70, 25] = 0.133 texture[ 71, 25] = 0.569 texture[ 72, 25] = 0.835 texture[ 73, 25] = 0.933 texture[ 74, 25] = 0.835 texture[ 75, 25] = 0.573 texture[ 76, 25] = 0.635 texture[ 77, 25] = 0.678 texture[ 78, 25] = 0.690 texture[ 79, 25] = 0.804 texture[ 80, 25] = 0.714 texture[ 81, 25] = 0.188 texture[ 82, 25] = 0.196 texture[ 83, 25] = 0.745 texture[ 84, 25] = 0.953 texture[ 85, 25] = 1.000 texture[ 86, 25] = 0.761 texture[ 87, 25] = 0.486 texture[ 88, 25] = 0.871 texture[ 89, 25] = 0.792 texture[ 90, 25] = 0.769 texture[ 91, 25] = 0.396 texture[ 92, 25] = 0.310 texture[ 93, 25] = 0.757 texture[ 94, 25] = 0.518 texture[ 95, 25] = 0.561 texture[ 96, 25] = 0.635 texture[ 97, 25] = 0.098 texture[ 98, 25] = 0.416 texture[ 99, 25] = 1.000 texture[ 100, 25] = 0.898 texture[ 1, 26] = 0.682 texture[ 2, 26] = 0.541 texture[ 3, 26] = 0.573 texture[ 4, 26] = 0.761 texture[ 5, 26] = 0.988 texture[ 6, 26] = 0.361 texture[ 7, 26] = 0.471 texture[ 8, 26] = 0.780 texture[ 9, 26] = 0.275 texture[ 10, 26] = 0.502 texture[ 11, 26] = 0.627 texture[ 12, 26] = 0.212 texture[ 13, 26] = 0.835 texture[ 14, 26] = 0.914 texture[ 15, 26] = 0.416 texture[ 16, 26] = 0.220 texture[ 17, 26] = 0.239 texture[ 18, 26] = 0.102 texture[ 19, 26] = 0.024 texture[ 20, 26] = 0.133 texture[ 21, 26] = 0.439 texture[ 22, 26] = 0.616 texture[ 23, 26] = 0.651 texture[ 24, 26] = 0.616 texture[ 25, 26] = 0.678 texture[ 26, 26] = 0.714 texture[ 27, 26] = 0.561 texture[ 28, 26] = 0.769 texture[ 29, 26] = 0.678 texture[ 30, 26] = 0.239 texture[ 31, 26] = 0.439 texture[ 32, 26] = 0.329 texture[ 33, 26] = 0.671 texture[ 34, 26] = 0.812 texture[ 35, 26] = 0.800 texture[ 36, 26] = 0.871 texture[ 37, 26] = 0.596 texture[ 38, 26] = 0.694 texture[ 39, 26] = 0.824 texture[ 40, 26] = 0.804 texture[ 41, 26] = 0.353 texture[ 42, 26] = 0.298 texture[ 43, 26] = 0.773 texture[ 44, 26] = 0.502 texture[ 45, 26] = 0.373 texture[ 46, 26] = 0.663 texture[ 47, 26] = 0.506 texture[ 48, 26] = 0.251 texture[ 49, 26] = 0.678 texture[ 50, 26] = 0.847 texture[ 51, 26] = 0.690 texture[ 52, 26] = 0.537 texture[ 53, 26] = 0.569 texture[ 54, 26] = 0.702 texture[ 55, 26] = 0.992 texture[ 56, 26] = 0.475 texture[ 57, 26] = 0.373 texture[ 58, 26] = 0.827 texture[ 59, 26] = 0.341 texture[ 60, 26] = 0.353 texture[ 61, 26] = 0.718 texture[ 62, 26] = 0.188 texture[ 63, 26] = 0.651 texture[ 64, 26] = 0.957 texture[ 65, 26] = 0.502 texture[ 66, 26] = 0.220 texture[ 67, 26] = 0.251 texture[ 68, 26] = 0.133 texture[ 69, 26] = 0.031 texture[ 70, 26] = 0.098 texture[ 71, 26] = 0.373 texture[ 72, 26] = 0.627 texture[ 73, 26] = 0.635 texture[ 74, 26] = 0.624 texture[ 75, 26] = 0.659 texture[ 76, 26] = 0.761 texture[ 77, 26] = 0.569 texture[ 78, 26] = 0.690 texture[ 79, 26] = 0.482 texture[ 80, 26] = 0.243 texture[ 81, 26] = 0.463 texture[ 82, 26] = 0.365 texture[ 83, 26] = 0.737 texture[ 84, 26] = 0.800 texture[ 85, 26] = 0.780 texture[ 86, 26] = 0.859 texture[ 87, 26] = 0.569 texture[ 88, 26] = 0.745 texture[ 89, 26] = 0.824 texture[ 90, 26] = 0.769 texture[ 91, 26] = 0.251 texture[ 92, 26] = 0.420 texture[ 93, 26] = 0.757 texture[ 94, 26] = 0.451 texture[ 95, 26] = 0.427 texture[ 96, 26] = 0.718 texture[ 97, 26] = 0.416 texture[ 98, 26] = 0.294 texture[ 99, 26] = 0.725 texture[ 100, 26] = 0.792 texture[ 1, 27] = 0.584 texture[ 2, 27] = 0.518 texture[ 3, 27] = 0.525 texture[ 4, 27] = 0.757 texture[ 5, 27] = 0.824 texture[ 6, 27] = 0.494 texture[ 7, 27] = 0.129 texture[ 8, 27] = 0.541 texture[ 9, 27] = 0.671 texture[ 10, 27] = 0.486 texture[ 11, 27] = 0.243 texture[ 12, 27] = 0.110 texture[ 13, 27] = 0.725 texture[ 14, 27] = 0.780 texture[ 15, 27] = 0.416 texture[ 16, 27] = 0.231 texture[ 17, 27] = 0.196 texture[ 18, 27] = 0.098 texture[ 19, 27] = 0.110 texture[ 20, 27] = 0.318 texture[ 21, 27] = 0.580 texture[ 22, 27] = 0.349 texture[ 23, 27] = 0.541 texture[ 24, 27] = 0.788 texture[ 25, 27] = 0.733 texture[ 26, 27] = 0.518 texture[ 27, 27] = 0.671 texture[ 28, 27] = 0.953 texture[ 29, 27] = 0.463 texture[ 30, 27] = 0.145 texture[ 31, 27] = 0.525 texture[ 32, 27] = 0.376 texture[ 33, 27] = 0.737 texture[ 34, 27] = 0.780 texture[ 35, 27] = 0.561 texture[ 36, 27] = 0.506 texture[ 37, 27] = 0.525 texture[ 38, 27] = 0.682 texture[ 39, 27] = 0.416 texture[ 40, 27] = 0.541 texture[ 41, 27] = 0.651 texture[ 42, 27] = 0.733 texture[ 43, 27] = 0.992 texture[ 44, 27] = 0.573 texture[ 45, 27] = 0.404 texture[ 46, 27] = 0.580 texture[ 47, 27] = 0.843 texture[ 48, 27] = 0.608 texture[ 49, 27] = 0.306 texture[ 50, 27] = 0.482 texture[ 51, 27] = 0.604 texture[ 52, 27] = 0.537 texture[ 53, 27] = 0.506 texture[ 54, 27] = 0.718 texture[ 55, 27] = 0.843 texture[ 56, 27] = 0.553 texture[ 57, 27] = 0.145 texture[ 58, 27] = 0.459 texture[ 59, 27] = 0.702 texture[ 60, 27] = 0.475 texture[ 61, 27] = 0.341 texture[ 62, 27] = 0.043 texture[ 63, 27] = 0.584 texture[ 64, 27] = 0.816 texture[ 65, 27] = 0.482 texture[ 66, 27] = 0.231 texture[ 67, 27] = 0.208 texture[ 68, 27] = 0.102 texture[ 69, 27] = 0.110 texture[ 70, 27] = 0.251 texture[ 71, 27] = 0.518 texture[ 72, 27] = 0.384 texture[ 73, 27] = 0.459 texture[ 74, 27] = 0.780 texture[ 75, 27] = 0.773 texture[ 76, 27] = 0.561 texture[ 77, 27] = 0.604 texture[ 78, 27] = 0.898 texture[ 79, 27] = 0.255 texture[ 80, 27] = 0.220 texture[ 81, 27] = 0.514 texture[ 82, 27] = 0.416 texture[ 83, 27] = 0.792 texture[ 84, 27] = 0.749 texture[ 85, 27] = 0.525 texture[ 86, 27] = 0.482 texture[ 87, 27] = 0.580 texture[ 88, 27] = 0.682 texture[ 89, 27] = 0.416 texture[ 90, 27] = 0.569 texture[ 91, 27] = 0.635 texture[ 92, 27] = 0.792 texture[ 93, 27] = 1.000 texture[ 94, 27] = 0.471 texture[ 95, 27] = 0.451 texture[ 96, 27] = 0.627 texture[ 97, 27] = 0.855 texture[ 98, 27] = 0.514 texture[ 99, 27] = 0.298 texture[ 100, 27] = 0.482 texture[ 1, 28] = 0.639 texture[ 2, 28] = 0.627 texture[ 3, 28] = 0.608 texture[ 4, 28] = 0.671 texture[ 5, 28] = 0.749 texture[ 6, 28] = 0.408 texture[ 7, 28] = 0.047 texture[ 8, 28] = 0.416 texture[ 9, 28] = 0.937 texture[ 10, 28] = 0.800 texture[ 11, 28] = 0.251 texture[ 12, 28] = 0.020 texture[ 13, 28] = 0.529 texture[ 14, 28] = 0.745 texture[ 15, 28] = 0.647 texture[ 16, 28] = 0.537 texture[ 17, 28] = 0.243 texture[ 18, 28] = 0.239 texture[ 19, 28] = 0.451 texture[ 20, 28] = 0.561 texture[ 21, 28] = 0.416 texture[ 22, 28] = 0.341 texture[ 23, 28] = 0.804 texture[ 24, 28] = 0.792 texture[ 25, 28] = 0.706 texture[ 26, 28] = 0.671 texture[ 27, 28] = 0.706 texture[ 28, 28] = 0.604 texture[ 29, 28] = 0.376 texture[ 30, 28] = 0.173 texture[ 31, 28] = 0.318 texture[ 32, 28] = 0.251 texture[ 33, 28] = 0.749 texture[ 34, 28] = 0.878 texture[ 35, 28] = 0.843 texture[ 36, 28] = 0.529 texture[ 37, 28] = 0.529 texture[ 38, 28] = 0.718 texture[ 39, 28] = 0.471 texture[ 40, 28] = 0.502 texture[ 41, 28] = 0.678 texture[ 42, 28] = 0.843 texture[ 43, 28] = 0.800 texture[ 44, 28] = 0.451 texture[ 45, 28] = 0.365 texture[ 46, 28] = 0.678 texture[ 47, 28] = 0.792 texture[ 48, 28] = 0.416 texture[ 49, 28] = 0.188 texture[ 50, 28] = 0.373 texture[ 51, 28] = 0.659 texture[ 52, 28] = 0.647 texture[ 53, 28] = 0.592 texture[ 54, 28] = 0.592 texture[ 55, 28] = 0.757 texture[ 56, 28] = 0.506 texture[ 57, 28] = 0.090 texture[ 58, 28] = 0.286 texture[ 59, 28] = 0.914 texture[ 60, 28] = 0.835 texture[ 61, 28] = 0.353 texture[ 62, 28] = 0.000 texture[ 63, 28] = 0.396 texture[ 64, 28] = 0.788 texture[ 65, 28] = 0.659 texture[ 66, 28] = 0.592 texture[ 67, 28] = 0.267 texture[ 68, 28] = 0.208 texture[ 69, 28] = 0.420 texture[ 70, 28] = 0.553 texture[ 71, 28] = 0.482 texture[ 72, 28] = 0.275 texture[ 73, 28] = 0.749 texture[ 74, 28] = 0.827 texture[ 75, 28] = 0.718 texture[ 76, 28] = 0.682 texture[ 77, 28] = 0.718 texture[ 78, 28] = 0.573 texture[ 79, 28] = 0.200 texture[ 80, 28] = 0.188 texture[ 81, 28] = 0.251 texture[ 82, 28] = 0.306 texture[ 83, 28] = 0.800 texture[ 84, 28] = 0.902 texture[ 85, 28] = 0.812 texture[ 86, 28] = 0.475 texture[ 87, 28] = 0.592 texture[ 88, 28] = 0.718 texture[ 89, 28] = 0.463 texture[ 90, 28] = 0.525 texture[ 91, 28] = 0.702 texture[ 92, 28] = 0.816 texture[ 93, 28] = 0.780 texture[ 94, 28] = 0.341 texture[ 95, 28] = 0.471 texture[ 96, 28] = 0.671 texture[ 97, 28] = 0.792 texture[ 98, 28] = 0.349 texture[ 99, 28] = 0.212 texture[ 100, 28] = 0.427 texture[ 1, 29] = 0.965 texture[ 2, 29] = 0.800 texture[ 3, 29] = 0.608 texture[ 4, 29] = 0.627 texture[ 5, 29] = 0.573 texture[ 6, 29] = 0.231 texture[ 7, 29] = 0.212 texture[ 8, 29] = 0.694 texture[ 9, 29] = 0.843 texture[ 10, 29] = 0.871 texture[ 11, 29] = 0.812 texture[ 12, 29] = 0.404 texture[ 13, 29] = 0.090 texture[ 14, 29] = 0.251 texture[ 15, 29] = 0.573 texture[ 16, 29] = 0.847 texture[ 17, 29] = 0.659 texture[ 18, 29] = 0.584 texture[ 19, 29] = 0.561 texture[ 20, 29] = 0.718 texture[ 21, 29] = 0.569 texture[ 22, 29] = 0.761 texture[ 23, 29] = 0.914 texture[ 24, 29] = 0.773 texture[ 25, 29] = 0.769 texture[ 26, 29] = 0.678 texture[ 27, 29] = 0.855 texture[ 28, 29] = 0.627 texture[ 29, 29] = 0.318 texture[ 30, 29] = 0.141 texture[ 31, 29] = 0.153 texture[ 32, 29] = 0.157 texture[ 33, 29] = 0.376 texture[ 34, 29] = 0.608 texture[ 35, 29] = 0.702 texture[ 36, 29] = 0.541 texture[ 37, 29] = 0.569 texture[ 38, 29] = 0.824 texture[ 39, 29] = 0.702 texture[ 40, 29] = 0.604 texture[ 41, 29] = 0.506 texture[ 42, 29] = 0.745 texture[ 43, 29] = 0.761 texture[ 44, 29] = 0.220 texture[ 45, 29] = 0.459 texture[ 46, 29] = 0.733 texture[ 47, 29] = 0.627 texture[ 48, 29] = 0.616 texture[ 49, 29] = 0.663 texture[ 50, 29] = 0.659 texture[ 51, 29] = 0.953 texture[ 52, 29] = 0.859 texture[ 53, 29] = 0.635 texture[ 54, 29] = 0.616 texture[ 55, 29] = 0.608 texture[ 56, 29] = 0.282 texture[ 57, 29] = 0.200 texture[ 58, 29] = 0.616 texture[ 59, 29] = 0.859 texture[ 60, 29] = 0.855 texture[ 61, 29] = 0.859 texture[ 62, 29] = 0.518 texture[ 63, 29] = 0.129 texture[ 64, 29] = 0.212 texture[ 65, 29] = 0.514 texture[ 66, 29] = 0.847 texture[ 67, 29] = 0.706 texture[ 68, 29] = 0.592 texture[ 69, 29] = 0.514 texture[ 70, 29] = 0.706 texture[ 71, 29] = 0.608 texture[ 72, 29] = 0.694 texture[ 73, 29] = 0.902 texture[ 74, 29] = 0.773 texture[ 75, 29] = 0.780 texture[ 76, 29] = 0.678 texture[ 77, 29] = 0.855 texture[ 78, 29] = 0.671 texture[ 79, 29] = 0.145 texture[ 80, 29] = 0.122 texture[ 81, 29] = 0.133 texture[ 82, 29] = 0.173 texture[ 83, 29] = 0.459 texture[ 84, 29] = 0.616 texture[ 85, 29] = 0.702 texture[ 86, 29] = 0.475 texture[ 87, 29] = 0.647 texture[ 88, 29] = 0.843 texture[ 89, 29] = 0.694 texture[ 90, 29] = 0.584 texture[ 91, 29] = 0.502 texture[ 92, 29] = 0.749 texture[ 93, 29] = 0.702 texture[ 94, 29] = 0.157 texture[ 95, 29] = 0.580 texture[ 96, 29] = 0.702 texture[ 97, 29] = 0.647 texture[ 98, 29] = 0.639 texture[ 99, 29] = 0.663 texture[ 100, 29] = 0.702 texture[ 1, 30] = 0.812 texture[ 2, 30] = 0.580 texture[ 3, 30] = 0.549 texture[ 4, 30] = 0.678 texture[ 5, 30] = 0.694 texture[ 6, 30] = 0.694 texture[ 7, 30] = 0.737 texture[ 8, 30] = 0.761 texture[ 9, 30] = 0.718 texture[ 10, 30] = 0.788 texture[ 11, 30] = 0.922 texture[ 12, 30] = 0.976 texture[ 13, 30] = 0.298 texture[ 14, 30] = 0.012 texture[ 15, 30] = 0.361 texture[ 16, 30] = 0.773 texture[ 17, 30] = 0.780 texture[ 18, 30] = 0.682 texture[ 19, 30] = 0.592 texture[ 20, 30] = 0.788 texture[ 21, 30] = 0.659 texture[ 22, 30] = 0.847 texture[ 23, 30] = 0.871 texture[ 24, 30] = 0.769 texture[ 25, 30] = 0.824 texture[ 26, 30] = 0.804 texture[ 27, 30] = 0.745 texture[ 28, 30] = 0.580 texture[ 29, 30] = 0.365 texture[ 30, 30] = 0.267 texture[ 31, 30] = 0.286 texture[ 32, 30] = 0.208 texture[ 33, 30] = 0.529 texture[ 34, 30] = 0.537 texture[ 35, 30] = 0.541 texture[ 36, 30] = 0.780 texture[ 37, 30] = 0.486 texture[ 38, 30] = 0.506 texture[ 39, 30] = 0.549 texture[ 40, 30] = 0.506 texture[ 41, 30] = 0.502 texture[ 42, 30] = 0.733 texture[ 43, 30] = 0.773 texture[ 44, 30] = 0.251 texture[ 45, 30] = 0.275 texture[ 46, 30] = 0.482 texture[ 47, 30] = 0.439 texture[ 48, 30] = 0.816 texture[ 49, 30] = 0.780 texture[ 50, 30] = 0.624 texture[ 51, 30] = 0.812 texture[ 52, 30] = 0.659 texture[ 53, 30] = 0.514 texture[ 54, 30] = 0.671 texture[ 55, 30] = 0.690 texture[ 56, 30] = 0.702 texture[ 57, 30] = 0.749 texture[ 58, 30] = 0.769 texture[ 59, 30] = 0.706 texture[ 60, 30] = 0.773 texture[ 61, 30] = 0.890 texture[ 62, 30] = 1.000 texture[ 63, 30] = 0.494 texture[ 64, 30] = 0.000 texture[ 65, 30] = 0.310 texture[ 66, 30] = 0.718 texture[ 67, 30] = 0.816 texture[ 68, 30] = 0.749 texture[ 69, 30] = 0.573 texture[ 70, 30] = 0.761 texture[ 71, 30] = 0.678 texture[ 72, 30] = 0.804 texture[ 73, 30] = 0.871 texture[ 74, 30] = 0.761 texture[ 75, 30] = 0.824 texture[ 76, 30] = 0.804 texture[ 77, 30] = 0.773 texture[ 78, 30] = 0.608 texture[ 79, 30] = 0.200 texture[ 80, 30] = 0.286 texture[ 81, 30] = 0.275 texture[ 82, 30] = 0.243 texture[ 83, 30] = 0.604 texture[ 84, 30] = 0.439 texture[ 85, 30] = 0.596 texture[ 86, 30] = 0.714 texture[ 87, 30] = 0.502 texture[ 88, 30] = 0.573 texture[ 89, 30] = 0.549 texture[ 90, 30] = 0.494 texture[ 91, 30] = 0.502 texture[ 92, 30] = 0.780 texture[ 93, 30] = 0.725 texture[ 94, 30] = 0.165 texture[ 95, 30] = 0.384 texture[ 96, 30] = 0.471 texture[ 97, 30] = 0.471 texture[ 98, 30] = 0.816 texture[ 99, 30] = 0.745 texture[ 100, 30] = 0.639 texture[ 1, 31] = 0.349 texture[ 2, 31] = 0.427 texture[ 3, 31] = 0.341 texture[ 4, 31] = 0.506 texture[ 5, 31] = 0.659 texture[ 6, 31] = 0.733 texture[ 7, 31] = 1.000 texture[ 8, 31] = 0.761 texture[ 9, 31] = 0.769 texture[ 10, 31] = 0.859 texture[ 11, 31] = 0.922 texture[ 12, 31] = 0.976 texture[ 13, 31] = 0.459 texture[ 14, 31] = 0.043 texture[ 15, 31] = 0.329 texture[ 16, 31] = 0.714 texture[ 17, 31] = 0.761 texture[ 18, 31] = 0.780 texture[ 19, 31] = 0.718 texture[ 20, 31] = 0.769 texture[ 21, 31] = 0.486 texture[ 22, 31] = 0.239 texture[ 23, 31] = 0.404 texture[ 24, 31] = 0.737 texture[ 25, 31] = 0.816 texture[ 26, 31] = 0.792 texture[ 27, 31] = 0.671 texture[ 28, 31] = 0.800 texture[ 29, 31] = 0.608 texture[ 30, 31] = 0.506 texture[ 31, 31] = 0.506 texture[ 32, 31] = 0.392 texture[ 33, 31] = 0.404 texture[ 34, 31] = 0.416 texture[ 35, 31] = 0.518 texture[ 36, 31] = 0.459 texture[ 37, 31] = 0.243 texture[ 38, 31] = 0.447 texture[ 39, 31] = 0.349 texture[ 40, 31] = 0.255 texture[ 41, 31] = 0.416 texture[ 42, 31] = 0.718 texture[ 43, 31] = 0.627 texture[ 44, 31] = 0.392 texture[ 45, 31] = 0.365 texture[ 46, 31] = 0.361 texture[ 47, 31] = 0.475 texture[ 48, 31] = 0.592 texture[ 49, 31] = 0.651 texture[ 50, 31] = 0.690 texture[ 51, 31] = 0.463 texture[ 52, 31] = 0.361 texture[ 53, 31] = 0.353 texture[ 54, 31] = 0.420 texture[ 55, 31] = 0.635 texture[ 56, 31] = 0.702 texture[ 57, 31] = 0.976 texture[ 58, 31] = 0.816 texture[ 59, 31] = 0.788 texture[ 60, 31] = 0.867 texture[ 61, 31] = 0.902 texture[ 62, 31] = 0.976 texture[ 63, 31] = 0.647 texture[ 64, 31] = 0.031 texture[ 65, 31] = 0.267 texture[ 66, 31] = 0.651 texture[ 67, 31] = 0.737 texture[ 68, 31] = 0.773 texture[ 69, 31] = 0.718 texture[ 70, 31] = 0.761 texture[ 71, 31] = 0.592 texture[ 72, 31] = 0.282 texture[ 73, 31] = 0.365 texture[ 74, 31] = 0.671 texture[ 75, 31] = 0.812 texture[ 76, 31] = 0.812 texture[ 77, 31] = 0.663 texture[ 78, 31] = 0.757 texture[ 79, 31] = 0.502 texture[ 80, 31] = 0.525 texture[ 81, 31] = 0.553 texture[ 82, 31] = 0.376 texture[ 83, 31] = 0.416 texture[ 84, 31] = 0.396 texture[ 85, 31] = 0.525 texture[ 86, 31] = 0.384 texture[ 87, 31] = 0.267 texture[ 88, 31] = 0.506 texture[ 89, 31] = 0.310 texture[ 90, 31] = 0.243 texture[ 91, 31] = 0.463 texture[ 92, 31] = 0.749 texture[ 93, 31] = 0.561 texture[ 94, 31] = 0.373 texture[ 95, 31] = 0.404 texture[ 96, 31] = 0.384 texture[ 97, 31] = 0.486 texture[ 98, 31] = 0.596 texture[ 99, 31] = 0.663 texture[ 100, 31] = 0.714 texture[ 1, 32] = 0.471 texture[ 2, 32] = 0.275 texture[ 3, 32] = 0.267 texture[ 4, 32] = 0.220 texture[ 5, 32] = 0.549 texture[ 6, 32] = 0.827 texture[ 7, 32] = 0.902 texture[ 8, 32] = 0.824 texture[ 9, 32] = 0.694 texture[ 10, 32] = 0.843 texture[ 11, 32] = 0.910 texture[ 12, 32] = 0.824 texture[ 13, 32] = 0.341 texture[ 14, 32] = 0.047 texture[ 15, 32] = 0.427 texture[ 16, 32] = 0.733 texture[ 17, 32] = 0.604 texture[ 18, 32] = 0.725 texture[ 19, 32] = 0.584 texture[ 20, 32] = 0.420 texture[ 21, 32] = 0.243 texture[ 22, 32] = 0.141 texture[ 23, 32] = 0.486 texture[ 24, 32] = 0.745 texture[ 25, 32] = 0.812 texture[ 26, 32] = 0.757 texture[ 27, 32] = 0.635 texture[ 28, 32] = 0.725 texture[ 29, 32] = 0.749 texture[ 30, 32] = 0.604 texture[ 31, 32] = 0.459 texture[ 32, 32] = 0.439 texture[ 33, 32] = 0.294 texture[ 34, 32] = 0.349 texture[ 35, 32] = 0.561 texture[ 36, 32] = 0.451 texture[ 37, 32] = 0.376 texture[ 38, 32] = 0.482 texture[ 39, 32] = 0.310 texture[ 40, 32] = 0.506 texture[ 41, 32] = 0.627 texture[ 42, 32] = 0.627 texture[ 43, 32] = 0.420 texture[ 44, 32] = 0.659 texture[ 45, 32] = 0.792 texture[ 46, 32] = 0.855 texture[ 47, 32] = 0.878 texture[ 48, 32] = 0.780 texture[ 49, 32] = 0.725 texture[ 50, 32] = 0.827 texture[ 51, 32] = 0.608 texture[ 52, 32] = 0.263 texture[ 53, 32] = 0.286 texture[ 54, 32] = 0.200 texture[ 55, 32] = 0.463 texture[ 56, 32] = 0.843 texture[ 57, 32] = 0.878 texture[ 58, 32] = 0.827 texture[ 59, 32] = 0.706 texture[ 60, 32] = 0.800 texture[ 61, 32] = 0.910 texture[ 62, 32] = 0.878 texture[ 63, 32] = 0.486 texture[ 64, 32] = 0.043 texture[ 65, 32] = 0.341 texture[ 66, 32] = 0.737 texture[ 67, 32] = 0.584 texture[ 68, 32] = 0.702 texture[ 69, 32] = 0.624 texture[ 70, 32] = 0.459 texture[ 71, 32] = 0.282 texture[ 72, 32] = 0.110 texture[ 73, 32] = 0.431 texture[ 74, 32] = 0.733 texture[ 75, 32] = 0.812 texture[ 76, 32] = 0.788 texture[ 77, 32] = 0.624 texture[ 78, 32] = 0.804 texture[ 79, 32] = 0.718 texture[ 80, 32] = 0.584 texture[ 81, 32] = 0.502 texture[ 82, 32] = 0.416 texture[ 83, 32] = 0.275 texture[ 84, 32] = 0.376 texture[ 85, 32] = 0.573 texture[ 86, 32] = 0.384 texture[ 87, 32] = 0.447 texture[ 88, 32] = 0.486 texture[ 89, 32] = 0.365 texture[ 90, 32] = 0.553 texture[ 91, 32] = 0.651 texture[ 92, 32] = 0.569 texture[ 93, 32] = 0.420 texture[ 94, 32] = 0.714 texture[ 95, 32] = 0.824 texture[ 96, 32] = 0.878 texture[ 97, 32] = 0.871 texture[ 98, 32] = 0.788 texture[ 99, 32] = 0.757 texture[ 100, 32] = 0.827 texture[ 1, 33] = 0.737 texture[ 2, 33] = 0.306 texture[ 3, 33] = 0.365 texture[ 4, 33] = 0.322 texture[ 5, 33] = 0.682 texture[ 6, 33] = 0.824 texture[ 7, 33] = 0.737 texture[ 8, 33] = 0.663 texture[ 9, 33] = 0.616 texture[ 10, 33] = 0.592 texture[ 11, 33] = 0.580 texture[ 12, 33] = 0.706 texture[ 13, 33] = 0.376 texture[ 14, 33] = 0.047 texture[ 15, 33] = 0.431 texture[ 16, 33] = 0.549 texture[ 17, 33] = 0.561 texture[ 18, 33] = 0.788 texture[ 19, 33] = 0.671 texture[ 20, 33] = 0.184 texture[ 21, 33] = 0.055 texture[ 22, 33] = 0.267 texture[ 23, 33] = 0.702 texture[ 24, 33] = 0.890 texture[ 25, 33] = 0.867 texture[ 26, 33] = 0.737 texture[ 27, 33] = 0.725 texture[ 28, 33] = 0.608 texture[ 29, 33] = 0.592 texture[ 30, 33] = 0.573 texture[ 31, 33] = 0.506 texture[ 32, 33] = 0.208 texture[ 33, 33] = 0.322 texture[ 34, 33] = 0.714 texture[ 35, 33] = 0.627 texture[ 36, 33] = 0.518 texture[ 37, 33] = 0.525 texture[ 38, 33] = 0.580 texture[ 39, 33] = 0.408 texture[ 40, 33] = 0.651 texture[ 41, 33] = 0.812 texture[ 42, 33] = 0.651 texture[ 43, 33] = 0.208 texture[ 44, 33] = 0.647 texture[ 45, 33] = 0.922 texture[ 46, 33] = 0.992 texture[ 47, 33] = 0.980 texture[ 48, 33] = 0.871 texture[ 49, 33] = 0.714 texture[ 50, 33] = 0.616 texture[ 51, 33] = 0.827 texture[ 52, 33] = 0.349 texture[ 53, 33] = 0.416 texture[ 54, 33] = 0.255 texture[ 55, 33] = 0.604 texture[ 56, 33] = 0.824 texture[ 57, 33] = 0.761 texture[ 58, 33] = 0.616 texture[ 59, 33] = 0.635 texture[ 60, 33] = 0.584 texture[ 61, 33] = 0.580 texture[ 62, 33] = 0.714 texture[ 63, 33] = 0.553 texture[ 64, 33] = 0.024 texture[ 65, 33] = 0.365 texture[ 66, 33] = 0.584 texture[ 67, 33] = 0.537 texture[ 68, 33] = 0.757 texture[ 69, 33] = 0.737 texture[ 70, 33] = 0.255 texture[ 71, 33] = 0.078 texture[ 72, 33] = 0.176 texture[ 73, 33] = 0.678 texture[ 74, 33] = 0.890 texture[ 75, 33] = 0.871 texture[ 76, 33] = 0.749 texture[ 77, 33] = 0.706 texture[ 78, 33] = 0.694 texture[ 79, 33] = 0.627 texture[ 80, 33] = 0.584 texture[ 81, 33] = 0.506 texture[ 82, 33] = 0.196 texture[ 83, 33] = 0.459 texture[ 84, 33] = 0.706 texture[ 85, 33] = 0.627 texture[ 86, 33] = 0.486 texture[ 87, 33] = 0.592 texture[ 88, 33] = 0.580 texture[ 89, 33] = 0.459 texture[ 90, 33] = 0.694 texture[ 91, 33] = 0.847 texture[ 92, 33] = 0.494 texture[ 93, 33] = 0.239 texture[ 94, 33] = 0.733 texture[ 95, 33] = 0.922 texture[ 96, 33] = 1.000 texture[ 97, 33] = 0.957 texture[ 98, 33] = 0.855 texture[ 99, 33] = 0.682 texture[ 100, 33] = 0.616 texture[ 1, 34] = 0.859 texture[ 2, 34] = 0.506 texture[ 3, 34] = 0.212 texture[ 4, 34] = 0.447 texture[ 5, 34] = 0.525 texture[ 6, 34] = 0.561 texture[ 7, 34] = 0.592 texture[ 8, 34] = 0.596 texture[ 9, 34] = 0.671 texture[ 10, 34] = 0.518 texture[ 11, 34] = 0.239 texture[ 12, 34] = 0.624 texture[ 13, 34] = 0.353 texture[ 14, 34] = 0.200 texture[ 15, 34] = 0.286 texture[ 16, 34] = 0.392 texture[ 17, 34] = 0.678 texture[ 18, 34] = 0.847 texture[ 19, 34] = 0.541 texture[ 20, 34] = 0.129 texture[ 21, 34] = 0.063 texture[ 22, 34] = 0.553 texture[ 23, 34] = 0.965 texture[ 24, 34] = 0.639 texture[ 25, 34] = 0.624 texture[ 26, 34] = 0.812 texture[ 27, 34] = 0.890 texture[ 28, 34] = 0.757 texture[ 29, 34] = 0.651 texture[ 30, 34] = 0.561 texture[ 31, 34] = 0.275 texture[ 32, 34] = 0.075 texture[ 33, 34] = 0.416 texture[ 34, 34] = 0.878 texture[ 35, 34] = 0.769 texture[ 36, 34] = 0.408 texture[ 37, 34] = 0.251 texture[ 38, 34] = 0.392 texture[ 39, 34] = 0.329 texture[ 40, 34] = 0.788 texture[ 41, 34] = 0.678 texture[ 42, 34] = 0.639 texture[ 43, 34] = 0.616 texture[ 44, 34] = 0.761 texture[ 45, 34] = 0.812 texture[ 46, 34] = 0.914 texture[ 47, 34] = 0.922 texture[ 48, 34] = 0.988 texture[ 49, 34] = 0.627 texture[ 50, 34] = 0.376 texture[ 51, 34] = 0.878 texture[ 52, 34] = 0.624 texture[ 53, 34] = 0.267 texture[ 54, 34] = 0.349 texture[ 55, 34] = 0.525 texture[ 56, 34] = 0.580 texture[ 57, 34] = 0.580 texture[ 58, 34] = 0.584 texture[ 59, 34] = 0.616 texture[ 60, 34] = 0.569 texture[ 61, 34] = 0.184 texture[ 62, 34] = 0.553 texture[ 63, 34] = 0.451 texture[ 64, 34] = 0.173 texture[ 65, 34] = 0.286 texture[ 66, 34] = 0.376 texture[ 67, 34] = 0.584 texture[ 68, 34] = 0.859 texture[ 69, 34] = 0.639 texture[ 70, 34] = 0.176 texture[ 71, 34] = 0.063 texture[ 72, 34] = 0.408 texture[ 73, 34] = 0.965 texture[ 74, 34] = 0.678 texture[ 75, 34] = 0.604 texture[ 76, 34] = 0.761 texture[ 77, 34] = 0.898 texture[ 78, 34] = 0.635 texture[ 79, 34] = 0.553 texture[ 80, 34] = 0.561 texture[ 81, 34] = 0.200 texture[ 82, 34] = 0.102 texture[ 83, 34] = 0.537 texture[ 84, 34] = 0.843 texture[ 85, 34] = 0.737 texture[ 86, 34] = 0.341 texture[ 87, 34] = 0.286 texture[ 88, 34] = 0.404 texture[ 89, 34] = 0.427 texture[ 90, 34] = 0.780 texture[ 91, 34] = 0.678 texture[ 92, 34] = 0.596 texture[ 93, 34] = 0.624 texture[ 94, 34] = 0.800 texture[ 95, 34] = 0.859 texture[ 96, 34] = 0.922 texture[ 97, 34] = 0.933 texture[ 98, 34] = 0.980 texture[ 99, 34] = 0.541 texture[ 100, 34] = 0.463 texture[ 1, 35] = 0.882 texture[ 2, 35] = 0.518 texture[ 3, 35] = 0.251 texture[ 4, 35] = 0.439 texture[ 5, 35] = 0.494 texture[ 6, 35] = 0.671 texture[ 7, 35] = 0.569 texture[ 8, 35] = 0.616 texture[ 9, 35] = 0.761 texture[ 10, 35] = 0.349 texture[ 11, 35] = 0.294 texture[ 12, 35] = 0.341 texture[ 13, 35] = 0.227 texture[ 14, 35] = 0.451 texture[ 15, 35] = 0.596 texture[ 16, 35] = 0.678 texture[ 17, 35] = 0.792 texture[ 18, 35] = 0.922 texture[ 19, 35] = 0.337 texture[ 20, 35] = 0.078 texture[ 21, 35] = 0.067 texture[ 22, 35] = 0.188 texture[ 23, 35] = 0.702 texture[ 24, 35] = 0.349 texture[ 25, 35] = 0.231 texture[ 26, 35] = 0.451 texture[ 27, 35] = 0.627 texture[ 28, 35] = 0.627 texture[ 29, 35] = 0.714 texture[ 30, 35] = 0.596 texture[ 31, 35] = 0.306 texture[ 32, 35] = 0.306 texture[ 33, 35] = 0.553 texture[ 34, 35] = 0.678 texture[ 35, 35] = 0.737 texture[ 36, 35] = 0.227 texture[ 37, 35] = 0.141 texture[ 38, 35] = 0.035 texture[ 39, 35] = 0.243 texture[ 40, 35] = 0.635 texture[ 41, 35] = 0.604 texture[ 42, 35] = 0.647 texture[ 43, 35] = 0.549 texture[ 44, 35] = 0.690 texture[ 45, 35] = 0.871 texture[ 46, 35] = 0.922 texture[ 47, 35] = 0.890 texture[ 48, 35] = 0.965 texture[ 49, 35] = 0.537 texture[ 50, 35] = 0.525 texture[ 51, 35] = 0.867 texture[ 52, 35] = 0.671 texture[ 53, 35] = 0.251 texture[ 54, 35] = 0.420 texture[ 55, 35] = 0.427 texture[ 56, 35] = 0.694 texture[ 57, 35] = 0.580 texture[ 58, 35] = 0.624 texture[ 59, 35] = 0.749 texture[ 60, 35] = 0.451 texture[ 61, 35] = 0.220 texture[ 62, 35] = 0.361 texture[ 63, 35] = 0.200 texture[ 64, 35] = 0.404 texture[ 65, 35] = 0.580 texture[ 66, 35] = 0.671 texture[ 67, 35] = 0.745 texture[ 68, 35] = 0.933 texture[ 69, 35] = 0.482 texture[ 70, 35] = 0.086 texture[ 71, 35] = 0.102 texture[ 72, 35] = 0.118 texture[ 73, 35] = 0.647 texture[ 74, 35] = 0.451 texture[ 75, 35] = 0.208 texture[ 76, 35] = 0.416 texture[ 77, 35] = 0.624 texture[ 78, 35] = 0.506 texture[ 79, 35] = 0.506 texture[ 80, 35] = 0.580 texture[ 81, 35] = 0.255 texture[ 82, 35] = 0.329 texture[ 83, 35] = 0.573 texture[ 84, 35] = 0.682 texture[ 85, 35] = 0.690 texture[ 86, 35] = 0.165 texture[ 87, 35] = 0.129 texture[ 88, 35] = 0.043 texture[ 89, 35] = 0.294 texture[ 90, 35] = 0.639 texture[ 91, 35] = 0.592 texture[ 92, 35] = 0.639 texture[ 93, 35] = 0.537 texture[ 94, 35] = 0.757 texture[ 95, 35] = 0.902 texture[ 96, 35] = 0.933 texture[ 97, 35] = 0.914 texture[ 98, 35] = 0.933 texture[ 99, 35] = 0.420 texture[ 100, 35] = 0.608 texture[ 1, 36] = 0.549 texture[ 2, 36] = 0.561 texture[ 3, 36] = 0.294 texture[ 4, 36] = 0.427 texture[ 5, 36] = 0.608 texture[ 6, 36] = 0.812 texture[ 7, 36] = 0.792 texture[ 8, 36] = 0.639 texture[ 9, 36] = 0.647 texture[ 10, 36] = 0.451 texture[ 11, 36] = 0.471 texture[ 12, 36] = 0.063 texture[ 13, 36] = 0.173 texture[ 14, 36] = 0.404 texture[ 15, 36] = 0.502 texture[ 16, 36] = 0.475 texture[ 17, 36] = 0.396 texture[ 18, 36] = 0.647 texture[ 19, 36] = 0.431 texture[ 20, 36] = 0.118 texture[ 21, 36] = 0.098 texture[ 22, 36] = 0.000 texture[ 23, 36] = 0.122 texture[ 24, 36] = 0.416 texture[ 25, 36] = 0.349 texture[ 26, 36] = 0.227 texture[ 27, 36] = 0.251 texture[ 28, 36] = 0.514 texture[ 29, 36] = 0.635 texture[ 30, 36] = 0.306 texture[ 31, 36] = 0.573 texture[ 32, 36] = 0.639 texture[ 33, 36] = 0.659 texture[ 34, 36] = 0.475 texture[ 35, 36] = 0.702 texture[ 36, 36] = 0.514 texture[ 37, 36] = 0.196 texture[ 38, 36] = 0.102 texture[ 39, 36] = 0.165 texture[ 40, 36] = 0.529 texture[ 41, 36] = 0.627 texture[ 42, 36] = 0.733 texture[ 43, 36] = 0.749 texture[ 44, 36] = 0.878 texture[ 45, 36] = 0.980 texture[ 46, 36] = 0.902 texture[ 47, 36] = 0.898 texture[ 48, 36] = 0.976 texture[ 49, 36] = 0.494 texture[ 50, 36] = 0.361 texture[ 51, 36] = 0.506 texture[ 52, 36] = 0.659 texture[ 53, 36] = 0.353 texture[ 54, 36] = 0.404 texture[ 55, 36] = 0.529 texture[ 56, 36] = 0.812 texture[ 57, 36] = 0.812 texture[ 58, 36] = 0.635 texture[ 59, 36] = 0.659 texture[ 60, 36] = 0.471 texture[ 61, 36] = 0.525 texture[ 62, 36] = 0.102 texture[ 63, 36] = 0.110 texture[ 64, 36] = 0.353 texture[ 65, 36] = 0.494 texture[ 66, 36] = 0.486 texture[ 67, 36] = 0.361 texture[ 68, 36] = 0.604 texture[ 69, 36] = 0.502 texture[ 70, 36] = 0.141 texture[ 71, 36] = 0.110 texture[ 72, 36] = 0.000 texture[ 73, 36] = 0.055 texture[ 74, 36] = 0.384 texture[ 75, 36] = 0.384 texture[ 76, 36] = 0.263 texture[ 77, 36] = 0.231 texture[ 78, 36] = 0.396 texture[ 79, 36] = 0.294 texture[ 80, 36] = 0.263 texture[ 81, 36] = 0.584 texture[ 82, 36] = 0.639 texture[ 83, 36] = 0.624 texture[ 84, 36] = 0.561 texture[ 85, 36] = 0.725 texture[ 86, 36] = 0.416 texture[ 87, 36] = 0.176 texture[ 88, 36] = 0.086 texture[ 89, 36] = 0.227 texture[ 90, 36] = 0.569 texture[ 91, 36] = 0.635 texture[ 92, 36] = 0.757 texture[ 93, 36] = 0.757 texture[ 94, 36] = 0.914 texture[ 95, 36] = 0.976 texture[ 96, 36] = 0.898 texture[ 97, 36] = 0.898 texture[ 98, 36] = 0.925 texture[ 99, 36] = 0.376 texture[ 100, 36] = 0.427 texture[ 1, 37] = 0.227 texture[ 2, 37] = 0.196 texture[ 3, 37] = 0.475 texture[ 4, 37] = 0.639 texture[ 5, 37] = 0.569 texture[ 6, 37] = 0.639 texture[ 7, 37] = 0.663 texture[ 8, 37] = 0.757 texture[ 9, 37] = 0.569 texture[ 10, 37] = 0.506 texture[ 11, 37] = 0.231 texture[ 12, 37] = 0.275 texture[ 13, 37] = 0.514 texture[ 14, 37] = 0.451 texture[ 15, 37] = 0.322 texture[ 16, 37] = 0.506 texture[ 17, 37] = 0.475 texture[ 18, 37] = 0.482 texture[ 19, 37] = 0.486 texture[ 20, 37] = 0.165 texture[ 21, 37] = 0.110 texture[ 22, 37] = 0.000 texture[ 23, 37] = 0.243 texture[ 24, 37] = 0.925 texture[ 25, 37] = 0.749 texture[ 26, 37] = 0.525 texture[ 27, 37] = 0.537 texture[ 28, 37] = 0.525 texture[ 29, 37] = 0.482 texture[ 30, 37] = 0.196 texture[ 31, 37] = 0.396 texture[ 32, 37] = 0.627 texture[ 33, 37] = 0.769 texture[ 34, 37] = 0.569 texture[ 35, 37] = 0.502 texture[ 36, 37] = 0.647 texture[ 37, 37] = 0.220 texture[ 38, 37] = 0.098 texture[ 39, 37] = 0.000 texture[ 40, 37] = 0.188 texture[ 41, 37] = 0.549 texture[ 42, 37] = 0.663 texture[ 43, 37] = 0.800 texture[ 44, 37] = 0.804 texture[ 45, 37] = 0.761 texture[ 46, 37] = 0.725 texture[ 47, 37] = 0.596 texture[ 48, 37] = 0.859 texture[ 49, 37] = 0.486 texture[ 50, 37] = 0.337 texture[ 51, 37] = 0.306 texture[ 52, 37] = 0.231 texture[ 53, 37] = 0.341 texture[ 54, 37] = 0.663 texture[ 55, 37] = 0.580 texture[ 56, 37] = 0.651 texture[ 57, 37] = 0.647 texture[ 58, 37] = 0.761 texture[ 59, 37] = 0.584 texture[ 60, 37] = 0.541 texture[ 61, 37] = 0.306 texture[ 62, 37] = 0.227 texture[ 63, 37] = 0.494 texture[ 64, 37] = 0.514 texture[ 65, 37] = 0.337 texture[ 66, 37] = 0.451 texture[ 67, 37] = 0.502 texture[ 68, 37] = 0.471 texture[ 69, 37] = 0.525 texture[ 70, 37] = 0.200 texture[ 71, 37] = 0.118 texture[ 72, 37] = 0.012 texture[ 73, 37] = 0.145 texture[ 74, 37] = 0.871 texture[ 75, 37] = 0.824 texture[ 76, 37] = 0.529 texture[ 77, 37] = 0.518 texture[ 78, 37] = 0.451 texture[ 79, 37] = 0.098 texture[ 80, 37] = 0.208 texture[ 81, 37] = 0.459 texture[ 82, 37] = 0.663 texture[ 83, 37] = 0.733 texture[ 84, 37] = 0.569 texture[ 85, 37] = 0.537 texture[ 86, 37] = 0.608 texture[ 87, 37] = 0.176 texture[ 88, 37] = 0.086 texture[ 89, 37] = 0.000 texture[ 90, 37] = 0.282 texture[ 91, 37] = 0.580 texture[ 92, 37] = 0.659 texture[ 93, 37] = 0.792 texture[ 94, 37] = 0.804 texture[ 95, 37] = 0.812 texture[ 96, 37] = 0.659 texture[ 97, 37] = 0.635 texture[ 98, 37] = 0.878 texture[ 99, 37] = 0.404 texture[ 100, 37] = 0.408 texture[ 1, 38] = 0.239 texture[ 2, 38] = 0.067 texture[ 3, 38] = 0.663 texture[ 4, 38] = 0.957 texture[ 5, 38] = 0.745 texture[ 6, 38] = 0.639 texture[ 7, 38] = 0.624 texture[ 8, 38] = 0.788 texture[ 9, 38] = 0.573 texture[ 10, 38] = 0.173 texture[ 11, 38] = 0.086 texture[ 12, 38] = 0.463 texture[ 13, 38] = 0.525 texture[ 14, 38] = 0.282 texture[ 15, 38] = 0.392 texture[ 16, 38] = 0.635 texture[ 17, 38] = 0.529 texture[ 18, 38] = 0.439 texture[ 19, 38] = 0.647 texture[ 20, 38] = 0.494 texture[ 21, 38] = 0.208 texture[ 22, 38] = 0.008 texture[ 23, 38] = 0.392 texture[ 24, 38] = 0.867 texture[ 25, 38] = 0.773 texture[ 26, 38] = 0.635 texture[ 27, 38] = 0.757 texture[ 28, 38] = 0.514 texture[ 29, 38] = 0.212 texture[ 30, 38] = 0.353 texture[ 31, 38] = 0.663 texture[ 32, 38] = 0.627 texture[ 33, 38] = 0.647 texture[ 34, 38] = 0.514 texture[ 35, 38] = 0.506 texture[ 36, 38] = 0.663 texture[ 37, 38] = 0.396 texture[ 38, 38] = 0.102 texture[ 39, 38] = 0.063 texture[ 40, 38] = 0.098 texture[ 41, 38] = 0.773 texture[ 42, 38] = 0.922 texture[ 43, 38] = 0.812 texture[ 44, 38] = 0.714 texture[ 45, 38] = 0.353 texture[ 46, 38] = 0.439 texture[ 47, 38] = 0.541 texture[ 48, 38] = 0.788 texture[ 49, 38] = 0.494 texture[ 50, 38] = 0.518 texture[ 51, 38] = 0.341 texture[ 52, 38] = 0.055 texture[ 53, 38] = 0.459 texture[ 54, 38] = 0.988 texture[ 55, 38] = 0.788 texture[ 56, 38] = 0.663 texture[ 57, 38] = 0.592 texture[ 58, 38] = 0.769 texture[ 59, 38] = 0.616 texture[ 60, 38] = 0.243 texture[ 61, 38] = 0.055 texture[ 62, 38] = 0.408 texture[ 63, 38] = 0.549 texture[ 64, 38] = 0.322 texture[ 65, 38] = 0.349 texture[ 66, 38] = 0.608 texture[ 67, 38] = 0.608 texture[ 68, 38] = 0.439 texture[ 69, 38] = 0.627 texture[ 70, 38] = 0.549 texture[ 71, 38] = 0.263 texture[ 72, 38] = 0.024 texture[ 73, 38] = 0.286 texture[ 74, 38] = 0.859 texture[ 75, 38] = 0.788 texture[ 76, 38] = 0.635 texture[ 77, 38] = 0.694 texture[ 78, 38] = 0.482 texture[ 79, 38] = 0.000 texture[ 80, 38] = 0.408 texture[ 81, 38] = 0.682 texture[ 82, 38] = 0.647 texture[ 83, 38] = 0.624 texture[ 84, 38] = 0.514 texture[ 85, 38] = 0.553 texture[ 86, 38] = 0.647 texture[ 87, 38] = 0.318 texture[ 88, 38] = 0.098 texture[ 89, 38] = 0.024 texture[ 90, 38] = 0.200 texture[ 91, 38] = 0.867 texture[ 92, 38] = 0.878 texture[ 93, 38] = 0.812 texture[ 94, 38] = 0.663 texture[ 95, 38] = 0.341 texture[ 96, 38] = 0.486 texture[ 97, 38] = 0.580 texture[ 98, 38] = 0.780 texture[ 99, 38] = 0.408 texture[ 100, 38] = 0.537 texture[ 1, 39] = 0.294 texture[ 2, 39] = 0.063 texture[ 3, 39] = 0.239 texture[ 4, 39] = 0.416 texture[ 5, 39] = 0.361 texture[ 6, 39] = 0.616 texture[ 7, 39] = 0.702 texture[ 8, 39] = 0.635 texture[ 9, 39] = 0.361 texture[ 10, 39] = 0.055 texture[ 11, 39] = 0.518 texture[ 12, 39] = 0.482 texture[ 13, 39] = 0.396 texture[ 14, 39] = 0.439 texture[ 15, 39] = 0.553 texture[ 16, 39] = 0.725 texture[ 17, 39] = 0.608 texture[ 18, 39] = 0.549 texture[ 19, 39] = 0.718 texture[ 20, 39] = 0.647 texture[ 21, 39] = 0.196 texture[ 22, 39] = 0.012 texture[ 23, 39] = 0.267 texture[ 24, 39] = 0.780 texture[ 25, 39] = 0.733 texture[ 26, 39] = 0.737 texture[ 27, 39] = 0.608 texture[ 28, 39] = 0.286 texture[ 29, 39] = 0.024 texture[ 30, 39] = 0.298 texture[ 31, 39] = 0.773 texture[ 32, 39] = 0.596 texture[ 33, 39] = 0.459 texture[ 34, 39] = 0.525 texture[ 35, 39] = 0.494 texture[ 36, 39] = 0.694 texture[ 37, 39] = 0.769 texture[ 38, 39] = 0.494 texture[ 39, 39] = 0.227 texture[ 40, 39] = 0.024 texture[ 41, 39] = 0.404 texture[ 42, 39] = 0.843 texture[ 43, 39] = 0.718 texture[ 44, 39] = 0.592 texture[ 45, 39] = 0.416 texture[ 46, 39] = 0.482 texture[ 47, 39] = 0.584 texture[ 48, 39] = 0.537 texture[ 49, 39] = 0.494 texture[ 50, 39] = 0.635 texture[ 51, 39] = 0.310 texture[ 52, 39] = 0.110 texture[ 53, 39] = 0.157 texture[ 54, 39] = 0.420 texture[ 55, 39] = 0.329 texture[ 56, 39] = 0.604 texture[ 57, 39] = 0.725 texture[ 58, 39] = 0.651 texture[ 59, 39] = 0.408 texture[ 60, 39] = 0.075 texture[ 61, 39] = 0.427 texture[ 62, 39] = 0.541 texture[ 63, 39] = 0.384 texture[ 64, 39] = 0.439 texture[ 65, 39] = 0.537 texture[ 66, 39] = 0.706 texture[ 67, 39] = 0.663 texture[ 68, 39] = 0.537 texture[ 69, 39] = 0.616 texture[ 70, 39] = 0.725 texture[ 71, 39] = 0.282 texture[ 72, 39] = 0.024 texture[ 73, 39] = 0.188 texture[ 74, 39] = 0.757 texture[ 75, 39] = 0.725 texture[ 76, 39] = 0.745 texture[ 77, 39] = 0.678 texture[ 78, 39] = 0.341 texture[ 79, 39] = 0.000 texture[ 80, 39] = 0.353 texture[ 81, 39] = 0.749 texture[ 82, 39] = 0.553 texture[ 83, 39] = 0.486 texture[ 84, 39] = 0.549 texture[ 85, 39] = 0.494 texture[ 86, 39] = 0.714 texture[ 87, 39] = 0.725 texture[ 88, 39] = 0.447 texture[ 89, 39] = 0.165 texture[ 90, 39] = 0.020 texture[ 91, 39] = 0.471 texture[ 92, 39] = 0.843 texture[ 93, 39] = 0.702 texture[ 94, 39] = 0.541 texture[ 95, 39] = 0.396 texture[ 96, 39] = 0.518 texture[ 97, 39] = 0.604 texture[ 98, 39] = 0.486 texture[ 99, 39] = 0.506 texture[ 100, 39] = 0.553 texture[ 1, 40] = 0.318 texture[ 2, 40] = 0.157 texture[ 3, 40] = 0.337 texture[ 4, 40] = 0.251 texture[ 5, 40] = 0.420 texture[ 6, 40] = 0.553 texture[ 7, 40] = 0.537 texture[ 8, 40] = 0.482 texture[ 9, 40] = 0.141 texture[ 10, 40] = 0.102 texture[ 11, 40] = 0.553 texture[ 12, 40] = 0.584 texture[ 13, 40] = 0.682 texture[ 14, 40] = 0.714 texture[ 15, 40] = 0.506 texture[ 16, 40] = 0.659 texture[ 17, 40] = 0.561 texture[ 18, 40] = 0.553 texture[ 19, 40] = 0.733 texture[ 20, 40] = 0.651 texture[ 21, 40] = 0.133 texture[ 22, 40] = 0.000 texture[ 23, 40] = 0.133 texture[ 24, 40] = 0.549 texture[ 25, 40] = 0.678 texture[ 26, 40] = 0.525 texture[ 27, 40] = 0.306 texture[ 28, 40] = 0.471 texture[ 29, 40] = 0.596 texture[ 30, 40] = 0.494 texture[ 31, 40] = 0.549 texture[ 32, 40] = 0.416 texture[ 33, 40] = 0.318 texture[ 34, 40] = 0.396 texture[ 35, 40] = 0.341 texture[ 36, 40] = 0.780 texture[ 37, 40] = 0.835 texture[ 38, 40] = 0.780 texture[ 39, 40] = 0.298 texture[ 40, 40] = 0.090 texture[ 41, 40] = 0.239 texture[ 42, 40] = 0.200 texture[ 43, 40] = 0.431 texture[ 44, 40] = 0.659 texture[ 45, 40] = 0.627 texture[ 46, 40] = 0.792 texture[ 47, 40] = 0.671 texture[ 48, 40] = 0.541 texture[ 49, 40] = 0.737 texture[ 50, 40] = 0.529 texture[ 51, 40] = 0.322 texture[ 52, 40] = 0.184 texture[ 53, 40] = 0.353 texture[ 54, 40] = 0.255 texture[ 55, 40] = 0.365 texture[ 56, 40] = 0.569 texture[ 57, 40] = 0.514 texture[ 58, 40] = 0.514 texture[ 59, 40] = 0.184 texture[ 60, 40] = 0.055 texture[ 61, 40] = 0.494 texture[ 62, 40] = 0.580 texture[ 63, 40] = 0.627 texture[ 64, 40] = 0.749 texture[ 65, 40] = 0.529 texture[ 66, 40] = 0.592 texture[ 67, 40] = 0.584 texture[ 68, 40] = 0.502 texture[ 69, 40] = 0.671 texture[ 70, 40] = 0.733 texture[ 71, 40] = 0.239 texture[ 72, 40] = 0.000 texture[ 73, 40] = 0.075 texture[ 74, 40] = 0.506 texture[ 75, 40] = 0.678 texture[ 76, 40] = 0.573 texture[ 77, 40] = 0.282 texture[ 78, 40] = 0.408 texture[ 79, 40] = 0.659 texture[ 80, 40] = 0.514 texture[ 81, 40] = 0.549 texture[ 82, 40] = 0.365 texture[ 83, 40] = 0.384 texture[ 84, 40] = 0.384 texture[ 85, 40] = 0.427 texture[ 86, 40] = 0.788 texture[ 87, 40] = 0.843 texture[ 88, 40] = 0.745 texture[ 89, 40] = 0.239 texture[ 90, 40] = 0.090 texture[ 91, 40] = 0.231 texture[ 92, 40] = 0.212 texture[ 93, 40] = 0.529 texture[ 94, 40] = 0.616 texture[ 95, 40] = 0.659 texture[ 96, 40] = 0.800 texture[ 97, 40] = 0.663 texture[ 98, 40] = 0.549 texture[ 99, 40] = 0.773 texture[ 100, 40] = 0.451 texture[ 1, 41] = 0.549 texture[ 2, 41] = 0.212 texture[ 3, 41] = 0.416 texture[ 4, 41] = 0.518 texture[ 5, 41] = 0.506 texture[ 6, 41] = 0.373 texture[ 7, 41] = 0.518 texture[ 8, 41] = 0.306 texture[ 9, 41] = 0.024 texture[ 10, 41] = 0.176 texture[ 11, 41] = 0.275 texture[ 12, 41] = 0.663 texture[ 13, 41] = 0.706 texture[ 14, 41] = 0.529 texture[ 15, 41] = 0.431 texture[ 16, 41] = 0.439 texture[ 17, 41] = 0.365 texture[ 18, 41] = 0.353 texture[ 19, 41] = 0.596 texture[ 20, 41] = 0.706 texture[ 21, 41] = 0.263 texture[ 22, 41] = 0.000 texture[ 23, 41] = 0.086 texture[ 24, 41] = 0.384 texture[ 25, 41] = 0.529 texture[ 26, 41] = 0.275 texture[ 27, 41] = 0.361 texture[ 28, 41] = 0.694 texture[ 29, 41] = 0.902 texture[ 30, 41] = 0.780 texture[ 31, 41] = 0.635 texture[ 32, 41] = 0.373 texture[ 33, 41] = 0.561 texture[ 34, 41] = 0.482 texture[ 35, 41] = 0.584 texture[ 36, 41] = 0.788 texture[ 37, 41] = 0.671 texture[ 38, 41] = 0.463 texture[ 39, 41] = 0.310 texture[ 40, 41] = 0.141 texture[ 41, 41] = 0.396 texture[ 42, 41] = 0.306 texture[ 43, 41] = 0.525 texture[ 44, 41] = 0.659 texture[ 45, 41] = 0.682 texture[ 46, 41] = 0.651 texture[ 47, 41] = 0.769 texture[ 48, 41] = 0.812 texture[ 49, 41] = 0.816 texture[ 50, 41] = 0.616 texture[ 51, 41] = 0.561 texture[ 52, 41] = 0.282 texture[ 53, 41] = 0.408 texture[ 54, 41] = 0.525 texture[ 55, 41] = 0.537 texture[ 56, 41] = 0.373 texture[ 57, 41] = 0.482 texture[ 58, 41] = 0.373 texture[ 59, 41] = 0.035 texture[ 60, 41] = 0.141 texture[ 61, 41] = 0.231 texture[ 62, 41] = 0.580 texture[ 63, 41] = 0.749 texture[ 64, 41] = 0.541 texture[ 65, 41] = 0.408 texture[ 66, 41] = 0.376 texture[ 67, 41] = 0.384 texture[ 68, 41] = 0.329 texture[ 69, 41] = 0.553 texture[ 70, 41] = 0.745 texture[ 71, 41] = 0.396 texture[ 72, 41] = 0.000 texture[ 73, 41] = 0.047 texture[ 74, 41] = 0.353 texture[ 75, 41] = 0.553 texture[ 76, 41] = 0.329 texture[ 77, 41] = 0.251 texture[ 78, 41] = 0.616 texture[ 79, 41] = 0.816 texture[ 80, 41] = 0.773 texture[ 81, 41] = 0.537 texture[ 82, 41] = 0.361 texture[ 83, 41] = 0.596 texture[ 84, 41] = 0.463 texture[ 85, 41] = 0.651 texture[ 86, 41] = 0.773 texture[ 87, 41] = 0.659 texture[ 88, 41] = 0.427 texture[ 89, 41] = 0.275 texture[ 90, 41] = 0.153 texture[ 91, 41] = 0.420 texture[ 92, 41] = 0.329 texture[ 93, 41] = 0.616 texture[ 94, 41] = 0.682 texture[ 95, 41] = 0.671 texture[ 96, 41] = 0.647 texture[ 97, 41] = 0.804 texture[ 98, 41] = 0.859 texture[ 99, 41] = 0.835 texture[ 100, 41] = 0.580 texture[ 1, 42] = 0.659 texture[ 2, 42] = 0.133 texture[ 3, 42] = 0.329 texture[ 4, 42] = 0.627 texture[ 5, 42] = 0.518 texture[ 6, 42] = 0.506 texture[ 7, 42] = 0.616 texture[ 8, 42] = 0.165 texture[ 9, 42] = 0.024 texture[ 10, 42] = 0.482 texture[ 11, 42] = 0.416 texture[ 12, 42] = 0.624 texture[ 13, 42] = 0.616 texture[ 14, 42] = 0.451 texture[ 15, 42] = 0.451 texture[ 16, 42] = 0.506 texture[ 17, 42] = 0.282 texture[ 18, 42] = 0.118 texture[ 19, 42] = 0.404 texture[ 20, 42] = 0.788 texture[ 21, 42] = 0.471 texture[ 22, 42] = 0.176 texture[ 23, 42] = 0.000 texture[ 24, 42] = 0.078 texture[ 25, 42] = 0.102 texture[ 26, 42] = 0.133 texture[ 27, 42] = 0.678 texture[ 28, 42] = 0.788 texture[ 29, 42] = 0.678 texture[ 30, 42] = 0.506 texture[ 31, 42] = 0.349 texture[ 32, 42] = 0.459 texture[ 33, 42] = 0.592 texture[ 34, 42] = 0.451 texture[ 35, 42] = 0.537 texture[ 36, 42] = 0.769 texture[ 37, 42] = 0.616 texture[ 38, 42] = 0.616 texture[ 39, 42] = 0.396 texture[ 40, 42] = 0.122 texture[ 41, 42] = 0.263 texture[ 42, 42] = 0.678 texture[ 43, 42] = 0.761 texture[ 44, 42] = 0.337 texture[ 45, 42] = 0.514 texture[ 46, 42] = 0.463 texture[ 47, 42] = 0.584 texture[ 48, 42] = 0.812 texture[ 49, 42] = 0.647 texture[ 50, 42] = 0.624 texture[ 51, 42] = 0.690 texture[ 52, 42] = 0.239 texture[ 53, 42] = 0.188 texture[ 54, 42] = 0.639 texture[ 55, 42] = 0.541 texture[ 56, 42] = 0.486 texture[ 57, 42] = 0.596 texture[ 58, 42] = 0.275 texture[ 59, 42] = 0.000 texture[ 60, 42] = 0.408 texture[ 61, 42] = 0.439 texture[ 62, 42] = 0.553 texture[ 63, 42] = 0.659 texture[ 64, 42] = 0.459 texture[ 65, 42] = 0.427 texture[ 66, 42] = 0.439 texture[ 67, 42] = 0.318 texture[ 68, 42] = 0.102 texture[ 69, 42] = 0.329 texture[ 70, 42] = 0.757 texture[ 71, 42] = 0.541 texture[ 72, 42] = 0.227 texture[ 73, 42] = 0.024 texture[ 74, 42] = 0.063 texture[ 75, 42] = 0.129 texture[ 76, 42] = 0.086 texture[ 77, 42] = 0.553 texture[ 78, 42] = 0.757 texture[ 79, 42] = 0.486 texture[ 80, 42] = 0.482 texture[ 81, 42] = 0.306 texture[ 82, 42] = 0.506 texture[ 83, 42] = 0.592 texture[ 84, 42] = 0.392 texture[ 85, 42] = 0.592 texture[ 86, 42] = 0.714 texture[ 87, 42] = 0.580 texture[ 88, 42] = 0.596 texture[ 89, 42] = 0.322 texture[ 90, 42] = 0.102 texture[ 91, 42] = 0.294 texture[ 92, 42] = 0.694 texture[ 93, 42] = 0.725 texture[ 94, 42] = 0.310 texture[ 95, 42] = 0.553 texture[ 96, 42] = 0.404 texture[ 97, 42] = 0.651 texture[ 98, 42] = 0.800 texture[ 99, 42] = 0.627 texture[ 100, 42] = 0.647 texture[ 1, 43] = 0.541 texture[ 2, 43] = 0.102 texture[ 3, 43] = 0.122 texture[ 4, 43] = 0.427 texture[ 5, 43] = 0.475 texture[ 6, 43] = 0.482 texture[ 7, 43] = 0.482 texture[ 8, 43] = 0.153 texture[ 9, 43] = 0.000 texture[ 10, 43] = 0.227 texture[ 11, 43] = 0.537 texture[ 12, 43] = 0.553 texture[ 13, 43] = 0.608 texture[ 14, 43] = 0.541 texture[ 15, 43] = 0.573 texture[ 16, 43] = 0.635 texture[ 17, 43] = 0.408 texture[ 18, 43] = 0.451 texture[ 19, 43] = 0.584 texture[ 20, 43] = 0.757 texture[ 21, 43] = 0.627 texture[ 22, 43] = 0.506 texture[ 23, 43] = 0.239 texture[ 24, 43] = 0.173 texture[ 25, 43] = 0.286 texture[ 26, 43] = 0.255 texture[ 27, 43] = 0.702 texture[ 28, 43] = 0.694 texture[ 29, 43] = 0.584 texture[ 30, 43] = 0.561 texture[ 31, 43] = 0.310 texture[ 32, 43] = 0.416 texture[ 33, 43] = 0.624 texture[ 34, 43] = 0.486 texture[ 35, 43] = 0.337 texture[ 36, 43] = 0.706 texture[ 37, 43] = 0.780 texture[ 38, 43] = 0.757 texture[ 39, 43] = 0.475 texture[ 40, 43] = 0.110 texture[ 41, 43] = 0.098 texture[ 42, 43] = 0.671 texture[ 43, 43] = 0.925 texture[ 44, 43] = 0.529 texture[ 45, 43] = 0.525 texture[ 46, 43] = 0.651 texture[ 47, 43] = 0.549 texture[ 48, 43] = 0.616 texture[ 49, 43] = 0.392 texture[ 50, 43] = 0.427 texture[ 51, 43] = 0.553 texture[ 52, 43] = 0.200 texture[ 53, 43] = 0.043 texture[ 54, 43] = 0.384 texture[ 55, 43] = 0.451 texture[ 56, 43] = 0.475 texture[ 57, 43] = 0.463 texture[ 58, 43] = 0.239 texture[ 59, 43] = 0.000 texture[ 60, 43] = 0.145 texture[ 61, 43] = 0.506 texture[ 62, 43] = 0.561 texture[ 63, 43] = 0.608 texture[ 64, 43] = 0.549 texture[ 65, 43] = 0.569 texture[ 66, 43] = 0.596 texture[ 67, 43] = 0.384 texture[ 68, 43] = 0.427 texture[ 69, 43] = 0.549 texture[ 70, 43] = 0.769 texture[ 71, 43] = 0.624 texture[ 72, 43] = 0.549 texture[ 73, 43] = 0.255 texture[ 74, 43] = 0.157 texture[ 75, 43] = 0.298 texture[ 76, 43] = 0.243 texture[ 77, 43] = 0.627 texture[ 78, 43] = 0.725 texture[ 79, 43] = 0.475 texture[ 80, 43] = 0.416 texture[ 81, 43] = 0.337 texture[ 82, 43] = 0.471 texture[ 83, 43] = 0.663 texture[ 84, 43] = 0.384 texture[ 85, 43] = 0.384 texture[ 86, 43] = 0.761 texture[ 87, 43] = 0.773 texture[ 88, 43] = 0.725 texture[ 89, 43] = 0.353 texture[ 90, 43] = 0.075 texture[ 91, 43] = 0.141 texture[ 92, 43] = 0.773 texture[ 93, 43] = 0.882 texture[ 94, 43] = 0.502 texture[ 95, 43] = 0.549 texture[ 96, 43] = 0.596 texture[ 97, 43] = 0.518 texture[ 98, 43] = 0.549 texture[ 99, 43] = 0.341 texture[ 100, 43] = 0.463 texture[ 1, 44] = 0.396 texture[ 2, 44] = 0.047 texture[ 3, 44] = 0.000 texture[ 4, 44] = 0.188 texture[ 5, 44] = 0.616 texture[ 6, 44] = 0.624 texture[ 7, 44] = 0.549 texture[ 8, 44] = 0.341 texture[ 9, 44] = 0.173 texture[ 10, 44] = 0.322 texture[ 11, 44] = 0.376 texture[ 12, 44] = 0.431 texture[ 13, 44] = 0.396 texture[ 14, 44] = 0.384 texture[ 15, 44] = 0.404 texture[ 16, 44] = 0.549 texture[ 17, 44] = 0.227 texture[ 18, 44] = 0.561 texture[ 19, 44] = 0.541 texture[ 20, 44] = 0.757 texture[ 21, 44] = 0.847 texture[ 22, 44] = 0.502 texture[ 23, 44] = 0.176 texture[ 24, 44] = 0.122 texture[ 25, 44] = 0.718 texture[ 26, 44] = 0.890 texture[ 27, 44] = 0.596 texture[ 28, 44] = 0.459 texture[ 29, 44] = 0.529 texture[ 30, 44] = 0.608 texture[ 31, 44] = 0.502 texture[ 32, 44] = 0.384 texture[ 33, 44] = 0.584 texture[ 34, 44] = 0.427 texture[ 35, 44] = 0.200 texture[ 36, 44] = 0.529 texture[ 37, 44] = 1.000 texture[ 38, 44] = 0.898 texture[ 39, 44] = 0.725 texture[ 40, 44] = 0.153 texture[ 41, 44] = 0.024 texture[ 42, 44] = 0.596 texture[ 43, 44] = 0.773 texture[ 44, 44] = 0.647 texture[ 45, 44] = 0.463 texture[ 46, 44] = 0.608 texture[ 47, 44] = 0.714 texture[ 48, 44] = 0.635 texture[ 49, 44] = 0.592 texture[ 50, 44] = 0.792 texture[ 51, 44] = 0.514 texture[ 52, 44] = 0.098 texture[ 53, 44] = 0.000 texture[ 54, 44] = 0.110 texture[ 55, 44] = 0.537 texture[ 56, 44] = 0.635 texture[ 57, 44] = 0.537 texture[ 58, 44] = 0.431 texture[ 59, 44] = 0.118 texture[ 60, 44] = 0.318 texture[ 61, 44] = 0.353 texture[ 62, 44] = 0.459 texture[ 63, 44] = 0.365 texture[ 64, 44] = 0.404 texture[ 65, 44] = 0.349 texture[ 66, 44] = 0.584 texture[ 67, 44] = 0.200 texture[ 68, 44] = 0.482 texture[ 69, 44] = 0.569 texture[ 70, 44] = 0.690 texture[ 71, 44] = 0.843 texture[ 72, 44] = 0.580 texture[ 73, 44] = 0.227 texture[ 74, 44] = 0.086 texture[ 75, 44] = 0.635 texture[ 76, 44] = 0.922 texture[ 77, 44] = 0.659 texture[ 78, 44] = 0.416 texture[ 79, 44] = 0.580 texture[ 80, 44] = 0.561 texture[ 81, 44] = 0.459 texture[ 82, 44] = 0.404 texture[ 83, 44] = 0.627 texture[ 84, 44] = 0.329 texture[ 85, 44] = 0.231 texture[ 86, 44] = 0.694 texture[ 87, 44] = 1.000 texture[ 88, 44] = 0.847 texture[ 89, 44] = 0.584 texture[ 90, 44] = 0.090 texture[ 91, 44] = 0.078 texture[ 92, 44] = 0.714 texture[ 93, 44] = 0.733 texture[ 94, 44] = 0.635 texture[ 95, 44] = 0.447 texture[ 96, 44] = 0.651 texture[ 97, 44] = 0.678 texture[ 98, 44] = 0.592 texture[ 99, 44] = 0.647 texture[ 100, 44] = 0.769 texture[ 1, 45] = 0.431 texture[ 2, 45] = 0.075 texture[ 3, 45] = 0.012 texture[ 4, 45] = 0.196 texture[ 5, 45] = 0.671 texture[ 6, 45] = 0.694 texture[ 7, 45] = 0.635 texture[ 8, 45] = 0.447 texture[ 9, 45] = 0.416 texture[ 10, 45] = 0.482 texture[ 11, 45] = 0.392 texture[ 12, 45] = 0.396 texture[ 13, 45] = 0.506 texture[ 14, 45] = 0.275 texture[ 15, 45] = 0.275 texture[ 16, 45] = 0.471 texture[ 17, 45] = 0.173 texture[ 18, 45] = 0.439 texture[ 19, 45] = 0.408 texture[ 20, 45] = 0.584 texture[ 21, 45] = 0.878 texture[ 22, 45] = 0.475 texture[ 23, 45] = 0.024 texture[ 24, 45] = 0.020 texture[ 25, 45] = 0.635 texture[ 26, 45] = 1.000 texture[ 27, 45] = 0.592 texture[ 28, 45] = 0.549 texture[ 29, 45] = 0.867 texture[ 30, 45] = 0.824 texture[ 31, 45] = 0.706 texture[ 32, 45] = 0.608 texture[ 33, 45] = 0.635 texture[ 34, 45] = 0.141 texture[ 35, 45] = 0.133 texture[ 36, 45] = 0.322 texture[ 37, 45] = 0.835 texture[ 38, 45] = 0.882 texture[ 39, 45] = 0.914 texture[ 40, 45] = 0.286 texture[ 41, 45] = 0.000 texture[ 42, 45] = 0.463 texture[ 43, 45] = 0.749 texture[ 44, 45] = 0.537 texture[ 45, 45] = 0.282 texture[ 46, 45] = 0.659 texture[ 47, 45] = 0.761 texture[ 48, 45] = 0.678 texture[ 49, 45] = 0.749 texture[ 50, 45] = 1.000 texture[ 51, 45] = 0.608 texture[ 52, 45] = 0.098 texture[ 53, 45] = 0.020 texture[ 54, 45] = 0.133 texture[ 55, 45] = 0.584 texture[ 56, 45] = 0.694 texture[ 57, 45] = 0.635 texture[ 58, 45] = 0.463 texture[ 59, 45] = 0.396 texture[ 60, 45] = 0.463 texture[ 61, 45] = 0.416 texture[ 62, 45] = 0.384 texture[ 63, 45] = 0.482 texture[ 64, 45] = 0.373 texture[ 65, 45] = 0.251 texture[ 66, 45] = 0.529 texture[ 67, 45] = 0.165 texture[ 68, 45] = 0.361 texture[ 69, 45] = 0.506 texture[ 70, 45] = 0.502 texture[ 71, 45] = 0.871 texture[ 72, 45] = 0.584 texture[ 73, 45] = 0.078 texture[ 74, 45] = 0.000 texture[ 75, 45] = 0.514 texture[ 76, 45] = 1.000 texture[ 77, 45] = 0.694 texture[ 78, 45] = 0.502 texture[ 79, 45] = 0.788 texture[ 80, 45] = 0.725 texture[ 81, 45] = 0.518 texture[ 82, 45] = 0.627 texture[ 83, 45] = 0.596 texture[ 84, 45] = 0.086 texture[ 85, 45] = 0.153 texture[ 86, 45] = 0.431 texture[ 87, 45] = 0.847 texture[ 88, 45] = 0.855 texture[ 89, 45] = 0.827 texture[ 90, 45] = 0.188 texture[ 91, 45] = 0.024 texture[ 92, 45] = 0.604 texture[ 93, 45] = 0.733 texture[ 94, 45] = 0.471 texture[ 95, 45] = 0.337 texture[ 96, 45] = 0.733 texture[ 97, 45] = 0.761 texture[ 98, 45] = 0.706 texture[ 99, 45] = 0.835 texture[ 100, 45] = 1.000 texture[ 1, 46] = 0.294 texture[ 2, 46] = 0.145 texture[ 3, 46] = 0.020 texture[ 4, 46] = 0.341 texture[ 5, 46] = 0.541 texture[ 6, 46] = 0.373 texture[ 7, 46] = 0.463 texture[ 8, 46] = 0.482 texture[ 9, 46] = 0.361 texture[ 10, 46] = 0.604 texture[ 11, 46] = 0.561 texture[ 12, 46] = 0.475 texture[ 13, 46] = 0.671 texture[ 14, 46] = 0.275 texture[ 15, 46] = 0.184 texture[ 16, 46] = 0.592 texture[ 17, 46] = 0.459 texture[ 18, 46] = 0.408 texture[ 19, 46] = 0.263 texture[ 20, 46] = 0.365 texture[ 21, 46] = 0.592 texture[ 22, 46] = 0.267 texture[ 23, 46] = 0.075 texture[ 24, 46] = 0.067 texture[ 25, 46] = 0.502 texture[ 26, 46] = 0.902 texture[ 27, 46] = 0.737 texture[ 28, 46] = 0.737 texture[ 29, 46] = 0.957 texture[ 30, 46] = 0.843 texture[ 31, 46] = 0.871 texture[ 32, 46] = 0.792 texture[ 33, 46] = 0.725 texture[ 34, 46] = 0.451 texture[ 35, 46] = 0.243 texture[ 36, 46] = 0.067 texture[ 37, 46] = 0.439 texture[ 38, 46] = 0.859 texture[ 39, 46] = 0.980 texture[ 40, 46] = 0.525 texture[ 41, 46] = 0.000 texture[ 42, 46] = 0.157 texture[ 43, 46] = 0.486 texture[ 44, 46] = 0.361 texture[ 45, 46] = 0.090 texture[ 46, 46] = 0.494 texture[ 47, 46] = 0.529 texture[ 48, 46] = 0.573 texture[ 49, 46] = 0.761 texture[ 50, 46] = 0.725 texture[ 51, 46] = 0.310 texture[ 52, 46] = 0.184 texture[ 53, 46] = 0.012 texture[ 54, 46] = 0.267 texture[ 55, 46] = 0.549 texture[ 56, 46] = 0.404 texture[ 57, 46] = 0.439 texture[ 58, 46] = 0.486 texture[ 59, 46] = 0.349 texture[ 60, 46] = 0.537 texture[ 61, 46] = 0.592 texture[ 62, 46] = 0.463 texture[ 63, 46] = 0.635 texture[ 64, 46] = 0.373 texture[ 65, 46] = 0.145 texture[ 66, 46] = 0.573 texture[ 67, 46] = 0.506 texture[ 68, 46] = 0.392 texture[ 69, 46] = 0.365 texture[ 70, 46] = 0.294 texture[ 71, 46] = 0.647 texture[ 72, 46] = 0.337 texture[ 73, 46] = 0.102 texture[ 74, 46] = 0.047 texture[ 75, 46] = 0.408 texture[ 76, 46] = 0.871 texture[ 77, 46] = 0.761 texture[ 78, 46] = 0.706 texture[ 79, 46] = 0.816 texture[ 80, 46] = 0.514 texture[ 81, 46] = 0.635 texture[ 82, 46] = 0.816 texture[ 83, 46] = 0.678 texture[ 84, 46] = 0.427 texture[ 85, 46] = 0.200 texture[ 86, 46] = 0.075 texture[ 87, 46] = 0.569 texture[ 88, 46] = 0.882 texture[ 89, 46] = 0.945 texture[ 90, 46] = 0.431 texture[ 91, 46] = 0.000 texture[ 92, 46] = 0.267 texture[ 93, 46] = 0.482 texture[ 94, 46] = 0.318 texture[ 95, 46] = 0.141 texture[ 96, 46] = 0.553 texture[ 97, 46] = 0.525 texture[ 98, 46] = 0.616 texture[ 99, 46] = 0.780 texture[ 100, 46] = 0.651 texture[ 1, 47] = 0.196 texture[ 2, 47] = 0.208 texture[ 3, 47] = 0.047 texture[ 4, 47] = 0.404 texture[ 5, 47] = 0.541 texture[ 6, 47] = 0.176 texture[ 7, 47] = 0.306 texture[ 8, 47] = 0.451 texture[ 9, 47] = 0.373 texture[ 10, 47] = 0.408 texture[ 11, 47] = 0.427 texture[ 12, 47] = 0.541 texture[ 13, 47] = 0.678 texture[ 14, 47] = 0.306 texture[ 15, 47] = 0.220 texture[ 16, 47] = 0.647 texture[ 17, 47] = 0.608 texture[ 18, 47] = 0.447 texture[ 19, 47] = 0.439 texture[ 20, 47] = 0.475 texture[ 21, 47] = 0.243 texture[ 22, 47] = 0.208 texture[ 23, 47] = 0.153 texture[ 24, 47] = 0.616 texture[ 25, 47] = 0.463 texture[ 26, 47] = 0.463 texture[ 27, 47] = 0.678 texture[ 28, 47] = 0.659 texture[ 29, 47] = 0.761 texture[ 30, 47] = 0.624 texture[ 31, 47] = 0.714 texture[ 32, 47] = 0.569 texture[ 33, 47] = 0.604 texture[ 34, 47] = 0.690 texture[ 35, 47] = 0.635 texture[ 36, 47] = 0.110 texture[ 37, 47] = 0.298 texture[ 38, 47] = 0.725 texture[ 39, 47] = 0.988 texture[ 40, 47] = 0.988 texture[ 41, 47] = 0.341 texture[ 42, 47] = 0.012 texture[ 43, 47] = 0.475 texture[ 44, 47] = 0.537 texture[ 45, 47] = 0.145 texture[ 46, 47] = 0.420 texture[ 47, 47] = 0.518 texture[ 48, 47] = 0.541 texture[ 49, 47] = 0.757 texture[ 50, 47] = 0.569 texture[ 51, 47] = 0.145 texture[ 52, 47] = 0.231 texture[ 53, 47] = 0.055 texture[ 54, 47] = 0.306 texture[ 55, 47] = 0.573 texture[ 56, 47] = 0.200 texture[ 57, 47] = 0.251 texture[ 58, 47] = 0.486 texture[ 59, 47] = 0.353 texture[ 60, 47] = 0.404 texture[ 61, 47] = 0.420 texture[ 62, 47] = 0.506 texture[ 63, 47] = 0.651 texture[ 64, 47] = 0.392 texture[ 65, 47] = 0.184 texture[ 66, 47] = 0.584 texture[ 67, 47] = 0.651 texture[ 68, 47] = 0.486 texture[ 69, 47] = 0.404 texture[ 70, 47] = 0.494 texture[ 71, 47] = 0.306 texture[ 72, 47] = 0.208 texture[ 73, 47] = 0.141 texture[ 74, 47] = 0.529 texture[ 75, 47] = 0.525 texture[ 76, 47] = 0.416 texture[ 77, 47] = 0.682 texture[ 78, 47] = 0.627 texture[ 79, 47] = 0.627 texture[ 80, 47] = 0.549 texture[ 81, 47] = 0.678 texture[ 82, 47] = 0.561 texture[ 83, 47] = 0.580 texture[ 84, 47] = 0.718 texture[ 85, 47] = 0.553 texture[ 86, 47] = 0.075 texture[ 87, 47] = 0.396 texture[ 88, 47] = 0.769 texture[ 89, 47] = 0.988 texture[ 90, 47] = 0.945 texture[ 91, 47] = 0.239 texture[ 92, 47] = 0.118 texture[ 93, 47] = 0.514 texture[ 94, 47] = 0.463 texture[ 95, 47] = 0.157 texture[ 96, 47] = 0.471 texture[ 97, 47] = 0.463 texture[ 98, 47] = 0.549 texture[ 99, 47] = 0.761 texture[ 100, 47] = 0.482 texture[ 1, 48] = 0.251 texture[ 2, 48] = 0.306 texture[ 3, 48] = 0.102 texture[ 4, 48] = 0.078 texture[ 5, 48] = 0.525 texture[ 6, 48] = 0.596 texture[ 7, 48] = 0.392 texture[ 8, 48] = 0.145 texture[ 9, 48] = 0.102 texture[ 10, 48] = 0.349 texture[ 11, 48] = 0.529 texture[ 12, 48] = 0.525 texture[ 13, 48] = 0.396 texture[ 14, 48] = 0.157 texture[ 15, 48] = 0.298 texture[ 16, 48] = 0.541 texture[ 17, 48] = 0.725 texture[ 18, 48] = 0.553 texture[ 19, 48] = 0.541 texture[ 20, 48] = 0.627 texture[ 21, 48] = 0.220 texture[ 22, 48] = 0.063 texture[ 23, 48] = 0.090 texture[ 24, 48] = 0.718 texture[ 25, 48] = 0.608 texture[ 26, 48] = 0.604 texture[ 27, 48] = 0.757 texture[ 28, 48] = 0.843 texture[ 29, 48] = 0.659 texture[ 30, 48] = 0.459 texture[ 31, 48] = 0.463 texture[ 32, 48] = 0.133 texture[ 33, 48] = 0.392 texture[ 34, 48] = 0.549 texture[ 35, 48] = 0.749 texture[ 36, 48] = 0.282 texture[ 37, 48] = 0.416 texture[ 38, 48] = 0.592 texture[ 39, 48] = 0.659 texture[ 40, 48] = 0.769 texture[ 41, 48] = 0.608 texture[ 42, 48] = 0.310 texture[ 43, 48] = 0.678 texture[ 44, 48] = 0.365 texture[ 45, 48] = 0.376 texture[ 46, 48] = 0.529 texture[ 47, 48] = 0.541 texture[ 48, 48] = 0.639 texture[ 49, 48] = 0.804 texture[ 50, 48] = 0.596 texture[ 51, 48] = 0.184 texture[ 52, 48] = 0.306 texture[ 53, 48] = 0.157 texture[ 54, 48] = 0.035 texture[ 55, 48] = 0.408 texture[ 56, 48] = 0.647 texture[ 57, 48] = 0.447 texture[ 58, 48] = 0.220 texture[ 59, 48] = 0.075 texture[ 60, 48] = 0.294 texture[ 61, 48] = 0.471 texture[ 62, 48] = 0.525 texture[ 63, 48] = 0.471 texture[ 64, 48] = 0.153 texture[ 65, 48] = 0.227 texture[ 66, 48] = 0.482 texture[ 67, 48] = 0.702 texture[ 68, 48] = 0.596 texture[ 69, 48] = 0.459 texture[ 70, 48] = 0.651 texture[ 71, 48] = 0.267 texture[ 72, 48] = 0.102 texture[ 73, 48] = 0.047 texture[ 74, 48] = 0.624 texture[ 75, 48] = 0.647 texture[ 76, 48] = 0.541 texture[ 77, 48] = 0.702 texture[ 78, 48] = 0.800 texture[ 79, 48] = 0.549 texture[ 80, 48] = 0.647 texture[ 81, 48] = 0.463 texture[ 82, 48] = 0.133 texture[ 83, 48] = 0.471 texture[ 84, 48] = 0.596 texture[ 85, 48] = 0.745 texture[ 86, 48] = 0.208 texture[ 87, 48] = 0.459 texture[ 88, 48] = 0.592 texture[ 89, 48] = 0.682 texture[ 90, 48] = 0.788 texture[ 91, 48] = 0.580 texture[ 92, 48] = 0.431 texture[ 93, 48] = 0.663 texture[ 94, 48] = 0.298 texture[ 95, 48] = 0.451 texture[ 96, 48] = 0.541 texture[ 97, 48] = 0.561 texture[ 98, 48] = 0.678 texture[ 99, 48] = 0.800 texture[ 100, 48] = 0.486 texture[ 1, 49] = 0.514 texture[ 2, 49] = 0.494 texture[ 3, 49] = 0.145 texture[ 4, 49] = 0.000 texture[ 5, 49] = 0.420 texture[ 6, 49] = 0.733 texture[ 7, 49] = 0.475 texture[ 8, 49] = 0.427 texture[ 9, 49] = 0.145 texture[ 10, 49] = 0.322 texture[ 11, 49] = 0.604 texture[ 12, 49] = 0.788 texture[ 13, 49] = 0.824 texture[ 14, 49] = 0.282 texture[ 15, 49] = 0.165 texture[ 16, 49] = 0.404 texture[ 17, 49] = 0.718 texture[ 18, 49] = 0.718 texture[ 19, 49] = 0.349 texture[ 20, 49] = 0.255 texture[ 21, 49] = 0.176 texture[ 22, 49] = 0.102 texture[ 23, 49] = 0.208 texture[ 24, 49] = 0.294 texture[ 25, 49] = 0.337 texture[ 26, 49] = 0.890 texture[ 27, 49] = 0.976 texture[ 28, 49] = 0.976 texture[ 29, 49] = 0.898 texture[ 30, 49] = 0.635 texture[ 31, 49] = 0.376 texture[ 32, 49] = 0.075 texture[ 33, 49] = 0.188 texture[ 34, 49] = 0.471 texture[ 35, 49] = 0.471 texture[ 36, 49] = 0.396 texture[ 37, 49] = 0.475 texture[ 38, 49] = 0.608 texture[ 39, 49] = 0.663 texture[ 40, 49] = 0.463 texture[ 41, 49] = 0.537 texture[ 42, 49] = 0.624 texture[ 43, 49] = 0.396 texture[ 44, 49] = 0.133 texture[ 45, 49] = 0.494 texture[ 46, 49] = 0.596 texture[ 47, 49] = 0.541 texture[ 48, 49] = 0.671 texture[ 49, 49] = 0.733 texture[ 50, 49] = 0.624 texture[ 51, 49] = 0.486 texture[ 52, 49] = 0.549 texture[ 53, 49] = 0.239 texture[ 54, 49] = 0.000 texture[ 55, 49] = 0.294 texture[ 56, 49] = 0.812 texture[ 57, 49] = 0.502 texture[ 58, 49] = 0.463 texture[ 59, 49] = 0.153 texture[ 60, 49] = 0.267 texture[ 61, 49] = 0.549 texture[ 62, 49] = 0.769 texture[ 63, 49] = 0.867 texture[ 64, 49] = 0.337 texture[ 65, 49] = 0.145 texture[ 66, 49] = 0.337 texture[ 67, 49] = 0.678 texture[ 68, 49] = 0.780 texture[ 69, 49] = 0.416 texture[ 70, 49] = 0.267 texture[ 71, 49] = 0.208 texture[ 72, 49] = 0.110 texture[ 73, 49] = 0.188 texture[ 74, 49] = 0.337 texture[ 75, 49] = 0.275 texture[ 76, 49] = 0.816 texture[ 77, 49] = 0.980 texture[ 78, 49] = 0.965 texture[ 79, 49] = 0.792 texture[ 80, 49] = 0.627 texture[ 81, 49] = 0.263 texture[ 82, 49] = 0.067 texture[ 83, 49] = 0.263 texture[ 84, 49] = 0.514 texture[ 85, 49] = 0.459 texture[ 86, 49] = 0.392 texture[ 87, 49] = 0.475 texture[ 88, 49] = 0.616 texture[ 89, 49] = 0.627 texture[ 90, 49] = 0.459 texture[ 91, 49] = 0.561 texture[ 92, 49] = 0.627 texture[ 93, 49] = 0.286 texture[ 94, 49] = 0.176 texture[ 95, 49] = 0.553 texture[ 96, 49] = 0.584 texture[ 97, 49] = 0.561 texture[ 98, 49] = 0.706 texture[ 99, 49] = 0.725 texture[ 100, 49] = 0.584 texture[ 1, 50] = 0.647 texture[ 2, 50] = 0.757 texture[ 3, 50] = 0.298 texture[ 4, 50] = 0.000 texture[ 5, 50] = 0.365 texture[ 6, 50] = 0.580 texture[ 7, 50] = 0.427 texture[ 8, 50] = 0.361 texture[ 9, 50] = 0.263 texture[ 10, 50] = 0.322 texture[ 11, 50] = 0.529 texture[ 12, 50] = 0.659 texture[ 13, 50] = 0.882 texture[ 14, 50] = 0.275 texture[ 15, 50] = 0.090 texture[ 16, 50] = 0.459 texture[ 17, 50] = 0.718 texture[ 18, 50] = 0.725 texture[ 19, 50] = 0.525 texture[ 20, 50] = 0.239 texture[ 21, 50] = 0.078 texture[ 22, 50] = 0.173 texture[ 23, 50] = 0.420 texture[ 24, 50] = 0.251 texture[ 25, 50] = 0.392 texture[ 26, 50] = 0.757 texture[ 27, 50] = 0.773 texture[ 28, 50] = 0.878 texture[ 29, 50] = 0.957 texture[ 30, 50] = 0.651 texture[ 31, 50] = 0.396 texture[ 32, 50] = 0.286 texture[ 33, 50] = 0.322 texture[ 34, 50] = 0.659 texture[ 35, 50] = 0.220 texture[ 36, 50] = 0.361 texture[ 37, 50] = 0.827 texture[ 38, 50] = 0.757 texture[ 39, 50] = 0.694 texture[ 40, 50] = 0.525 texture[ 41, 50] = 0.471 texture[ 42, 50] = 0.416 texture[ 43, 50] = 0.118 texture[ 44, 50] = 0.075 texture[ 45, 50] = 0.416 texture[ 46, 50] = 0.627 texture[ 47, 50] = 0.608 texture[ 48, 50] = 0.718 texture[ 49, 50] = 0.745 texture[ 50, 50] = 0.659 texture[ 51, 50] = 0.663 texture[ 52, 50] = 0.773 texture[ 53, 50] = 0.459 texture[ 54, 50] = 0.000 texture[ 55, 50] = 0.282 texture[ 56, 50] = 0.596 texture[ 57, 50] = 0.408 texture[ 58, 50] = 0.365 texture[ 59, 50] = 0.286 texture[ 60, 50] = 0.267 texture[ 61, 50] = 0.506 texture[ 62, 50] = 0.596 texture[ 63, 50] = 0.843 texture[ 64, 50] = 0.384 texture[ 65, 50] = 0.086 texture[ 66, 50] = 0.384 texture[ 67, 50] = 0.659 texture[ 68, 50] = 0.706 texture[ 69, 50] = 0.561 texture[ 70, 50] = 0.298 texture[ 71, 50] = 0.098 texture[ 72, 50] = 0.145 texture[ 73, 50] = 0.353 texture[ 74, 50] = 0.310 texture[ 75, 50] = 0.329 texture[ 76, 50] = 0.718 texture[ 77, 50] = 0.804 texture[ 78, 50] = 0.855 texture[ 79, 50] = 0.867 texture[ 80, 50] = 0.580 texture[ 81, 50] = 0.298 texture[ 82, 50] = 0.243 texture[ 83, 50] = 0.392 texture[ 84, 50] = 0.639 texture[ 85, 50] = 0.176 texture[ 86, 50] = 0.475 texture[ 87, 50] = 0.843 texture[ 88, 50] = 0.745 texture[ 89, 50] = 0.659 texture[ 90, 50] = 0.502 texture[ 91, 50] = 0.482 texture[ 92, 50] = 0.365 texture[ 93, 50] = 0.047 texture[ 94, 50] = 0.145 texture[ 95, 50] = 0.494 texture[ 96, 50] = 0.627 texture[ 97, 50] = 0.608 texture[ 98, 50] = 0.745 texture[ 99, 50] = 0.749 texture[ 100, 50] = 0.651 texture[ 1, 51] = 0.706 texture[ 2, 51] = 0.714 texture[ 3, 51] = 0.420 texture[ 4, 51] = 0.008 texture[ 5, 51] = 0.310 texture[ 6, 51] = 0.584 texture[ 7, 51] = 0.651 texture[ 8, 51] = 0.616 texture[ 9, 51] = 0.561 texture[ 10, 51] = 0.561 texture[ 11, 51] = 0.780 texture[ 12, 51] = 0.843 texture[ 13, 51] = 0.694 texture[ 14, 51] = 0.396 texture[ 15, 51] = 0.584 texture[ 16, 51] = 0.624 texture[ 17, 51] = 0.584 texture[ 18, 51] = 0.694 texture[ 19, 51] = 0.718 texture[ 20, 51] = 0.196 texture[ 21, 51] = 0.055 texture[ 22, 51] = 0.141 texture[ 23, 51] = 0.102 texture[ 24, 51] = 0.408 texture[ 25, 51] = 0.541 texture[ 26, 51] = 0.475 texture[ 27, 51] = 0.431 texture[ 28, 51] = 0.573 texture[ 29, 51] = 0.647 texture[ 30, 51] = 0.365 texture[ 31, 51] = 0.373 texture[ 32, 51] = 0.541 texture[ 33, 51] = 0.267 texture[ 34, 51] = 0.459 texture[ 35, 51] = 0.573 texture[ 36, 51] = 0.494 texture[ 37, 51] = 0.914 texture[ 38, 51] = 0.843 texture[ 39, 51] = 0.663 texture[ 40, 51] = 0.525 texture[ 41, 51] = 0.475 texture[ 42, 51] = 0.463 texture[ 43, 51] = 0.075 texture[ 44, 51] = 0.286 texture[ 45, 51] = 0.392 texture[ 46, 51] = 0.506 texture[ 47, 51] = 0.706 texture[ 48, 51] = 0.451 texture[ 49, 51] = 0.651 texture[ 50, 51] = 0.718 texture[ 51, 51] = 0.737 texture[ 52, 51] = 0.702 texture[ 53, 51] = 0.580 texture[ 54, 51] = 0.063 texture[ 55, 51] = 0.275 texture[ 56, 51] = 0.573 texture[ 57, 51] = 0.639 texture[ 58, 51] = 0.627 texture[ 59, 51] = 0.569 texture[ 60, 51] = 0.553 texture[ 61, 51] = 0.733 texture[ 62, 51] = 0.827 texture[ 63, 51] = 0.714 texture[ 64, 51] = 0.373 texture[ 65, 51] = 0.529 texture[ 66, 51] = 0.635 texture[ 67, 51] = 0.580 texture[ 68, 51] = 0.627 texture[ 69, 51] = 0.788 texture[ 70, 51] = 0.318 texture[ 71, 51] = 0.035 texture[ 72, 51] = 0.157 texture[ 73, 51] = 0.075 texture[ 74, 51] = 0.318 texture[ 75, 51] = 0.553 texture[ 76, 51] = 0.514 texture[ 77, 51] = 0.463 texture[ 78, 51] = 0.482 texture[ 79, 51] = 0.561 texture[ 80, 51] = 0.529 texture[ 81, 51] = 0.494 texture[ 82, 51] = 0.518 texture[ 83, 51] = 0.200 texture[ 84, 51] = 0.525 texture[ 85, 51] = 0.525 texture[ 86, 51] = 0.541 texture[ 87, 51] = 0.933 texture[ 88, 51] = 0.792 texture[ 89, 51] = 0.651 texture[ 90, 51] = 0.518 texture[ 91, 51] = 0.514 texture[ 92, 51] = 0.365 texture[ 93, 51] = 0.067 texture[ 94, 51] = 0.322 texture[ 95, 51] = 0.384 texture[ 96, 51] = 0.529 texture[ 97, 51] = 0.639 texture[ 98, 51] = 0.475 texture[ 99, 51] = 0.706 texture[ 100, 51] = 0.718 texture[ 1, 52] = 0.651 texture[ 2, 52] = 0.404 texture[ 3, 52] = 0.298 texture[ 4, 52] = 0.275 texture[ 5, 52] = 0.639 texture[ 6, 52] = 0.635 texture[ 7, 52] = 0.651 texture[ 8, 52] = 0.482 texture[ 9, 52] = 0.608 texture[ 10, 52] = 0.502 texture[ 11, 52] = 0.659 texture[ 12, 52] = 0.859 texture[ 13, 52] = 0.404 texture[ 14, 52] = 0.286 texture[ 15, 52] = 0.682 texture[ 16, 52] = 0.627 texture[ 17, 52] = 0.659 texture[ 18, 52] = 0.824 texture[ 19, 52] = 0.561 texture[ 20, 52] = 0.294 texture[ 21, 52] = 0.439 texture[ 22, 52] = 0.267 texture[ 23, 52] = 0.502 texture[ 24, 52] = 0.737 texture[ 25, 52] = 0.757 texture[ 26, 52] = 0.584 texture[ 27, 52] = 0.404 texture[ 28, 52] = 0.439 texture[ 29, 52] = 0.569 texture[ 30, 52] = 0.514 texture[ 31, 52] = 0.431 texture[ 32, 52] = 0.627 texture[ 33, 52] = 0.635 texture[ 34, 52] = 0.420 texture[ 35, 52] = 0.529 texture[ 36, 52] = 0.361 texture[ 37, 52] = 0.706 texture[ 38, 52] = 0.902 texture[ 39, 52] = 0.867 texture[ 40, 52] = 0.616 texture[ 41, 52] = 0.525 texture[ 42, 52] = 0.373 texture[ 43, 52] = 0.098 texture[ 44, 52] = 0.616 texture[ 45, 52] = 0.553 texture[ 46, 52] = 0.518 texture[ 47, 52] = 0.541 texture[ 48, 52] = 0.427 texture[ 49, 52] = 0.529 texture[ 50, 52] = 0.651 texture[ 51, 52] = 0.663 texture[ 52, 52] = 0.471 texture[ 53, 52] = 0.310 texture[ 54, 52] = 0.267 texture[ 55, 52] = 0.608 texture[ 56, 52] = 0.635 texture[ 57, 52] = 0.659 texture[ 58, 52] = 0.486 texture[ 59, 52] = 0.596 texture[ 60, 52] = 0.525 texture[ 61, 52] = 0.584 texture[ 62, 52] = 0.867 texture[ 63, 52] = 0.596 texture[ 64, 52] = 0.208 texture[ 65, 52] = 0.627 texture[ 66, 52] = 0.639 texture[ 67, 52] = 0.627 texture[ 68, 52] = 0.761 texture[ 69, 52] = 0.678 texture[ 70, 52] = 0.286 texture[ 71, 52] = 0.463 texture[ 72, 52] = 0.275 texture[ 73, 52] = 0.451 texture[ 74, 52] = 0.714 texture[ 75, 52] = 0.780 texture[ 76, 52] = 0.624 texture[ 77, 52] = 0.408 texture[ 78, 52] = 0.408 texture[ 79, 52] = 0.427 texture[ 80, 52] = 0.486 texture[ 81, 52] = 0.392 texture[ 82, 52] = 0.569 texture[ 83, 52] = 0.561 texture[ 84, 52] = 0.431 texture[ 85, 52] = 0.494 texture[ 86, 52] = 0.396 texture[ 87, 52] = 0.757 texture[ 88, 52] = 0.898 texture[ 89, 52] = 0.855 texture[ 90, 52] = 0.584 texture[ 91, 52] = 0.537 texture[ 92, 52] = 0.220 texture[ 93, 52] = 0.157 texture[ 94, 52] = 0.627 texture[ 95, 52] = 0.529 texture[ 96, 52] = 0.502 texture[ 97, 52] = 0.486 texture[ 98, 52] = 0.427 texture[ 99, 52] = 0.580 texture[ 100, 52] = 0.659 texture[ 1, 53] = 0.788 texture[ 2, 53] = 0.459 texture[ 3, 53] = 0.043 texture[ 4, 53] = 0.404 texture[ 5, 53] = 0.769 texture[ 6, 53] = 0.843 texture[ 7, 53] = 0.859 texture[ 8, 53] = 0.549 texture[ 9, 53] = 0.569 texture[ 10, 53] = 0.447 texture[ 11, 53] = 0.529 texture[ 12, 53] = 0.682 texture[ 13, 53] = 0.208 texture[ 14, 53] = 0.200 texture[ 15, 53] = 0.635 texture[ 16, 53] = 0.608 texture[ 17, 53] = 0.878 texture[ 18, 53] = 0.953 texture[ 19, 53] = 0.282 texture[ 20, 53] = 0.514 texture[ 21, 53] = 0.561 texture[ 22, 53] = 0.584 texture[ 23, 53] = 0.902 texture[ 24, 53] = 0.761 texture[ 25, 53] = 0.596 texture[ 26, 53] = 0.537 texture[ 27, 53] = 0.608 texture[ 28, 53] = 0.651 texture[ 29, 53] = 0.812 texture[ 30, 53] = 0.694 texture[ 31, 53] = 0.353 texture[ 32, 53] = 0.439 texture[ 33, 53] = 0.682 texture[ 34, 53] = 0.580 texture[ 35, 53] = 0.298 texture[ 36, 53] = 0.310 texture[ 37, 53] = 0.518 texture[ 38, 53] = 0.671 texture[ 39, 53] = 0.812 texture[ 40, 53] = 0.671 texture[ 41, 53] = 0.459 texture[ 42, 53] = 0.173 texture[ 43, 53] = 0.251 texture[ 44, 53] = 0.773 texture[ 45, 53] = 0.733 texture[ 46, 53] = 0.482 texture[ 47, 53] = 0.494 texture[ 48, 53] = 0.733 texture[ 49, 53] = 0.459 texture[ 50, 53] = 0.494 texture[ 51, 53] = 0.757 texture[ 52, 53] = 0.608 texture[ 53, 53] = 0.043 texture[ 54, 53] = 0.275 texture[ 55, 53] = 0.737 texture[ 56, 53] = 0.827 texture[ 57, 53] = 0.878 texture[ 58, 53] = 0.549 texture[ 59, 53] = 0.573 texture[ 60, 53] = 0.459 texture[ 61, 53] = 0.486 texture[ 62, 53] = 0.718 texture[ 63, 53] = 0.384 texture[ 64, 53] = 0.102 texture[ 65, 53] = 0.553 texture[ 66, 53] = 0.635 texture[ 67, 53] = 0.824 texture[ 68, 53] = 0.965 texture[ 69, 53] = 0.416 texture[ 70, 53] = 0.416 texture[ 71, 53] = 0.671 texture[ 72, 53] = 0.482 texture[ 73, 53] = 0.882 texture[ 74, 53] = 0.788 texture[ 75, 53] = 0.616 texture[ 76, 53] = 0.502 texture[ 77, 53] = 0.569 texture[ 78, 53] = 0.596 texture[ 79, 53] = 0.733 texture[ 80, 53] = 0.773 texture[ 81, 53] = 0.153 texture[ 82, 53] = 0.141 texture[ 83, 53] = 0.604 texture[ 84, 53] = 0.549 texture[ 85, 53] = 0.243 texture[ 86, 53] = 0.361 texture[ 87, 53] = 0.541 texture[ 88, 53] = 0.725 texture[ 89, 53] = 0.812 texture[ 90, 53] = 0.627 texture[ 91, 53] = 0.416 texture[ 92, 53] = 0.129 texture[ 93, 53] = 0.376 texture[ 94, 53] = 0.824 texture[ 95, 53] = 0.678 texture[ 96, 53] = 0.486 texture[ 97, 53] = 0.541 texture[ 98, 53] = 0.682 texture[ 99, 53] = 0.416 texture[ 100, 53] = 0.580 texture[ 1, 54] = 0.671 texture[ 2, 54] = 0.459 texture[ 3, 54] = 0.075 texture[ 4, 54] = 0.365 texture[ 5, 54] = 0.624 texture[ 6, 54] = 0.682 texture[ 7, 54] = 0.592 texture[ 8, 54] = 0.486 texture[ 9, 54] = 0.494 texture[ 10, 54] = 0.494 texture[ 11, 54] = 0.608 texture[ 12, 54] = 0.616 texture[ 13, 54] = 0.200 texture[ 14, 54] = 0.318 texture[ 15, 54] = 0.757 texture[ 16, 54] = 0.847 texture[ 17, 54] = 0.859 texture[ 18, 54] = 0.525 texture[ 19, 54] = 0.129 texture[ 20, 54] = 0.255 texture[ 21, 54] = 0.286 texture[ 22, 54] = 0.745 texture[ 23, 54] = 0.592 texture[ 24, 54] = 0.282 texture[ 25, 54] = 0.408 texture[ 26, 54] = 0.471 texture[ 27, 54] = 0.459 texture[ 28, 54] = 0.502 texture[ 29, 54] = 0.663 texture[ 30, 54] = 0.396 texture[ 31, 54] = 0.035 texture[ 32, 54] = 0.298 texture[ 33, 54] = 0.396 texture[ 34, 54] = 0.361 texture[ 35, 54] = 0.376 texture[ 36, 54] = 0.318 texture[ 37, 54] = 0.431 texture[ 38, 54] = 0.482 texture[ 39, 54] = 0.561 texture[ 40, 54] = 0.553 texture[ 41, 54] = 0.482 texture[ 42, 54] = 0.220 texture[ 43, 54] = 0.451 texture[ 44, 54] = 0.604 texture[ 45, 54] = 0.627 texture[ 46, 54] = 0.608 texture[ 47, 54] = 0.514 texture[ 48, 54] = 0.486 texture[ 49, 54] = 0.584 texture[ 50, 54] = 0.525 texture[ 51, 54] = 0.596 texture[ 52, 54] = 0.580 texture[ 53, 54] = 0.110 texture[ 54, 54] = 0.255 texture[ 55, 54] = 0.624 texture[ 56, 54] = 0.694 texture[ 57, 54] = 0.596 texture[ 58, 54] = 0.486 texture[ 59, 54] = 0.463 texture[ 60, 54] = 0.475 texture[ 61, 54] = 0.584 texture[ 62, 54] = 0.663 texture[ 63, 54] = 0.275 texture[ 64, 54] = 0.243 texture[ 65, 54] = 0.714 texture[ 66, 54] = 0.867 texture[ 67, 54] = 0.859 texture[ 68, 54] = 0.584 texture[ 69, 54] = 0.157 texture[ 70, 54] = 0.251 texture[ 71, 54] = 0.282 texture[ 72, 54] = 0.663 texture[ 73, 54] = 0.651 texture[ 74, 54] = 0.329 texture[ 75, 54] = 0.396 texture[ 76, 54] = 0.447 texture[ 77, 54] = 0.471 texture[ 78, 54] = 0.431 texture[ 79, 54] = 0.525 texture[ 80, 54] = 0.486 texture[ 81, 54] = 0.090 texture[ 82, 54] = 0.086 texture[ 83, 54] = 0.153 texture[ 84, 54] = 0.365 texture[ 85, 54] = 0.373 texture[ 86, 54] = 0.341 texture[ 87, 54] = 0.447 texture[ 88, 54] = 0.494 texture[ 89, 54] = 0.596 texture[ 90, 54] = 0.529 texture[ 91, 54] = 0.447 texture[ 92, 54] = 0.231 texture[ 93, 54] = 0.529 texture[ 94, 54] = 0.604 texture[ 95, 54] = 0.651 texture[ 96, 54] = 0.624 texture[ 97, 54] = 0.518 texture[ 98, 54] = 0.506 texture[ 99, 54] = 0.608 texture[ 100, 54] = 0.553 texture[ 1, 55] = 0.592 texture[ 2, 55] = 0.212 texture[ 3, 55] = 0.063 texture[ 4, 55] = 0.408 texture[ 5, 55] = 0.514 texture[ 6, 55] = 0.337 texture[ 7, 55] = 0.427 texture[ 8, 55] = 0.678 texture[ 9, 55] = 0.690 texture[ 10, 55] = 0.584 texture[ 11, 55] = 0.773 texture[ 12, 55] = 0.663 texture[ 13, 55] = 0.376 texture[ 14, 55] = 0.439 texture[ 15, 55] = 0.800 texture[ 16, 55] = 0.976 texture[ 17, 55] = 0.800 texture[ 18, 55] = 0.329 texture[ 19, 55] = 0.200 texture[ 20, 55] = 0.145 texture[ 21, 55] = 0.310 texture[ 22, 55] = 0.769 texture[ 23, 55] = 0.471 texture[ 24, 55] = 0.122 texture[ 25, 55] = 0.529 texture[ 26, 55] = 0.529 texture[ 27, 55] = 0.255 texture[ 28, 55] = 0.475 texture[ 29, 55] = 0.769 texture[ 30, 55] = 0.439 texture[ 31, 55] = 0.133 texture[ 32, 55] = 0.153 texture[ 33, 55] = 0.337 texture[ 34, 55] = 0.282 texture[ 35, 55] = 0.373 texture[ 36, 55] = 0.361 texture[ 37, 55] = 0.239 texture[ 38, 55] = 0.286 texture[ 39, 55] = 0.561 texture[ 40, 55] = 0.608 texture[ 41, 55] = 0.627 texture[ 42, 55] = 0.459 texture[ 43, 55] = 0.318 texture[ 44, 55] = 0.404 texture[ 45, 55] = 0.694 texture[ 46, 55] = 0.725 texture[ 47, 55] = 0.651 texture[ 48, 55] = 0.596 texture[ 49, 55] = 0.471 texture[ 50, 55] = 0.506 texture[ 51, 55] = 0.608 texture[ 52, 55] = 0.310 texture[ 53, 55] = 0.055 texture[ 54, 55] = 0.341 texture[ 55, 55] = 0.553 texture[ 56, 55] = 0.349 texture[ 57, 55] = 0.392 texture[ 58, 55] = 0.659 texture[ 59, 55] = 0.702 texture[ 60, 55] = 0.608 texture[ 61, 55] = 0.714 texture[ 62, 55] = 0.757 texture[ 63, 55] = 0.392 texture[ 64, 55] = 0.459 texture[ 65, 55] = 0.718 texture[ 66, 55] = 0.980 texture[ 67, 55] = 0.847 texture[ 68, 55] = 0.420 texture[ 69, 55] = 0.184 texture[ 70, 55] = 0.157 texture[ 71, 55] = 0.220 texture[ 72, 55] = 0.718 texture[ 73, 55] = 0.537 texture[ 74, 55] = 0.122 texture[ 75, 55] = 0.506 texture[ 76, 55] = 0.573 texture[ 77, 55] = 0.282 texture[ 78, 55] = 0.416 texture[ 79, 55] = 0.592 texture[ 80, 55] = 0.549 texture[ 81, 55] = 0.153 texture[ 82, 55] = 0.043 texture[ 83, 55] = 0.157 texture[ 84, 55] = 0.263 texture[ 85, 55] = 0.408 texture[ 86, 55] = 0.310 texture[ 87, 55] = 0.231 texture[ 88, 55] = 0.310 texture[ 89, 55] = 0.604 texture[ 90, 55] = 0.624 texture[ 91, 55] = 0.624 texture[ 92, 55] = 0.416 texture[ 93, 55] = 0.318 texture[ 94, 55] = 0.475 texture[ 95, 55] = 0.718 texture[ 96, 55] = 0.733 texture[ 97, 55] = 0.678 texture[ 98, 55] = 0.584 texture[ 99, 55] = 0.463 texture[ 100, 55] = 0.518 texture[ 1, 56] = 0.420 texture[ 2, 56] = 0.188 texture[ 3, 56] = 0.251 texture[ 4, 56] = 0.459 texture[ 5, 56] = 0.451 texture[ 6, 56] = 0.482 texture[ 7, 56] = 0.639 texture[ 8, 56] = 0.690 texture[ 9, 56] = 0.608 texture[ 10, 56] = 0.584 texture[ 11, 56] = 0.800 texture[ 12, 56] = 0.682 texture[ 13, 56] = 0.573 texture[ 14, 56] = 0.769 texture[ 15, 56] = 0.616 texture[ 16, 56] = 0.694 texture[ 17, 56] = 0.647 texture[ 18, 56] = 0.173 texture[ 19, 56] = 0.322 texture[ 20, 56] = 0.196 texture[ 21, 56] = 0.200 texture[ 22, 56] = 0.525 texture[ 23, 56] = 0.416 texture[ 24, 56] = 0.392 texture[ 25, 56] = 0.404 texture[ 26, 56] = 0.553 texture[ 27, 56] = 0.482 texture[ 28, 56] = 0.525 texture[ 29, 56] = 0.769 texture[ 30, 56] = 0.690 texture[ 31, 56] = 0.475 texture[ 32, 56] = 0.361 texture[ 33, 56] = 0.553 texture[ 34, 56] = 0.702 texture[ 35, 56] = 0.706 texture[ 36, 56] = 0.761 texture[ 37, 56] = 0.475 texture[ 38, 56] = 0.396 texture[ 39, 56] = 0.420 texture[ 40, 56] = 0.671 texture[ 41, 56] = 0.702 texture[ 42, 56] = 0.518 texture[ 43, 56] = 0.384 texture[ 44, 56] = 0.549 texture[ 45, 56] = 0.706 texture[ 46, 56] = 0.827 texture[ 47, 56] = 0.561 texture[ 48, 56] = 0.737 texture[ 49, 56] = 0.745 texture[ 50, 56] = 0.843 texture[ 51, 56] = 0.624 texture[ 52, 56] = 0.188 texture[ 53, 56] = 0.208 texture[ 54, 56] = 0.404 texture[ 55, 56] = 0.447 texture[ 56, 56] = 0.420 texture[ 57, 56] = 0.596 texture[ 58, 56] = 0.702 texture[ 59, 56] = 0.639 texture[ 60, 56] = 0.569 texture[ 61, 56] = 0.733 texture[ 62, 56] = 0.769 texture[ 63, 56] = 0.514 texture[ 64, 56] = 0.800 texture[ 65, 56] = 0.639 texture[ 66, 56] = 0.682 texture[ 67, 56] = 0.714 texture[ 68, 56] = 0.231 texture[ 69, 56] = 0.251 texture[ 70, 56] = 0.251 texture[ 71, 56] = 0.141 texture[ 72, 56] = 0.494 texture[ 73, 56] = 0.431 texture[ 74, 56] = 0.404 texture[ 75, 56] = 0.420 texture[ 76, 56] = 0.518 texture[ 77, 56] = 0.525 texture[ 78, 56] = 0.486 texture[ 79, 56] = 0.792 texture[ 80, 56] = 0.761 texture[ 81, 56] = 0.463 texture[ 82, 56] = 0.220 texture[ 83, 56] = 0.404 texture[ 84, 56] = 0.749 texture[ 85, 56] = 0.714 texture[ 86, 56] = 0.718 texture[ 87, 56] = 0.427 texture[ 88, 56] = 0.408 texture[ 89, 56] = 0.451 texture[ 90, 56] = 0.690 texture[ 91, 56] = 0.690 texture[ 92, 56] = 0.459 texture[ 93, 56] = 0.408 texture[ 94, 56] = 0.580 texture[ 95, 56] = 0.733 texture[ 96, 56] = 0.800 texture[ 97, 56] = 0.569 texture[ 98, 56] = 0.725 texture[ 99, 56] = 0.718 texture[ 100, 56] = 0.867 texture[ 1, 57] = 0.200 texture[ 2, 57] = 0.239 texture[ 3, 57] = 0.231 texture[ 4, 57] = 0.376 texture[ 5, 57] = 0.596 texture[ 6, 57] = 0.494 texture[ 7, 57] = 0.757 texture[ 8, 57] = 0.635 texture[ 9, 57] = 0.549 texture[ 10, 57] = 0.639 texture[ 11, 57] = 0.678 texture[ 12, 57] = 0.439 texture[ 13, 57] = 0.761 texture[ 14, 57] = 0.902 texture[ 15, 57] = 0.318 texture[ 16, 57] = 0.553 texture[ 17, 57] = 0.439 texture[ 18, 57] = 0.200 texture[ 19, 57] = 0.306 texture[ 20, 57] = 0.200 texture[ 21, 57] = 0.239 texture[ 22, 57] = 0.706 texture[ 23, 57] = 0.690 texture[ 24, 57] = 0.694 texture[ 25, 57] = 0.627 texture[ 26, 57] = 0.549 texture[ 27, 57] = 0.243 texture[ 28, 57] = 0.176 texture[ 29, 57] = 0.651 texture[ 30, 57] = 0.549 texture[ 31, 57] = 0.537 texture[ 32, 57] = 0.514 texture[ 33, 57] = 0.733 texture[ 34, 57] = 0.561 texture[ 35, 57] = 0.502 texture[ 36, 57] = 0.635 texture[ 37, 57] = 0.800 texture[ 38, 57] = 0.824 texture[ 39, 57] = 0.627 texture[ 40, 57] = 0.561 texture[ 41, 57] = 0.494 texture[ 42, 57] = 0.349 texture[ 43, 57] = 0.384 texture[ 44, 57] = 0.459 texture[ 45, 57] = 0.647 texture[ 46, 57] = 0.639 texture[ 47, 57] = 0.616 texture[ 48, 57] = 0.682 texture[ 49, 57] = 0.694 texture[ 50, 57] = 0.651 texture[ 51, 57] = 0.337 texture[ 52, 57] = 0.184 texture[ 53, 57] = 0.220 texture[ 54, 57] = 0.294 texture[ 55, 57] = 0.584 texture[ 56, 57] = 0.482 texture[ 57, 57] = 0.706 texture[ 58, 57] = 0.647 texture[ 59, 57] = 0.525 texture[ 60, 57] = 0.639 texture[ 61, 57] = 0.639 texture[ 62, 57] = 0.471 texture[ 63, 57] = 0.627 texture[ 64, 57] = 0.976 texture[ 65, 57] = 0.408 texture[ 66, 57] = 0.475 texture[ 67, 57] = 0.537 texture[ 68, 57] = 0.196 texture[ 69, 57] = 0.282 texture[ 70, 57] = 0.251 texture[ 71, 57] = 0.145 texture[ 72, 57] = 0.659 texture[ 73, 57] = 0.702 texture[ 74, 57] = 0.702 texture[ 75, 57] = 0.651 texture[ 76, 57] = 0.553 texture[ 77, 57] = 0.337 texture[ 78, 57] = 0.098 texture[ 79, 57] = 0.486 texture[ 80, 57] = 0.553 texture[ 81, 57] = 0.553 texture[ 82, 57] = 0.439 texture[ 83, 57] = 0.584 texture[ 84, 57] = 0.494 texture[ 85, 57] = 0.514 texture[ 86, 57] = 0.592 texture[ 87, 57] = 0.812 texture[ 88, 57] = 0.824 texture[ 89, 57] = 0.584 texture[ 90, 57] = 0.529 texture[ 91, 57] = 0.471 texture[ 92, 57] = 0.337 texture[ 93, 57] = 0.416 texture[ 94, 57] = 0.502 texture[ 95, 57] = 0.678 texture[ 96, 57] = 0.604 texture[ 97, 57] = 0.651 texture[ 98, 57] = 0.671 texture[ 99, 57] = 0.749 texture[ 100, 57] = 0.682 texture[ 1, 58] = 0.200 texture[ 2, 58] = 0.141 texture[ 3, 58] = 0.145 texture[ 4, 58] = 0.275 texture[ 5, 58] = 0.541 texture[ 6, 58] = 0.792 texture[ 7, 58] = 0.812 texture[ 8, 58] = 0.518 texture[ 9, 58] = 0.569 texture[ 10, 58] = 0.584 texture[ 11, 58] = 0.757 texture[ 12, 58] = 0.761 texture[ 13, 58] = 0.871 texture[ 14, 58] = 0.396 texture[ 15, 58] = 0.396 texture[ 16, 58] = 0.702 texture[ 17, 58] = 0.282 texture[ 18, 58] = 0.282 texture[ 19, 58] = 0.365 texture[ 20, 58] = 0.176 texture[ 21, 58] = 0.282 texture[ 22, 58] = 0.647 texture[ 23, 58] = 0.804 texture[ 24, 58] = 0.745 texture[ 25, 58] = 0.671 texture[ 26, 58] = 0.651 texture[ 27, 58] = 0.141 texture[ 28, 58] = 0.329 texture[ 29, 58] = 0.541 texture[ 30, 58] = 0.373 texture[ 31, 58] = 0.427 texture[ 32, 58] = 0.486 texture[ 33, 58] = 0.627 texture[ 34, 58] = 0.506 texture[ 35, 58] = 0.184 texture[ 36, 58] = 0.396 texture[ 37, 58] = 0.584 texture[ 38, 58] = 0.537 texture[ 39, 58] = 0.647 texture[ 40, 58] = 0.580 texture[ 41, 58] = 0.494 texture[ 42, 58] = 0.420 texture[ 43, 58] = 0.431 texture[ 44, 58] = 0.471 texture[ 45, 58] = 0.459 texture[ 46, 58] = 0.243 texture[ 47, 58] = 0.475 texture[ 48, 58] = 0.725 texture[ 49, 58] = 0.816 texture[ 50, 58] = 0.871 texture[ 51, 58] = 0.310 texture[ 52, 58] = 0.122 texture[ 53, 58] = 0.141 texture[ 54, 58] = 0.227 texture[ 55, 58] = 0.506 texture[ 56, 58] = 0.788 texture[ 57, 58] = 0.827 texture[ 58, 58] = 0.561 texture[ 59, 58] = 0.553 texture[ 60, 58] = 0.592 texture[ 61, 58] = 0.702 texture[ 62, 58] = 0.745 texture[ 63, 58] = 0.843 texture[ 64, 58] = 0.514 texture[ 65, 58] = 0.329 texture[ 66, 58] = 0.749 texture[ 67, 58] = 0.353 texture[ 68, 58] = 0.208 texture[ 69, 58] = 0.396 texture[ 70, 58] = 0.196 texture[ 71, 58] = 0.227 texture[ 72, 58] = 0.604 texture[ 73, 58] = 0.804 texture[ 74, 58] = 0.737 texture[ 75, 58] = 0.639 texture[ 76, 58] = 0.682 texture[ 77, 58] = 0.208 texture[ 78, 58] = 0.157 texture[ 79, 58] = 0.376 texture[ 80, 58] = 0.365 texture[ 81, 58] = 0.439 texture[ 82, 58] = 0.502 texture[ 83, 58] = 0.635 texture[ 84, 58] = 0.396 texture[ 85, 58] = 0.173 texture[ 86, 58] = 0.439 texture[ 87, 58] = 0.580 texture[ 88, 58] = 0.561 texture[ 89, 58] = 0.639 texture[ 90, 58] = 0.553 texture[ 91, 58] = 0.482 texture[ 92, 58] = 0.427 texture[ 93, 58] = 0.447 texture[ 94, 58] = 0.494 texture[ 95, 58] = 0.416 texture[ 96, 58] = 0.251 texture[ 97, 58] = 0.592 texture[ 98, 58] = 0.745 texture[ 99, 58] = 0.843 texture[ 100, 58] = 0.812 texture[ 1, 59] = 0.133 texture[ 2, 59] = 0.098 texture[ 3, 59] = 0.035 texture[ 4, 59] = 0.098 texture[ 5, 59] = 0.384 texture[ 6, 59] = 0.933 texture[ 7, 59] = 0.725 texture[ 8, 59] = 0.525 texture[ 9, 59] = 0.537 texture[ 10, 59] = 0.537 texture[ 11, 59] = 0.725 texture[ 12, 59] = 1.000 texture[ 13, 59] = 0.910 texture[ 14, 59] = 0.263 texture[ 15, 59] = 0.627 texture[ 16, 59] = 0.800 texture[ 17, 59] = 0.239 texture[ 18, 59] = 0.176 texture[ 19, 59] = 0.286 texture[ 20, 59] = 0.129 texture[ 21, 59] = 0.404 texture[ 22, 59] = 0.922 texture[ 23, 59] = 0.871 texture[ 24, 59] = 0.761 texture[ 25, 59] = 0.635 texture[ 26, 59] = 0.690 texture[ 27, 59] = 0.251 texture[ 28, 59] = 0.318 texture[ 29, 59] = 0.549 texture[ 30, 59] = 0.431 texture[ 31, 59] = 0.439 texture[ 32, 59] = 0.471 texture[ 33, 59] = 0.310 texture[ 34, 59] = 0.282 texture[ 35, 59] = 0.212 texture[ 36, 59] = 0.471 texture[ 37, 59] = 0.475 texture[ 38, 59] = 0.624 texture[ 39, 59] = 0.596 texture[ 40, 59] = 0.322 texture[ 41, 59] = 0.408 texture[ 42, 59] = 0.569 texture[ 43, 59] = 0.373 texture[ 44, 59] = 0.616 texture[ 45, 59] = 0.553 texture[ 46, 59] = 0.098 texture[ 47, 59] = 0.212 texture[ 48, 59] = 0.616 texture[ 49, 59] = 0.718 texture[ 50, 59] = 0.757 texture[ 51, 59] = 0.243 texture[ 52, 59] = 0.075 texture[ 53, 59] = 0.024 texture[ 54, 59] = 0.102 texture[ 55, 59] = 0.306 texture[ 56, 59] = 0.925 texture[ 57, 59] = 0.773 texture[ 58, 59] = 0.541 texture[ 59, 59] = 0.569 texture[ 60, 59] = 0.502 texture[ 61, 59] = 0.608 texture[ 62, 59] = 0.945 texture[ 63, 59] = 0.988 texture[ 64, 59] = 0.310 texture[ 65, 59] = 0.518 texture[ 66, 59] = 0.827 texture[ 67, 59] = 0.275 texture[ 68, 59] = 0.173 texture[ 69, 59] = 0.298 texture[ 70, 59] = 0.153 texture[ 71, 59] = 0.286 texture[ 72, 59] = 0.855 texture[ 73, 59] = 0.902 texture[ 74, 59] = 0.800 texture[ 75, 59] = 0.624 texture[ 76, 59] = 0.733 texture[ 77, 59] = 0.337 texture[ 78, 59] = 0.165 texture[ 79, 59] = 0.506 texture[ 80, 59] = 0.416 texture[ 81, 59] = 0.463 texture[ 82, 59] = 0.447 texture[ 83, 59] = 0.329 texture[ 84, 59] = 0.227 texture[ 85, 59] = 0.239 texture[ 86, 59] = 0.529 texture[ 87, 59] = 0.494 texture[ 88, 59] = 0.663 texture[ 89, 59] = 0.569 texture[ 90, 59] = 0.306 texture[ 91, 59] = 0.439 texture[ 92, 59] = 0.553 texture[ 93, 59] = 0.404 texture[ 94, 59] = 0.682 texture[ 95, 59] = 0.420 texture[ 96, 59] = 0.086 texture[ 97, 59] = 0.294 texture[ 98, 59] = 0.635 texture[ 99, 59] = 0.733 texture[ 100, 59] = 0.694 texture[ 1, 60] = 0.196 texture[ 2, 60] = 0.063 texture[ 3, 60] = 0.063 texture[ 4, 60] = 0.404 texture[ 5, 60] = 0.604 texture[ 6, 60] = 0.651 texture[ 7, 60] = 0.592 texture[ 8, 60] = 0.514 texture[ 9, 60] = 0.580 texture[ 10, 60] = 0.725 texture[ 11, 60] = 0.769 texture[ 12, 60] = 0.898 texture[ 13, 60] = 0.624 texture[ 14, 60] = 0.322 texture[ 15, 60] = 0.608 texture[ 16, 60] = 0.812 texture[ 17, 60] = 0.408 texture[ 18, 60] = 0.392 texture[ 19, 60] = 0.322 texture[ 20, 60] = 0.078 texture[ 21, 60] = 0.392 texture[ 22, 60] = 0.804 texture[ 23, 60] = 0.714 texture[ 24, 60] = 0.584 texture[ 25, 60] = 0.463 texture[ 26, 60] = 0.584 texture[ 27, 60] = 0.212 texture[ 28, 60] = 0.200 texture[ 29, 60] = 0.804 texture[ 30, 60] = 0.773 texture[ 31, 60] = 0.608 texture[ 32, 60] = 0.604 texture[ 33, 60] = 0.275 texture[ 34, 60] = 0.294 texture[ 35, 60] = 0.471 texture[ 36, 60] = 0.431 texture[ 37, 60] = 0.494 texture[ 38, 60] = 0.690 texture[ 39, 60] = 0.651 texture[ 40, 60] = 0.494 texture[ 41, 60] = 0.306 texture[ 42, 60] = 0.506 texture[ 43, 60] = 0.580 texture[ 44, 60] = 0.761 texture[ 45, 60] = 0.706 texture[ 46, 60] = 0.275 texture[ 47, 60] = 0.165 texture[ 48, 60] = 0.627 texture[ 49, 60] = 0.800 texture[ 50, 60] = 0.494 texture[ 51, 60] = 0.212 texture[ 52, 60] = 0.086 texture[ 53, 60] = 0.031 texture[ 54, 60] = 0.341 texture[ 55, 60] = 0.616 texture[ 56, 60] = 0.635 texture[ 57, 60] = 0.573 texture[ 58, 60] = 0.514 texture[ 59, 60] = 0.569 texture[ 60, 60] = 0.706 texture[ 61, 60] = 0.773 texture[ 62, 60] = 0.922 texture[ 63, 60] = 0.733 texture[ 64, 60] = 0.251 texture[ 65, 60] = 0.561 texture[ 66, 60] = 0.788 texture[ 67, 60] = 0.451 texture[ 68, 60] = 0.353 texture[ 69, 60] = 0.373 texture[ 70, 60] = 0.098 texture[ 71, 60] = 0.255 texture[ 72, 60] = 0.780 texture[ 73, 60] = 0.757 texture[ 74, 60] = 0.647 texture[ 75, 60] = 0.439 texture[ 76, 60] = 0.580 texture[ 77, 60] = 0.306 texture[ 78, 60] = 0.098 texture[ 79, 60] = 0.671 texture[ 80, 60] = 0.745 texture[ 81, 60] = 0.651 texture[ 82, 60] = 0.584 texture[ 83, 60] = 0.231 texture[ 84, 60] = 0.349 texture[ 85, 60] = 0.494 texture[ 86, 60] = 0.451 texture[ 87, 60] = 0.537 texture[ 88, 60] = 0.718 texture[ 89, 60] = 0.627 texture[ 90, 60] = 0.459 texture[ 91, 60] = 0.298 texture[ 92, 60] = 0.537 texture[ 93, 60] = 0.580 texture[ 94, 60] = 0.816 texture[ 95, 60] = 0.624 texture[ 96, 60] = 0.212 texture[ 97, 60] = 0.251 texture[ 98, 60] = 0.725 texture[ 99, 60] = 0.788 texture[ 100, 60] = 0.408 texture[ 1, 61] = 0.212 texture[ 2, 61] = 0.129 texture[ 3, 61] = 0.098 texture[ 4, 61] = 0.659 texture[ 5, 61] = 0.816 texture[ 6, 61] = 0.671 texture[ 7, 61] = 0.671 texture[ 8, 61] = 0.396 texture[ 9, 61] = 0.514 texture[ 10, 61] = 0.800 texture[ 11, 61] = 0.898 texture[ 12, 61] = 0.506 texture[ 13, 61] = 0.196 texture[ 14, 61] = 0.608 texture[ 15, 61] = 0.871 texture[ 16, 61] = 0.757 texture[ 17, 61] = 0.737 texture[ 18, 61] = 0.475 texture[ 19, 61] = 0.173 texture[ 20, 61] = 0.012 texture[ 21, 61] = 0.486 texture[ 22, 61] = 0.757 texture[ 23, 61] = 0.580 texture[ 24, 61] = 0.608 texture[ 25, 61] = 0.596 texture[ 26, 61] = 0.592 texture[ 27, 61] = 0.212 texture[ 28, 61] = 0.404 texture[ 29, 61] = 0.937 texture[ 30, 61] = 0.847 texture[ 31, 61] = 0.671 texture[ 32, 61] = 0.871 texture[ 33, 61] = 0.294 texture[ 34, 61] = 0.153 texture[ 35, 61] = 0.671 texture[ 36, 61] = 0.706 texture[ 37, 61] = 0.682 texture[ 38, 61] = 0.573 texture[ 39, 61] = 0.659 texture[ 40, 61] = 0.718 texture[ 41, 61] = 0.365 texture[ 42, 61] = 0.451 texture[ 43, 61] = 0.639 texture[ 44, 61] = 0.812 texture[ 45, 61] = 0.671 texture[ 46, 61] = 0.227 texture[ 47, 61] = 0.459 texture[ 48, 61] = 0.737 texture[ 49, 61] = 0.773 texture[ 50, 61] = 0.592 texture[ 51, 61] = 0.263 texture[ 52, 61] = 0.133 texture[ 53, 61] = 0.067 texture[ 54, 61] = 0.525 texture[ 55, 61] = 0.855 texture[ 56, 61] = 0.639 texture[ 57, 61] = 0.682 texture[ 58, 61] = 0.459 texture[ 59, 61] = 0.439 texture[ 60, 61] = 0.749 texture[ 61, 61] = 0.933 texture[ 62, 61] = 0.659 texture[ 63, 61] = 0.188 texture[ 64, 61] = 0.486 texture[ 65, 61] = 0.859 texture[ 66, 61] = 0.749 texture[ 67, 61] = 0.745 texture[ 68, 61] = 0.502 texture[ 69, 61] = 0.208 texture[ 70, 61] = 0.020 texture[ 71, 61] = 0.329 texture[ 72, 61] = 0.792 texture[ 73, 61] = 0.592 texture[ 74, 61] = 0.608 texture[ 75, 61] = 0.584 texture[ 76, 61] = 0.608 texture[ 77, 61] = 0.267 texture[ 78, 61] = 0.341 texture[ 79, 61] = 0.898 texture[ 80, 61] = 0.788 texture[ 81, 61] = 0.678 texture[ 82, 61] = 0.804 texture[ 83, 61] = 0.157 texture[ 84, 61] = 0.286 texture[ 85, 61] = 0.706 texture[ 86, 61] = 0.690 texture[ 87, 61] = 0.663 texture[ 88, 61] = 0.569 texture[ 89, 61] = 0.702 texture[ 90, 61] = 0.663 texture[ 91, 61] = 0.310 texture[ 92, 61] = 0.482 texture[ 93, 61] = 0.678 texture[ 94, 61] = 0.812 texture[ 95, 61] = 0.573 texture[ 96, 61] = 0.188 texture[ 97, 61] = 0.553 texture[ 98, 61] = 0.800 texture[ 99, 61] = 0.769 texture[ 100, 61] = 0.537 texture[ 1, 62] = 0.165 texture[ 2, 62] = 0.200 texture[ 3, 62] = 0.102 texture[ 4, 62] = 0.141 texture[ 5, 62] = 0.451 texture[ 6, 62] = 0.651 texture[ 7, 62] = 0.749 texture[ 8, 62] = 0.804 texture[ 9, 62] = 0.553 texture[ 10, 62] = 0.427 texture[ 11, 62] = 0.847 texture[ 12, 62] = 0.396 texture[ 13, 62] = 0.553 texture[ 14, 62] = 0.965 texture[ 15, 62] = 0.780 texture[ 16, 62] = 0.627 texture[ 17, 62] = 0.937 texture[ 18, 62] = 0.525 texture[ 19, 62] = 0.075 texture[ 20, 62] = 0.024 texture[ 21, 62] = 0.596 texture[ 22, 62] = 0.773 texture[ 23, 62] = 0.529 texture[ 24, 62] = 0.671 texture[ 25, 62] = 0.518 texture[ 26, 62] = 0.463 texture[ 27, 62] = 0.353 texture[ 28, 62] = 0.431 texture[ 29, 62] = 0.639 texture[ 30, 62] = 0.659 texture[ 31, 62] = 0.804 texture[ 32, 62] = 0.847 texture[ 33, 62] = 0.408 texture[ 34, 62] = 0.231 texture[ 35, 62] = 0.745 texture[ 36, 62] = 0.847 texture[ 37, 62] = 0.725 texture[ 38, 62] = 0.714 texture[ 39, 62] = 0.553 texture[ 40, 62] = 0.408 texture[ 41, 62] = 0.239 texture[ 42, 62] = 0.608 texture[ 43, 62] = 0.694 texture[ 44, 62] = 0.761 texture[ 45, 62] = 0.737 texture[ 46, 62] = 0.353 texture[ 47, 62] = 0.804 texture[ 48, 62] = 0.824 texture[ 49, 62] = 0.792 texture[ 50, 62] = 0.529 texture[ 51, 62] = 0.157 texture[ 52, 62] = 0.200 texture[ 53, 62] = 0.129 texture[ 54, 62] = 0.102 texture[ 55, 62] = 0.396 texture[ 56, 62] = 0.639 texture[ 57, 62] = 0.718 texture[ 58, 62] = 0.835 texture[ 59, 62] = 0.604 texture[ 60, 62] = 0.373 texture[ 61, 62] = 0.800 texture[ 62, 62] = 0.502 texture[ 63, 62] = 0.392 texture[ 64, 62] = 0.953 texture[ 65, 62] = 0.824 texture[ 66, 62] = 0.604 texture[ 67, 62] = 0.933 texture[ 68, 62] = 0.608 texture[ 69, 62] = 0.102 texture[ 70, 62] = 0.008 texture[ 71, 62] = 0.427 texture[ 72, 62] = 0.824 texture[ 73, 62] = 0.529 texture[ 74, 62] = 0.624 texture[ 75, 62] = 0.569 texture[ 76, 62] = 0.431 texture[ 77, 62] = 0.384 texture[ 78, 62] = 0.384 texture[ 79, 62] = 0.647 texture[ 80, 62] = 0.757 texture[ 81, 62] = 0.659 texture[ 82, 62] = 0.569 texture[ 83, 62] = 0.361 texture[ 84, 62] = 0.329 texture[ 85, 62] = 0.804 texture[ 86, 62] = 0.824 texture[ 87, 62] = 0.737 texture[ 88, 62] = 0.706 texture[ 89, 62] = 0.553 texture[ 90, 62] = 0.365 texture[ 91, 62] = 0.243 texture[ 92, 62] = 0.639 texture[ 93, 62] = 0.714 texture[ 94, 62] = 0.761 texture[ 95, 62] = 0.627 texture[ 96, 62] = 0.341 texture[ 97, 62] = 0.882 texture[ 98, 62] = 0.800 texture[ 99, 62] = 0.792 texture[ 100, 62] = 0.431 texture[ 1, 63] = 0.518 texture[ 2, 63] = 0.475 texture[ 3, 63] = 0.231 texture[ 4, 63] = 0.055 texture[ 5, 63] = 0.596 texture[ 6, 63] = 0.788 texture[ 7, 63] = 0.761 texture[ 8, 63] = 0.773 texture[ 9, 63] = 0.690 texture[ 10, 63] = 0.733 texture[ 11, 63] = 0.824 texture[ 12, 63] = 0.384 texture[ 13, 63] = 0.922 texture[ 14, 63] = 0.910 texture[ 15, 63] = 0.176 texture[ 16, 63] = 0.592 texture[ 17, 63] = 0.855 texture[ 18, 63] = 0.459 texture[ 19, 63] = 0.075 texture[ 20, 63] = 0.031 texture[ 21, 63] = 0.173 texture[ 22, 63] = 0.420 texture[ 23, 63] = 0.549 texture[ 24, 63] = 0.471 texture[ 25, 63] = 0.298 texture[ 26, 63] = 0.561 texture[ 27, 63] = 0.725 texture[ 28, 63] = 0.580 texture[ 29, 63] = 0.439 texture[ 30, 63] = 0.486 texture[ 31, 63] = 0.725 texture[ 32, 63] = 0.647 texture[ 33, 63] = 0.451 texture[ 34, 63] = 0.518 texture[ 35, 63] = 0.671 texture[ 36, 63] = 0.525 texture[ 37, 63] = 0.561 texture[ 38, 63] = 0.714 texture[ 39, 63] = 0.678 texture[ 40, 63] = 0.251 texture[ 41, 63] = 0.341 texture[ 42, 63] = 0.463 texture[ 43, 63] = 0.639 texture[ 44, 63] = 0.659 texture[ 45, 63] = 0.525 texture[ 46, 63] = 0.639 texture[ 47, 63] = 0.867 texture[ 48, 63] = 0.769 texture[ 49, 63] = 0.867 texture[ 50, 63] = 0.373 texture[ 51, 63] = 0.392 texture[ 52, 63] = 0.506 texture[ 53, 63] = 0.282 texture[ 54, 63] = 0.035 texture[ 55, 63] = 0.471 texture[ 56, 63] = 0.804 texture[ 57, 63] = 0.761 texture[ 58, 63] = 0.773 texture[ 59, 63] = 0.690 texture[ 60, 63] = 0.651 texture[ 61, 63] = 0.890 texture[ 62, 63] = 0.408 texture[ 63, 63] = 0.749 texture[ 64, 63] = 1.000 texture[ 65, 63] = 0.267 texture[ 66, 63] = 0.420 texture[ 67, 63] = 0.878 texture[ 68, 63] = 0.529 texture[ 69, 63] = 0.110 texture[ 70, 63] = 0.020 texture[ 71, 63] = 0.153 texture[ 72, 63] = 0.373 texture[ 73, 63] = 0.529 texture[ 74, 63] = 0.518 texture[ 75, 63] = 0.337 texture[ 76, 63] = 0.506 texture[ 77, 63] = 0.714 texture[ 78, 63] = 0.671 texture[ 79, 63] = 0.584 texture[ 80, 63] = 0.592 texture[ 81, 63] = 0.420 texture[ 82, 63] = 0.416 texture[ 83, 63] = 0.463 texture[ 84, 63] = 0.604 texture[ 85, 63] = 0.639 texture[ 86, 63] = 0.553 texture[ 87, 63] = 0.573 texture[ 88, 63] = 0.733 texture[ 89, 63] = 0.616 texture[ 90, 63] = 0.231 texture[ 91, 63] = 0.376 texture[ 92, 63] = 0.486 texture[ 93, 63] = 0.690 texture[ 94, 63] = 0.635 texture[ 95, 63] = 0.502 texture[ 96, 63] = 0.702 texture[ 97, 63] = 0.827 texture[ 98, 63] = 0.745 texture[ 99, 63] = 0.859 texture[ 100, 63] = 0.310 texture[ 1, 64] = 0.914 texture[ 2, 64] = 0.627 texture[ 3, 64] = 0.145 texture[ 4, 64] = 0.184 texture[ 5, 64] = 0.702 texture[ 6, 64] = 0.827 texture[ 7, 64] = 0.812 texture[ 8, 64] = 0.757 texture[ 9, 64] = 0.737 texture[ 10, 64] = 1.000 texture[ 11, 64] = 0.584 texture[ 12, 64] = 0.318 texture[ 13, 64] = 0.965 texture[ 14, 64] = 0.553 texture[ 15, 64] = 0.129 texture[ 16, 64] = 0.725 texture[ 17, 64] = 0.745 texture[ 18, 64] = 0.227 texture[ 19, 64] = 0.173 texture[ 20, 64] = 0.243 texture[ 21, 64] = 0.000 texture[ 22, 64] = 0.404 texture[ 23, 64] = 0.859 texture[ 24, 64] = 0.365 texture[ 25, 64] = 0.569 texture[ 26, 64] = 0.859 texture[ 27, 64] = 0.780 texture[ 28, 64] = 0.690 texture[ 29, 64] = 0.690 texture[ 30, 64] = 0.616 texture[ 31, 64] = 0.569 texture[ 32, 64] = 0.537 texture[ 33, 64] = 0.525 texture[ 34, 64] = 0.682 texture[ 35, 64] = 0.635 texture[ 36, 64] = 0.537 texture[ 37, 64] = 0.604 texture[ 38, 64] = 0.647 texture[ 39, 64] = 0.616 texture[ 40, 64] = 0.580 texture[ 41, 64] = 0.616 texture[ 42, 64] = 0.737 texture[ 43, 64] = 0.694 texture[ 44, 64] = 0.663 texture[ 45, 64] = 0.541 texture[ 46, 64] = 0.549 texture[ 47, 64] = 0.922 texture[ 48, 64] = 0.847 texture[ 49, 64] = 0.749 texture[ 50, 64] = 0.361 texture[ 51, 64] = 0.780 texture[ 52, 64] = 0.725 texture[ 53, 64] = 0.220 texture[ 54, 64] = 0.118 texture[ 55, 64] = 0.604 texture[ 56, 64] = 0.843 texture[ 57, 64] = 0.816 texture[ 58, 64] = 0.780 texture[ 59, 64] = 0.671 texture[ 60, 64] = 1.000 texture[ 61, 64] = 0.769 texture[ 62, 64] = 0.239 texture[ 63, 64] = 0.847 texture[ 64, 64] = 0.714 texture[ 65, 64] = 0.129 texture[ 66, 64] = 0.604 texture[ 67, 64] = 0.804 texture[ 68, 64] = 0.310 texture[ 69, 64] = 0.141 texture[ 70, 64] = 0.286 texture[ 71, 64] = 0.047 texture[ 72, 64] = 0.231 texture[ 73, 64] = 0.855 texture[ 74, 64] = 0.494 texture[ 75, 64] = 0.486 texture[ 76, 64] = 0.843 texture[ 77, 64] = 0.792 texture[ 78, 64] = 0.792 texture[ 79, 64] = 0.835 texture[ 80, 64] = 0.506 texture[ 81, 64] = 0.341 texture[ 82, 64] = 0.537 texture[ 83, 64] = 0.518 texture[ 84, 64] = 0.714 texture[ 85, 64] = 0.592 texture[ 86, 64] = 0.561 texture[ 87, 64] = 0.616 texture[ 88, 64] = 0.651 texture[ 89, 64] = 0.616 texture[ 90, 64] = 0.580 texture[ 91, 64] = 0.596 texture[ 92, 64] = 0.769 texture[ 93, 64] = 0.706 texture[ 94, 64] = 0.663 texture[ 95, 64] = 0.463 texture[ 96, 64] = 0.580 texture[ 97, 64] = 0.878 texture[ 98, 64] = 0.816 texture[ 99, 64] = 0.718 texture[ 100, 64] = 0.396 texture[ 1, 65] = 0.749 texture[ 2, 65] = 0.624 texture[ 3, 65] = 0.318 texture[ 4, 65] = 0.471 texture[ 5, 65] = 0.624 texture[ 6, 65] = 0.714 texture[ 7, 65] = 0.706 texture[ 8, 65] = 0.816 texture[ 9, 65] = 0.678 texture[ 10, 65] = 0.769 texture[ 11, 65] = 0.267 texture[ 12, 65] = 0.133 texture[ 13, 65] = 0.706 texture[ 14, 65] = 0.341 texture[ 15, 65] = 0.384 texture[ 16, 65] = 0.835 texture[ 17, 65] = 0.871 texture[ 18, 65] = 0.486 texture[ 19, 65] = 0.353 texture[ 20, 65] = 0.549 texture[ 21, 65] = 0.110 texture[ 22, 65] = 0.592 texture[ 23, 65] = 0.878 texture[ 24, 65] = 0.353 texture[ 25, 65] = 0.541 texture[ 26, 65] = 0.690 texture[ 27, 65] = 0.584 texture[ 28, 65] = 0.867 texture[ 29, 65] = 1.000 texture[ 30, 65] = 0.714 texture[ 31, 65] = 0.569 texture[ 32, 65] = 0.725 texture[ 33, 65] = 0.561 texture[ 34, 65] = 0.541 texture[ 35, 65] = 0.659 texture[ 36, 65] = 0.584 texture[ 37, 65] = 0.561 texture[ 38, 65] = 0.714 texture[ 39, 65] = 0.482 texture[ 40, 65] = 0.627 texture[ 41, 65] = 0.678 texture[ 42, 65] = 0.812 texture[ 43, 65] = 0.678 texture[ 44, 65] = 0.573 texture[ 45, 65] = 0.624 texture[ 46, 65] = 0.604 texture[ 47, 65] = 0.694 texture[ 48, 65] = 0.902 texture[ 49, 65] = 0.737 texture[ 50, 65] = 0.384 texture[ 51, 65] = 0.690 texture[ 52, 65] = 0.714 texture[ 53, 65] = 0.373 texture[ 54, 65] = 0.392 texture[ 55, 65] = 0.639 texture[ 56, 65] = 0.702 texture[ 57, 65] = 0.725 texture[ 58, 65] = 0.800 texture[ 59, 65] = 0.694 texture[ 60, 65] = 0.812 texture[ 61, 65] = 0.396 texture[ 62, 65] = 0.075 texture[ 63, 65] = 0.584 texture[ 64, 65] = 0.475 texture[ 65, 65] = 0.298 texture[ 66, 65] = 0.800 texture[ 67, 65] = 0.882 texture[ 68, 65] = 0.596 texture[ 69, 65] = 0.286 texture[ 70, 65] = 0.616 texture[ 71, 65] = 0.173 texture[ 72, 65] = 0.439 texture[ 73, 65] = 0.902 texture[ 74, 65] = 0.439 texture[ 75, 65] = 0.486 texture[ 76, 65] = 0.682 texture[ 77, 65] = 0.624 texture[ 78, 65] = 0.663 texture[ 79, 65] = 0.871 texture[ 80, 65] = 0.651 texture[ 81, 65] = 0.494 texture[ 82, 65] = 0.671 texture[ 83, 65] = 0.514 texture[ 84, 65] = 0.569 texture[ 85, 65] = 0.663 texture[ 86, 65] = 0.553 texture[ 87, 65] = 0.596 texture[ 88, 65] = 0.682 texture[ 89, 65] = 0.451 texture[ 90, 65] = 0.608 texture[ 91, 65] = 0.682 texture[ 92, 65] = 0.843 texture[ 93, 65] = 0.627 texture[ 94, 65] = 0.592 texture[ 95, 65] = 0.596 texture[ 96, 65] = 0.627 texture[ 97, 65] = 0.725 texture[ 98, 65] = 0.922 texture[ 99, 65] = 0.714 texture[ 100, 65] = 0.427 texture[ 1, 66] = 0.624 texture[ 2, 66] = 0.678 texture[ 3, 66] = 0.671 texture[ 4, 66] = 0.682 texture[ 5, 66] = 0.678 texture[ 6, 66] = 0.624 texture[ 7, 66] = 0.694 texture[ 8, 66] = 0.937 texture[ 9, 66] = 0.792 texture[ 10, 66] = 0.349 texture[ 11, 66] = 0.086 texture[ 12, 66] = 0.318 texture[ 13, 66] = 0.635 texture[ 14, 66] = 0.196 texture[ 15, 66] = 0.310 texture[ 16, 66] = 0.859 texture[ 17, 66] = 0.914 texture[ 18, 66] = 0.541 texture[ 19, 66] = 0.255 texture[ 20, 66] = 0.255 texture[ 21, 66] = 0.286 texture[ 22, 66] = 0.792 texture[ 23, 66] = 0.694 texture[ 24, 66] = 0.616 texture[ 25, 66] = 0.494 texture[ 26, 66] = 0.451 texture[ 27, 66] = 0.549 texture[ 28, 66] = 0.902 texture[ 29, 66] = 0.980 texture[ 30, 66] = 0.475 texture[ 31, 66] = 0.310 texture[ 32, 66] = 0.616 texture[ 33, 66] = 0.749 texture[ 34, 66] = 0.569 texture[ 35, 66] = 0.541 texture[ 36, 66] = 0.569 texture[ 37, 66] = 0.376 texture[ 38, 66] = 0.514 texture[ 39, 66] = 0.651 texture[ 40, 66] = 0.651 texture[ 41, 66] = 0.690 texture[ 42, 66] = 0.659 texture[ 43, 66] = 0.694 texture[ 44, 66] = 0.663 texture[ 45, 66] = 0.804 texture[ 46, 66] = 0.694 texture[ 47, 66] = 0.376 texture[ 48, 66] = 0.859 texture[ 49, 66] = 0.725 texture[ 50, 66] = 0.239 texture[ 51, 66] = 0.541 texture[ 52, 66] = 0.702 texture[ 53, 66] = 0.604 texture[ 54, 66] = 0.725 texture[ 55, 66] = 0.690 texture[ 56, 66] = 0.608 texture[ 57, 66] = 0.659 texture[ 58, 66] = 0.910 texture[ 59, 66] = 0.871 texture[ 60, 66] = 0.439 texture[ 61, 66] = 0.133 texture[ 62, 66] = 0.200 texture[ 63, 66] = 0.624 texture[ 64, 66] = 0.251 texture[ 65, 66] = 0.251 texture[ 66, 66] = 0.757 texture[ 67, 66] = 0.933 texture[ 68, 66] = 0.627 texture[ 69, 66] = 0.239 texture[ 70, 66] = 0.275 texture[ 71, 66] = 0.212 texture[ 72, 66] = 0.737 texture[ 73, 66] = 0.718 texture[ 74, 66] = 0.592 texture[ 75, 66] = 0.514 texture[ 76, 66] = 0.451 texture[ 77, 66] = 0.494 texture[ 78, 66] = 0.792 texture[ 79, 66] = 0.812 texture[ 80, 66] = 0.349 texture[ 81, 66] = 0.463 texture[ 82, 66] = 0.737 texture[ 83, 66] = 0.718 texture[ 84, 66] = 0.525 texture[ 85, 66] = 0.569 texture[ 86, 66] = 0.537 texture[ 87, 66] = 0.392 texture[ 88, 66] = 0.518 texture[ 89, 66] = 0.678 texture[ 90, 66] = 0.651 texture[ 91, 66] = 0.702 texture[ 92, 66] = 0.651 texture[ 93, 66] = 0.690 texture[ 94, 66] = 0.659 texture[ 95, 66] = 0.835 texture[ 96, 66] = 0.616 texture[ 97, 66] = 0.431 texture[ 98, 66] = 0.882 texture[ 99, 66] = 0.682 texture[ 100, 66] = 0.329 texture[ 1, 67] = 0.482 texture[ 2, 67] = 0.502 texture[ 3, 67] = 0.922 texture[ 4, 67] = 0.871 texture[ 5, 67] = 0.682 texture[ 6, 67] = 0.541 texture[ 7, 67] = 0.616 texture[ 8, 67] = 1.000 texture[ 9, 67] = 0.933 texture[ 10, 67] = 0.353 texture[ 11, 67] = 0.212 texture[ 12, 67] = 0.596 texture[ 13, 67] = 0.733 texture[ 14, 67] = 0.329 texture[ 15, 67] = 0.200 texture[ 16, 67] = 0.714 texture[ 17, 67] = 0.792 texture[ 18, 67] = 0.337 texture[ 19, 67] = 0.447 texture[ 20, 67] = 0.086 texture[ 21, 67] = 0.337 texture[ 22, 67] = 0.627 texture[ 23, 67] = 0.671 texture[ 24, 67] = 0.827 texture[ 25, 67] = 0.553 texture[ 26, 67] = 0.529 texture[ 27, 67] = 0.745 texture[ 28, 67] = 0.682 texture[ 29, 67] = 0.592 texture[ 30, 67] = 0.529 texture[ 31, 67] = 0.463 texture[ 32, 67] = 0.694 texture[ 33, 67] = 0.639 texture[ 34, 67] = 0.416 texture[ 35, 67] = 0.647 texture[ 36, 67] = 0.604 texture[ 37, 67] = 0.098 texture[ 38, 67] = 0.322 texture[ 39, 67] = 0.737 texture[ 40, 67] = 0.773 texture[ 41, 67] = 0.690 texture[ 42, 67] = 0.624 texture[ 43, 67] = 0.800 texture[ 44, 67] = 0.859 texture[ 45, 67] = 0.780 texture[ 46, 67] = 0.549 texture[ 47, 67] = 0.463 texture[ 48, 67] = 0.690 texture[ 49, 67] = 0.761 texture[ 50, 67] = 0.310 texture[ 51, 67] = 0.396 texture[ 52, 67] = 0.502 texture[ 53, 67] = 0.859 texture[ 54, 67] = 0.925 texture[ 55, 67] = 0.714 texture[ 56, 67] = 0.569 texture[ 57, 67] = 0.584 texture[ 58, 67] = 0.945 texture[ 59, 67] = 1.000 texture[ 60, 67] = 0.471 texture[ 61, 67] = 0.176 texture[ 62, 67] = 0.525 texture[ 63, 67] = 0.725 texture[ 64, 67] = 0.392 texture[ 65, 67] = 0.231 texture[ 66, 67] = 0.553 texture[ 67, 67] = 0.855 texture[ 68, 67] = 0.353 texture[ 69, 67] = 0.420 texture[ 70, 67] = 0.157 texture[ 71, 67] = 0.200 texture[ 72, 67] = 0.635 texture[ 73, 67] = 0.624 texture[ 74, 67] = 0.855 texture[ 75, 67] = 0.584 texture[ 76, 67] = 0.518 texture[ 77, 67] = 0.639 texture[ 78, 67] = 0.847 texture[ 79, 67] = 0.361 texture[ 80, 67] = 0.310 texture[ 81, 67] = 0.714 texture[ 82, 67] = 0.757 texture[ 83, 67] = 0.569 texture[ 84, 67] = 0.431 texture[ 85, 67] = 0.671 texture[ 86, 67] = 0.506 texture[ 87, 67] = 0.145 texture[ 88, 67] = 0.416 texture[ 89, 67] = 0.749 texture[ 90, 67] = 0.757 texture[ 91, 67] = 0.651 texture[ 92, 67] = 0.596 texture[ 93, 67] = 0.847 texture[ 94, 67] = 0.816 texture[ 95, 67] = 0.761 texture[ 96, 67] = 0.482 texture[ 97, 67] = 0.482 texture[ 98, 67] = 0.718 texture[ 99, 67] = 0.737 texture[ 100, 67] = 0.263 texture[ 1, 68] = 0.506 texture[ 2, 68] = 0.525 texture[ 3, 68] = 0.827 texture[ 4, 68] = 0.804 texture[ 5, 68] = 0.659 texture[ 6, 68] = 0.714 texture[ 7, 68] = 0.749 texture[ 8, 68] = 0.859 texture[ 9, 68] = 0.737 texture[ 10, 68] = 0.349 texture[ 11, 68] = 0.459 texture[ 12, 68] = 0.702 texture[ 13, 68] = 0.761 texture[ 14, 68] = 0.404 texture[ 15, 68] = 0.275 texture[ 16, 68] = 0.855 texture[ 17, 68] = 0.580 texture[ 18, 68] = 0.447 texture[ 19, 68] = 0.486 texture[ 20, 68] = 0.043 texture[ 21, 68] = 0.463 texture[ 22, 68] = 0.537 texture[ 23, 68] = 0.647 texture[ 24, 68] = 0.922 texture[ 25, 68] = 0.890 texture[ 26, 68] = 0.878 texture[ 27, 68] = 0.725 texture[ 28, 68] = 0.682 texture[ 29, 68] = 0.690 texture[ 30, 68] = 0.725 texture[ 31, 68] = 0.573 texture[ 32, 68] = 0.690 texture[ 33, 68] = 0.639 texture[ 34, 68] = 0.494 texture[ 35, 68] = 0.349 texture[ 36, 68] = 0.580 texture[ 37, 68] = 0.310 texture[ 38, 68] = 0.102 texture[ 39, 68] = 0.451 texture[ 40, 68] = 0.525 texture[ 41, 68] = 0.541 texture[ 42, 68] = 0.690 texture[ 43, 68] = 0.843 texture[ 44, 68] = 0.882 texture[ 45, 68] = 0.749 texture[ 46, 68] = 0.396 texture[ 47, 68] = 0.188 texture[ 48, 68] = 0.318 texture[ 49, 68] = 0.788 texture[ 50, 68] = 0.263 texture[ 51, 68] = 0.392 texture[ 52, 68] = 0.541 texture[ 53, 68] = 0.792 texture[ 54, 68] = 0.843 texture[ 55, 68] = 0.659 texture[ 56, 68] = 0.714 texture[ 57, 68] = 0.757 texture[ 58, 68] = 0.847 texture[ 59, 68] = 0.804 texture[ 60, 68] = 0.447 texture[ 61, 68] = 0.384 texture[ 62, 68] = 0.682 texture[ 63, 68] = 0.737 texture[ 64, 68] = 0.502 texture[ 65, 68] = 0.275 texture[ 66, 68] = 0.757 texture[ 67, 68] = 0.678 texture[ 68, 68] = 0.365 texture[ 69, 68] = 0.573 texture[ 70, 68] = 0.067 texture[ 71, 68] = 0.329 texture[ 72, 68] = 0.569 texture[ 73, 68] = 0.596 texture[ 74, 68] = 0.898 texture[ 75, 68] = 0.898 texture[ 76, 68] = 0.910 texture[ 77, 68] = 0.780 texture[ 78, 68] = 0.616 texture[ 79, 68] = 0.373 texture[ 80, 68] = 0.678 texture[ 81, 68] = 0.682 texture[ 82, 68] = 0.647 texture[ 83, 68] = 0.635 texture[ 84, 68] = 0.451 texture[ 85, 68] = 0.376 texture[ 86, 68] = 0.592 texture[ 87, 68] = 0.361 texture[ 88, 68] = 0.329 texture[ 89, 68] = 0.525 texture[ 90, 68] = 0.529 texture[ 91, 68] = 0.573 texture[ 92, 68] = 0.702 texture[ 93, 68] = 0.847 texture[ 94, 68] = 0.871 texture[ 95, 68] = 0.671 texture[ 96, 68] = 0.365 texture[ 97, 68] = 0.153 texture[ 98, 68] = 0.447 texture[ 99, 68] = 0.855 texture[ 100, 68] = 0.188 texture[ 1, 69] = 0.678 texture[ 2, 69] = 0.725 texture[ 3, 69] = 0.678 texture[ 4, 69] = 0.737 texture[ 5, 69] = 0.769 texture[ 6, 69] = 0.910 texture[ 7, 69] = 0.976 texture[ 8, 69] = 0.824 texture[ 9, 69] = 0.286 texture[ 10, 69] = 0.086 texture[ 11, 69] = 0.392 texture[ 12, 69] = 0.847 texture[ 13, 69] = 0.761 texture[ 14, 69] = 0.475 texture[ 15, 69] = 0.639 texture[ 16, 69] = 0.788 texture[ 17, 69] = 0.529 texture[ 18, 69] = 0.573 texture[ 19, 69] = 0.200 texture[ 20, 69] = 0.306 texture[ 21, 69] = 0.639 texture[ 22, 69] = 0.486 texture[ 23, 69] = 0.451 texture[ 24, 69] = 0.925 texture[ 25, 69] = 1.000 texture[ 26, 69] = 0.953 texture[ 27, 69] = 0.690 texture[ 28, 69] = 0.525 texture[ 29, 69] = 0.835 texture[ 30, 69] = 0.871 texture[ 31, 69] = 0.706 texture[ 32, 69] = 0.706 texture[ 33, 69] = 0.882 texture[ 34, 69] = 0.639 texture[ 35, 69] = 0.118 texture[ 36, 69] = 0.541 texture[ 37, 69] = 0.910 texture[ 38, 69] = 0.349 texture[ 39, 69] = 0.459 texture[ 40, 69] = 0.573 texture[ 41, 69] = 0.706 texture[ 42, 69] = 0.694 texture[ 43, 69] = 0.706 texture[ 44, 69] = 0.843 texture[ 45, 69] = 0.408 texture[ 46, 69] = 0.349 texture[ 47, 69] = 0.122 texture[ 48, 69] = 0.482 texture[ 49, 69] = 0.816 texture[ 50, 69] = 0.220 texture[ 51, 69] = 0.561 texture[ 52, 69] = 0.749 texture[ 53, 69] = 0.671 texture[ 54, 69] = 0.714 texture[ 55, 69] = 0.761 texture[ 56, 69] = 0.898 texture[ 57, 69] = 0.969 texture[ 58, 69] = 0.890 texture[ 59, 69] = 0.337 texture[ 60, 69] = 0.118 texture[ 61, 69] = 0.275 texture[ 62, 69] = 0.780 texture[ 63, 69] = 0.800 texture[ 64, 69] = 0.482 texture[ 65, 69] = 0.573 texture[ 66, 69] = 0.827 texture[ 67, 69] = 0.604 texture[ 68, 69] = 0.573 texture[ 69, 69] = 0.286 texture[ 70, 69] = 0.227 texture[ 71, 69] = 0.627 texture[ 72, 69] = 0.569 texture[ 73, 69] = 0.451 texture[ 74, 69] = 0.835 texture[ 75, 69] = 1.000 texture[ 76, 69] = 0.980 texture[ 77, 69] = 0.773 texture[ 78, 69] = 0.318 texture[ 79, 69] = 0.604 texture[ 80, 69] = 0.800 texture[ 81, 69] = 0.690 texture[ 82, 69] = 0.745 texture[ 83, 69] = 0.898 texture[ 84, 69] = 0.514 texture[ 85, 69] = 0.145 texture[ 86, 69] = 0.694 texture[ 87, 69] = 0.494 texture[ 88, 69] = 0.341 texture[ 89, 69] = 0.553 texture[ 90, 69] = 0.604 texture[ 91, 69] = 0.718 texture[ 92, 69] = 0.694 texture[ 93, 69] = 0.737 texture[ 94, 69] = 0.800 texture[ 95, 69] = 0.349 texture[ 96, 69] = 0.392 texture[ 97, 69] = 0.090 texture[ 98, 69] = 0.604 texture[ 99, 69] = 0.843 texture[ 100, 69] = 0.243 texture[ 1, 70] = 0.627 texture[ 2, 70] = 0.651 texture[ 3, 70] = 0.561 texture[ 4, 70] = 0.549 texture[ 5, 70] = 0.627 texture[ 6, 70] = 0.902 texture[ 7, 70] = 0.976 texture[ 8, 70] = 0.592 texture[ 9, 70] = 0.251 texture[ 10, 70] = 0.075 texture[ 11, 70] = 0.561 texture[ 12, 70] = 0.714 texture[ 13, 70] = 0.306 texture[ 14, 70] = 0.635 texture[ 15, 70] = 0.773 texture[ 16, 70] = 0.463 texture[ 17, 70] = 0.427 texture[ 18, 70] = 0.427 texture[ 19, 70] = 0.063 texture[ 20, 70] = 0.255 texture[ 21, 70] = 0.427 texture[ 22, 70] = 0.616 texture[ 23, 70] = 0.584 texture[ 24, 70] = 0.745 texture[ 25, 70] = 0.702 texture[ 26, 70] = 0.902 texture[ 27, 70] = 0.690 texture[ 28, 70] = 0.322 texture[ 29, 70] = 0.780 texture[ 30, 70] = 0.718 texture[ 31, 70] = 0.780 texture[ 32, 70] = 0.859 texture[ 33, 70] = 0.800 texture[ 34, 70] = 0.525 texture[ 35, 70] = 0.075 texture[ 36, 70] = 0.549 texture[ 37, 70] = 0.859 texture[ 38, 70] = 0.737 texture[ 39, 70] = 0.902 texture[ 40, 70] = 0.953 texture[ 41, 70] = 0.780 texture[ 42, 70] = 0.627 texture[ 43, 70] = 0.694 texture[ 44, 70] = 0.561 texture[ 45, 70] = 0.239 texture[ 46, 70] = 0.227 texture[ 47, 70] = 0.227 texture[ 48, 70] = 0.651 texture[ 49, 70] = 0.737 texture[ 50, 70] = 0.310 texture[ 51, 70] = 0.596 texture[ 52, 70] = 0.682 texture[ 53, 70] = 0.561 texture[ 54, 70] = 0.537 texture[ 55, 70] = 0.608 texture[ 56, 70] = 0.878 texture[ 57, 70] = 0.980 texture[ 58, 70] = 0.671 texture[ 59, 70] = 0.251 texture[ 60, 70] = 0.102 texture[ 61, 70] = 0.420 texture[ 62, 70] = 0.804 texture[ 63, 70] = 0.306 texture[ 64, 70] = 0.569 texture[ 65, 70] = 0.780 texture[ 66, 70] = 0.549 texture[ 67, 70] = 0.396 texture[ 68, 70] = 0.459 texture[ 69, 70] = 0.086 texture[ 70, 70] = 0.220 texture[ 71, 70] = 0.408 texture[ 72, 70] = 0.592 texture[ 73, 70] = 0.604 texture[ 74, 70] = 0.733 texture[ 75, 70] = 0.671 texture[ 76, 70] = 0.878 texture[ 77, 70] = 0.788 texture[ 78, 70] = 0.231 texture[ 79, 70] = 0.718 texture[ 80, 70] = 0.812 texture[ 81, 70] = 0.827 texture[ 82, 70] = 0.855 texture[ 83, 70] = 0.792 texture[ 84, 70] = 0.341 texture[ 85, 70] = 0.133 texture[ 86, 70] = 0.624 texture[ 87, 70] = 0.306 texture[ 88, 70] = 0.282 texture[ 89, 70] = 0.914 texture[ 90, 70] = 0.957 texture[ 91, 70] = 0.757 texture[ 92, 70] = 0.639 texture[ 93, 70] = 0.694 texture[ 94, 70] = 0.459 texture[ 95, 70] = 0.231 texture[ 96, 70] = 0.227 texture[ 97, 70] = 0.255 texture[ 98, 70] = 0.714 texture[ 99, 70] = 0.714 texture[ 100, 70] = 0.322 texture[ 1, 71] = 0.573 texture[ 2, 71] = 0.561 texture[ 3, 71] = 0.694 texture[ 4, 71] = 0.616 texture[ 5, 71] = 0.604 texture[ 6, 71] = 0.769 texture[ 7, 71] = 0.925 texture[ 8, 71] = 0.647 texture[ 9, 71] = 0.322 texture[ 10, 71] = 0.141 texture[ 11, 71] = 0.529 texture[ 12, 71] = 0.788 texture[ 13, 71] = 0.604 texture[ 14, 71] = 0.463 texture[ 15, 71] = 0.659 texture[ 16, 71] = 0.639 texture[ 17, 71] = 0.416 texture[ 18, 71] = 0.200 texture[ 19, 71] = 0.047 texture[ 20, 71] = 0.098 texture[ 21, 71] = 0.639 texture[ 22, 71] = 0.914 texture[ 23, 71] = 0.867 texture[ 24, 71] = 0.604 texture[ 25, 71] = 0.529 texture[ 26, 71] = 0.714 texture[ 27, 71] = 0.549 texture[ 28, 71] = 0.561 texture[ 29, 71] = 0.898 texture[ 30, 71] = 0.671 texture[ 31, 71] = 0.769 texture[ 32, 71] = 0.608 texture[ 33, 71] = 0.392 texture[ 34, 71] = 0.459 texture[ 35, 71] = 0.439 texture[ 36, 71] = 0.835 texture[ 37, 71] = 0.925 texture[ 38, 71] = 0.953 texture[ 39, 71] = 0.890 texture[ 40, 71] = 0.804 texture[ 41, 71] = 0.682 texture[ 42, 71] = 0.635 texture[ 43, 71] = 0.702 texture[ 44, 71] = 0.616 texture[ 45, 71] = 0.580 texture[ 46, 71] = 0.306 texture[ 47, 71] = 0.431 texture[ 48, 71] = 0.694 texture[ 49, 71] = 0.569 texture[ 50, 71] = 0.482 texture[ 51, 71] = 0.569 texture[ 52, 71] = 0.529 texture[ 53, 71] = 0.682 texture[ 54, 71] = 0.647 texture[ 55, 71] = 0.584 texture[ 56, 71] = 0.725 texture[ 57, 71] = 0.902 texture[ 58, 71] = 0.651 texture[ 59, 71] = 0.392 texture[ 60, 71] = 0.208 texture[ 61, 71] = 0.341 texture[ 62, 71] = 0.624 texture[ 63, 71] = 0.596 texture[ 64, 71] = 0.475 texture[ 65, 71] = 0.537 texture[ 66, 71] = 0.639 texture[ 67, 71] = 0.431 texture[ 68, 71] = 0.227 texture[ 69, 71] = 0.067 texture[ 70, 71] = 0.035 texture[ 71, 71] = 0.506 texture[ 72, 71] = 0.890 texture[ 73, 71] = 0.867 texture[ 74, 71] = 0.690 texture[ 75, 71] = 0.569 texture[ 76, 71] = 0.714 texture[ 77, 71] = 0.608 texture[ 78, 71] = 0.384 texture[ 79, 71] = 0.780 texture[ 80, 71] = 0.816 texture[ 81, 71] = 0.792 texture[ 82, 71] = 0.537 texture[ 83, 71] = 0.416 texture[ 84, 71] = 0.459 texture[ 85, 71] = 0.349 texture[ 86, 71] = 0.561 texture[ 87, 71] = 0.616 texture[ 88, 71] = 0.553 texture[ 89, 71] = 0.867 texture[ 90, 71] = 0.761 texture[ 91, 71] = 0.690 texture[ 92, 71] = 0.616 texture[ 93, 71] = 0.714 texture[ 94, 71] = 0.529 texture[ 95, 71] = 0.580 texture[ 96, 71] = 0.231 texture[ 97, 71] = 0.525 texture[ 98, 71] = 0.694 texture[ 99, 71] = 0.549 texture[ 100, 71] = 0.471 texture[ 1, 72] = 0.725 texture[ 2, 72] = 0.824 texture[ 3, 72] = 0.761 texture[ 4, 72] = 0.690 texture[ 5, 72] = 0.718 texture[ 6, 72] = 0.827 texture[ 7, 72] = 0.914 texture[ 8, 72] = 0.859 texture[ 9, 72] = 0.518 texture[ 10, 72] = 0.212 texture[ 11, 72] = 0.494 texture[ 12, 72] = 0.976 texture[ 13, 72] = 0.855 texture[ 14, 72] = 0.627 texture[ 15, 72] = 0.714 texture[ 16, 72] = 0.847 texture[ 17, 72] = 0.635 texture[ 18, 72] = 0.502 texture[ 19, 72] = 0.267 texture[ 20, 72] = 0.255 texture[ 21, 72] = 0.792 texture[ 22, 72] = 0.827 texture[ 23, 72] = 0.608 texture[ 24, 72] = 0.580 texture[ 25, 72] = 0.835 texture[ 26, 72] = 0.890 texture[ 27, 72] = 0.745 texture[ 28, 72] = 0.506 texture[ 29, 72] = 0.584 texture[ 30, 72] = 0.682 texture[ 31, 72] = 0.659 texture[ 32, 72] = 0.639 texture[ 33, 72] = 0.725 texture[ 34, 72] = 0.725 texture[ 35, 72] = 0.427 texture[ 36, 72] = 0.502 texture[ 37, 72] = 0.914 texture[ 38, 72] = 0.878 texture[ 39, 72] = 0.749 texture[ 40, 72] = 0.780 texture[ 41, 72] = 0.773 texture[ 42, 72] = 0.749 texture[ 43, 72] = 0.639 texture[ 44, 72] = 0.780 texture[ 45, 72] = 0.788 texture[ 46, 72] = 0.361 texture[ 47, 72] = 0.447 texture[ 48, 72] = 0.592 texture[ 49, 72] = 0.757 texture[ 50, 72] = 0.494 texture[ 51, 72] = 0.635 texture[ 52, 72] = 0.812 texture[ 53, 72] = 0.816 texture[ 54, 72] = 0.780 texture[ 55, 72] = 0.733 texture[ 56, 72] = 0.804 texture[ 57, 72] = 0.925 texture[ 58, 72] = 0.871 texture[ 59, 72] = 0.604 texture[ 60, 72] = 0.243 texture[ 61, 72] = 0.129 texture[ 62, 72] = 0.573 texture[ 63, 72] = 0.878 texture[ 64, 72] = 0.690 texture[ 65, 72] = 0.580 texture[ 66, 72] = 0.812 texture[ 67, 72] = 0.694 texture[ 68, 72] = 0.431 texture[ 69, 72] = 0.263 texture[ 70, 72] = 0.239 texture[ 71, 72] = 0.824 texture[ 72, 72] = 0.945 texture[ 73, 72] = 0.584 texture[ 74, 72] = 0.569 texture[ 75, 72] = 0.871 texture[ 76, 72] = 0.902 texture[ 77, 72] = 0.639 texture[ 78, 72] = 0.573 texture[ 79, 72] = 0.647 texture[ 80, 72] = 0.714 texture[ 81, 72] = 0.682 texture[ 82, 72] = 0.616 texture[ 83, 72] = 0.682 texture[ 84, 72] = 0.663 texture[ 85, 72] = 0.376 texture[ 86, 72] = 0.408 texture[ 87, 72] = 0.843 texture[ 88, 72] = 0.816 texture[ 89, 72] = 0.827 texture[ 90, 72] = 0.737 texture[ 91, 72] = 0.792 texture[ 92, 72] = 0.745 texture[ 93, 72] = 0.671 texture[ 94, 72] = 0.867 texture[ 95, 72] = 0.804 texture[ 96, 72] = 0.416 texture[ 97, 72] = 0.439 texture[ 98, 72] = 0.608 texture[ 99, 72] = 0.780 texture[ 100, 72] = 0.506 texture[ 1, 73] = 0.737 texture[ 2, 73] = 0.639 texture[ 3, 73] = 0.647 texture[ 4, 73] = 0.718 texture[ 5, 73] = 0.914 texture[ 6, 73] = 0.933 texture[ 7, 73] = 0.827 texture[ 8, 73] = 0.263 texture[ 9, 73] = 0.118 texture[ 10, 73] = 0.349 texture[ 11, 73] = 0.690 texture[ 12, 73] = 0.706 texture[ 13, 73] = 0.816 texture[ 14, 73] = 0.847 texture[ 15, 73] = 0.957 texture[ 16, 73] = 0.788 texture[ 17, 73] = 0.431 texture[ 18, 73] = 0.416 texture[ 19, 73] = 0.153 texture[ 20, 73] = 0.306 texture[ 21, 73] = 0.769 texture[ 22, 73] = 0.859 texture[ 23, 73] = 0.714 texture[ 24, 73] = 0.749 texture[ 25, 73] = 0.702 texture[ 26, 73] = 0.627 texture[ 27, 73] = 0.788 texture[ 28, 73] = 0.584 texture[ 29, 73] = 0.553 texture[ 30, 73] = 0.627 texture[ 31, 73] = 0.682 texture[ 32, 73] = 0.749 texture[ 33, 73] = 0.682 texture[ 34, 73] = 0.682 texture[ 35, 73] = 0.294 texture[ 36, 73] = 0.298 texture[ 37, 73] = 0.812 texture[ 38, 73] = 0.843 texture[ 39, 73] = 0.773 texture[ 40, 73] = 0.788 texture[ 41, 73] = 0.714 texture[ 42, 73] = 0.702 texture[ 43, 73] = 0.651 texture[ 44, 73] = 0.690 texture[ 45, 73] = 0.373 texture[ 46, 73] = 0.298 texture[ 47, 73] = 0.208 texture[ 48, 73] = 0.451 texture[ 49, 73] = 0.706 texture[ 50, 73] = 0.608 texture[ 51, 73] = 0.573 texture[ 52, 73] = 0.635 texture[ 53, 73] = 0.616 texture[ 54, 73] = 0.616 texture[ 55, 73] = 0.706 texture[ 56, 73] = 0.843 texture[ 57, 73] = 0.878 texture[ 58, 73] = 0.580 texture[ 59, 73] = 0.275 texture[ 60, 73] = 0.188 texture[ 61, 73] = 0.251 texture[ 62, 73] = 0.635 texture[ 63, 73] = 0.788 texture[ 64, 73] = 0.859 texture[ 65, 73] = 0.937 texture[ 66, 73] = 0.824 texture[ 67, 73] = 0.459 texture[ 68, 73] = 0.392 texture[ 69, 73] = 0.255 texture[ 70, 73] = 0.141 texture[ 71, 73] = 0.502 texture[ 72, 73] = 0.702 texture[ 73, 73] = 0.718 texture[ 74, 73] = 0.682 texture[ 75, 73] = 0.757 texture[ 76, 73] = 0.627 texture[ 77, 73] = 0.812 texture[ 78, 73] = 0.569 texture[ 79, 73] = 0.447 texture[ 80, 73] = 0.694 texture[ 81, 73] = 0.502 texture[ 82, 73] = 0.384 texture[ 83, 73] = 0.569 texture[ 84, 73] = 0.624 texture[ 85, 73] = 0.251 texture[ 86, 73] = 0.431 texture[ 87, 73] = 0.592 texture[ 88, 73] = 0.463 texture[ 89, 73] = 0.718 texture[ 90, 73] = 0.945 texture[ 91, 73] = 0.824 texture[ 92, 73] = 0.671 texture[ 93, 73] = 0.659 texture[ 94, 73] = 0.678 texture[ 95, 73] = 0.341 texture[ 96, 73] = 0.361 texture[ 97, 73] = 0.298 texture[ 98, 73] = 0.514 texture[ 99, 73] = 0.718 texture[ 100, 73] = 0.627 texture[ 1, 74] = 0.898 texture[ 2, 74] = 0.706 texture[ 3, 74] = 0.843 texture[ 4, 74] = 0.847 texture[ 5, 74] = 0.992 texture[ 6, 74] = 0.843 texture[ 7, 74] = 0.447 texture[ 8, 74] = 0.067 texture[ 9, 74] = 0.086 texture[ 10, 74] = 0.365 texture[ 11, 74] = 0.855 texture[ 12, 74] = 0.671 texture[ 13, 74] = 0.902 texture[ 14, 74] = 1.000 texture[ 15, 74] = 0.925 texture[ 16, 74] = 0.694 texture[ 17, 74] = 0.337 texture[ 18, 74] = 0.184 texture[ 19, 74] = 0.090 texture[ 20, 74] = 0.482 texture[ 21, 74] = 0.965 texture[ 22, 74] = 0.992 texture[ 23, 74] = 0.922 texture[ 24, 74] = 0.725 texture[ 25, 74] = 0.541 texture[ 26, 74] = 0.471 texture[ 27, 74] = 0.608 texture[ 28, 74] = 0.780 texture[ 29, 74] = 0.792 texture[ 30, 74] = 0.651 texture[ 31, 74] = 0.761 texture[ 32, 74] = 0.569 texture[ 33, 74] = 0.420 texture[ 34, 74] = 0.463 texture[ 35, 74] = 0.529 texture[ 36, 74] = 0.647 texture[ 37, 74] = 0.804 texture[ 38, 74] = 0.925 texture[ 39, 74] = 0.824 texture[ 40, 74] = 0.718 texture[ 41, 74] = 0.525 texture[ 42, 74] = 0.518 texture[ 43, 74] = 0.843 texture[ 44, 74] = 0.812 texture[ 45, 74] = 0.627 texture[ 46, 74] = 0.518 texture[ 47, 74] = 0.239 texture[ 48, 74] = 0.537 texture[ 49, 74] = 0.773 texture[ 50, 74] = 0.804 texture[ 51, 74] = 0.769 texture[ 52, 74] = 0.639 texture[ 53, 74] = 0.737 texture[ 54, 74] = 0.773 texture[ 55, 74] = 0.882 texture[ 56, 74] = 0.804 texture[ 57, 74] = 0.529 texture[ 58, 74] = 0.098 texture[ 59, 74] = 0.231 texture[ 60, 74] = 0.294 texture[ 61, 74] = 0.502 texture[ 62, 74] = 0.671 texture[ 63, 74] = 0.843 texture[ 64, 74] = 1.000 texture[ 65, 74] = 0.957 texture[ 66, 74] = 0.745 texture[ 67, 74] = 0.396 texture[ 68, 74] = 0.243 texture[ 69, 74] = 0.122 texture[ 70, 74] = 0.267 texture[ 71, 74] = 0.745 texture[ 72, 74] = 0.922 texture[ 73, 74] = 0.945 texture[ 74, 74] = 0.694 texture[ 75, 74] = 0.592 texture[ 76, 74] = 0.486 texture[ 77, 74] = 0.690 texture[ 78, 74] = 0.525 texture[ 79, 74] = 0.682 texture[ 80, 74] = 0.792 texture[ 81, 74] = 0.227 texture[ 82, 74] = 0.188 texture[ 83, 74] = 0.353 texture[ 84, 74] = 0.584 texture[ 85, 74] = 0.506 texture[ 86, 74] = 0.627 texture[ 87, 74] = 0.792 texture[ 88, 74] = 0.882 texture[ 89, 74] = 0.867 texture[ 90, 74] = 0.878 texture[ 91, 74] = 0.635 texture[ 92, 74] = 0.529 texture[ 93, 74] = 0.725 texture[ 94, 74] = 0.647 texture[ 95, 74] = 0.529 texture[ 96, 74] = 0.518 texture[ 97, 74] = 0.341 texture[ 98, 74] = 0.529 texture[ 99, 74] = 0.788 texture[ 100, 74] = 0.827 texture[ 1, 75] = 0.882 texture[ 2, 75] = 0.933 texture[ 3, 75] = 0.878 texture[ 4, 75] = 0.855 texture[ 5, 75] = 0.988 texture[ 6, 75] = 0.749 texture[ 7, 75] = 0.361 texture[ 8, 75] = 0.318 texture[ 9, 75] = 0.153 texture[ 10, 75] = 0.165 texture[ 11, 75] = 0.788 texture[ 12, 75] = 0.855 texture[ 13, 75] = 0.812 texture[ 14, 75] = 0.969 texture[ 15, 75] = 0.624 texture[ 16, 75] = 0.286 texture[ 17, 75] = 0.220 texture[ 18, 75] = 0.122 texture[ 19, 75] = 0.063 texture[ 20, 75] = 0.227 texture[ 21, 75] = 0.702 texture[ 22, 75] = 0.882 texture[ 23, 75] = 0.980 texture[ 24, 75] = 0.780 texture[ 25, 75] = 0.537 texture[ 26, 75] = 0.561 texture[ 27, 75] = 0.678 texture[ 28, 75] = 0.671 texture[ 29, 75] = 0.788 texture[ 30, 75] = 0.749 texture[ 31, 75] = 0.404 texture[ 32, 75] = 0.129 texture[ 33, 75] = 0.616 texture[ 34, 75] = 0.882 texture[ 35, 75] = 0.957 texture[ 36, 75] = 0.780 texture[ 37, 75] = 0.518 texture[ 38, 75] = 0.843 texture[ 39, 75] = 0.859 texture[ 40, 75] = 0.733 texture[ 41, 75] = 0.475 texture[ 42, 75] = 0.227 texture[ 43, 75] = 0.788 texture[ 44, 75] = 0.682 texture[ 45, 75] = 0.627 texture[ 46, 75] = 0.671 texture[ 47, 75] = 0.173 texture[ 48, 75] = 0.337 texture[ 49, 75] = 0.969 texture[ 50, 75] = 0.878 texture[ 51, 75] = 0.847 texture[ 52, 75] = 0.925 texture[ 53, 75] = 0.902 texture[ 54, 75] = 0.827 texture[ 55, 75] = 0.965 texture[ 56, 75] = 0.855 texture[ 57, 75] = 0.447 texture[ 58, 75] = 0.310 texture[ 59, 75] = 0.239 texture[ 60, 75] = 0.196 texture[ 61, 75] = 0.584 texture[ 62, 75] = 0.902 texture[ 63, 75] = 0.816 texture[ 64, 75] = 0.969 texture[ 65, 75] = 0.706 texture[ 66, 75] = 0.298 texture[ 67, 75] = 0.239 texture[ 68, 75] = 0.145 texture[ 69, 75] = 0.063 texture[ 70, 75] = 0.145 texture[ 71, 75] = 0.647 texture[ 72, 75] = 0.890 texture[ 73, 75] = 0.976 texture[ 74, 75] = 0.859 texture[ 75, 75] = 0.549 texture[ 76, 75] = 0.561 texture[ 77, 75] = 0.694 texture[ 78, 75] = 0.690 texture[ 79, 75] = 0.761 texture[ 80, 75] = 0.757 texture[ 81, 75] = 0.165 texture[ 82, 75] = 0.196 texture[ 83, 75] = 0.718 texture[ 84, 75] = 0.804 texture[ 85, 75] = 0.827 texture[ 86, 75] = 0.788 texture[ 87, 75] = 0.792 texture[ 88, 75] = 1.000 texture[ 89, 75] = 0.827 texture[ 90, 75] = 0.769 texture[ 91, 75] = 0.561 texture[ 92, 75] = 0.384 texture[ 93, 75] = 0.780 texture[ 94, 75] = 0.553 texture[ 95, 75] = 0.596 texture[ 96, 75] = 0.608 texture[ 97, 75] = 0.090 texture[ 98, 75] = 0.427 texture[ 99, 75] = 1.000 texture[ 100, 75] = 0.855 texture[ 1, 76] = 0.757 texture[ 2, 76] = 0.608 texture[ 3, 76] = 0.616 texture[ 4, 76] = 0.733 texture[ 5, 76] = 0.976 texture[ 6, 76] = 0.404 texture[ 7, 76] = 0.451 texture[ 8, 76] = 0.718 texture[ 9, 76] = 0.239 texture[ 10, 76] = 0.431 texture[ 11, 76] = 0.678 texture[ 12, 76] = 0.322 texture[ 13, 76] = 0.824 texture[ 14, 76] = 0.910 texture[ 15, 76] = 0.427 texture[ 16, 76] = 0.212 texture[ 17, 76] = 0.239 texture[ 18, 76] = 0.098 texture[ 19, 76] = 0.012 texture[ 20, 76] = 0.110 texture[ 21, 76] = 0.451 texture[ 22, 76] = 0.690 texture[ 23, 76] = 0.706 texture[ 24, 76] = 0.624 texture[ 25, 76] = 0.627 texture[ 26, 76] = 0.702 texture[ 27, 76] = 0.569 texture[ 28, 76] = 0.737 texture[ 29, 76] = 0.745 texture[ 30, 76] = 0.663 texture[ 31, 76] = 0.502 texture[ 32, 76] = 0.263 texture[ 33, 76] = 0.690 texture[ 34, 76] = 0.855 texture[ 35, 76] = 0.871 texture[ 36, 76] = 0.878 texture[ 37, 76] = 0.580 texture[ 38, 76] = 0.725 texture[ 39, 76] = 0.855 texture[ 40, 76] = 0.769 texture[ 41, 76] = 0.329 texture[ 42, 76] = 0.282 texture[ 43, 76] = 0.749 texture[ 44, 76] = 0.541 texture[ 45, 76] = 0.416 texture[ 46, 76] = 0.682 texture[ 47, 76] = 0.431 texture[ 48, 76] = 0.231 texture[ 49, 76] = 0.690 texture[ 50, 76] = 0.843 texture[ 51, 76] = 0.773 texture[ 52, 76] = 0.647 texture[ 53, 76] = 0.604 texture[ 54, 76] = 0.659 texture[ 55, 76] = 0.965 texture[ 56, 76] = 0.514 texture[ 57, 76] = 0.376 texture[ 58, 76] = 0.757 texture[ 59, 76] = 0.275 texture[ 60, 76] = 0.310 texture[ 61, 76] = 0.714 texture[ 62, 76] = 0.306 texture[ 63, 76] = 0.694 texture[ 64, 76] = 0.945 texture[ 65, 76] = 0.518 texture[ 66, 76] = 0.212 texture[ 67, 76] = 0.243 texture[ 68, 76] = 0.133 texture[ 69, 76] = 0.020 texture[ 70, 76] = 0.067 texture[ 71, 76] = 0.361 texture[ 72, 76] = 0.663 texture[ 73, 76] = 0.714 texture[ 74, 76] = 0.624 texture[ 75, 76] = 0.608 texture[ 76, 76] = 0.725 texture[ 77, 76] = 0.584 texture[ 78, 76] = 0.694 texture[ 79, 76] = 0.506 texture[ 80, 76] = 0.298 texture[ 81, 76] = 0.416 texture[ 82, 76] = 0.361 texture[ 83, 76] = 0.769 texture[ 84, 76] = 0.773 texture[ 85, 76] = 0.792 texture[ 86, 76] = 0.855 texture[ 87, 76] = 0.616 texture[ 88, 76] = 0.792 texture[ 89, 76] = 0.804 texture[ 90, 76] = 0.745 texture[ 91, 76] = 0.310 texture[ 92, 76] = 0.396 texture[ 93, 76] = 0.745 texture[ 94, 76] = 0.486 texture[ 95, 76] = 0.451 texture[ 96, 76] = 0.702 texture[ 97, 76] = 0.322 texture[ 98, 76] = 0.294 texture[ 99, 76] = 0.757 texture[ 100, 76] = 0.800 texture[ 1, 77] = 0.678 texture[ 2, 77] = 0.529 texture[ 3, 77] = 0.514 texture[ 4, 77] = 0.725 texture[ 5, 77] = 0.878 texture[ 6, 77] = 0.404 texture[ 7, 77] = 0.173 texture[ 8, 77] = 0.486 texture[ 9, 77] = 0.525 texture[ 10, 77] = 0.506 texture[ 11, 77] = 0.365 texture[ 12, 77] = 0.098 texture[ 13, 77] = 0.725 texture[ 14, 77] = 0.835 texture[ 15, 77] = 0.404 texture[ 16, 77] = 0.208 texture[ 17, 77] = 0.200 texture[ 18, 77] = 0.098 texture[ 19, 77] = 0.090 texture[ 20, 77] = 0.286 texture[ 21, 77] = 0.514 texture[ 22, 77] = 0.349 texture[ 23, 77] = 0.471 texture[ 24, 77] = 0.769 texture[ 25, 77] = 0.737 texture[ 26, 77] = 0.529 texture[ 27, 77] = 0.694 texture[ 28, 77] = 0.945 texture[ 29, 77] = 0.725 texture[ 30, 77] = 0.627 texture[ 31, 77] = 0.592 texture[ 32, 77] = 0.447 texture[ 33, 77] = 0.690 texture[ 34, 77] = 0.718 texture[ 35, 77] = 0.537 texture[ 36, 77] = 0.537 texture[ 37, 77] = 0.561 texture[ 38, 77] = 0.663 texture[ 39, 77] = 0.494 texture[ 40, 77] = 0.616 texture[ 41, 77] = 0.584 texture[ 42, 77] = 0.663 texture[ 43, 77] = 0.980 texture[ 44, 77] = 0.584 texture[ 45, 77] = 0.451 texture[ 46, 77] = 0.635 texture[ 47, 77] = 0.816 texture[ 48, 77] = 0.584 texture[ 49, 77] = 0.365 texture[ 50, 77] = 0.553 texture[ 51, 77] = 0.659 texture[ 52, 77] = 0.553 texture[ 53, 77] = 0.494 texture[ 54, 77] = 0.690 texture[ 55, 77] = 0.878 texture[ 56, 77] = 0.482 texture[ 57, 77] = 0.153 texture[ 58, 77] = 0.482 texture[ 59, 77] = 0.569 texture[ 60, 77] = 0.486 texture[ 61, 77] = 0.482 texture[ 62, 77] = 0.055 texture[ 63, 77] = 0.561 texture[ 64, 77] = 0.855 texture[ 65, 77] = 0.494 texture[ 66, 77] = 0.200 texture[ 67, 77] = 0.208 texture[ 68, 77] = 0.110 texture[ 69, 77] = 0.098 texture[ 70, 77] = 0.227 texture[ 71, 77] = 0.475 texture[ 72, 77] = 0.384 texture[ 73, 77] = 0.431 texture[ 74, 77] = 0.718 texture[ 75, 77] = 0.773 texture[ 76, 77] = 0.580 texture[ 77, 77] = 0.624 texture[ 78, 77] = 0.898 texture[ 79, 77] = 0.282 texture[ 80, 77] = 0.220 texture[ 81, 77] = 0.569 texture[ 82, 77] = 0.475 texture[ 83, 77] = 0.749 texture[ 84, 77] = 0.694 texture[ 85, 77] = 0.514 texture[ 86, 77] = 0.537 texture[ 87, 77] = 0.596 texture[ 88, 77] = 0.663 texture[ 89, 77] = 0.494 texture[ 90, 77] = 0.651 texture[ 91, 77] = 0.580 texture[ 92, 77] = 0.718 texture[ 93, 77] = 0.965 texture[ 94, 77] = 0.486 texture[ 95, 77] = 0.431 texture[ 96, 77] = 0.635 texture[ 97, 77] = 0.816 texture[ 98, 77] = 0.518 texture[ 99, 77] = 0.349 texture[ 100, 77] = 0.584 texture[ 1, 78] = 0.659 texture[ 2, 78] = 0.569 texture[ 3, 78] = 0.537 texture[ 4, 78] = 0.651 texture[ 5, 78] = 0.788 texture[ 6, 78] = 0.439 texture[ 7, 78] = 0.043 texture[ 8, 78] = 0.361 texture[ 9, 78] = 0.925 texture[ 10, 78] = 0.745 texture[ 11, 78] = 0.188 texture[ 12, 78] = 0.043 texture[ 13, 78] = 0.604 texture[ 14, 78] = 0.780 texture[ 15, 78] = 0.596 texture[ 16, 78] = 0.463 texture[ 17, 78] = 0.227 texture[ 18, 78] = 0.188 texture[ 19, 78] = 0.431 texture[ 20, 78] = 0.561 texture[ 21, 78] = 0.463 texture[ 22, 78] = 0.322 texture[ 23, 78] = 0.792 texture[ 24, 78] = 0.827 texture[ 25, 78] = 0.733 texture[ 26, 78] = 0.663 texture[ 27, 78] = 0.682 texture[ 28, 78] = 0.596 texture[ 29, 78] = 0.659 texture[ 30, 78] = 0.608 texture[ 31, 78] = 0.408 texture[ 32, 78] = 0.294 texture[ 33, 78] = 0.761 texture[ 34, 78] = 0.867 texture[ 35, 78] = 0.792 texture[ 36, 78] = 0.494 texture[ 37, 78] = 0.471 texture[ 38, 78] = 0.682 texture[ 39, 78] = 0.447 texture[ 40, 78] = 0.525 texture[ 41, 78] = 0.757 texture[ 42, 78] = 0.902 texture[ 43, 78] = 0.882 texture[ 44, 78] = 0.529 texture[ 45, 78] = 0.329 texture[ 46, 78] = 0.651 texture[ 47, 78] = 0.788 texture[ 48, 78] = 0.416 texture[ 49, 78] = 0.184 texture[ 50, 78] = 0.341 texture[ 51, 78] = 0.663 texture[ 52, 78] = 0.596 texture[ 53, 78] = 0.541 texture[ 54, 78] = 0.635 texture[ 55, 78] = 0.769 texture[ 56, 78] = 0.518 texture[ 57, 78] = 0.098 texture[ 58, 78] = 0.251 texture[ 59, 78] = 0.922 texture[ 60, 78] = 0.816 texture[ 61, 78] = 0.282 texture[ 62, 78] = 0.000 texture[ 63, 78] = 0.471 texture[ 64, 78] = 0.827 texture[ 65, 78] = 0.624 texture[ 66, 78] = 0.506 texture[ 67, 78] = 0.267 texture[ 68, 78] = 0.165 texture[ 69, 78] = 0.404 texture[ 70, 78] = 0.553 texture[ 71, 78] = 0.514 texture[ 72, 78] = 0.282 texture[ 73, 78] = 0.737 texture[ 74, 78] = 0.855 texture[ 75, 78] = 0.737 texture[ 76, 78] = 0.682 texture[ 77, 78] = 0.678 texture[ 78, 78] = 0.604 texture[ 79, 78] = 0.208 texture[ 80, 78] = 0.220 texture[ 81, 78] = 0.329 texture[ 82, 78] = 0.337 texture[ 83, 78] = 0.812 texture[ 84, 78] = 0.882 texture[ 85, 78] = 0.769 texture[ 86, 78] = 0.420 texture[ 87, 78] = 0.529 texture[ 88, 78] = 0.663 texture[ 89, 78] = 0.459 texture[ 90, 78] = 0.580 texture[ 91, 78] = 0.792 texture[ 92, 78] = 0.890 texture[ 93, 78] = 0.898 texture[ 94, 78] = 0.392 texture[ 95, 78] = 0.459 texture[ 96, 78] = 0.682 texture[ 97, 78] = 0.761 texture[ 98, 78] = 0.341 texture[ 99, 78] = 0.188 texture[ 100, 78] = 0.404 texture[ 1, 79] = 0.914 texture[ 2, 79] = 0.761 texture[ 3, 79] = 0.584 texture[ 4, 79] = 0.624 texture[ 5, 79] = 0.604 texture[ 6, 79] = 0.212 texture[ 7, 79] = 0.153 texture[ 8, 79] = 0.647 texture[ 9, 79] = 0.890 texture[ 10, 79] = 0.898 texture[ 11, 79] = 0.706 texture[ 12, 79] = 0.243 texture[ 13, 79] = 0.133 texture[ 14, 79] = 0.361 texture[ 15, 79] = 0.627 texture[ 16, 79] = 0.812 texture[ 17, 79] = 0.569 texture[ 18, 79] = 0.525 texture[ 19, 79] = 0.529 texture[ 20, 79] = 0.651 texture[ 21, 79] = 0.471 texture[ 22, 79] = 0.635 texture[ 23, 79] = 0.878 texture[ 24, 79] = 0.773 texture[ 25, 79] = 0.757 texture[ 26, 79] = 0.678 texture[ 27, 79] = 0.812 texture[ 28, 79] = 0.592 texture[ 29, 79] = 0.514 texture[ 30, 79] = 0.361 texture[ 31, 79] = 0.153 texture[ 32, 79] = 0.196 texture[ 33, 79] = 0.408 texture[ 34, 79] = 0.659 texture[ 35, 79] = 0.745 texture[ 36, 79] = 0.537 texture[ 37, 79] = 0.584 texture[ 38, 79] = 0.843 texture[ 39, 79] = 0.678 texture[ 40, 79] = 0.639 texture[ 41, 79] = 0.580 texture[ 42, 79] = 0.745 texture[ 43, 79] = 0.757 texture[ 44, 79] = 0.282 texture[ 45, 79] = 0.459 texture[ 46, 79] = 0.745 texture[ 47, 79] = 0.714 texture[ 48, 79] = 0.541 texture[ 49, 79] = 0.569 texture[ 50, 79] = 0.596 texture[ 51, 79] = 0.922 texture[ 52, 79] = 0.824 texture[ 53, 79] = 0.627 texture[ 54, 79] = 0.604 texture[ 55, 79] = 0.647 texture[ 56, 79] = 0.267 texture[ 57, 79] = 0.141 texture[ 58, 79] = 0.529 texture[ 59, 79] = 0.902 texture[ 60, 79] = 0.882 texture[ 61, 79] = 0.769 texture[ 62, 79] = 0.341 texture[ 63, 79] = 0.122 texture[ 64, 79] = 0.365 texture[ 65, 79] = 0.553 texture[ 66, 79] = 0.824 texture[ 67, 79] = 0.604 texture[ 68, 79] = 0.506 texture[ 69, 79] = 0.514 texture[ 70, 79] = 0.651 texture[ 71, 79] = 0.541 texture[ 72, 79] = 0.553 texture[ 73, 79] = 0.859 texture[ 74, 79] = 0.788 texture[ 75, 79] = 0.769 texture[ 76, 79] = 0.659 texture[ 77, 79] = 0.812 texture[ 78, 79] = 0.635 texture[ 79, 79] = 0.145 texture[ 80, 79] = 0.129 texture[ 81, 79] = 0.145 texture[ 82, 79] = 0.188 texture[ 83, 79] = 0.447 texture[ 84, 79] = 0.682 texture[ 85, 79] = 0.718 texture[ 86, 79] = 0.447 texture[ 87, 79] = 0.608 texture[ 88, 79] = 0.745 texture[ 89, 79] = 0.706 texture[ 90, 79] = 0.627 texture[ 91, 79] = 0.553 texture[ 92, 79] = 0.733 texture[ 93, 79] = 0.714 texture[ 94, 79] = 0.212 texture[ 95, 79] = 0.592 texture[ 96, 79] = 0.725 texture[ 97, 79] = 0.690 texture[ 98, 79] = 0.549 texture[ 99, 79] = 0.584 texture[ 100, 79] = 0.671 texture[ 1, 80] = 0.890 texture[ 2, 80] = 0.647 texture[ 3, 80] = 0.580 texture[ 4, 80] = 0.639 texture[ 5, 80] = 0.639 texture[ 6, 80] = 0.608 texture[ 7, 80] = 0.663 texture[ 8, 80] = 0.804 texture[ 9, 80] = 0.733 texture[ 10, 80] = 0.812 texture[ 11, 80] = 0.945 texture[ 12, 80] = 0.902 texture[ 13, 80] = 0.227 texture[ 14, 80] = 0.012 texture[ 15, 80] = 0.392 texture[ 16, 80] = 0.835 texture[ 17, 80] = 0.804 texture[ 18, 80] = 0.651 texture[ 19, 80] = 0.529 texture[ 20, 80] = 0.780 texture[ 21, 80] = 0.718 texture[ 22, 80] = 0.933 texture[ 23, 80] = 0.910 texture[ 24, 80] = 0.749 texture[ 25, 80] = 0.827 texture[ 26, 80] = 0.804 texture[ 27, 80] = 0.788 texture[ 28, 80] = 0.604 texture[ 29, 80] = 0.592 texture[ 30, 80] = 0.416 texture[ 31, 80] = 0.255 texture[ 32, 80] = 0.200 texture[ 33, 80] = 0.463 texture[ 34, 80] = 0.549 texture[ 35, 80] = 0.569 texture[ 36, 80] = 0.780 texture[ 37, 80] = 0.561 texture[ 38, 80] = 0.596 texture[ 39, 80] = 0.592 texture[ 40, 80] = 0.596 texture[ 41, 80] = 0.475 texture[ 42, 80] = 0.733 texture[ 43, 80] = 0.816 texture[ 44, 80] = 0.251 texture[ 45, 80] = 0.341 texture[ 46, 80] = 0.561 texture[ 47, 80] = 0.502 texture[ 48, 80] = 0.855 texture[ 49, 80] = 0.816 texture[ 50, 80] = 0.627 texture[ 51, 80] = 0.871 texture[ 52, 80] = 0.718 texture[ 53, 80] = 0.553 texture[ 54, 80] = 0.690 texture[ 55, 80] = 0.647 texture[ 56, 80] = 0.635 texture[ 57, 80] = 0.659 texture[ 58, 80] = 0.804 texture[ 59, 80] = 0.718 texture[ 60, 80] = 0.788 texture[ 61, 80] = 0.922 texture[ 62, 80] = 0.980 texture[ 63, 80] = 0.404 texture[ 64, 80] = 0.000 texture[ 65, 80] = 0.322 texture[ 66, 80] = 0.769 texture[ 67, 80] = 0.827 texture[ 68, 80] = 0.725 texture[ 69, 80] = 0.494 texture[ 70, 80] = 0.745 texture[ 71, 80] = 0.706 texture[ 72, 80] = 0.890 texture[ 73, 80] = 0.922 texture[ 74, 80] = 0.757 texture[ 75, 80] = 0.824 texture[ 76, 80] = 0.804 texture[ 77, 80] = 0.827 texture[ 78, 80] = 0.639 texture[ 79, 80] = 0.176 texture[ 80, 80] = 0.212 texture[ 81, 80] = 0.208 texture[ 82, 80] = 0.220 texture[ 83, 80] = 0.525 texture[ 84, 80] = 0.451 texture[ 85, 80] = 0.627 texture[ 86, 80] = 0.737 texture[ 87, 80] = 0.541 texture[ 88, 80] = 0.608 texture[ 89, 80] = 0.608 texture[ 90, 80] = 0.537 texture[ 91, 80] = 0.459 texture[ 92, 80] = 0.780 texture[ 93, 80] = 0.761 texture[ 94, 80] = 0.157 texture[ 95, 80] = 0.439 texture[ 96, 80] = 0.525 texture[ 97, 80] = 0.549 texture[ 98, 80] = 0.878 texture[ 99, 80] = 0.792 texture[ 100, 80] = 0.651 texture[ 1, 81] = 0.404 texture[ 2, 81] = 0.451 texture[ 3, 81] = 0.373 texture[ 4, 81] = 0.529 texture[ 5, 81] = 0.678 texture[ 6, 81] = 0.733 texture[ 7, 81] = 0.980 texture[ 8, 81] = 0.757 texture[ 9, 81] = 0.749 texture[ 10, 81] = 0.855 texture[ 11, 81] = 0.937 texture[ 12, 81] = 1.000 texture[ 13, 81] = 0.439 texture[ 14, 81] = 0.024 texture[ 15, 81] = 0.353 texture[ 16, 81] = 0.718 texture[ 17, 81] = 0.757 texture[ 18, 81] = 0.737 texture[ 19, 81] = 0.737 texture[ 20, 81] = 0.827 texture[ 21, 81] = 0.549 texture[ 22, 81] = 0.329 texture[ 23, 81] = 0.451 texture[ 24, 81] = 0.749 texture[ 25, 81] = 0.835 texture[ 26, 81] = 0.788 texture[ 27, 81] = 0.639 texture[ 28, 81] = 0.678 texture[ 29, 81] = 0.804 texture[ 30, 81] = 0.882 texture[ 31, 81] = 0.580 texture[ 32, 81] = 0.361 texture[ 33, 81] = 0.475 texture[ 34, 81] = 0.459 texture[ 35, 81] = 0.451 texture[ 36, 81] = 0.475 texture[ 37, 81] = 0.275 texture[ 38, 81] = 0.451 texture[ 39, 81] = 0.447 texture[ 40, 81] = 0.298 texture[ 41, 81] = 0.431 texture[ 42, 81] = 0.745 texture[ 43, 81] = 0.663 texture[ 44, 81] = 0.361 texture[ 45, 81] = 0.310 texture[ 46, 81] = 0.373 texture[ 47, 81] = 0.439 texture[ 48, 81] = 0.549 texture[ 49, 81] = 0.608 texture[ 50, 81] = 0.702 texture[ 51, 81] = 0.506 texture[ 52, 81] = 0.408 texture[ 53, 81] = 0.384 texture[ 54, 81] = 0.486 texture[ 55, 81] = 0.651 texture[ 56, 81] = 0.694 texture[ 57, 81] = 0.969 texture[ 58, 81] = 0.792 texture[ 59, 81] = 0.749 texture[ 60, 81] = 0.855 texture[ 61, 81] = 0.922 texture[ 62, 81] = 1.000 texture[ 63, 81] = 0.663 texture[ 64, 81] = 0.008 texture[ 65, 81] = 0.282 texture[ 66, 81] = 0.671 texture[ 67, 81] = 0.761 texture[ 68, 81] = 0.761 texture[ 69, 81] = 0.714 texture[ 70, 81] = 0.812 texture[ 71, 81] = 0.627 texture[ 72, 81] = 0.365 texture[ 73, 81] = 0.431 texture[ 74, 81] = 0.706 texture[ 75, 81] = 0.824 texture[ 76, 81] = 0.804 texture[ 77, 81] = 0.671 texture[ 78, 81] = 0.671 texture[ 79, 81] = 0.459 texture[ 80, 81] = 0.506 texture[ 81, 81] = 0.486 texture[ 82, 81] = 0.361 texture[ 83, 81] = 0.502 texture[ 84, 81] = 0.392 texture[ 85, 81] = 0.486 texture[ 86, 81] = 0.404 texture[ 87, 81] = 0.286 texture[ 88, 81] = 0.506 texture[ 89, 81] = 0.404 texture[ 90, 81] = 0.282 texture[ 91, 81] = 0.494 texture[ 92, 81] = 0.773 texture[ 93, 81] = 0.616 texture[ 94, 81] = 0.306 texture[ 95, 81] = 0.353 texture[ 96, 81] = 0.404 texture[ 97, 81] = 0.451 texture[ 98, 81] = 0.549 texture[ 99, 81] = 0.604 texture[ 100, 81] = 0.706 texture[ 1, 82] = 0.384 texture[ 2, 82] = 0.294 texture[ 3, 82] = 0.275 texture[ 4, 82] = 0.251 texture[ 5, 82] = 0.541 texture[ 6, 82] = 0.827 texture[ 7, 82] = 0.980 texture[ 8, 82] = 0.867 texture[ 9, 82] = 0.769 texture[ 10, 82] = 0.867 texture[ 11, 82] = 0.910 texture[ 12, 82] = 0.882 texture[ 13, 82] = 0.365 texture[ 14, 82] = 0.067 texture[ 15, 82] = 0.396 texture[ 16, 82] = 0.757 texture[ 17, 82] = 0.651 texture[ 18, 82] = 0.706 texture[ 19, 82] = 0.635 texture[ 20, 82] = 0.529 texture[ 21, 82] = 0.329 texture[ 22, 82] = 0.153 texture[ 23, 82] = 0.420 texture[ 24, 82] = 0.694 texture[ 25, 82] = 0.812 texture[ 26, 82] = 0.792 texture[ 27, 82] = 0.718 texture[ 28, 82] = 0.749 texture[ 29, 82] = 0.337 texture[ 30, 82] = 0.471 texture[ 31, 82] = 0.529 texture[ 32, 82] = 0.420 texture[ 33, 82] = 0.286 texture[ 34, 82] = 0.318 texture[ 35, 82] = 0.580 texture[ 36, 82] = 0.416 texture[ 37, 82] = 0.329 texture[ 38, 82] = 0.463 texture[ 39, 82] = 0.298 texture[ 40, 82] = 0.396 texture[ 41, 82] = 0.502 texture[ 42, 82] = 0.690 texture[ 43, 82] = 0.486 texture[ 44, 82] = 0.639 texture[ 45, 82] = 0.800 texture[ 46, 82] = 0.792 texture[ 47, 82] = 0.812 texture[ 48, 82] = 0.694 texture[ 49, 82] = 0.706 texture[ 50, 82] = 0.804 texture[ 51, 82] = 0.529 texture[ 52, 82] = 0.267 texture[ 53, 82] = 0.306 texture[ 54, 82] = 0.231 texture[ 55, 82] = 0.475 texture[ 56, 82] = 0.816 texture[ 57, 82] = 0.965 texture[ 58, 82] = 0.878 texture[ 59, 82] = 0.788 texture[ 60, 82] = 0.843 texture[ 61, 82] = 0.898 texture[ 62, 82] = 0.937 texture[ 63, 82] = 0.525 texture[ 64, 82] = 0.063 texture[ 65, 82] = 0.329 texture[ 66, 82] = 0.725 texture[ 67, 82] = 0.647 texture[ 68, 82] = 0.694 texture[ 69, 82] = 0.659 texture[ 70, 82] = 0.553 texture[ 71, 82] = 0.384 texture[ 72, 82] = 0.165 texture[ 73, 82] = 0.365 texture[ 74, 82] = 0.651 texture[ 75, 82] = 0.792 texture[ 76, 82] = 0.816 texture[ 77, 82] = 0.690 texture[ 78, 82] = 0.847 texture[ 79, 82] = 0.694 texture[ 80, 82] = 0.561 texture[ 81, 82] = 0.463 texture[ 82, 82] = 0.408 texture[ 83, 82] = 0.263 texture[ 84, 82] = 0.349 texture[ 85, 82] = 0.584 texture[ 86, 82] = 0.329 texture[ 87, 82] = 0.365 texture[ 88, 82] = 0.482 texture[ 89, 82] = 0.337 texture[ 90, 82] = 0.459 texture[ 91, 82] = 0.569 texture[ 92, 82] = 0.639 texture[ 93, 82] = 0.459 texture[ 94, 82] = 0.694 texture[ 95, 82] = 0.816 texture[ 96, 82] = 0.804 texture[ 97, 82] = 0.792 texture[ 98, 82] = 0.718 texture[ 99, 82] = 0.749 texture[ 100, 82] = 0.804 texture[ 1, 83] = 0.682 texture[ 2, 83] = 0.286 texture[ 3, 83] = 0.463 texture[ 4, 83] = 0.337 texture[ 5, 83] = 0.690 texture[ 6, 83] = 0.882 texture[ 7, 83] = 0.761 texture[ 8, 83] = 0.647 texture[ 9, 83] = 0.580 texture[ 10, 83] = 0.651 texture[ 11, 83] = 0.702 texture[ 12, 83] = 0.706 texture[ 13, 83] = 0.349 texture[ 14, 83] = 0.047 texture[ 15, 83] = 0.506 texture[ 16, 83] = 0.647 texture[ 17, 83] = 0.529 texture[ 18, 83] = 0.757 texture[ 19, 83] = 0.647 texture[ 20, 83] = 0.184 texture[ 21, 83] = 0.067 texture[ 22, 83] = 0.231 texture[ 23, 83] = 0.745 texture[ 24, 83] = 0.890 texture[ 25, 83] = 0.792 texture[ 26, 83] = 0.757 texture[ 27, 83] = 0.714 texture[ 28, 83] = 0.663 texture[ 29, 83] = 0.373 texture[ 30, 83] = 0.263 texture[ 31, 83] = 0.447 texture[ 32, 83] = 0.294 texture[ 33, 83] = 0.318 texture[ 34, 83] = 0.580 texture[ 35, 83] = 0.525 texture[ 36, 83] = 0.482 texture[ 37, 83] = 0.580 texture[ 38, 83] = 0.580 texture[ 39, 83] = 0.431 texture[ 40, 83] = 0.627 texture[ 41, 83] = 0.804 texture[ 42, 83] = 0.671 texture[ 43, 83] = 0.153 texture[ 44, 83] = 0.580 texture[ 45, 83] = 0.914 texture[ 46, 83] = 1.000 texture[ 47, 83] = 1.000 texture[ 48, 83] = 0.878 texture[ 49, 83] = 0.800 texture[ 50, 83] = 0.663 texture[ 51, 83] = 0.749 texture[ 52, 83] = 0.341 texture[ 53, 83] = 0.494 texture[ 54, 83] = 0.310 texture[ 55, 83] = 0.608 texture[ 56, 83] = 0.890 texture[ 57, 83] = 0.824 texture[ 58, 83] = 0.659 texture[ 59, 83] = 0.592 texture[ 60, 83] = 0.616 texture[ 61, 83] = 0.702 texture[ 62, 83] = 0.749 texture[ 63, 83] = 0.486 texture[ 64, 83] = 0.020 texture[ 65, 83] = 0.439 texture[ 66, 83] = 0.639 texture[ 67, 83] = 0.514 texture[ 68, 83] = 0.714 texture[ 69, 83] = 0.718 texture[ 70, 83] = 0.255 texture[ 71, 83] = 0.090 texture[ 72, 83] = 0.133 texture[ 73, 83] = 0.671 texture[ 74, 83] = 0.902 texture[ 75, 83] = 0.792 texture[ 76, 83] = 0.769 texture[ 77, 83] = 0.682 texture[ 78, 83] = 0.663 texture[ 79, 83] = 0.659 texture[ 80, 83] = 0.671 texture[ 81, 83] = 0.525 texture[ 82, 83] = 0.267 texture[ 83, 83] = 0.416 texture[ 84, 83] = 0.561 texture[ 85, 83] = 0.486 texture[ 86, 83] = 0.447 texture[ 87, 83] = 0.580 texture[ 88, 83] = 0.569 texture[ 89, 83] = 0.459 texture[ 90, 83] = 0.671 texture[ 91, 83] = 0.855 texture[ 92, 83] = 0.494 texture[ 93, 83] = 0.176 texture[ 94, 83] = 0.694 texture[ 95, 83] = 0.933 texture[ 96, 83] = 1.000 texture[ 97, 83] = 0.953 texture[ 98, 83] = 0.859 texture[ 99, 83] = 0.812 texture[ 100, 83] = 0.624 texture[ 1, 84] = 0.855 texture[ 2, 84] = 0.447 texture[ 3, 84] = 0.239 texture[ 4, 84] = 0.427 texture[ 5, 84] = 0.529 texture[ 6, 84] = 0.608 texture[ 7, 84] = 0.592 texture[ 8, 84] = 0.624 texture[ 9, 84] = 0.651 texture[ 10, 84] = 0.518 texture[ 11, 84] = 0.282 texture[ 12, 84] = 0.608 texture[ 13, 84] = 0.384 texture[ 14, 84] = 0.208 texture[ 15, 84] = 0.310 texture[ 16, 84] = 0.396 texture[ 17, 84] = 0.659 texture[ 18, 84] = 0.847 texture[ 19, 84] = 0.569 texture[ 20, 84] = 0.141 texture[ 21, 84] = 0.067 texture[ 22, 84] = 0.537 texture[ 23, 84] = 0.922 texture[ 24, 84] = 0.745 texture[ 25, 84] = 0.718 texture[ 26, 84] = 0.867 texture[ 27, 84] = 0.827 texture[ 28, 84] = 0.663 texture[ 29, 84] = 0.592 texture[ 30, 84] = 0.537 texture[ 31, 84] = 0.365 texture[ 32, 84] = 0.157 texture[ 33, 84] = 0.361 texture[ 34, 84] = 0.816 texture[ 35, 84] = 0.761 texture[ 36, 84] = 0.404 texture[ 37, 84] = 0.282 texture[ 38, 84] = 0.463 texture[ 39, 84] = 0.361 texture[ 40, 84] = 0.780 texture[ 41, 84] = 0.769 texture[ 42, 84] = 0.671 texture[ 43, 84] = 0.514 texture[ 44, 84] = 0.694 texture[ 45, 84] = 0.859 texture[ 46, 84] = 0.902 texture[ 47, 84] = 0.922 texture[ 48, 84] = 1.000 texture[ 49, 84] = 0.663 texture[ 50, 84] = 0.404 texture[ 51, 84] = 0.871 texture[ 52, 84] = 0.529 texture[ 53, 84] = 0.255 texture[ 54, 84] = 0.365 texture[ 55, 84] = 0.537 texture[ 56, 84] = 0.580 texture[ 57, 84] = 0.627 texture[ 58, 84] = 0.635 texture[ 59, 84] = 0.635 texture[ 60, 84] = 0.553 texture[ 61, 84] = 0.243 texture[ 62, 84] = 0.584 texture[ 63, 84] = 0.486 texture[ 64, 84] = 0.188 texture[ 65, 84] = 0.306 texture[ 66, 84] = 0.384 texture[ 67, 84] = 0.596 texture[ 68, 84] = 0.835 texture[ 69, 84] = 0.651 texture[ 70, 84] = 0.188 texture[ 71, 84] = 0.067 texture[ 72, 84] = 0.384 texture[ 73, 84] = 0.898 texture[ 74, 84] = 0.773 texture[ 75, 84] = 0.718 texture[ 76, 84] = 0.835 texture[ 77, 84] = 0.859 texture[ 78, 84] = 0.635 texture[ 79, 84] = 0.584 texture[ 80, 84] = 0.537 texture[ 81, 84] = 0.275 texture[ 82, 84] = 0.165 texture[ 83, 84] = 0.463 texture[ 84, 84] = 0.816 texture[ 85, 84] = 0.714 texture[ 86, 84] = 0.306 texture[ 87, 84] = 0.361 texture[ 88, 84] = 0.482 texture[ 89, 84] = 0.416 texture[ 90, 84] = 0.773 texture[ 91, 84] = 0.725 texture[ 92, 84] = 0.604 texture[ 93, 84] = 0.569 texture[ 94, 84] = 0.769 texture[ 95, 84] = 0.902 texture[ 96, 84] = 0.910 texture[ 97, 84] = 0.925 texture[ 98, 84] = 0.988 texture[ 99, 84] = 0.596 texture[ 100, 84] = 0.475 texture[ 1, 85] = 0.898 texture[ 2, 85] = 0.494 texture[ 3, 85] = 0.239 texture[ 4, 85] = 0.420 texture[ 5, 85] = 0.427 texture[ 6, 85] = 0.647 texture[ 7, 85] = 0.561 texture[ 8, 85] = 0.624 texture[ 9, 85] = 0.749 texture[ 10, 85] = 0.373 texture[ 11, 85] = 0.294 texture[ 12, 85] = 0.439 texture[ 13, 85] = 0.251 texture[ 14, 85] = 0.396 texture[ 15, 85] = 0.518 texture[ 16, 85] = 0.635 texture[ 17, 85] = 0.804 texture[ 18, 85] = 0.922 texture[ 19, 85] = 0.341 texture[ 20, 85] = 0.090 texture[ 21, 85] = 0.063 texture[ 22, 85] = 0.255 texture[ 23, 85] = 0.749 texture[ 24, 85] = 0.376 texture[ 25, 85] = 0.341 texture[ 26, 85] = 0.616 texture[ 27, 85] = 0.761 texture[ 28, 85] = 0.624 texture[ 29, 85] = 0.694 texture[ 30, 85] = 0.627 texture[ 31, 85] = 0.341 texture[ 32, 85] = 0.255 texture[ 33, 85] = 0.506 texture[ 34, 85] = 0.725 texture[ 35, 85] = 0.757 texture[ 36, 85] = 0.220 texture[ 37, 85] = 0.133 texture[ 38, 85] = 0.047 texture[ 39, 85] = 0.239 texture[ 40, 85] = 0.694 texture[ 41, 85] = 0.624 texture[ 42, 85] = 0.608 texture[ 43, 85] = 0.580 texture[ 44, 85] = 0.682 texture[ 45, 85] = 0.847 texture[ 46, 85] = 0.898 texture[ 47, 85] = 0.855 texture[ 48, 85] = 0.957 texture[ 49, 85] = 0.518 texture[ 50, 85] = 0.549 texture[ 51, 85] = 0.898 texture[ 52, 85] = 0.635 texture[ 53, 85] = 0.208 texture[ 54, 85] = 0.408 texture[ 55, 85] = 0.420 texture[ 56, 85] = 0.635 texture[ 57, 85] = 0.569 texture[ 58, 85] = 0.592 texture[ 59, 85] = 0.718 texture[ 60, 85] = 0.494 texture[ 61, 85] = 0.231 texture[ 62, 85] = 0.502 texture[ 63, 85] = 0.243 texture[ 64, 85] = 0.361 texture[ 65, 85] = 0.506 texture[ 66, 85] = 0.639 texture[ 67, 85] = 0.757 texture[ 68, 85] = 0.957 texture[ 69, 85] = 0.494 texture[ 70, 85] = 0.098 texture[ 71, 85] = 0.090 texture[ 72, 85] = 0.173 texture[ 73, 85] = 0.702 texture[ 74, 85] = 0.482 texture[ 75, 85] = 0.337 texture[ 76, 85] = 0.596 texture[ 77, 85] = 0.749 texture[ 78, 85] = 0.549 texture[ 79, 85] = 0.561 texture[ 80, 85] = 0.659 texture[ 81, 85] = 0.208 texture[ 82, 85] = 0.286 texture[ 83, 85] = 0.529 texture[ 84, 85] = 0.745 texture[ 85, 85] = 0.702 texture[ 86, 85] = 0.165 texture[ 87, 85] = 0.118 texture[ 88, 85] = 0.043 texture[ 89, 85] = 0.322 texture[ 90, 85] = 0.678 texture[ 91, 85] = 0.569 texture[ 92, 85] = 0.596 texture[ 93, 85] = 0.541 texture[ 94, 85] = 0.737 texture[ 95, 85] = 0.882 texture[ 96, 85] = 0.890 texture[ 97, 85] = 0.867 texture[ 98, 85] = 0.922 texture[ 99, 85] = 0.447 texture[ 100, 85] = 0.635 texture[ 1, 86] = 0.596 texture[ 2, 86] = 0.584 texture[ 3, 86] = 0.294 texture[ 4, 86] = 0.404 texture[ 5, 86] = 0.616 texture[ 6, 86] = 0.804 texture[ 7, 86] = 0.737 texture[ 8, 86] = 0.584 texture[ 9, 86] = 0.671 texture[ 10, 86] = 0.427 texture[ 11, 86] = 0.475 texture[ 12, 86] = 0.063 texture[ 13, 86] = 0.122 texture[ 14, 86] = 0.373 texture[ 15, 86] = 0.537 texture[ 16, 86] = 0.494 texture[ 17, 86] = 0.439 texture[ 18, 86] = 0.706 texture[ 19, 86] = 0.439 texture[ 20, 86] = 0.118 texture[ 21, 86] = 0.102 texture[ 22, 86] = 0.000 texture[ 23, 86] = 0.129 texture[ 24, 86] = 0.318 texture[ 25, 86] = 0.275 texture[ 26, 86] = 0.176 texture[ 27, 86] = 0.227 texture[ 28, 86] = 0.420 texture[ 29, 86] = 0.714 texture[ 30, 86] = 0.561 texture[ 31, 86] = 0.463 texture[ 32, 86] = 0.525 texture[ 33, 86] = 0.659 texture[ 34, 86] = 0.482 texture[ 35, 86] = 0.714 texture[ 36, 86] = 0.463 texture[ 37, 86] = 0.196 texture[ 38, 86] = 0.090 texture[ 39, 86] = 0.188 texture[ 40, 86] = 0.584 texture[ 41, 86] = 0.702 texture[ 42, 86] = 0.800 texture[ 43, 86] = 0.749 texture[ 44, 86] = 0.878 texture[ 45, 86] = 1.000 texture[ 46, 86] = 0.953 texture[ 47, 86] = 0.933 texture[ 48, 86] = 0.976 texture[ 49, 86] = 0.506 texture[ 50, 86] = 0.392 texture[ 51, 86] = 0.569 texture[ 52, 86] = 0.706 texture[ 53, 86] = 0.353 texture[ 54, 86] = 0.392 texture[ 55, 86] = 0.561 texture[ 56, 86] = 0.816 texture[ 57, 86] = 0.769 texture[ 58, 86] = 0.553 texture[ 59, 86] = 0.671 texture[ 60, 86] = 0.471 texture[ 61, 86] = 0.525 texture[ 62, 86] = 0.129 texture[ 63, 86] = 0.075 texture[ 64, 86] = 0.349 texture[ 65, 86] = 0.525 texture[ 66, 86] = 0.518 texture[ 67, 86] = 0.396 texture[ 68, 86] = 0.678 texture[ 69, 86] = 0.529 texture[ 70, 86] = 0.141 texture[ 71, 86] = 0.129 texture[ 72, 86] = 0.000 texture[ 73, 86] = 0.086 texture[ 74, 86] = 0.329 texture[ 75, 86] = 0.318 texture[ 76, 86] = 0.212 texture[ 77, 86] = 0.208 texture[ 78, 86] = 0.310 texture[ 79, 86] = 0.286 texture[ 80, 86] = 0.329 texture[ 81, 86] = 0.549 texture[ 82, 86] = 0.561 texture[ 83, 86] = 0.639 texture[ 84, 86] = 0.537 texture[ 85, 86] = 0.733 texture[ 86, 86] = 0.376 texture[ 87, 86] = 0.184 texture[ 88, 86] = 0.075 texture[ 89, 86] = 0.255 texture[ 90, 86] = 0.627 texture[ 91, 86] = 0.714 texture[ 92, 86] = 0.788 texture[ 93, 86] = 0.769 texture[ 94, 86] = 0.925 texture[ 95, 86] = 1.000 texture[ 96, 86] = 0.953 texture[ 97, 86] = 0.922 texture[ 98, 86] = 0.937 texture[ 99, 86] = 0.392 texture[ 100, 86] = 0.451 texture[ 1, 87] = 0.306 texture[ 2, 87] = 0.298 texture[ 3, 87] = 0.431 texture[ 4, 87] = 0.596 texture[ 5, 87] = 0.553 texture[ 6, 87] = 0.639 texture[ 7, 87] = 0.690 texture[ 8, 87] = 0.706 texture[ 9, 87] = 0.580 texture[ 10, 87] = 0.537 texture[ 11, 87] = 0.298 texture[ 12, 87] = 0.212 texture[ 13, 87] = 0.451 texture[ 14, 87] = 0.431 texture[ 15, 87] = 0.341 texture[ 16, 87] = 0.463 texture[ 17, 87] = 0.384 texture[ 18, 87] = 0.514 texture[ 19, 87] = 0.482 texture[ 20, 87] = 0.153 texture[ 21, 87] = 0.110 texture[ 22, 87] = 0.000 texture[ 23, 87] = 0.188 texture[ 24, 87] = 0.855 texture[ 25, 87] = 0.694 texture[ 26, 87] = 0.482 texture[ 27, 87] = 0.475 texture[ 28, 87] = 0.486 texture[ 29, 87] = 0.573 texture[ 30, 87] = 0.282 texture[ 31, 87] = 0.475 texture[ 32, 87] = 0.651 texture[ 33, 87] = 0.745 texture[ 34, 87] = 0.596 texture[ 35, 87] = 0.506 texture[ 36, 87] = 0.639 texture[ 37, 87] = 0.239 texture[ 38, 87] = 0.110 texture[ 39, 87] = 0.008 texture[ 40, 87] = 0.200 texture[ 41, 87] = 0.518 texture[ 42, 87] = 0.678 texture[ 43, 87] = 0.812 texture[ 44, 87] = 0.867 texture[ 45, 87] = 0.847 texture[ 46, 87] = 0.718 texture[ 47, 87] = 0.624 texture[ 48, 87] = 0.843 texture[ 49, 87] = 0.451 texture[ 50, 87] = 0.318 texture[ 51, 87] = 0.329 texture[ 52, 87] = 0.298 texture[ 53, 87] = 0.337 texture[ 54, 87] = 0.608 texture[ 55, 87] = 0.549 texture[ 56, 87] = 0.624 texture[ 57, 87] = 0.678 texture[ 58, 87] = 0.718 texture[ 59, 87] = 0.592 texture[ 60, 87] = 0.580 texture[ 61, 87] = 0.384 texture[ 62, 87] = 0.165 texture[ 63, 87] = 0.416 texture[ 64, 87] = 0.463 texture[ 65, 87] = 0.329 texture[ 66, 87] = 0.420 texture[ 67, 87] = 0.373 texture[ 68, 87] = 0.494 texture[ 69, 87] = 0.529 texture[ 70, 87] = 0.196 texture[ 71, 87] = 0.118 texture[ 72, 87] = 0.008 texture[ 73, 87] = 0.102 texture[ 74, 87] = 0.792 texture[ 75, 87] = 0.792 texture[ 76, 87] = 0.514 texture[ 77, 87] = 0.502 texture[ 78, 87] = 0.404 texture[ 79, 87] = 0.067 texture[ 80, 87] = 0.184 texture[ 81, 87] = 0.486 texture[ 82, 87] = 0.659 texture[ 83, 87] = 0.733 texture[ 84, 87] = 0.573 texture[ 85, 87] = 0.541 texture[ 86, 87] = 0.616 texture[ 87, 87] = 0.200 texture[ 88, 87] = 0.090 texture[ 89, 87] = 0.000 texture[ 90, 87] = 0.286 texture[ 91, 87] = 0.561 texture[ 92, 87] = 0.694 texture[ 93, 87] = 0.812 texture[ 94, 87] = 0.878 texture[ 95, 87] = 0.847 texture[ 96, 87] = 0.694 texture[ 97, 87] = 0.627 texture[ 98, 87] = 0.843 texture[ 99, 87] = 0.373 texture[ 100, 87] = 0.376 texture[ 1, 88] = 0.220 texture[ 2, 88] = 0.055 texture[ 3, 88] = 0.647 texture[ 4, 88] = 0.969 texture[ 5, 88] = 0.812 texture[ 6, 88] = 0.647 texture[ 7, 88] = 0.624 texture[ 8, 88] = 0.804 texture[ 9, 88] = 0.584 texture[ 10, 88] = 0.243 texture[ 11, 88] = 0.075 texture[ 12, 88] = 0.451 texture[ 13, 88] = 0.561 texture[ 14, 88] = 0.337 texture[ 15, 88] = 0.376 texture[ 16, 88] = 0.616 texture[ 17, 88] = 0.502 texture[ 18, 88] = 0.365 texture[ 19, 88] = 0.592 texture[ 20, 88] = 0.404 texture[ 21, 88] = 0.188 texture[ 22, 88] = 0.008 texture[ 23, 88] = 0.384 texture[ 24, 88] = 0.953 texture[ 25, 88] = 0.800 texture[ 26, 88] = 0.537 texture[ 27, 88] = 0.663 texture[ 28, 88] = 0.561 texture[ 29, 88] = 0.318 texture[ 30, 88] = 0.263 texture[ 31, 88] = 0.616 texture[ 32, 88] = 0.624 texture[ 33, 88] = 0.682 texture[ 34, 88] = 0.604 texture[ 35, 88] = 0.451 texture[ 36, 88] = 0.635 texture[ 37, 88] = 0.341 texture[ 38, 88] = 0.067 texture[ 39, 88] = 0.020 texture[ 40, 88] = 0.110 texture[ 41, 88] = 0.780 texture[ 42, 88] = 0.878 texture[ 43, 88] = 0.827 texture[ 44, 88] = 0.647 texture[ 45, 88] = 0.404 texture[ 46, 88] = 0.518 texture[ 47, 88] = 0.584 texture[ 48, 88] = 0.800 texture[ 49, 88] = 0.525 texture[ 50, 88] = 0.475 texture[ 51, 88] = 0.341 texture[ 52, 88] = 0.047 texture[ 53, 88] = 0.451 texture[ 54, 88] = 0.980 texture[ 55, 88] = 0.816 texture[ 56, 88] = 0.682 texture[ 57, 88] = 0.584 texture[ 58, 88] = 0.780 texture[ 59, 88] = 0.647 texture[ 60, 88] = 0.329 texture[ 61, 88] = 0.063 texture[ 62, 88] = 0.376 texture[ 63, 88] = 0.569 texture[ 64, 88] = 0.384 texture[ 65, 88] = 0.349 texture[ 66, 88] = 0.584 texture[ 67, 88] = 0.537 texture[ 68, 88] = 0.361 texture[ 69, 88] = 0.604 texture[ 70, 88] = 0.459 texture[ 71, 88] = 0.239 texture[ 72, 88] = 0.020 texture[ 73, 88] = 0.286 texture[ 74, 88] = 0.922 texture[ 75, 88] = 0.843 texture[ 76, 88] = 0.573 texture[ 77, 88] = 0.608 texture[ 78, 88] = 0.482 texture[ 79, 88] = 0.000 texture[ 80, 88] = 0.447 texture[ 81, 88] = 0.639 texture[ 82, 88] = 0.627 texture[ 83, 88] = 0.706 texture[ 84, 88] = 0.561 texture[ 85, 88] = 0.486 texture[ 86, 88] = 0.608 texture[ 87, 88] = 0.255 texture[ 88, 88] = 0.063 texture[ 89, 88] = 0.000 texture[ 90, 88] = 0.239 texture[ 91, 88] = 0.867 texture[ 92, 88] = 0.847 texture[ 93, 88] = 0.816 texture[ 94, 88] = 0.604 texture[ 95, 88] = 0.416 texture[ 96, 88] = 0.541 texture[ 97, 88] = 0.616 texture[ 98, 88] = 0.804 texture[ 99, 88] = 0.427 texture[ 100, 88] = 0.529 texture[ 1, 89] = 0.286 texture[ 2, 89] = 0.055 texture[ 3, 89] = 0.337 texture[ 4, 89] = 0.541 texture[ 5, 89] = 0.451 texture[ 6, 89] = 0.647 texture[ 7, 89] = 0.714 texture[ 8, 89] = 0.663 texture[ 9, 89] = 0.404 texture[ 10, 89] = 0.055 texture[ 11, 89] = 0.439 texture[ 12, 89] = 0.475 texture[ 13, 89] = 0.384 texture[ 14, 89] = 0.373 texture[ 15, 89] = 0.525 texture[ 16, 89] = 0.682 texture[ 17, 89] = 0.549 texture[ 18, 89] = 0.494 texture[ 19, 89] = 0.663 texture[ 20, 89] = 0.651 texture[ 21, 89] = 0.208 texture[ 22, 89] = 0.008 texture[ 23, 89] = 0.275 texture[ 24, 89] = 0.827 texture[ 25, 89] = 0.745 texture[ 26, 89] = 0.737 texture[ 27, 89] = 0.682 texture[ 28, 89] = 0.310 texture[ 29, 89] = 0.020 texture[ 30, 89] = 0.439 texture[ 31, 89] = 0.843 texture[ 32, 89] = 0.604 texture[ 33, 89] = 0.502 texture[ 34, 89] = 0.604 texture[ 35, 89] = 0.573 texture[ 36, 89] = 0.702 texture[ 37, 89] = 0.706 texture[ 38, 89] = 0.353 texture[ 39, 89] = 0.176 texture[ 40, 89] = 0.035 texture[ 41, 89] = 0.514 texture[ 42, 89] = 0.965 texture[ 43, 89] = 0.792 texture[ 44, 89] = 0.639 texture[ 45, 89] = 0.353 texture[ 46, 89] = 0.416 texture[ 47, 89] = 0.561 texture[ 48, 89] = 0.604 texture[ 49, 89] = 0.482 texture[ 50, 89] = 0.580 texture[ 51, 89] = 0.310 texture[ 52, 89] = 0.098 texture[ 53, 89] = 0.212 texture[ 54, 89] = 0.561 texture[ 55, 89] = 0.439 texture[ 56, 89] = 0.616 texture[ 57, 89] = 0.702 texture[ 58, 89] = 0.706 texture[ 59, 89] = 0.494 texture[ 60, 89] = 0.078 texture[ 61, 89] = 0.365 texture[ 62, 89] = 0.518 texture[ 63, 89] = 0.373 texture[ 64, 89] = 0.361 texture[ 65, 89] = 0.494 texture[ 66, 89] = 0.690 texture[ 67, 89] = 0.596 texture[ 68, 89] = 0.486 texture[ 69, 89] = 0.604 texture[ 70, 89] = 0.725 texture[ 71, 89] = 0.306 texture[ 72, 89] = 0.024 texture[ 73, 89] = 0.188 texture[ 74, 89] = 0.816 texture[ 75, 89] = 0.737 texture[ 76, 89] = 0.733 texture[ 77, 89] = 0.749 texture[ 78, 89] = 0.361 texture[ 79, 89] = 0.000 texture[ 80, 89] = 0.420 texture[ 81, 89] = 0.792 texture[ 82, 89] = 0.584 texture[ 83, 89] = 0.537 texture[ 84, 89] = 0.608 texture[ 85, 89] = 0.573 texture[ 86, 89] = 0.733 texture[ 87, 89] = 0.647 texture[ 88, 89] = 0.322 texture[ 89, 89] = 0.133 texture[ 90, 89] = 0.047 texture[ 91, 89] = 0.596 texture[ 92, 89] = 0.953 texture[ 93, 89] = 0.749 texture[ 94, 89] = 0.580 texture[ 95, 89] = 0.353 texture[ 96, 89] = 0.486 texture[ 97, 89] = 0.616 texture[ 98, 89] = 0.561 texture[ 99, 89] = 0.486 texture[ 100, 89] = 0.541 texture[ 1, 90] = 0.294 texture[ 2, 90] = 0.133 texture[ 3, 90] = 0.231 texture[ 4, 90] = 0.184 texture[ 5, 90] = 0.384 texture[ 6, 90] = 0.580 texture[ 7, 90] = 0.608 texture[ 8, 90] = 0.549 texture[ 9, 90] = 0.196 texture[ 10, 90] = 0.098 texture[ 11, 90] = 0.604 texture[ 12, 90] = 0.553 texture[ 13, 90] = 0.635 texture[ 14, 90] = 0.678 texture[ 15, 90] = 0.486 texture[ 16, 90] = 0.718 texture[ 17, 90] = 0.604 texture[ 18, 90] = 0.553 texture[ 19, 90] = 0.678 texture[ 20, 90] = 0.663 texture[ 21, 90] = 0.141 texture[ 22, 90] = 0.000 texture[ 23, 90] = 0.157 texture[ 24, 90] = 0.537 texture[ 25, 90] = 0.647 texture[ 26, 90] = 0.639 texture[ 27, 90] = 0.337 texture[ 28, 90] = 0.373 texture[ 29, 90] = 0.396 texture[ 30, 90] = 0.537 texture[ 31, 90] = 0.690 texture[ 32, 90] = 0.486 texture[ 33, 90] = 0.341 texture[ 34, 90] = 0.459 texture[ 35, 90] = 0.361 texture[ 36, 90] = 0.725 texture[ 37, 90] = 0.816 texture[ 38, 90] = 0.792 texture[ 39, 90] = 0.298 texture[ 40, 90] = 0.075 texture[ 41, 90] = 0.220 texture[ 42, 90] = 0.353 texture[ 43, 90] = 0.482 texture[ 44, 90] = 0.561 texture[ 45, 90] = 0.553 texture[ 46, 90] = 0.749 texture[ 47, 90] = 0.647 texture[ 48, 90] = 0.506 texture[ 49, 90] = 0.714 texture[ 50, 90] = 0.549 texture[ 51, 90] = 0.286 texture[ 52, 90] = 0.153 texture[ 53, 90] = 0.231 texture[ 54, 90] = 0.176 texture[ 55, 90] = 0.318 texture[ 56, 90] = 0.580 texture[ 57, 90] = 0.604 texture[ 58, 90] = 0.580 texture[ 59, 90] = 0.255 texture[ 60, 90] = 0.055 texture[ 61, 90] = 0.549 texture[ 62, 90] = 0.608 texture[ 63, 90] = 0.592 texture[ 64, 90] = 0.706 texture[ 65, 90] = 0.514 texture[ 66, 90] = 0.635 texture[ 67, 90] = 0.635 texture[ 68, 90] = 0.518 texture[ 69, 90] = 0.624 texture[ 70, 90] = 0.745 texture[ 71, 90] = 0.243 texture[ 72, 90] = 0.000 texture[ 73, 90] = 0.102 texture[ 74, 90] = 0.549 texture[ 75, 90] = 0.639 texture[ 76, 90] = 0.659 texture[ 77, 90] = 0.365 texture[ 78, 90] = 0.353 texture[ 79, 90] = 0.482 texture[ 80, 90] = 0.431 texture[ 81, 90] = 0.569 texture[ 82, 90] = 0.459 texture[ 83, 90] = 0.404 texture[ 84, 90] = 0.427 texture[ 85, 90] = 0.404 texture[ 86, 90] = 0.737 texture[ 87, 90] = 0.835 texture[ 88, 90] = 0.761 texture[ 89, 90] = 0.220 texture[ 90, 90] = 0.078 texture[ 91, 90] = 0.231 texture[ 92, 90] = 0.361 texture[ 93, 90] = 0.506 texture[ 94, 90] = 0.553 texture[ 95, 90] = 0.627 texture[ 96, 90] = 0.769 texture[ 97, 90] = 0.639 texture[ 98, 90] = 0.506 texture[ 99, 90] = 0.749 texture[ 100, 90] = 0.447 texture[ 1, 91] = 0.525 texture[ 2, 91] = 0.251 texture[ 3, 91] = 0.463 texture[ 4, 91] = 0.459 texture[ 5, 91] = 0.494 texture[ 6, 91] = 0.365 texture[ 7, 91] = 0.486 texture[ 8, 91] = 0.361 texture[ 9, 91] = 0.012 texture[ 10, 91] = 0.129 texture[ 11, 91] = 0.318 texture[ 12, 91] = 0.647 texture[ 13, 91] = 0.725 texture[ 14, 91] = 0.569 texture[ 15, 91] = 0.408 texture[ 16, 91] = 0.427 texture[ 17, 91] = 0.408 texture[ 18, 91] = 0.439 texture[ 19, 91] = 0.635 texture[ 20, 91] = 0.678 texture[ 21, 91] = 0.220 texture[ 22, 91] = 0.000 texture[ 23, 91] = 0.118 texture[ 24, 91] = 0.447 texture[ 25, 91] = 0.624 texture[ 26, 91] = 0.329 texture[ 27, 91] = 0.306 texture[ 28, 91] = 0.663 texture[ 29, 91] = 0.992 texture[ 30, 91] = 0.800 texture[ 31, 91] = 0.537 texture[ 32, 91] = 0.392 texture[ 33, 91] = 0.529 texture[ 34, 91] = 0.514 texture[ 35, 91] = 0.529 texture[ 36, 91] = 0.761 texture[ 37, 91] = 0.671 texture[ 38, 91] = 0.537 texture[ 39, 91] = 0.298 texture[ 40, 91] = 0.118 texture[ 41, 91] = 0.427 texture[ 42, 91] = 0.251 texture[ 43, 91] = 0.518 texture[ 44, 91] = 0.757 texture[ 45, 91] = 0.678 texture[ 46, 91] = 0.761 texture[ 47, 91] = 0.812 texture[ 48, 91] = 0.769 texture[ 49, 91] = 0.816 texture[ 50, 91] = 0.573 texture[ 51, 91] = 0.537 texture[ 52, 91] = 0.310 texture[ 53, 91] = 0.431 texture[ 54, 91] = 0.463 texture[ 55, 91] = 0.502 texture[ 56, 91] = 0.376 texture[ 57, 91] = 0.459 texture[ 58, 91] = 0.420 texture[ 59, 91] = 0.035 texture[ 60, 91] = 0.075 texture[ 61, 91] = 0.263 texture[ 62, 91] = 0.584 texture[ 63, 91] = 0.749 texture[ 64, 91] = 0.573 texture[ 65, 91] = 0.427 texture[ 66, 91] = 0.373 texture[ 67, 91] = 0.396 texture[ 68, 91] = 0.396 texture[ 69, 91] = 0.616 texture[ 70, 91] = 0.714 texture[ 71, 91] = 0.365 texture[ 72, 91] = 0.000 texture[ 73, 91] = 0.067 texture[ 74, 91] = 0.416 texture[ 75, 91] = 0.647 texture[ 76, 91] = 0.392 texture[ 77, 91] = 0.208 texture[ 78, 91] = 0.604 texture[ 79, 91] = 0.882 texture[ 80, 91] = 0.804 texture[ 81, 91] = 0.553 texture[ 82, 91] = 0.361 texture[ 83, 91] = 0.592 texture[ 84, 91] = 0.451 texture[ 85, 91] = 0.584 texture[ 86, 91] = 0.761 texture[ 87, 91] = 0.690 texture[ 88, 91] = 0.486 texture[ 89, 91] = 0.243 texture[ 90, 91] = 0.153 texture[ 91, 91] = 0.459 texture[ 92, 91] = 0.255 texture[ 93, 91] = 0.627 texture[ 94, 91] = 0.749 texture[ 95, 91] = 0.651 texture[ 96, 91] = 0.725 texture[ 97, 91] = 0.800 texture[ 98, 91] = 0.816 texture[ 99, 91] = 0.843 texture[ 100, 91] = 0.529 texture[ 1, 92] = 0.627 texture[ 2, 92] = 0.133 texture[ 3, 92] = 0.337 texture[ 4, 92] = 0.624 texture[ 5, 92] = 0.569 texture[ 6, 92] = 0.518 texture[ 7, 92] = 0.616 texture[ 8, 92] = 0.188 texture[ 9, 92] = 0.012 texture[ 10, 92] = 0.439 texture[ 11, 92] = 0.365 texture[ 12, 92] = 0.592 texture[ 13, 92] = 0.604 texture[ 14, 92] = 0.447 texture[ 15, 92] = 0.427 texture[ 16, 92] = 0.463 texture[ 17, 92] = 0.306 texture[ 18, 92] = 0.173 texture[ 19, 92] = 0.416 texture[ 20, 92] = 0.737 texture[ 21, 92] = 0.384 texture[ 22, 92] = 0.141 texture[ 23, 92] = 0.012 texture[ 24, 92] = 0.102 texture[ 25, 92] = 0.184 texture[ 26, 92] = 0.165 texture[ 27, 92] = 0.604 texture[ 28, 92] = 0.682 texture[ 29, 92] = 0.882 texture[ 30, 92] = 0.733 texture[ 31, 92] = 0.373 texture[ 32, 92] = 0.471 texture[ 33, 92] = 0.604 texture[ 34, 92] = 0.463 texture[ 35, 92] = 0.561 texture[ 36, 92] = 0.757 texture[ 37, 92] = 0.624 texture[ 38, 92] = 0.592 texture[ 39, 92] = 0.416 texture[ 40, 92] = 0.122 texture[ 41, 92] = 0.255 texture[ 42, 92] = 0.584 texture[ 43, 92] = 0.718 texture[ 44, 92] = 0.408 texture[ 45, 92] = 0.553 texture[ 46, 92] = 0.459 texture[ 47, 92] = 0.608 texture[ 48, 92] = 0.827 texture[ 49, 92] = 0.671 texture[ 50, 92] = 0.635 texture[ 51, 92] = 0.682 texture[ 52, 92] = 0.243 texture[ 53, 92] = 0.220 texture[ 54, 92] = 0.627 texture[ 55, 92] = 0.573 texture[ 56, 92] = 0.506 texture[ 57, 92] = 0.608 texture[ 58, 92] = 0.298 texture[ 59, 92] = 0.000 texture[ 60, 92] = 0.349 texture[ 61, 92] = 0.384 texture[ 62, 92] = 0.541 texture[ 63, 92] = 0.639 texture[ 64, 92] = 0.451 texture[ 65, 92] = 0.416 texture[ 66, 92] = 0.420 texture[ 67, 92] = 0.318 texture[ 68, 92] = 0.153 texture[ 69, 92] = 0.349 texture[ 70, 92] = 0.737 texture[ 71, 92] = 0.529 texture[ 72, 92] = 0.184 texture[ 73, 92] = 0.024 texture[ 74, 92] = 0.090 texture[ 75, 92] = 0.188 texture[ 76, 92] = 0.133 texture[ 77, 92] = 0.506 texture[ 78, 92] = 0.749 texture[ 79, 92] = 0.529 texture[ 80, 92] = 0.502 texture[ 81, 92] = 0.361 texture[ 82, 92] = 0.506 texture[ 83, 92] = 0.584 texture[ 84, 92] = 0.404 texture[ 85, 92] = 0.604 texture[ 86, 92] = 0.718 texture[ 87, 92] = 0.596 texture[ 88, 92] = 0.549 texture[ 89, 92] = 0.329 texture[ 90, 92] = 0.118 texture[ 91, 92] = 0.306 texture[ 92, 92] = 0.647 texture[ 93, 92] = 0.690 texture[ 94, 92] = 0.353 texture[ 95, 92] = 0.573 texture[ 96, 92] = 0.420 texture[ 97, 92] = 0.690 texture[ 98, 92] = 0.847 texture[ 99, 92] = 0.678 texture[ 100, 92] = 0.651 texture[ 1, 93] = 0.592 texture[ 2, 93] = 0.129 texture[ 3, 93] = 0.176 texture[ 4, 93] = 0.459 texture[ 5, 93] = 0.431 texture[ 6, 93] = 0.459 texture[ 7, 93] = 0.486 texture[ 8, 93] = 0.133 texture[ 9, 93] = 0.000 texture[ 10, 93] = 0.286 texture[ 11, 93] = 0.541 texture[ 12, 93] = 0.549 texture[ 13, 93] = 0.651 texture[ 14, 93] = 0.561 texture[ 15, 93] = 0.596 texture[ 16, 93] = 0.635 texture[ 17, 93] = 0.384 texture[ 18, 93] = 0.376 texture[ 19, 93] = 0.549 texture[ 20, 93] = 0.745 texture[ 21, 93] = 0.592 texture[ 22, 93] = 0.518 texture[ 23, 93] = 0.153 texture[ 24, 93] = 0.157 texture[ 25, 93] = 0.188 texture[ 26, 93] = 0.157 texture[ 27, 93] = 0.718 texture[ 28, 93] = 0.596 texture[ 29, 93] = 0.718 texture[ 30, 93] = 0.690 texture[ 31, 93] = 0.306 texture[ 32, 93] = 0.486 texture[ 33, 93] = 0.639 texture[ 34, 93] = 0.451 texture[ 35, 93] = 0.353 texture[ 36, 93] = 0.702 texture[ 37, 93] = 0.706 texture[ 38, 93] = 0.745 texture[ 39, 93] = 0.439 texture[ 40, 93] = 0.102 texture[ 41, 93] = 0.145 texture[ 42, 93] = 0.718 texture[ 43, 93] = 0.965 texture[ 44, 93] = 0.537 texture[ 45, 93] = 0.514 texture[ 46, 93] = 0.627 texture[ 47, 93] = 0.475 texture[ 48, 93] = 0.608 texture[ 49, 93] = 0.408 texture[ 50, 93] = 0.420 texture[ 51, 93] = 0.596 texture[ 52, 93] = 0.243 texture[ 53, 93] = 0.078 texture[ 54, 93] = 0.439 texture[ 55, 93] = 0.420 texture[ 56, 93] = 0.463 texture[ 57, 93] = 0.463 texture[ 58, 93] = 0.220 texture[ 59, 93] = 0.000 texture[ 60, 93] = 0.184 texture[ 61, 93] = 0.529 texture[ 62, 93] = 0.502 texture[ 63, 93] = 0.596 texture[ 64, 93] = 0.561 texture[ 65, 93] = 0.624 texture[ 66, 93] = 0.608 texture[ 67, 93] = 0.384 texture[ 68, 93] = 0.392 texture[ 69, 93] = 0.486 texture[ 70, 93] = 0.745 texture[ 71, 93] = 0.604 texture[ 72, 93] = 0.569 texture[ 73, 93] = 0.231 texture[ 74, 93] = 0.157 texture[ 75, 93] = 0.208 texture[ 76, 93] = 0.133 texture[ 77, 93] = 0.608 texture[ 78, 93] = 0.745 texture[ 79, 93] = 0.431 texture[ 80, 93] = 0.416 texture[ 81, 93] = 0.318 texture[ 82, 93] = 0.529 texture[ 83, 93] = 0.663 texture[ 84, 93] = 0.365 texture[ 85, 93] = 0.396 texture[ 86, 93] = 0.725 texture[ 87, 93] = 0.690 texture[ 88, 93] = 0.682 texture[ 89, 93] = 0.318 texture[ 90, 93] = 0.078 texture[ 91, 93] = 0.188 texture[ 92, 93] = 0.824 texture[ 93, 93] = 0.910 texture[ 94, 93] = 0.482 texture[ 95, 93] = 0.549 texture[ 96, 93] = 0.580 texture[ 97, 93] = 0.494 texture[ 98, 93] = 0.604 texture[ 99, 93] = 0.353 texture[ 100, 93] = 0.486 texture[ 1, 94] = 0.427 texture[ 2, 94] = 0.067 texture[ 3, 94] = 0.000 texture[ 4, 94] = 0.212 texture[ 5, 94] = 0.627 texture[ 6, 94] = 0.592 texture[ 7, 94] = 0.506 texture[ 8, 94] = 0.329 texture[ 9, 94] = 0.122 texture[ 10, 94] = 0.318 texture[ 11, 94] = 0.416 texture[ 12, 94] = 0.431 texture[ 13, 94] = 0.486 texture[ 14, 94] = 0.451 texture[ 15, 94] = 0.447 texture[ 16, 94] = 0.584 texture[ 17, 94] = 0.318 texture[ 18, 94] = 0.639 texture[ 19, 94] = 0.561 texture[ 20, 94] = 0.745 texture[ 21, 94] = 0.792 texture[ 22, 94] = 0.463 texture[ 23, 94] = 0.200 texture[ 24, 94] = 0.129 texture[ 25, 94] = 0.702 texture[ 26, 94] = 0.847 texture[ 27, 94] = 0.651 texture[ 28, 94] = 0.529 texture[ 29, 94] = 0.420 texture[ 30, 94] = 0.549 texture[ 31, 94] = 0.482 texture[ 32, 94] = 0.376 texture[ 33, 94] = 0.584 texture[ 34, 94] = 0.416 texture[ 35, 94] = 0.212 texture[ 36, 94] = 0.553 texture[ 37, 94] = 1.000 texture[ 38, 94] = 0.910 texture[ 39, 94] = 0.745 texture[ 40, 94] = 0.141 texture[ 41, 94] = 0.043 texture[ 42, 94] = 0.608 texture[ 43, 94] = 0.769 texture[ 44, 94] = 0.596 texture[ 45, 94] = 0.486 texture[ 46, 94] = 0.616 texture[ 47, 94] = 0.694 texture[ 48, 94] = 0.624 texture[ 49, 94] = 0.561 texture[ 50, 94] = 0.725 texture[ 51, 94] = 0.525 texture[ 52, 94] = 0.133 texture[ 53, 94] = 0.000 texture[ 54, 94] = 0.133 texture[ 55, 94] = 0.541 texture[ 56, 94] = 0.635 texture[ 57, 94] = 0.502 texture[ 58, 94] = 0.416 texture[ 59, 94] = 0.075 texture[ 60, 94] = 0.267 texture[ 61, 94] = 0.384 texture[ 62, 94] = 0.420 texture[ 63, 94] = 0.408 texture[ 64, 94] = 0.486 texture[ 65, 94] = 0.404 texture[ 66, 94] = 0.596 texture[ 67, 94] = 0.306 texture[ 68, 94] = 0.596 texture[ 69, 94] = 0.584 texture[ 70, 94] = 0.694 texture[ 71, 94] = 0.824 texture[ 72, 94] = 0.569 texture[ 73, 94] = 0.267 texture[ 74, 94] = 0.090 texture[ 75, 94] = 0.627 texture[ 76, 94] = 0.867 texture[ 77, 94] = 0.671 texture[ 78, 94] = 0.506 texture[ 79, 94] = 0.569 texture[ 80, 94] = 0.537 texture[ 81, 94] = 0.471 texture[ 82, 94] = 0.396 texture[ 83, 94] = 0.604 texture[ 84, 94] = 0.322 texture[ 85, 94] = 0.231 texture[ 86, 94] = 0.718 texture[ 87, 94] = 1.000 texture[ 88, 94] = 0.890 texture[ 89, 94] = 0.608 texture[ 90, 94] = 0.086 texture[ 91, 94] = 0.110 texture[ 92, 94] = 0.718 texture[ 93, 94] = 0.714 texture[ 94, 94] = 0.592 texture[ 95, 94] = 0.459 texture[ 96, 94] = 0.608 texture[ 97, 94] = 0.651 texture[ 98, 94] = 0.604 texture[ 99, 94] = 0.647 texture[ 100, 94] = 0.706 texture[ 1, 95] = 0.431 texture[ 2, 95] = 0.067 texture[ 3, 95] = 0.012 texture[ 4, 95] = 0.208 texture[ 5, 95] = 0.663 texture[ 6, 95] = 0.651 texture[ 7, 95] = 0.584 texture[ 8, 95] = 0.431 texture[ 9, 95] = 0.431 texture[ 10, 95] = 0.463 texture[ 11, 95] = 0.361 texture[ 12, 95] = 0.373 texture[ 13, 95] = 0.475 texture[ 14, 95] = 0.349 texture[ 15, 95] = 0.306 texture[ 16, 95] = 0.482 texture[ 17, 95] = 0.145 texture[ 18, 95] = 0.416 texture[ 19, 95] = 0.451 texture[ 20, 95] = 0.624 texture[ 21, 95] = 0.843 texture[ 22, 95] = 0.475 texture[ 23, 95] = 0.035 texture[ 24, 95] = 0.063 texture[ 25, 95] = 0.706 texture[ 26, 95] = 1.000 texture[ 27, 95] = 0.573 texture[ 28, 95] = 0.439 texture[ 29, 95] = 0.694 texture[ 30, 95] = 0.788 texture[ 31, 95] = 0.529 texture[ 32, 95] = 0.486 texture[ 33, 95] = 0.616 texture[ 34, 95] = 0.184 texture[ 35, 95] = 0.133 texture[ 36, 95] = 0.349 texture[ 37, 95] = 0.859 texture[ 38, 95] = 0.890 texture[ 39, 95] = 0.898 texture[ 40, 95] = 0.267 texture[ 41, 95] = 0.020 texture[ 42, 95] = 0.525 texture[ 43, 95] = 0.761 texture[ 44, 95] = 0.573 texture[ 45, 95] = 0.337 texture[ 46, 95] = 0.663 texture[ 47, 95] = 0.773 texture[ 48, 95] = 0.678 texture[ 49, 95] = 0.757 texture[ 50, 95] = 1.000 texture[ 51, 95] = 0.596 texture[ 52, 95] = 0.098 texture[ 53, 95] = 0.012 texture[ 54, 95] = 0.141 texture[ 55, 95] = 0.584 texture[ 56, 95] = 0.639 texture[ 57, 95] = 0.592 texture[ 58, 95] = 0.447 texture[ 59, 95] = 0.373 texture[ 60, 95] = 0.463 texture[ 61, 95] = 0.373 texture[ 62, 95] = 0.365 texture[ 63, 95] = 0.427 texture[ 64, 95] = 0.439 texture[ 65, 95] = 0.275 texture[ 66, 95] = 0.541 texture[ 67, 95] = 0.145 texture[ 68, 95] = 0.349 texture[ 69, 95] = 0.482 texture[ 70, 95] = 0.549 texture[ 71, 95] = 0.867 texture[ 72, 95] = 0.573 texture[ 73, 95] = 0.086 texture[ 74, 95] = 0.008 texture[ 75, 95] = 0.604 texture[ 76, 95] = 1.000 texture[ 77, 95] = 0.690 texture[ 78, 95] = 0.463 texture[ 79, 95] = 0.835 texture[ 80, 95] = 0.780 texture[ 81, 95] = 0.506 texture[ 82, 95] = 0.537 texture[ 83, 95] = 0.549 texture[ 84, 95] = 0.118 texture[ 85, 95] = 0.165 texture[ 86, 95] = 0.451 texture[ 87, 95] = 0.902 texture[ 88, 95] = 0.902 texture[ 89, 95] = 0.824 texture[ 90, 95] = 0.184 texture[ 91, 95] = 0.063 texture[ 92, 95] = 0.624 texture[ 93, 95] = 0.745 texture[ 94, 95] = 0.514 texture[ 95, 95] = 0.373 texture[ 96, 95] = 0.714 texture[ 97, 95] = 0.780 texture[ 98, 95] = 0.678 texture[ 99, 95] = 0.824 texture[ 100, 95] = 0.992 texture[ 1, 96] = 0.337 texture[ 2, 96] = 0.141 texture[ 3, 96] = 0.012 texture[ 4, 96] = 0.294 texture[ 5, 96] = 0.584 texture[ 6, 96] = 0.475 texture[ 7, 96] = 0.514 texture[ 8, 96] = 0.447 texture[ 9, 96] = 0.392 texture[ 10, 96] = 0.624 texture[ 11, 96] = 0.549 texture[ 12, 96] = 0.459 texture[ 13, 96] = 0.663 texture[ 14, 96] = 0.286 texture[ 15, 96] = 0.176 texture[ 16, 96] = 0.592 texture[ 17, 96] = 0.396 texture[ 18, 96] = 0.361 texture[ 19, 96] = 0.251 texture[ 20, 96] = 0.420 texture[ 21, 96] = 0.702 texture[ 22, 96] = 0.298 texture[ 23, 96] = 0.035 texture[ 24, 96] = 0.031 texture[ 25, 96] = 0.569 texture[ 26, 96] = 0.957 texture[ 27, 96] = 0.682 texture[ 28, 96] = 0.427 texture[ 29, 96] = 0.745 texture[ 30, 96] = 0.682 texture[ 31, 96] = 0.537 texture[ 32, 96] = 0.757 texture[ 33, 96] = 0.690 texture[ 34, 96] = 0.329 texture[ 35, 96] = 0.176 texture[ 36, 96] = 0.086 texture[ 37, 96] = 0.471 texture[ 38, 96] = 0.882 texture[ 39, 96] = 0.988 texture[ 40, 96] = 0.447 texture[ 41, 96] = 0.000 texture[ 42, 96] = 0.176 texture[ 43, 96] = 0.506 texture[ 44, 96] = 0.353 texture[ 45, 96] = 0.122 texture[ 46, 96] = 0.549 texture[ 47, 96] = 0.561 texture[ 48, 96] = 0.639 texture[ 49, 96] = 0.800 texture[ 50, 96] = 0.867 texture[ 51, 96] = 0.404 texture[ 52, 96] = 0.165 texture[ 53, 96] = 0.020 texture[ 54, 96] = 0.212 texture[ 55, 96] = 0.569 texture[ 56, 96] = 0.494 texture[ 57, 96] = 0.525 texture[ 58, 96] = 0.459 texture[ 59, 96] = 0.361 texture[ 60, 96] = 0.573 texture[ 61, 96] = 0.580 texture[ 62, 96] = 0.439 texture[ 63, 96] = 0.616 texture[ 64, 96] = 0.373 texture[ 65, 96] = 0.153 texture[ 66, 96] = 0.561 texture[ 67, 96] = 0.451 texture[ 68, 96] = 0.341 texture[ 69, 96] = 0.353 texture[ 70, 96] = 0.329 texture[ 71, 96] = 0.725 texture[ 72, 96] = 0.361 texture[ 73, 96] = 0.075 texture[ 74, 96] = 0.008 texture[ 75, 96] = 0.463 texture[ 76, 96] = 0.937 texture[ 77, 96] = 0.761 texture[ 78, 96] = 0.714 texture[ 79, 96] = 0.867 texture[ 80, 96] = 0.529 texture[ 81, 96] = 0.580 texture[ 82, 96] = 0.788 texture[ 83, 96] = 0.639 texture[ 84, 96] = 0.282 texture[ 85, 96] = 0.141 texture[ 86, 96] = 0.098 texture[ 87, 96] = 0.553 texture[ 88, 96] = 0.910 texture[ 89, 96] = 0.957 texture[ 90, 96] = 0.349 texture[ 91, 96] = 0.000 texture[ 92, 96] = 0.286 texture[ 93, 96] = 0.502 texture[ 94, 96] = 0.294 texture[ 95, 96] = 0.208 texture[ 96, 96] = 0.604 texture[ 97, 96] = 0.584 texture[ 98, 96] = 0.682 texture[ 99, 96] = 0.827 texture[ 100, 96] = 0.780 texture[ 1, 97] = 0.188 texture[ 2, 97] = 0.188 texture[ 3, 97] = 0.035 texture[ 4, 97] = 0.416 texture[ 5, 97] = 0.518 texture[ 6, 97] = 0.173 texture[ 7, 97] = 0.329 texture[ 8, 97] = 0.514 texture[ 9, 97] = 0.376 texture[ 10, 97] = 0.459 texture[ 11, 97] = 0.459 texture[ 12, 97] = 0.549 texture[ 13, 97] = 0.706 texture[ 14, 97] = 0.306 texture[ 15, 97] = 0.176 texture[ 16, 97] = 0.663 texture[ 17, 97] = 0.604 texture[ 18, 97] = 0.427 texture[ 19, 97] = 0.373 texture[ 20, 97] = 0.420 texture[ 21, 97] = 0.294 texture[ 22, 97] = 0.212 texture[ 23, 97] = 0.157 texture[ 24, 97] = 0.502 texture[ 25, 97] = 0.404 texture[ 26, 97] = 0.549 texture[ 27, 97] = 0.682 texture[ 28, 97] = 0.537 texture[ 29, 97] = 0.725 texture[ 30, 97] = 0.573 texture[ 31, 97] = 0.647 texture[ 32, 97] = 0.624 texture[ 33, 97] = 0.592 texture[ 34, 97] = 0.714 texture[ 35, 97] = 0.561 texture[ 36, 97] = 0.078 texture[ 37, 97] = 0.310 texture[ 38, 97] = 0.757 texture[ 39, 97] = 1.000 texture[ 40, 97] = 0.922 texture[ 41, 97] = 0.251 texture[ 42, 97] = 0.031 texture[ 43, 97] = 0.463 texture[ 44, 97] = 0.506 texture[ 45, 97] = 0.118 texture[ 46, 97] = 0.373 texture[ 47, 97] = 0.463 texture[ 48, 97] = 0.506 texture[ 49, 97] = 0.733 texture[ 50, 97] = 0.584 texture[ 51, 97] = 0.145 texture[ 52, 97] = 0.208 texture[ 53, 97] = 0.035 texture[ 54, 97] = 0.294 texture[ 55, 97] = 0.561 texture[ 56, 97] = 0.196 texture[ 57, 97] = 0.243 texture[ 58, 97] = 0.529 texture[ 59, 97] = 0.361 texture[ 60, 97] = 0.439 texture[ 61, 97] = 0.463 texture[ 62, 97] = 0.506 texture[ 63, 97] = 0.682 texture[ 64, 97] = 0.408 texture[ 65, 97] = 0.153 texture[ 66, 97] = 0.608 texture[ 67, 97] = 0.651 texture[ 68, 97] = 0.463 texture[ 69, 97] = 0.392 texture[ 70, 97] = 0.416 texture[ 71, 97] = 0.361 texture[ 72, 97] = 0.220 texture[ 73, 97] = 0.157 texture[ 74, 97] = 0.451 texture[ 75, 97] = 0.439 texture[ 76, 97] = 0.475 texture[ 77, 97] = 0.737 texture[ 78, 97] = 0.608 texture[ 79, 97] = 0.663 texture[ 80, 97] = 0.525 texture[ 81, 97] = 0.682 texture[ 82, 97] = 0.635 texture[ 83, 97] = 0.608 texture[ 84, 97] = 0.718 texture[ 85, 97] = 0.459 texture[ 86, 97] = 0.055 texture[ 87, 97] = 0.404 texture[ 88, 97] = 0.788 texture[ 89, 97] = 1.000 texture[ 90, 97] = 0.859 texture[ 91, 97] = 0.153 texture[ 92, 97] = 0.133 texture[ 93, 97] = 0.506 texture[ 94, 97] = 0.459 texture[ 95, 97] = 0.110 texture[ 96, 97] = 0.404 texture[ 97, 97] = 0.431 texture[ 98, 97] = 0.537 texture[ 99, 97] = 0.761 texture[ 100, 97] = 0.475 texture[ 1, 98] = 0.227 texture[ 2, 98] = 0.275 texture[ 3, 98] = 0.102 texture[ 4, 98] = 0.176 texture[ 5, 98] = 0.541 texture[ 6, 98] = 0.514 texture[ 7, 98] = 0.373 texture[ 8, 98] = 0.176 texture[ 9, 98] = 0.129 texture[ 10, 98] = 0.329 texture[ 11, 98] = 0.447 texture[ 12, 98] = 0.518 texture[ 13, 98] = 0.420 texture[ 14, 98] = 0.157 texture[ 15, 98] = 0.306 texture[ 16, 98] = 0.569 texture[ 17, 98] = 0.694 texture[ 18, 98] = 0.475 texture[ 19, 98] = 0.537 texture[ 20, 98] = 0.608 texture[ 21, 98] = 0.220 texture[ 22, 98] = 0.110 texture[ 23, 98] = 0.110 texture[ 24, 98] = 0.773 texture[ 25, 98] = 0.659 texture[ 26, 98] = 0.529 texture[ 27, 98] = 0.678 texture[ 28, 98] = 0.792 texture[ 29, 98] = 0.682 texture[ 30, 98] = 0.639 texture[ 31, 98] = 0.627 texture[ 32, 98] = 0.184 texture[ 33, 98] = 0.506 texture[ 34, 98] = 0.608 texture[ 35, 98] = 0.769 texture[ 36, 98] = 0.243 texture[ 37, 98] = 0.373 texture[ 38, 98] = 0.573 texture[ 39, 98] = 0.718 texture[ 40, 98] = 0.871 texture[ 41, 98] = 0.592 texture[ 42, 98] = 0.200 texture[ 43, 98] = 0.624 texture[ 44, 98] = 0.439 texture[ 45, 98] = 0.341 texture[ 46, 98] = 0.518 texture[ 47, 98] = 0.541 texture[ 48, 98] = 0.647 texture[ 49, 98] = 0.843 texture[ 50, 98] = 0.627 texture[ 51, 98] = 0.176 texture[ 52, 98] = 0.286 texture[ 53, 98] = 0.141 texture[ 54, 98] = 0.118 texture[ 55, 98] = 0.482 texture[ 56, 98] = 0.541 texture[ 57, 98] = 0.376 texture[ 58, 98] = 0.243 texture[ 59, 98] = 0.086 texture[ 60, 98] = 0.286 texture[ 61, 98] = 0.396 texture[ 62, 98] = 0.486 texture[ 63, 98] = 0.486 texture[ 64, 98] = 0.184 texture[ 65, 98] = 0.239 texture[ 66, 98] = 0.525 texture[ 67, 98] = 0.682 texture[ 68, 98] = 0.529 texture[ 69, 98] = 0.451 texture[ 70, 98] = 0.682 texture[ 71, 98] = 0.275 texture[ 72, 98] = 0.133 texture[ 73, 98] = 0.067 texture[ 74, 98] = 0.663 texture[ 75, 98] = 0.718 texture[ 76, 98] = 0.502 texture[ 77, 98] = 0.651 texture[ 78, 98] = 0.725 texture[ 79, 98] = 0.529 texture[ 80, 98] = 0.651 texture[ 81, 98] = 0.553 texture[ 82, 98] = 0.227 texture[ 83, 98] = 0.541 texture[ 84, 98] = 0.635 texture[ 85, 98] = 0.706 texture[ 86, 98] = 0.184 texture[ 87, 98] = 0.439 texture[ 88, 98] = 0.561 texture[ 89, 98] = 0.745 texture[ 90, 98] = 0.871 texture[ 91, 98] = 0.541 texture[ 92, 98] = 0.322 texture[ 93, 98] = 0.639 texture[ 94, 98] = 0.349 texture[ 95, 98] = 0.373 texture[ 96, 98] = 0.541 texture[ 97, 98] = 0.541 texture[ 98, 98] = 0.682 texture[ 99, 98] = 0.824 texture[ 100, 98] = 0.494 texture[ 1, 99] = 0.408 texture[ 2, 99] = 0.451 texture[ 3, 99] = 0.133 texture[ 4, 99] = 0.000 texture[ 5, 99] = 0.427 texture[ 6, 99] = 0.745 texture[ 7, 99] = 0.463 texture[ 8, 99] = 0.431 texture[ 9, 99] = 0.145 texture[ 10, 99] = 0.408 texture[ 11, 99] = 0.663 texture[ 12, 99] = 0.749 texture[ 13, 99] = 0.737 texture[ 14, 99] = 0.255 texture[ 15, 99] = 0.212 texture[ 16, 99] = 0.416 texture[ 17, 99] = 0.737 texture[ 18, 99] = 0.773 texture[ 19, 99] = 0.384 texture[ 20, 99] = 0.286 texture[ 21, 99] = 0.184 texture[ 22, 99] = 0.063 texture[ 23, 99] = 0.157 texture[ 24, 99] = 0.373 texture[ 25, 99] = 0.376 texture[ 26, 99] = 0.882 texture[ 27, 99] = 0.969 texture[ 28, 99] = 1.000 texture[ 29, 99] = 0.816 texture[ 30, 99] = 0.627 texture[ 31, 99] = 0.392 texture[ 32, 99] = 0.055 texture[ 33, 99] = 0.220 texture[ 34, 99] = 0.451 texture[ 35, 99] = 0.549 texture[ 36, 99] = 0.427 texture[ 37, 99] = 0.439 texture[ 38, 99] = 0.616 texture[ 39, 99] = 0.647 texture[ 40, 99] = 0.494 texture[ 41, 99] = 0.541 texture[ 42, 99] = 0.592 texture[ 43, 99] = 0.459 texture[ 44, 99] = 0.141 texture[ 45, 99] = 0.475 texture[ 46, 99] = 0.573 texture[ 47, 99] = 0.506 texture[ 48, 99] = 0.616 texture[ 49, 99] = 0.690 texture[ 50, 99] = 0.604 texture[ 51, 99] = 0.376 texture[ 52, 99] = 0.463 texture[ 53, 99] = 0.220 texture[ 54, 99] = 0.000 texture[ 55, 99] = 0.294 texture[ 56, 99] = 0.804 texture[ 57, 99] = 0.525 texture[ 58, 99] = 0.482 texture[ 59, 99] = 0.153 texture[ 60, 99] = 0.329 texture[ 61, 99] = 0.639 texture[ 62, 99] = 0.725 texture[ 63, 99] = 0.761 texture[ 64, 99] = 0.310 texture[ 65, 99] = 0.196 texture[ 66, 99] = 0.337 texture[ 67, 99] = 0.694 texture[ 68, 99] = 0.812 texture[ 69, 99] = 0.431 texture[ 70, 99] = 0.310 texture[ 71, 99] = 0.200 texture[ 72, 99] = 0.086 texture[ 73, 99] = 0.129 texture[ 74, 99] = 0.404 texture[ 75, 99] = 0.322 texture[ 76, 99] = 0.816 texture[ 77, 99] = 0.980 texture[ 78, 99] = 0.980 texture[ 79, 99] = 0.702 texture[ 80, 99] = 0.596 texture[ 81, 99] = 0.275 texture[ 82, 99] = 0.067 texture[ 83, 99] = 0.255 texture[ 84, 99] = 0.502 texture[ 85, 99] = 0.549 texture[ 86, 99] = 0.408 texture[ 87, 99] = 0.475 texture[ 88, 99] = 0.596 texture[ 89, 99] = 0.608 texture[ 90, 99] = 0.494 texture[ 91, 99] = 0.569 texture[ 92, 99] = 0.647 texture[ 93, 99] = 0.396 texture[ 94, 99] = 0.176 texture[ 95, 99] = 0.529 texture[ 96, 99] = 0.549 texture[ 97, 99] = 0.506 texture[ 98, 99] = 0.651 texture[ 99, 99] = 0.663 texture[ 100, 99] = 0.549 texture[ 1, 100] = 0.651 texture[ 2, 100] = 0.745 texture[ 3, 100] = 0.243 texture[ 4, 100] = 0.000 texture[ 5, 100] = 0.396 texture[ 6, 100] = 0.592 texture[ 7, 100] = 0.384 texture[ 8, 100] = 0.349 texture[ 9, 100] = 0.251 texture[ 10, 100] = 0.282 texture[ 11, 100] = 0.506 texture[ 12, 100] = 0.706 texture[ 13, 100] = 0.922 texture[ 14, 100] = 0.255 texture[ 15, 100] = 0.102 texture[ 16, 100] = 0.420 texture[ 17, 100] = 0.714 texture[ 18, 100] = 0.757 texture[ 19, 100] = 0.471 texture[ 20, 100] = 0.227 texture[ 21, 100] = 0.102 texture[ 22, 100] = 0.176 texture[ 23, 100] = 0.427 texture[ 24, 100] = 0.239 texture[ 25, 100] = 0.408 texture[ 26, 100] = 0.812 texture[ 27, 100] = 0.890 texture[ 28, 100] = 0.871 texture[ 29, 100] = 0.925 texture[ 30, 100] = 0.694 texture[ 31, 100] = 0.392 texture[ 32, 100] = 0.188 texture[ 33, 100] = 0.329 texture[ 34, 100] = 0.678 texture[ 35, 100] = 0.282 texture[ 36, 100] = 0.329 texture[ 37, 100] = 0.745 texture[ 38, 100] = 0.702 texture[ 39, 100] = 0.659 texture[ 40, 100] = 0.482 texture[ 41, 100] = 0.514 texture[ 42, 100] = 0.451 texture[ 43, 100] = 0.122 texture[ 44, 100] = 0.086 texture[ 45, 100] = 0.431 texture[ 46, 100] = 0.694 texture[ 47, 100] = 0.647 texture[ 48, 100] = 0.761 texture[ 49, 100] = 0.773 texture[ 50, 100] = 0.659 texture[ 51, 100] = 0.624 texture[ 52, 100] = 0.718 texture[ 53, 100] = 0.376 texture[ 54, 100] = 0.000 texture[ 55, 100] = 0.318 texture[ 56, 100] = 0.635 texture[ 57, 100] = 0.392 texture[ 58, 100] = 0.365 texture[ 59, 100] = 0.263 texture[ 60, 100] = 0.275 texture[ 61, 100] = 0.506 texture[ 62, 100] = 0.639 texture[ 63, 100] = 0.902 texture[ 64, 100] = 0.361 texture[ 65, 100] = 0.090 texture[ 66, 100] = 0.349 texture[ 67, 100] = 0.678 texture[ 68, 100] = 0.725 texture[ 69, 100] = 0.518 texture[ 70, 100] = 0.275 texture[ 71, 100] = 0.129 texture[ 72, 100] = 0.145 texture[ 73, 100] = 0.427 texture[ 74, 100] = 0.349 texture[ 75, 100] = 0.365 texture[ 76, 100] = 0.788 texture[ 77, 100] = 0.922 texture[ 78, 100] = 0.867 texture[ 79, 100] = 0.824 texture[ 80, 100] = 0.624 texture[ 81, 100] = 0.337 texture[ 82, 100] = 0.173 texture[ 83, 100] = 0.420 texture[ 84, 100] = 0.647 texture[ 85, 100] = 0.212 texture[ 86, 100] = 0.447 texture[ 87, 100] = 0.745 texture[ 88, 100] = 0.694 texture[ 89, 100] = 0.608 texture[ 90, 100] = 0.471 texture[ 91, 100] = 0.529 texture[ 92, 100] = 0.416 texture[ 93, 100] = 0.063 texture[ 94, 100] = 0.141 texture[ 95, 100] = 0.506 texture[ 96, 100] = 0.702 texture[ 97, 100] = 0.678 texture[ 98, 100] = 0.788 texture[ 99, 100] = 0.788 texture[ 100, 100] = 0.651 init: float d1 = 0 float d2 = 0 float f1 = 0 float f2 = 0 float ftemp = 0 float d = 0 float distance = 0 float min_dist = 1e+318 bool trapped = false float x = 0 float y = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 complex w = 0 complex ww = 0 float t = 0 float sum = 0.0 float freq = 1.0 float exptrap_p = 0 complex f_p = 0 float distsum = 0 float distave = 0 complex trap_z = 0 complex trap_p = 0 int trap_iter = 0 int max_iter = 0 int iter = 0 bool msk = @mask float rotx = #x float roty = #y int irotx int iroty IF @no_of_iters == 0 max_iter = #maxiter - @skip ELSE max_iter = @skip + @no_of_iters ENDIF IF (@mask == true) && (@rmask == true) msk = false ENDIF int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE IF @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) ELSEIF @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) ELSEIF @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) ELSEIF @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) ELSEIF @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) ELSEIF @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) ELSEIF @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) ELSEIF @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) ELSEIF @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) ELSE float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) ENDIF loop: complex z1 = (#z+@offset)*(1-@weight) + (xx + flip(yy))*@weight ; x = real(z1)+real(@offset) ; y = imag(z1)+imag(@offset) IF @type == 0 f_p = z1 -(imag(#z)+flip(real(#z)))+@start IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 5*abs(real(z1)+imag(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(z1-f_p)/cabs(d/5-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/5-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/5-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/5-(x*y)) ENDIF distsum = d + distsum distave = distsum/iter ELSEIF @type == 1 f_p = z1 - real(#z)*imag(#z)+@start IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 100*abs(real(z1)*imag(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(z1-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/100-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/100-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/100-(x*y)) ENDIF distsum = d + distsum distave = distsum/iter ELSEIF @type == 2 f_p = z1 - real(#z)/imag(#z)+@start IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 3*abs(real(z1)/imag(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(z1-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/3-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/3-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/3-(x*y)) ENDIF distsum = d + distsum distave = distsum/iter ELSEIF @type == 3 f_p = z1 - imag(#z)/real(#z)+@start IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = abs(imag(z1)/real(z1)) IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(z1-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d-(x*y)) ENDIF distsum = d + distsum distave = distsum/iter ELSEIF @type == 4 f_p = z1 - (ceil(real(#z))+ flip(floor(imag(#z))))+@start IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = abs(real(z1)-ceil(real(z1)))+abs(imag(z1)-floor(imag(z1))) IF @trapvar == 1 d = 25*abs(d*d - d) ELSEIF @trapvar == 2 d = 25*abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 10*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 10*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 25*cabs(#z-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d-(x*y)) ENDIF distsum = d + distsum distave = distsum/iter ELSEIF @type == 5 f_p = z1 - (round(real(#z))+ flip(trunc(imag(#z))))+@start IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = 3*(abs(real(z1)-round(real(z1)))+abs(imag(z1)-trunc(imag(z1)))) IF @trapvar == 1 d = 2*abs(d*d - d) ELSEIF @trapvar == 2 d = 2*abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 5*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 3*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = cabs(#z-f_p)/cabs(d/3-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/3-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/3-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/3-(x*y)) ENDIF distsum = d + distsum distave = distsum/iter ELSEIF @type == 6 f_p = z1 - (ceil(real(#z))+ flip(floor(imag(#z))))+@start IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = real(z1)-ceil(real(z1))+imag(z1)-floor(imag(z1)) IF @trapvar == 1 d = 5*abs(d*d - d) ELSEIF @trapvar == 2 d = 5*abs(d*d*d - d) ELSEIF @trapvar == 3 d = 5*abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 5*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 5*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 5*cabs(#z-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d-(x*y)) ENDIF distsum = abs(d) + distsum distave = distsum/iter IF d < 0 d = 1e+318 ENDIF ELSEIF @type == 7 f_p = z1 - (round(real(#z))+ flip(trunc(imag(#z))))+@start IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF d = real(z1)-round(real(z1))+imag(z1)-trunc(imag(z1)) IF @trapvar == 1 d = 5*abs(d*d - d) ELSEIF @trapvar == 2 d = 5*abs(d*d*d - d) ELSEIF @trapvar == 3 d = 5*abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = 5*abs(d - |f_p|) ELSEIF @trapvar == 5 d = 5*abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = 5*cabs(#z-f_p)/cabs(d-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d-(x*y)) ENDIF distsum = abs(d) + distsum distave = distsum/iter IF d < 0 d = 1e+318 ENDIF ELSEIF @type == 8 IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF f1 = 0 f2 = 1 d1 =real(z1)-f2 WHILE d1 > 0 ftemp = f2 f2 = f1 + f2 f1 = ftemp d1 = real(z1)-f2 ENDWHILE d = real(z1)-f1 ; which Fibonocci number is closest IF d < abs(d1) d1 = d ENDIF f1 = 0 f2 = 1 d2 = imag(z1)-f2 WHILE d2 > 0 ftemp = f2 f2 = f1 + f2 f1 = ftemp d2 = imag(z1)-f2 ENDWHILE d = real(z1)-f1 ; which Fibonocci number is closest IF d < abs(d2) d2 = d ENDIF d = 5*(abs(d1) + abs(d2)) f_p = z1 - (d1 + flip(d2))+@start IF @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) ENDIF IF @trapvar == 1 d = abs(d*d - d) ELSEIF @trapvar == 2 d = abs(d*d*d - d) ELSEIF @trapvar == 3 d = abs(d*d*d -d*d +d) ELSEIF @trapvar == 4 d = abs(d - |f_p|) ELSEIF @trapvar == 5 d = abs(d - cabs(fn3(f_p))) ELSEIF @trapvar == 6 d = cabs(z1-f_p)/cabs(d/5-f_p) ELSEIF @trapvar == 7 d = cabs(fn3(f_p))/abs(d/5-cabs(z1-f_p)) ELSEIF @trapvar == 8 d = cabs(fn3(f_p))/abs(d/5-(x+y)) ELSEIF @trapvar == 9 d = cabs(fn3(f_p))/abs(d/5-(x*y)) ENDIF distsum = d + distsum distave = distsum/iter ENDIF IF @trap_mode == 0 IF (iter >= @skip && iter < max_iter) \ && d < min_dist min_dist = d distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 1 IF (iter >= @skip && iter < max_iter) \ && !trapped && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 2 IF (iter >= @skip && iter < max_iter) \ && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 3 d = cabs(f_p) IF (iter >= @skip && iter < max_iter) \ && d < min_dist min_dist = d distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p ENDIF ELSEIF @trap_mode == 4 IF (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p ENDIF ENDIF iter = iter + 1 final: rotx = rotx/#width roty = roty/#height float xx = rotx rotx = #width+0.5*#width+(rotx-0.5)*cos(@angle*#pi/180)*#width - (roty-0.5)*sin(@angle*#pi/180)*#height roty = #height+0.5*#height+(roty-0.5)*cos(@angle*#pi/180)*#height + (xx-0.5)*sin(@angle*#pi/180)*#width irotx = abs(round(rotx)) iroty = abs(round(roty)) w = fn2(fn1(trap_z*10^@pwr))*@ts ww = fn2(fn1((w - round(w)))) + @toffset t = cabs(ww)*@tc t = (t - trunc(t))*@tweight IF (@trap_mode == 1 || @trap_mode == 2) IF !trapped #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*distance+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*distance+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*trap_iter+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*trap_iter+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(real(trap_z))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(real(trap_z))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(imag(trap_z))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(imag(trap_z))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(real(trap_p))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(real(trap_p))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(imag(trap_p))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(imag(trap_p))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*exptrap_p*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*exptrap_p*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*exptrap_p+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*exptrap_p+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ENDIF ENDIF ELSEIF (@trap_mode != 1 && @trap_mode != 2) && @trap IF msk == true && min_dist > @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+@wate*\ texture[1+(round((@hite*distance+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*distance+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t +@wate*\ texture[1+(round((@hite*trap_iter+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*trap_iter+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(real(trap_z))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(real(trap_z))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(imag(trap_z))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(imag(trap_z))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(real(trap_p))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(real(trap_p))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(imag(trap_p))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(imag(trap_p))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*exptrap_p*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*exptrap_p*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*exptrap_p+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*exptrap_p+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ENDIF ENDIF IF @rmask == true && min_dist <= @width #solid = true ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+@wate*\ texture[1+(round((@hite*distance+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*distance+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*trap_iter+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*trap_iter+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(real(trap_z))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(real(trap_z))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(imag(trap_z))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(imag(trap_z))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(real(trap_p))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(real(trap_p))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(imag(trap_p))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(imag(trap_p))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*exptrap_p*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*exptrap_p*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*exptrap_p+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*exptrap_p+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ENDIF ENDIF ELSE IF @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+@wate*\ texture[1+(round((@hite*distance+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*distance+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*trap_iter+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*trap_iter+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(real(trap_z))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(real(trap_z))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(imag(trap_z))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(imag(trap_z))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 5 float angle = atan2(trap_z) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_z)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(real(trap_p))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(real(trap_p))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*abs(imag(trap_p))+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*abs(imag(trap_p))+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 9 float angle = atan2(trap_p) IF angle < 0 angle = angle + 2 * #pi ENDIF angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*exptrap_p*cabs(trap_p)+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*exptrap_p*cabs(trap_p)+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ELSEIF @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+ @wate*\ texture[1+(round((@hite*exptrap_p+1)*(sum*@fbms+1)*irotx/@scale) % 100),\ 1+(round((@hite*exptrap_p+1)*(sum*@fbms+1)*iroty/@scale) % 100)] ENDIF ENDIF default: title = "Simple Traps Enhanced Bark" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param scale caption = " bmp texture scale" default = 1.0 endparam param wate caption = "bmp texture weight" default = 0.1 endparam param hite caption = "bmp texture warp" default = 0.01 endparam param fbms caption = "bmp texture fBm Weight" default = 0.01 endparam param angle caption = "texture rotation" default = 0.0 endparam param type caption = "Trap Type" default = 0 enum = "sum" "product" "quotient1" "quotient2" \ "ceil_floor" "trunc_round" "cf_plus" \ "tr_plus" "fibonocci" endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" "6" "7" "8" "9" endparam param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param trap caption = "Alternate trap" default = false hint = "Trap for modes other than 'first' and 'last'" endparam param mask caption = "Mask" default = true hint = "Uses 'trap width' as threshold" endparam param rmask caption = "Reverse mask" default = false hint = "Uses 'trap width' as threshold" endparam param width caption = "Trap width" default = 0.1 endparam param offset caption = "Trap offset" default = (0.0,0.0) endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param weight caption = "fBm Weight" default = 0.1 min = 0.0 max = 1.0 endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" endparam param fbm caption = "fBm Transfer Weight" default = 1.0 endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." endparam param nscale caption = "fBm Scale" default = 0 hint = "This is the overall scale of the noise." endparam param fbmf caption = "fBm Final Weight" default = 10.0 endparam param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." endparam param tweight caption = "Texture weight" default = 0.0 endparam param ts caption = "Texture scale" default = 100.0 endparam param tc caption = "Texture modifier" default = 5.0 endparam param pwr caption = "Texture power" default = 0.25 endparam func fn1 caption = "Texture Function 1" default = sqr() endfunc func fn2 caption = "Texture Function 2" default = acos() endfunc func fn3 caption = "Trap var function" default = cos() endfunc } Distance_Estimate { ; Ron Barnett, May 2006 ; This provides distance estimate coloring for all ; fractal types init: float expiter = 0 complex zold = (0,0) float mod = 0 float pot = 0 float dist = 0 loop: if @converge == "Convergent" mod = 1/(cabs(zold - #z)) else mod = cabs(#z) endif expiter = expiter + exp(-mod) zold = #z final: pot = 2^(-expiter) dist = sinh(pot)/(2*exp(pot)*@gradconst) if @showborder if dist < @border #index = 0 else #solid = true endif else #index = dist endif default: title = "Distance Estimate General" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param gradconst caption = "Gradient value" default = 1.0 endparam param converge caption = "Fractal type" enum = "Divergent" "Convergent" hint = "Convergent fractals are fractals like the \ Newton fractal." endparam bool param showborder caption = "Show border only" default = false endparam float param border caption = "borderwidth" default = 0.01 visible = @showborder endparam } Distance_Estimate2 { ; Ron Barnett, May 2006 ; This provides distance estimate coloring for all ; fractal types $define debug init: float expiter = 0 complex zold = (0,0) float pot = 0 float dist = 0 loop: expiter = expiter + exp(-cabs(#z)-0.5/(cabs(zold - #z))) zold = #z final: pot = 2^(-expiter) dist = sinh(pot)/(2*exp(pot)*expiter) if @showborder if dist < @border #index = 0 else #solid = true endif else #index = dist endif default: title = "Distance Estimate General 2" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam bool param showborder caption = "Show border only" default = false endparam float param border caption = "borderwidth" default = 0.01 visible = @showborder endparam } 3DFractalColoringDirect { ; Ron Barnett, May 2006 ; This ucl is intended for use with 3D Fractal Raytrace global: ; Color range variables and initialization. color colorMap [2, 2] ; int offset = 0 if (@colorPreset == "Preset") ; User specified custom range. if @colorchoice == "Magenta" colorMap [0,1] = @colorMax1, colorMap [0,0] = @colorMin1 elseif @colorchoice == "Blueviolet" colorMap [0,1] = @colorMax2, colorMap [0,0] = @colorMin2 elseif @colorchoice == "AliceBlue" colorMap [0,1] = @colorMax3, colorMap [0,0] = @colorMin3 elseif @colorchoice == "AntiqueWhite" colorMap [0,1] = @colorMax4, colorMap [0,0] = @colorMin4 elseif @colorchoice == "Aquamarine" colorMap [0,1] = @colorMax5, colorMap [0,0] = @colorMin5 elseif @colorchoice == "Azure" colorMap [0,1] = @colorMax6, colorMap [0,0] = @colorMin6 elseif @colorchoice == "Beige" colorMap [0,1] = @colorMax7, colorMap [0,0] = @colorMin7 elseif @colorchoice == "Black" colorMap [0,1] = @colorMax8, colorMap [0,0] = @colorMin8 elseif @colorchoice == "BlanchedAlmond" colorMap [0,1] = @colorMax9, colorMap [0,0] = @colorMin9 elseif @colorchoice == "Blue" colorMap [0,1] = @colorMax10, colorMap [0,0] = @colorMin10 elseif @colorchoice == "Brown" colorMap [0,1] = @colorMax11, colorMap [0,0] = @colorMin11 elseif @colorchoice == "Burlywood" colorMap [0,1] = @colorMax12, colorMap [0,0] = @colorMin12 elseif @colorchoice == "CadetBlue" colorMap [0,1] = @colorMax13, colorMap [0,0] = @colorMin13 elseif @colorchoice == "Chocolate" colorMap [0,1] = @colorMax14, colorMap [0,0] = @colorMin14 elseif @colorchoice == "Coral" colorMap [0,1] = @colorMax15, colorMap [0,0] = @colorMin15 elseif @colorchoice == "CornflowerBlue" colorMap [0,1] = @colorMax16, colorMap [0,0] = @colorMin16 elseif @colorchoice == "Cornsilk" colorMap [0,1] = @colorMax17, colorMap [0,0] = @colorMin17 elseif @colorchoice == "Crimson" colorMap [0,1] = @colorMax18, colorMap [0,0] = @colorMin18 elseif @colorchoice == "Cyan" colorMap [0,1] = @colorMax19, colorMap [0,0] = @colorMin19 elseif @colorchoice == "DarkBlue" colorMap [0,1] = @colorMax20, colorMap [0,0] = @colorMin20 elseif @colorchoice == "DarkCyan" colorMap [0,1] = @colorMax21, colorMap [0,0] = @colorMin21 elseif @colorchoice == "DarkGoldenrod" colorMap [0,1] = @colorMax22, colorMap [0,0] = @colorMin22 elseif @colorchoice == "DarkGreen" colorMap [0,1] = @colorMax23, colorMap [0,0] = @colorMin23 elseif @colorchoice == "Silver" colorMap [0,1] = @colorMax24, colorMap [0,0] = @colorMin24 elseif @colorchoice == "DarkKhaki" colorMap [0,1] = @colorMax25, colorMap [0,0] = @colorMin25 elseif @colorchoice == "DarkMagenta" colorMap [0,1] = @colorMax26, colorMap [0,0] = @colorMin26 elseif @colorchoice == "DarkOliveGreen" colorMap [0,1] = @colorMax27, colorMap [0,0] = @colorMin27 elseif @colorchoice == "DarkOrchid" colorMap [0,1] = @colorMax28, colorMap [0,0] = @colorMin28 elseif @colorchoice == "DeepPink" colorMap [0,1] = @colorMax29, colorMap [0,0] = @colorMin29 elseif @colorchoice == "DarkRed" colorMap [0,1] = @colorMax30, colorMap [0,0] = @colorMin30 elseif @colorchoice == "DarkSalmon" colorMap [0,1] = @colorMax31, colorMap [0,0] = @colorMin31 elseif @colorchoice == "DarkSlateBlue" colorMap [0,1] = @colorMax32, colorMap [0,0] = @colorMin32 elseif @colorchoice == "DarkSlateGrey" colorMap [0,1] = @colorMax33, colorMap [0,0] = @colorMin33 elseif @colorchoice == "DarkTurquoise" colorMap [0,1] = @colorMax34, colorMap [0,0] = @colorMin34 elseif @colorchoice == "DarkViolet" colorMap [0,1] = @colorMax35, colorMap [0,0] = @colorMin35 elseif @colorchoice == "DeepSkyBlue" colorMap [0,1] = @colorMax36, colorMap [0,0] = @colorMin36 elseif @colorchoice == "DimGrey" colorMap [0,1] = @colorMax37, colorMap [0,0] = @colorMin37 elseif @colorchoice == "DodgerBlue" colorMap [0,1] = @colorMax38, colorMap [0,0] = @colorMin38 elseif @colorchoice == "FireBrick" colorMap [0,1] = @colorMax39, colorMap [0,0] = @colorMin39 elseif @colorchoice == "FloralWhite" colorMap [0,1] = @colorMax40, colorMap [0,0] = @colorMin40 elseif @colorchoice == "Chartreuse" colorMap [0,1] = @colorMax41, colorMap [0,0] = @colorMin41 elseif @colorchoice == "DarkSeaGreen" colorMap [0,1] = @colorMax42, colorMap [0,0] = @colorMin42 elseif @colorchoice == "ForestGreen" colorMap [0,1] = @colorMax43, colorMap [0,0] = @colorMin43 elseif @colorchoice == "Fuchia" colorMap [0,1] = @colorMax44, colorMap [0,0] = @colorMin44 elseif @colorchoice == "Gainsboro" colorMap [0,1] = @colorMax45, colorMap [0,0] = @colorMin45 elseif @colorchoice == "GhostWhite" colorMap [0,1] = @colorMax46, colorMap [0,0] = @colorMin46 elseif @colorchoice == "Gold" colorMap [0,1] = @colorMax47, colorMap [0,0] = @colorMin47 elseif @colorchoice == "Goldenrod" colorMap [0,1] = @colorMax48, colorMap [0,0] = @colorMin48 elseif @colorchoice == "Grey" colorMap [0,1] = @colorMax49, colorMap [0,0] = @colorMin49 elseif @colorchoice == "Green" colorMap [0,1] = @colorMax50, colorMap [0,0] = @colorMin50 elseif @colorchoice == "GreenYellow" colorMap [0,1] = @colorMax51, colorMap [0,0] = @colorMin51 elseif @colorchoice == "Honeydew" colorMap [0,1] = @colorMax52, colorMap [0,0] = @colorMin52 elseif @colorchoice == "HotPink" colorMap [0,1] = @colorMax53, colorMap [0,0] = @colorMin53 elseif @colorchoice == "IndianRed" colorMap [0,1] = @colorMax54, colorMap [0,0] = @colorMin54 elseif @colorchoice == "Indigo" colorMap [0,1] = @colorMax55, colorMap [0,0] = @colorMin55 elseif @colorchoice == "Ivory" colorMap [0,1] = @colorMax56, colorMap [0,0] = @colorMin56 elseif @colorchoice == "Khaki" colorMap [0,1] = @colorMax57, colorMap [0,0] = @colorMin57 elseif @colorchoice == "Lavender" colorMap [0,1] = @colorMax58, colorMap [0,0] = @colorMin58 elseif @colorchoice == "LavenderBlush" colorMap [0,1] = @colorMax59, colorMap [0,0] = @colorMin59 elseif @colorchoice == "LawnGreen" colorMap [0,1] = @colorMax60, colorMap [0,0] = @colorMin60 elseif @colorchoice == "LemonChiffon" colorMap [0,1] = @colorMax61, colorMap [0,0] = @colorMin61 elseif @colorchoice == "LightBlue" colorMap [0,1] = @colorMax62, colorMap [0,0] = @colorMin62 elseif @colorchoice == "LightCoral" colorMap [0,1] = @colorMax63, colorMap [0,0] = @colorMin63 elseif @colorchoice == "LightCyan" colorMap [0,1] = @colorMax64, colorMap [0,0] = @colorMin64 elseif @colorchoice == "LightGoldenrodYellow" colorMap [0,1] = @colorMax65, colorMap [0,0] = @colorMin65 elseif @colorchoice == "LightGreen" colorMap [0,1] = @colorMax66, colorMap [0,0] = @colorMin66 elseif @colorchoice == "LightGrey" colorMap [0,1] = @colorMax67, colorMap [0,0] = @colorMin67 elseif @colorchoice == "LightPink" colorMap [0,1] = @colorMax68, colorMap [0,0] = @colorMin68 elseif @colorchoice == "LightSalmon" colorMap [0,1] = @colorMax69, colorMap [0,0] = @colorMin69 elseif @colorchoice == "LightSeaGreen" colorMap [0,1] = @colorMax70, colorMap [0,0] = @colorMin70 elseif @colorchoice == "LightSkyBlue" colorMap [0,1] = @colorMax71, colorMap [0,0] = @colorMin71 elseif @colorchoice == "LightSlateGrey" colorMap [0,1] = @colorMax72, colorMap [0,0] = @colorMin72 elseif @colorchoice == "LightSteelBlue" colorMap [0,1] = @colorMax73, colorMap [0,0] = @colorMin73 elseif @colorchoice == "LightYellow" colorMap [0,1] = @colorMax74, colorMap [0,0] = @colorMin74 elseif @colorchoice == "Lime" colorMap [0,1] = @colorMax75, colorMap [0,0] = @colorMin75 elseif @colorchoice == "LimeGreen" colorMap [0,1] = @colorMax76, colorMap [0,0] = @colorMin76 elseif @colorchoice == "Linen" colorMap [0,1] = @colorMax77, colorMap [0,0] = @colorMin77 elseif @colorchoice == "Maroon" colorMap [0,1] = @colorMax78, colorMap [0,0] = @colorMin78 elseif @colorchoice == "MediumAquamarine" colorMap [0,1] = @colorMax79, colorMap [0,0] = @colorMin79 elseif @colorchoice == "MediumBlue" colorMap [0,1] = @colorMax80, colorMap [0,0] = @colorMin80 elseif @colorchoice == "MediumOrchid" colorMap [0,1] = @colorMax81, colorMap [0,0] = @colorMin81 elseif @colorchoice == "MediumPurple" colorMap [0,1] = @colorMax82, colorMap [0,0] = @colorMin82 elseif @colorchoice == "MediumSeaGreen" colorMap [0,1] = @colorMax83, colorMap [0,0] = @colorMin83 elseif @colorchoice == "MediumSlateBlue" colorMap [0,1] = @colorMax84, colorMap [0,0] = @colorMin84 elseif @colorchoice == "MediumSpringGreen" colorMap [0,1] = @colorMax85, colorMap [0,0] = @colorMin85 elseif @colorchoice == "MediumTurquoise" colorMap [0,1] = @colorMax86, colorMap [0,0] = @colorMin86 elseif @colorchoice == "MediumVioletRed" colorMap [0,1] = @colorMax87, colorMap [0,0] = @colorMin87 elseif @colorchoice == "MidnightBlue" colorMap [0,1] = @colorMax88, colorMap [0,0] = @colorMin88 elseif @colorchoice == "MintCream" colorMap [0,1] = @colorMax89, colorMap [0,0] = @colorMin89 elseif @colorchoice == "MistyRose" colorMap [0,1] = @colorMax90, colorMap [0,0] = @colorMin90 elseif @colorchoice == "Moccasin" colorMap [0,1] = @colorMax91, colorMap [0,0] = @colorMin91 elseif @colorchoice == "NavajoWhite" colorMap [0,1] = @colorMax92, colorMap [0,0] = @colorMin92 elseif @colorchoice == "OldLace" colorMap [0,1] = @colorMax93, colorMap [0,0] = @colorMin93 elseif @colorchoice == "Olive" colorMap [0,1] = @colorMax94, colorMap [0,0] = @colorMin94 elseif @colorchoice == "OliveDrab" colorMap [0,1] = @colorMax95, colorMap [0,0] = @colorMin95 elseif @colorchoice == "Orange" colorMap [0,1] = @colorMax96, colorMap [0,0] = @colorMin96 elseif @colorchoice == "OrangeRed" colorMap [0,1] = @colorMax97, colorMap [0,0] = @colorMin97 elseif @colorchoice == "Orchid" colorMap [0,1] = @colorMax98, colorMap [0,0] = @colorMin98 elseif @colorchoice == "PaleGoldenrod" colorMap [0,1] = @colorMax99, colorMap [0,0] = @colorMin99 elseif @colorchoice == "PaleGreen" colorMap [0,1] = @colorMax100, colorMap [0,0] = @colorMin100 elseif @colorchoice == "PaleTurquoise" colorMap [0,1] = @colorMax101, colorMap [0,0] = @colorMin101 elseif @colorchoice == "PaleVioletRed" colorMap [0,1] = @colorMax102, colorMap [0,0] = @colorMin102 elseif @colorchoice == "PapayaWhip" colorMap [0,1] = @colorMax103, colorMap [0,0] = @colorMin103 elseif @colorchoice == "PeachPuff" colorMap [0,1] = @colorMax104, colorMap [0,0] = @colorMin104 elseif @colorchoice == "Peru" colorMap [0,1] = @colorMax105, colorMap [0,0] = @colorMin105 elseif @colorchoice == "Pink" colorMap [0,1] = @colorMax106, colorMap [0,0] = @colorMin106 elseif @colorchoice == "Plum" colorMap [0,1] = @colorMax107, colorMap [0,0] = @colorMin107 elseif @colorchoice == "PowderBlue" colorMap [0,1] = @colorMax108, colorMap [0,0] = @colorMin108 elseif @colorchoice == "Purple" colorMap [0,1] = @colorMax109, colorMap [0,0] = @colorMin109 elseif @colorchoice == "Red" colorMap [0,1] = @colorMax110, colorMap [0,0] = @colorMin110 elseif @colorchoice == "RosyBrown" colorMap [0,1] = @colorMax111, colorMap [0,0] = @colorMin111 elseif @colorchoice == "RoyalBlue" colorMap [0,1] = @colorMax112, colorMap [0,0] = @colorMin112 elseif @colorchoice == "SaddleBrown" colorMap [0,1] = @colorMax113, colorMap [0,0] = @colorMin113 elseif @colorchoice == "Salmon" colorMap [0,1] = @colorMax114, colorMap [0,0] = @colorMin114 elseif @colorchoice == "SandyBrown" colorMap [0,1] = @colorMax115, colorMap [0,0] = @colorMin115 elseif @colorchoice == "SeaGreen" colorMap [0,1] = @colorMax116, colorMap [0,0] = @colorMin116 elseif @colorchoice == "SeaShell" colorMap [0,1] = @colorMax117, colorMap [0,0] = @colorMin117 elseif @colorchoice == "Sienna" colorMap [0,1] = @colorMax118, colorMap [0,0] = @colorMin118 elseif @colorchoice == "SkyBlue" colorMap [0,1] = @colorMax119, colorMap [0,0] = @colorMin119 elseif @colorchoice == "SlateBlue" colorMap [0,1] = @colorMax120, colorMap [0,0] = @colorMin120 elseif @colorchoice == "SlateGrey" colorMap [0,1] = @colorMax121, colorMap [0,0] = @colorMin121 elseif @colorchoice == "Snow" colorMap [0,1] = @colorMax122, colorMap [0,0] = @colorMin122 elseif @colorchoice == "SpringGreen" colorMap [0,1] = @colorMax123, colorMap [0,0] = @colorMin123 elseif @colorchoice == "SteelBlue" colorMap [0,1] = @colorMax124, colorMap [0,0] = @colorMin124 elseif @colorchoice == "Tan" colorMap [0,1] = @colorMax125, colorMap [0,0] = @colorMin125 elseif @colorchoice == "Teal" colorMap [0,1] = @colorMax126, colorMap [0,0] = @colorMin126 elseif @colorchoice == "Thistle" colorMap [0,1] = @colorMax127, colorMap [0,0] = @colorMin127 elseif @colorchoice == "Tomato" colorMap [0,1] = @colorMax128, colorMap [0,0] = @colorMin128 elseif @colorchoice == "Turquoise" colorMap [0,1] = @colorMax129, colorMap [0,0] = @colorMin129 elseif @colorchoice == "Violet" colorMap [0,1] = @colorMax130, colorMap [0,0] = @colorMin130 elseif @colorchoice == "Wheat" colorMap [0,1] = @colorMax131, colorMap [0,0] = @colorMin131 elseif @colorchoice == "White" colorMap [0,1] = @colorMax132, colorMap [0,0] = @colorMin132 elseif @colorchoice == "WhiteSmoke" colorMap [0,1] = @colorMax133, colorMap [0,0] = @colorMin133 elseif @colorchoice == "Yellow" colorMap [0,1] = @colorMax134, colorMap [0,0] = @colorMin134 elseif @colorchoice == "YellowGreen" colorMap [0,1] = @colorMax135, colorMap [0,0] = @colorMin135 endif elseif (@colorPreset == "Generate") ; Compute the color ranges using the gradient. color gradientColor = gradient(0.475) colorMap [0,1] = hsl(hue(gradientColor), sat(gradientColor), @luminanceUpper) colorMap [0,0] = hsl(hue(gradientColor), sat(gradientColor), @luminanceLower) endif init: float extent = 1.0 - @extent float hval = 0 ; highlight param for spheres float colorPos = 0 float colr = 0 float luminance = 0 float alpha1 = 0 float alpha2 = 0 color color1 = rgba(0,0,0,1) color color2 = rgba(0,0,0,1) color color3 = rgba(0,0,0,1) float ltfac = 0 loop: final: if imag(#z) == 1 colorPos = @scale*real(#z) colr = @scale*real(#z) elseif imag(#z) < 0 colorPos = @scale*real(#z)/2 colr = @scale*real(#z)/2 else colorPos = @scale*0.01*#numiter colr = @scale*0.01*#numiter endif if colorPos > 0.5 while colorPos > 0.5 colorPos = colorPos - 0.5 endwhile colorPos = colorPos/2 else colorPos = colorPos / 0.5 endif if @highlight_type == "none" hval = 0 elseif @highlight_type == "linear" if colorPos > extent hval = (5*@highlight*(colorPos-extent)/(1-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "log" if colorPos > extent hval = (5*@highlight*log(colorPos-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "exponential" if colorPos > extent hval = (5*@highlight*(exp(colorPos-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hval = 0 endif endif if imag(#z) == -2 ; apply shadow value if @colorpreset == "Gradient" color3 = gradient(colr) else color3 = blend(colorMap[0,0], blend(colorMap[0,1],@hcolor,0), \ colorPos^@cblend) endif luminance = lum(color3) luminance = luminance*(1-@shad) color3 = hsl(hue(color3),sat(color3),luminance) else if @colorpreset == "Gradient" color3 = gradient(colr) else color3 = blend(colorMap[0,0], blend(colorMap[0,1],@hcolor,hval^@hblend), \ colorPos^@cblend) endif endif if imag(#z) <= -4 ; floor ltfac = -4-imag(#z) if ltfac < 1 color1 = @floor1 luminance = lum(color1)*ltfac+@ambient alpha1 = alpha(color1) color1 = hsla(hue(color1),sat(color1),luminance,alpha1) color2 = hsla(hue(@ambcolor),sat(@ambcolor),@ambient,alpha1) #color = blend(color1,color2,0.5) elseif ltfac < 2 ltfac = ltfac-1 color1 = @floor2 alpha2 = alpha(color1) luminance = lum(color1)*ltfac+@ambient color1 = hsla(hue(color1),sat(color1),luminance,alpha2) color2 = hsla(hue(@ambcolor),sat(@ambcolor),@ambient,alpha2) #color = blend(color1,color2,0.5) elseif ltfac < 3 ltfac = ltfac-2 color1 = @floor1 alpha1 = alpha(color1) if alpha1 < 1 alpha1 = (1-alpha1)/2 + alpha1 endif luminance = lum(color1)*ltfac+@ambient color1 = hsla(hue(color1),sat(color1),luminance,alpha1) color2 = hsla(hue(@ambcolor),sat(@ambcolor),@ambient,alpha1) color3 = blend(color1,color2,0.5) luminance = lum(color3) luminance = luminance*(1-@shad) #color = hsla(hue(color3),sat(color3),luminance,alpha1) elseif ltfac < 4 ltfac = ltfac-3 color1 = @floor2 alpha2 = alpha(color1) if alpha2 < 1 alpha2 = (1-alpha2)/2 + alpha2 endif luminance = lum(color1)*ltfac+@ambient color1 = hsla(hue(color1),sat(color1),luminance,alpha2) color2 = hsla(hue(@ambcolor),sat(@ambcolor),@ambient,alpha2) color3 = blend(color1,color2,0.5) luminance = lum(color3) luminance = luminance*(1-@shad) #color = hsla(hue(color3),sat(color3),luminance,alpha2) endif else luminance = lum(color3) if luminance < @ambient color2 = hsl(hue(@ambcolor),sat(@ambcolor),@ambient) #color = blend(color3,color2,0.5) else #color = color3 endif endif if cabs(#z) == 0 #solid = true endif default: title = "3D Fractal Coloring Direct" render = false $ifdef VER40 heading text = "This formula is intended for use with 3D Fractal Raytrace." endheading $else heading Caption = "This formula is intended for use with 3D Fractal Raytrace." endheading $endif param version default = 1.20 visible = false hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." endparam heading caption = "Color Settings" endheading param colorPreset caption = "Color Options" enum = "Gradient" "Generate" "Preset" default = 2 hint = "Use 'Gradient' for colors from the gradient. \ Use 'Generate' to use the gradient to define the raytrace gradient." endparam float param luminanceUpper caption = "Lum. Upper Value" default = 0.6 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the upper value \ when generating the ranges from the gradient. This value \ is used with the brighter end of the color range." visible = (@colorPreset == "Generate") endparam float param luminanceLower caption = "Lum. Lower Value" default = 0.2 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the lower value \ when generating the ranges from the gradient. This value \ is used with the darker end of the color range." visible = (@colorPreset == "Generate") endparam param colorchoice caption = "Preset choices" enum = "AliceBlue" "AntiqueWhite" "Aquamarine" "Azure" "Beige" "Black" \ "BlanchedAlmond" "Blue" "BlueViolet" "Brown" "Burlywood" \ "CadetBlue" "Chartreuse" "Chocolate" "Coral" "CornflowerBlue" "Cornsilk" \ "Crimson" "Cyan" "DarkBlue" "DarkCyan" "DarkGoldenrod" \ "DarkGreen" "DarkKhaki" "DarkMagenta" "DarkOliveGreen" \ "DarkOrchid" "DarkRed" "DarkSalmon" "DarkSeaGreen" "DarkSlateBlue" \ "DarkSlateGrey" "DarkTurquoise" "DarkViolet" "DeepPink" "DeepSkyBlue" \ "DimGrey" "DodgerBlue" "FireBrick" "FloralWhite" "ForestGreen" \ "Fuchia" "Gainsboro" "GhostWhite" "Gold" "Goldenrod" "Grey" "Green" \ "GreenYellow" "Honeydew" "HotPink" "IndianRed" "Indigo" "Ivory" \ "Khaki" "Lavender" "LavenderBlush" "LawnGreen" "LemonChiffon" \ "LightBlue" "LightCoral" "LightCyan" "LightGoldenrodYellow" \ "LightGreen" "LightGrey" "LightPink" "LightSalmon" "LightSeaGreen" \ "LightSkyBlue" "LightSlateGrey" "LightSteelBlue" "LightYellow" "Lime" \ "LimeGreen" "Linen" "Magenta" "Maroon" "MediumAquamarine" "MediumBlue" \ "MediumOrchid" "MediumPurple" "MediumSeaGreen" "MediumSlateBlue" \ "MediumSpringGreen" "MediumTurquoise" "MediumVioletRed" "MidnightBlue" \ "MintCream" "MistyRose" "Moccasin" "NavajoWhite" "OldLace" "Olive" \ "OliveDrab" "Orange" "OrangeRed" "Orchid" "PaleGoldenrod" "PaleGreen" \ "PaleTurquoise" "PaleVioletRed" "PapayaWhip" "PeachPuff" "Peru" \ "Pink" "Plum" "PowderBlue" "Purple" "Red" "RosyBrown" "RoyalBlue" \ "SaddleBrown" "Salmon" "SandyBrown" "SeaGreen" "SeaShell" "Sienna" \ "Silver" "SkyBlue" "SlateBlue" "SlateGrey" "Snow" "SpringGreen" \ "SteelBlue" "Tan" "Teal" "Thistle" "Tomato" "Turquoise" "Violet" \ "Wheat" "White" "WhiteSmoke" "Yellow" "YellowGreen" default = 69 visible = @colorPreset == "Preset" endparam ;-------------------------------------------------------------------- ; Color Presets ;-------------------------------------------------------------------- heading caption = " Preset Color Settings" visible = (@colorPreset == "Preset") endheading color param colorMax1 caption = "Color Range 1 High" default = rgba(1,0,1,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Magenta" endparam color param colorMin1 caption = "Color Range 1 Low" default = rgba(100/255,0,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Magenta" endparam color param colorMax2 caption = "Color Range 1 High" default = rgba(138/255,43/255,226/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "BlueViolet" endparam color param colorMin2 caption = "Color Range 1 Low" default = rgba(52/255,13/255,87/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "BlueViolet" endparam color param colorMax3 caption = "Color Range 1 High" default = rgba(240/255,248/255,1,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "AliceBlue" endparam color param colorMin3 caption = "Color Range 1 Low" default = rgba(0,55/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "AliceBlue" endparam color param colorMax4 caption = "Color Range 1 High" default = rgba(250/255,235/255,215/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "AntiqueWhite" endparam color param colorMin4 caption = "Color Range 1 Low" default = rgba(88/255,56/255,12/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "AntiqueWhite" endparam color param colorMax5 caption = "Color Range 1 High" default = rgba(127/255,255/255,212/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Aquamarine" endparam color param colorMin5 caption = "Color Range 1 Low" default = rgba(0,100/255,66/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Aquamarine" endparam color param colorMax6 caption = "Color Range 1 High" default = rgba(240/255,255/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Azure" endparam color param colorMin6 caption = "Color Range 1 Low" default = rgba(0.0,100/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Azure" endparam color param colorMax7 caption = "Color Range 1 High" default = rgba(245/255,245/255,220/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Beige" endparam color param colorMin7 caption = "Color Range 1 Low" default = rgba(77/255,77/255,23/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Beige" endparam color param colorMax8 caption = "Color Range 1 High" default = rgba(0.1,0.1,0.1,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Black" endparam color param colorMin8 caption = "Color Range 1 Low" default = rgba(0.0,0.0,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Black" endparam color param colorMax9 caption = "Color Range 1 High" default = rgba(255/255,235/255,205/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "BlanchedAlmond" endparam color param colorMin9 caption = "Color Range 1 Low" default = rgba(100/255,60/255,0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "BlanchedAlmond" endparam color param colorMax10 caption = "Color Range 1 High" default = rgba(0,0,1.0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Blue" endparam color param colorMin10 caption = "Color Range 1 Low" default = rgba(0.0,0.0,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Blue" endparam color param colorMax11 caption = "Color Range 1 High" default = rgba(165/255,42/255,42/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Brown" endparam color param colorMin11 caption = "Color Range 1 Low" default = rgba(79/255,21/255,21/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Brown" endparam color param colorMax12 caption = "Color Range 1 High" default = rgba(222/255,184/255,135/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Burlywood" endparam color param colorMin12 caption = "Color Range 1 Low" default = rgba(78/255,53/255,22/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Burlywood" endparam color param colorMax13 caption = "Color Range 1 High" default = rgba(95/255,158/255,160/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "CadetBlue" endparam color param colorMin13 caption = "Color Range 1 Low" default = rgba(38/255,62/255,62/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "CadetBlue" endparam color param colorMax14 caption = "Color Range 1 High" default = rgba(210/255,105/255,30/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Chocolate" endparam color param colorMin14 caption = "Color Range 1 Low" default = rgba(87/255,43/255,13/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Chocolate" endparam color param colorMax15 caption = "Color Range 1 High" default = rgba(1,127/255,80/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Coral" endparam color param colorMin15 caption = "Color Range 1 Low" default = rgba(100/255,28/255,0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Coral" endparam color param colorMax16 caption = "Color Range 1 High" default = rgba(100/255,147/255,237/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "CornflowerBlue" endparam color param colorMin16 caption = "Color Range 1 Low" default = rgba(11/255,40/255,89/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "CornflowerBlue" endparam color param colorMax17 caption = "Color Range 1 High" default = rgba(1.0,248/255,220/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Cornsilk" endparam color param colorMin17 caption = "Color Range 1 Low" default = rgba(100/255,80/255,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Cornsilk" endparam color param colorMax18 caption = "Color Range 1 High" default = rgba(220/255,20/255,60/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Crimson" endparam color param colorMin18 caption = "Color Range 1 Low" default = rgba(91/255,9/255,26/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Crimson" endparam color param colorMax19 caption = "Color Range 1 High" default = rgba(0,1.0,1.0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Cyan" endparam color param colorMin19 caption = "Color Range 1 Low" default = rgba(0.0,100/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Cyan" endparam color param colorMax20 caption = "Color Range 1 High" default = rgba(0.0,0.0,139/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkBlue" endparam color param colorMin20 caption = "Color Range 1 Low" default = rgba(0.0,0.0,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkBlue" endparam color param colorMax21 caption = "Color Range 1 High" default = rgba(0.0,139/255,139/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkCyan" endparam color param colorMin21 caption = "Color Range 1 Low" default = rgba(0.0,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkCyan" endparam color param colorMax22 caption = "Color Range 1 High" default = rgba(184/255,134/255,11/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkGoldenrod" endparam color param colorMin22 caption = "Color Range 1 Low" default = rgba(47/255,34/255,3/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkGoldenrod" endparam color param colorMax23 caption = "Color Range 1 High" default = rgba(0.0,100/255,0.0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkGreen" endparam color param colorMin23 caption = "Color Range 1 Low" default = rgba(0.0,50/255,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkGreen" endparam color param colorMax24 caption = "Color Range 1 High" default = rgba(169/255,169/255,169/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Silver" endparam color param colorMin24 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Silver" endparam color param colorMax25 caption = "Color Range 1 High" default = rgba(189/255,183/255,107/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkKhaki" endparam color param colorMin25 caption = "Color Range 1 Low" default = rgba(69/255,66/255,31/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkKhaki" endparam color param colorMax26 caption = "Color Range 1 High" default = rgba(139/255,0.0,139/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkMagenta" endparam color param colorMin26 caption = "Color Range 1 Low" default = rgba(50/255,0.0,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkMagenta" endparam color param colorMax27 caption = "Color Range 1 High" default = rgba(85/255,107/255,47/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkOliveGreen" endparam color param colorMin27 caption = "Color Range 1 Low" default = rgba(28/255,34/255,16/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkOliveGreen" endparam color param colorMax28 caption = "Color Range 1 High" default = rgba(153/255,50/255,204/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkOrchid" endparam color param colorMin28 caption = "Color Range 1 Low" default = rgba(30/255,10/255,40/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkOrchid" endparam color param colorMax29 caption = "Color Range 1 High" default = rgba(255/255,20/255,147/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DeepPink" endparam color param colorMin29 caption = "Color Range 1 Low" default = rgba(100/255,0,55/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DeepPink" endparam color param colorMax30 caption = "Color Range 1 High" default = rgba(139/255,0.0,0.0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkRed" endparam color param colorMin30 caption = "Color Range 1 Low" default = rgba(50/255,0.0,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkRed" endparam color param colorMax31 caption = "Color Range 1 High" default = rgba(233/255,150/255,122/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkSalmon" endparam color param colorMin31 caption = "Color Range 1 Low" default = rgba(85/255,33/255,15/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkSalmon" endparam color param colorMax32 caption = "Color Range 1 High" default = rgba(71/255,61/255,139/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkSlateBlue" endparam color param colorMin32 caption = "Color Range 1 Low" default = rgba(18/255,16/255,34/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkSlateBlue" endparam color param colorMax33 caption = "Color Range 1 High" default = rgba(47/255,79/255,79/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkSlateGrey" endparam color param colorMin33 caption = "Color Range 1 Low" default = rgba(19/255,31/255,30/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkSlateGrey" endparam color param colorMax34 caption = "Color Range 1 High" default = rgba(0.0,206/255,209/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkTurquoise" endparam color param colorMin34 caption = "Color Range 1 Low" default = rgba(0.0,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkTurquoise" endparam color param colorMax35 caption = "Color Range 1 High" default = rgba(148/255,0.0,211/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkViolet" endparam color param colorMin35 caption = "Color Range 1 Low" default = rgba(35/255,0.0,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkViolet" endparam color param colorMax36 caption = "Color Range 1 High" default = rgba(0.0,191/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DeepSkyBlue" endparam color param colorMin36 caption = "Color Range 1 Low" default = rgba(0.0,75/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DeepSkyBlue" endparam color param colorMax37 caption = "Color Range 1 High" default = rgba(105/255,105/255,105/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DimGrey" endparam color param colorMin37 caption = "Color Range 1 Low" default = rgba(25/255,25/255,25/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DimGrey" endparam color param colorMax38 caption = "Color Range 1 High" default = rgba(30/255,144/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DodgerBlue" endparam color param colorMin38 caption = "Color Range 1 Low" default = rgba(0.0,52/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DodgerBlue" endparam color param colorMax39 caption = "Color Range 1 High" default = rgba(178/255,34/255,34/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "FireBrick" endparam color param colorMin39 caption = "Color Range 1 Low" default = rgba(41/255,9/255,9/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "FireBrick" endparam color param colorMax40 caption = "Color Range 1 High" default = rgba(255/255,250/255,240/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "FloralWhite" endparam color param colorMin40 caption = "Color Range 1 Low" default = rgba(100/255,70/255,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "FloralWhite" endparam color param colorMax41 caption = "Color Range 1 High" default = rgba(127/255,255/255,0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Chartreuse" endparam color param colorMin41 caption = "Color Range 1 Low" default = rgba(50/255,100/255,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Chartreuse" endparam color param colorMax42 caption = "Color Range 1 High" default = rgba(143/255,188/255,143/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkSeaGreen" endparam color param colorMin42 caption = "Color Range 1 Low" default = rgba(38/255,62/255,38/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkSeaGreen" endparam color param colorMax43 caption = "Color Range 1 High" default = rgba(34/255,139/255,34/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "ForestGreen" endparam color param colorMin43 caption = "Color Range 1 Low" default = rgba(10/255,40/255,10/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "ForestGreen" endparam color param colorMax44 caption = "Color Range 1 High" default = rgba(255/255,0/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Fuchia" endparam color param colorMin44 caption = "Color Range 1 Low" default = rgba(100/255,0/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Fuchia" endparam color param colorMax45 caption = "Color Range 1 High" default = rgba(220/255,220/255,220/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Gainsboro" endparam color param colorMin45 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Gainsboro" endparam color param colorMax46 caption = "Color Range 1 High" default = rgba(248/255,248/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "GhostWhite" endparam color param colorMin46 caption = "Color Range 1 Low" default = rgba(0/255,0/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "GhostWhite" endparam color param colorMax47 caption = "Color Range 1 High" default = rgba(255/255,215/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Gold" endparam color param colorMin47 caption = "Color Range 1 Low" default = rgba(100/255,85/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Gold" endparam color param colorMax48 caption = "Color Range 1 High" default = rgba(218/255,165/255,32/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Goldenrod" endparam color param colorMin48 caption = "Color Range 1 Low" default = rgba(87/255,66/255,13/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Goldenrod" endparam color param colorMax49 caption = "Color Range 1 High" default = rgba(128/255,128/255,128/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Grey" endparam color param colorMin49 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Grey" endparam color param colorMax50 caption = "Color Range 1 High" default = rgba(0/255,128/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Green" endparam color param colorMin50 caption = "Color Range 1 Low" default = rgba(0/255,50/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Green" endparam color param colorMax51 caption = "Color Range 1 High" default = rgba(173/255,255/255,47/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "GreenYellow" endparam color param colorMin51 caption = "Color Range 1 Low" default = rgba(62/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "GreenYellow" endparam color param colorMax52 caption = "Color Range 1 High" default = rgba(240/255,255/255,240/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Honeydew" endparam color param colorMin52 caption = "Color Range 1 Low" default = rgba(0/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Honeydew" endparam color param colorMax53 caption = "Color Range 1 High" default = rgba(255/255,105/255,180/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "HotPink" endparam color param colorMin53 caption = "Color Range 1 Low" default = rgba(100/255,0/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "HotPink" endparam color param colorMax54 caption = "Color Range 1 High" default = rgba(205/255,92/255,92/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "IndianRed" endparam color param colorMin54 caption = "Color Range 1 Low" default = rgba(76/255,24/255,24/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "IndianRed" endparam color param colorMax55 caption = "Color Range 1 High" default = rgba(75/255,0/255,130/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Indigo" endparam color param colorMin55 caption = "Color Range 1 Low" default = rgba(29/255,0/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Indigo" endparam color param colorMax56 caption = "Color Range 1 High" default = rgba(255/255,255/255,240/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Ivory" endparam color param colorMin56 caption = "Color Range 1 Low" default = rgba(100/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Ivory" endparam color param colorMax57 caption = "Color Range 1 High" default = rgba(240/255,230/255,140/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Khaki" endparam color param colorMin57 caption = "Color Range 1 Low" default = rgba(88/255,80/255,12/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Khaki" endparam color param colorMax58 caption = "Color Range 1 High" default = rgba(230/255,230/255,250/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Lavender" endparam color param colorMin58 caption = "Color Range 1 Low" default = rgba(17/255,17/255,83/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Lavender" endparam color param colorMax59 caption = "Color Range 1 High" default = rgba(255/255,240/255,245/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LavenderBlush" endparam color param colorMin59 caption = "Color Range 1 Low" default = rgba(100/255,0/255,44/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LavenderBlush" endparam color param colorMax60 caption = "Color Range 1 High" default = rgba(124/255,252/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LawnGreen" endparam color param colorMin60 caption = "Color Range 1 Low" default = rgba(50/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LawnGreen" endparam color param colorMax61 caption = "Color Range 1 High" default = rgba(255/255,250/255,205/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LemonChiffon" endparam color param colorMin61 caption = "Color Range 1 Low" default = rgba(100/255,90/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LemonChiffon" endparam color param colorMax62 caption = "Color Range 1 High" default = rgba(173/255,216/255,230/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightBlue" endparam color param colorMin62 caption = "Color Range 1 Low" default = rgba(24/255,64/255,76/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightBlue" endparam color param colorMax63 caption = "Color Range 1 High" default = rgba(240/255,128/255,128/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightCoral" endparam color param colorMin63 caption = "Color Range 1 Low" default = rgba(89/255,11/255,11/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightCoral" endparam color param colorMax64 caption = "Color Range 1 High" default = rgba(224/255,255/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightCyan" endparam color param colorMin64 caption = "Color Range 1 Low" default = rgba(0/255,100/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightCyan" endparam color param colorMax65 caption = "Color Range 1 High" default = rgba(250/255,250/255,210/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightGoldenrodYellow" endparam color param colorMin65 caption = "Color Range 1 Low" default = rgba(90/255,90/255,10/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightGoldenrodYellow" endparam color param colorMax66 caption = "Color Range 1 High" default = rgba(144/255,238/255,144/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightGreen" endparam color param colorMin66 caption = "Color Range 1 Low" default = rgba(14/255,86/255,14/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightGreen" endparam color param colorMax67 caption = "Color Range 1 High" default = rgba(211/255,211/255,211/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightGrey" endparam color param colorMin67 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightGrey" endparam color param colorMax68 caption = "Color Range 1 High" default = rgba(255/255,182/255,193/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightPink" endparam color param colorMin68 caption = "Color Range 1 Low" default = rgba(100/255,0/255,17/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightPink" endparam color param colorMax69 caption = "Color Range 1 High" default = rgba(255/255,160/255,122/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSalmon" endparam color param colorMin69 caption = "Color Range 1 Low" default = rgba(100/255,30/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSalmon" endparam color param colorMax70 caption = "Color Range 1 High" default = rgba(32/255,178/255,170/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSeaGreen" endparam color param colorMin70 caption = "Color Range 1 Low" default = rgba(16/255,84/255,80/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSeaGreen" endparam color param colorMax71 caption = "Color Range 1 High" default = rgba(135/255,206/255,250/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSkyBlue" endparam color param colorMin71 caption = "Color Range 1 Low" default = rgba(5/255,62/255,95/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSkyBlue" endparam color param colorMax72 caption = "Color Range 1 High" default = rgba(119/255,136/255,153/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSlateGrey" endparam color param colorMin72 caption = "Color Range 1 Low" default = rgba(43/255,50/255,57/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSlateGrey" endparam color param colorMax73 caption = "Color Range 1 High" default = rgba(175/255,196/255,222/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSteelBlue" endparam color param colorMin73 caption = "Color Range 1 Low" default = rgba(30/255,48/255,70/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSteelBlue" endparam color param colorMax74 caption = "Color Range 1 High" default = rgba(255/255,255/255,224/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightYellow" endparam color param colorMin74 caption = "Color Range 1 Low" default = rgba(100/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightYellow" endparam color param colorMax75 caption = "Color Range 1 High" default = rgba(0/255,255/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Lime" endparam color param colorMin75 caption = "Color Range 1 Low" default = rgba(0/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Lime" endparam color param colorMax76 caption = "Color Range 1 High" default = rgba(50/255,205/255,50/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LimeGreen" endparam color param colorMin76 caption = "Color Range 1 Low" default = rgba(20/255,80/255,20/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LimeGreen" endparam color param colorMax77 caption = "Color Range 1 High" default = rgba(250/255,240/255,230/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Linen" endparam color param colorMin77 caption = "Color Range 1 Low" default = rgba(83/255,50/255,17/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Linen" endparam color param colorMax78 caption = "Color Range 1 High" default = rgba(128/255,0/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Maroon" endparam color param colorMin78 caption = "Color Range 1 Low" default = rgba(50/255,0/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Maroon" endparam color param colorMax79 caption = "Color Range 1 High" default = rgba(102/255,205/255,170/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumAquamarine" endparam color param colorMin79 caption = "Color Range 1 Low" default = rgba(25/255,75/255,58/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumAquamarine" endparam color param colorMax80 caption = "Color Range 1 High" default = rgba(0/255,0/255,205/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumBlue" endparam color param colorMin80 caption = "Color Range 1 Low" default = rgba(0/255,0/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumBlue" endparam color param colorMax81 caption = "Color Range 1 High" default = rgba(186/255,85/255,211/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumOrchid" endparam color param colorMin81 caption = "Color Range 1 Low" default = rgba(68/255,21/255,79/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumOrchid" endparam color param colorMax82 caption = "Color Range 1 High" default = rgba(147/255,112/255,219/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumPurple" endparam color param colorMin82 caption = "Color Range 1 Low" default = rgba(40/255,21/255,79/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumPurple" endparam color param colorMax83 caption = "Color Range 1 High" default = rgba(60/255,179/255,113/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumSeaGreen" endparam color param colorMin83 caption = "Color Range 1 Low" default = rgba(26/255,74/255,47/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumSeaGreen" endparam color param colorMax84 caption = "Color Range 1 High" default = rgba(123/255,104/255,238/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumSlateBlue" endparam color param colorMin84 caption = "Color Range 1 Low" default = rgba(22/255,11/255,89/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumSlateBlue" endparam color param colorMax85 caption = "Color Range 1 High" default = rgba(0/255,250/255,154/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumSpringGreen" endparam color param colorMin85 caption = "Color Range 1 Low" default = rgba(0/255,100/255,61/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumSpringGreen" endparam color param colorMax86 caption = "Color Range 1 High" default = rgba(72/255,209/255,204/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumTurquoise" endparam color param colorMin86 caption = "Color Range 1 Low" default = rgba(21/255,79/255,77/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumTurquoise" endparam color param colorMax87 caption = "Color Range 1 High" default = rgba(199/255,21/255,133/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumVioletRed" endparam color param colorMin87 caption = "Color Range 1 Low" default = rgba(90/255,10/255,61/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumVioletRed" endparam color param colorMax88 caption = "Color Range 1 High" default = rgba(25/255,25/255,112/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MidnightBlue" endparam color param colorMin88 caption = "Color Range 1 Low" default = rgba(10/255,10/255,40/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MidnightBlue" endparam color param colorMax89 caption = "Color Range 1 High" default = rgba(245/255,255/255,250/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MintCream" endparam color param colorMin89 caption = "Color Range 1 Low" default = rgba(0/255,100/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MintCream" endparam color param colorMax90 caption = "Color Range 1 High" default = rgba(255/255,228/255,225/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MistyRose" endparam color param colorMin90 caption = "Color Range 1 Low" default = rgba(100/255,10/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MistyRose" endparam color param colorMax91 caption = "Color Range 1 High" default = rgba(255/255,228/255,181/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Moccasin" endparam color param colorMin91 caption = "Color Range 1 Low" default = rgba(100/255,65/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Moccasin" endparam color param colorMax92 caption = "Color Range 1 High" default = rgba(255/255,222/255,173/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "NavajoWhite" endparam color param colorMin92 caption = "Color Range 1 Low" default = rgba(100/255,60/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "NavajoWhite" endparam color param colorMax93 caption = "Color Range 1 High" default = rgba(253/255,245/255,230/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "OldLace" endparam color param colorMin93 caption = "Color Range 1 Low" default = rgba(92/255,64/255,8/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "OldLace" endparam color param colorMax94 caption = "Color Range 1 High" default = rgba(128/255,128/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Olive" endparam color param colorMin94 caption = "Color Range 1 Low" default = rgba(50/255,50/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Olive" endparam color param colorMax95 caption = "Color Range 1 High" default = rgba(107/255,142/255,35/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "OliveDrab" endparam color param colorMin95 caption = "Color Range 1 Low" default = rgba(31/255,40/255,10/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "OliveDrab" endparam color param colorMax96 caption = "Color Range 1 High" default = rgba(255/255,165/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Orange" endparam color param colorMin96 caption = "Color Range 1 Low" default = rgba(100/255,65/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Orange" endparam color param colorMax97 caption = "Color Range 1 High" default = rgba(255/255,69/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "OrangeRed" endparam color param colorMin97 caption = "Color Range 1 Low" default = rgba(100/255,28/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "OrangeRed" endparam color param colorMax98 caption = "Color Range 1 High" default = rgba(218/255,112/255,214/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Orchid" endparam color param colorMin98 caption = "Color Range 1 Low" default = rgba(79/255,21/255,78/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Orchid" endparam color param colorMax99 caption = "Color Range 1 High" default = rgba(238/255,232/255,170/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PaleGoldenrod" endparam color param colorMin99 caption = "Color Range 1 Low" default = rgba(81/255,74/255,19/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PaleGoldenrod" endparam color param colorMax100 caption = "Color Range 1 High" default = rgba(152/255,251/255,152/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PaleGreen" endparam color param colorMin100 caption = "Color Range 1 Low" default = rgba(4/255,96/255,4/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PaleGreen" endparam color param colorMax101 caption = "Color Range 1 High" default = rgba(175/255,238/255,238/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PaleTurquoise" endparam color param colorMin101 caption = "Color Range 1 Low" default = rgba(18/255,82/255,82/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PaleTurquoise" endparam color param colorMax102 caption = "Color Range 1 High" default = rgba(219/255,112/255,147/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PaleVioletRed" endparam color param colorMin102 caption = "Color Range 1 Low" default = rgba(79/255,21/255,41/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PaleVioletRed" endparam color param colorMax103 caption = "Color Range 1 High" default = rgba(255/255,239/255,213/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PapayaWhip" endparam color param colorMin103 caption = "Color Range 1 Low" default = rgba(100/255,63/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PapayaWhip" endparam color param colorMax104 caption = "Color Range 1 High" default = rgba(255/255,218/255,185/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PeachPuff" endparam color param colorMin104 caption = "Color Range 1 Low" default = rgba(100/255,48/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PeachPuff" endparam color param colorMax105 caption = "Color Range 1 High" default = rgba(205/255,133/255,63/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Peru" endparam color param colorMin105 caption = "Color Range 1 Low" default = rgba(79/255,50/255,21/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Peru" endparam color param colorMax106 caption = "Color Range 1 High" default = rgba(255/255,192/255,203/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Pink" endparam color param colorMin106 caption = "Color Range 1 Low" default = rgba(100/255,0/255,19/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Pink" endparam color param colorMax107 caption = "Color Range 1 High" default = rgba(221/255,160/255,221/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Plum" endparam color param colorMin107 caption = "Color Range 1 Low" default = rgba(73/255,27/255,73/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Plum" endparam color param colorMax108 caption = "Color Range 1 High" default = rgba(176/255,224/255,230/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PowderBlue" endparam color param colorMin108 caption = "Color Range 1 Low" default = rgba(25/255,70/255,75/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PowderBlue" endparam color param colorMax109 caption = "Color Range 1 High" default = rgba(128/255,0/255,128/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Purple" endparam color param colorMin109 caption = "Color Range 1 Low" default = rgba(50/255,0/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Purple" endparam color param colorMax110 caption = "Color Range 1 High" default = rgba(255/255,0/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Red" endparam color param colorMin110 caption = "Color Range 1 Low" default = rgba(100/255,0/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Red" endparam color param colorMax111 caption = "Color Range 1 High" default = rgba(188/255,143/255,143/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "RosyBrown" endparam color param colorMin111 caption = "Color Range 1 Low" default = rgba(62/255,38/255,38/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "RosyBrown" endparam color param colorMax112 caption = "Color Range 1 High" default = rgba(65/255,105/255,225/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "RoyalBlue" endparam color param colorMin112 caption = "Color Range 1 Low" default = rgba(14/255,32/255,86/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "RoyalBlue" endparam color param colorMax113 caption = "Color Range 1 High" default = rgba(139/255,69/255,19/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SaddleBrown" endparam color param colorMin113 caption = "Color Range 1 Low" default = rgba(43/255,22/255,7/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SaddleBrown" endparam color param colorMax114 caption = "Color Range 1 High" default = rgba(250/255,128/255,114/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Salmon" endparam color param colorMin114 caption = "Color Range 1 Low" default = rgba(96/255,14/255,4/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Salmon" endparam color param colorMax115 caption = "Color Range 1 High" default = rgba(244/255,164/255,96/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SandyBrown" endparam color param colorMin115 caption = "Color Range 1 Low" default = rgba(93/255,47/255,7/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SandyBrown" endparam color param colorMax116 caption = "Color Range 1 High" default = rgba(46/255,139/255,87/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SeaGreen" endparam color param colorMin116 caption = "Color Range 1 Low" default = rgba(13/255,37/255,23/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SeaGreen" endparam color param colorMax117 caption = "Color Range 1 High" default = rgba(255/255,245/255,238/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SeaShell" endparam color param colorMin117 caption = "Color Range 1 Low" default = rgba(100/255,41/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SeaShell" endparam color param colorMax118 caption = "Color Range 1 High" default = rgba(160/255,82/255,45/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Sienna" endparam color param colorMin118 caption = "Color Range 1 Low" default = rgba(39/255,20/255,11/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Sienna" endparam color param colorMax119 caption = "Color Range 1 High" default = rgba(135/255,206/255,235/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SkyBlue" endparam color param colorMin119 caption = "Color Range 1 Low" default = rgba(15/255,66/255,85/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SkyBlue" endparam color param colorMax120 caption = "Color Range 1 High" default = rgba(106/255,90/255,205/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SlateBlue" endparam color param colorMin120 caption = "Color Range 1 Low" default = rgba(21/255,34/255,76/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SlateBlue" endparam color param colorMax121 caption = "Color Range 1 High" default = rgba(112/255,128/255,144/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SlateGrey" endparam color param colorMin121 caption = "Color Range 1 Low" default = rgba(44/255,50/255,56/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SlateGrey" endparam color param colorMax122 caption = "Color Range 1 High" default = rgba(255/255,250/255,250/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Snow" endparam color param colorMin122 caption = "Color Range 1 Low" default = rgba(100/255,0/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Snow" endparam color param colorMax123 caption = "Color Range 1 High" default = rgba(0/255,255/255,127/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SpringGreen" endparam color param colorMin123 caption = "Color Range 1 Low" default = rgba(0/255,100/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SpringGreen" endparam color param colorMax124 caption = "Color Range 1 High" default = rgba(70/255,130/255,180/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SteelBlue" endparam color param colorMin124 caption = "Color Range 1 Low" default = rgba(29/255,53/255,79/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SteelBlue" endparam color param colorMax125 caption = "Color Range 1 High" default = rgba(210/255,180/255,140/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Tan" endparam color param colorMin125 caption = "Color Range 1 Low" default = rgba(71/255,53/255,29/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Tan" endparam color param colorMax126 caption = "Color Range 1 High" default = rgba(0/255,128/255,128/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Teal" endparam color param colorMin126 caption = "Color Range 1 Low" default = rgba(0/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Teal" endparam color param colorMax127 caption = "Color Range 1 High" default = rgba(216/255,191/255,216/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Thistle" endparam color param colorMin127 caption = "Color Range 1 Low" default = rgba(61/255,39/255,61/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Thistle" endparam color param colorMax128 caption = "Color Range 1 High" default = rgba(255/255,99/255,71/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Tomato" endparam color param colorMin128 caption = "Color Range 1 Low" default = rgba(100/255,16/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Tomato" endparam color param colorMax129 caption = "Color Range 1 High" default = rgba(64/255,224/255,208/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Turquoise" endparam color param colorMin129 caption = "Color Range 1 Low" default = rgba(15/255,85/255,78/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Turquoise" endparam color param colorMax130 caption = "Color Range 1 High" default = rgba(238/255,130/255,238/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Violet" endparam color param colorMin130 caption = "Color Range 1 Low" default = rgba(87/255,13/255,87/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Violet" endparam color param colorMax131 caption = "Color Range 1 High" default = rgba(245/255,223/255,179/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Wheat" endparam color param colorMin131 caption = "Color Range 1 Low" default = rgba(88/255,62/255,12/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Wheat" endparam color param colorMax132 caption = "Color Range 1 High" default = rgba(255/255,255/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "White" endparam color param colorMin132 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "White" endparam color param colorMax133 caption = "Color Range 1 High" default = rgba(245/255,245/255,245/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "WhiteSmoke" endparam color param colorMin133 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "WhiteSmoke" endparam color param colorMax134 caption = "Color Range 1 High" default = rgba(255/255,255/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Yellow" endparam color param colorMin134 caption = "Color Range 1 Low" default = rgba(100/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Yellow" endparam color param colorMax135 caption = "Color Range 1 High" default = rgba(154/255,205/255,50/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "YellowGreen" endparam color param colorMin135 caption = "Color Range 1 Low" default = rgba(61/255,80/255,20/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "YellowGreen" endparam heading caption = "Color Parameters" visible = @colorPreset != "Gradient" endheading color param hcolor caption = "Highlight color" default = rgba(255/255,255/255,255/255,1) visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param highlight_type caption = "Color Highlight Type" default = 1 enum = "none" "linear" "log" "exponential" hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param extent caption = "Highlight Extent" default = 0.05 min = 0.0 max = 0.5 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param hblend caption = "Highlight power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param scale caption = "color scale adj" default = 1.0 endparam float param cblend caption = "color blend power" default = 1.0 visible = @colorPreset != "Gradient" endparam float param ambient caption = "Ambient light" default = 0.05 endparam color param ambcolor caption = "Ambient color" default = rgba(192/255,192/255,192/255,1) endparam heading caption = "Shadows" endheading $ifdef VER40 heading text = "'Add Shadows' must be selected in the ufm for this option to do \ anything." endheading $endif float param shad caption = "Shadow level" default = 0.4 min = 0.0 max = 1.0 endparam heading caption = "Floor coloring" endheading $ifdef VER40 heading text = "'Add floor' must be selected in the ufm for this option to do \ anything." endheading $endif color param floor1 caption = "Floor color #1" default = rgba(64/255,64/255,64/255,1) endparam color param floor2 caption = "Floor color #2" default = rgba(200/255,200/255,200/255,1) endparam } AttractorTraps {; Ron Barnett, August 2006 ; based upon approaches of Mark Townsend and Damien Jones ; Added trap and distance modulations, fixed trapvar bug Septermber 2006 ; Added Toby Marshall's Morph parameters and Decimal texturing, ; PopGnarl texturing and Geometrix texturing. September 2006 ; more merge options added September 2006 ; 3D attractors added November 2006 global: float qd[101,13] float s3[51,31] float so[51,31] ; Sprott attractor data qd[0,1]=1,qd[0,2]=-1.1,qd[0,3]=-0.2,qd[0,4]=-0.1,qd[0,5]=-0.4,qd[0,6]=0.1,qd[0,7]=-0.3,qd[0,8]=0.8,qd[0,9]=-0.1,qd[0,10]=0.3,qd[0,11]=-1,qd[0,12]=-0.9 qd[1,1]=0.9,qd[1,2]=-0.1,qd[1,3]=0.2,qd[1,4]=0.5,qd[1,5]=-0.6,qd[1,6]=-1.0,qd[1,7]=-0.9,qd[1,8]=-0.8,qd[1,9]=1.0,qd[1,10]=-0.2,qd[1,11]=0.4,qd[1,12]=-0.2 qd[2,1]=-0.8,qd[2,2]=1.1,qd[2,3]=0.5,qd[2,4]=1.1,qd[2,5]=1.1,qd[2,6]=1.1,qd[2,7]=-0.6,qd[2,8]=-0.1,qd[2,9]=-0.6,qd[2,10]=-0.1,qd[2,11]=0.2,qd[2,12]=0.5 qd[3,1]=-0.8,qd[3,2]=-0.7,qd[3,3]=0.4,qd[3,4]=0.8,qd[3,5]=0.4,qd[3,6]=1.1,qd[3,7]=0.9,qd[3,8]=0.9,qd[3,9]=0.4,qd[3,10]=0.6,qd[3,11]=0.9,qd[3,12]=0.1 qd[4,1]=0.9,qd[4,2]=0.5,qd[4,3]=-1.2,qd[4,4]=0.0,qd[4,5]=-0.3,qd[4,6]=0.0,qd[4,7]=0.2,qd[4,8]=0.4,qd[4,9]=0.9,qd[4,10]=-0.1,qd[4,11]=-1.1,qd[4,12]=-0.1 qd[5,1]=0.6,qd[5,2]=-0.1,qd[5,3]=-0.5,qd[5,4]=-1.2,qd[5,5]=-0.3,qd[5,6]=-0.6,qd[5,7]=0.8,qd[5,8]=0.4,qd[5,9]=-0.1,qd[5,10]=1.0,qd[5,11]=-0.8,qd[5,12]=-1.0 qd[6,1]=-0.8,qd[6,2]=0.5,qd[6,3]=0.5,qd[6,4]=-0.7,qd[6,5]=-0.9,qd[6,6]=1.0,qd[6,7]=-0.1,qd[6,8]=-0.4,qd[6,9]=1.1,qd[6,10]=-0.4,qd[6,11]=0.0,qd[6,12]=-0.3 qd[7,1]=-0.6,qd[7,2]=0.8,qd[7,3]=0.4,qd[7,4]=-0.8,qd[7,5]=-1.0,qd[7,6]=-1.1,qd[7,7]=-0.8,qd[7,8]=1.0,qd[7,9]=0.3,qd[7,10]=1.0,qd[7,11]=0.8,qd[7,12]=0.4 qd[8,1]=-0.9,qd[8,2]=-0.4,qd[8,3]=-1.1,qd[8,4]=-0.4,qd[8,5]=0.8,qd[8,6]=0.9,qd[8,7]=0.9,qd[8,8]=-0.2,qd[8,9]=-1.1,qd[8,10]=-0.7,qd[8,11]=-0.2,qd[8,12]=0.1 qd[9,1]=-0.2,qd[9,2]=0.8,qd[9,3]=-0.4,qd[9,4]=-0.3,qd[9,5]=-0.8,qd[9,6]=1.0,qd[9,7]=0.5,qd[9,8]=-0.9,qd[9,9]=0.9,qd[9,10]=-0.6,qd[9,11]=0.4,qd[9,12]=-0.3 qd[10,1]=0.7,qd[10,2]=-0.3,qd[10,3]=-1.1,qd[10,4]=0.5,qd[10,5]=0.3,qd[10,6]=-0.7,qd[10,7]=0.0,qd[10,8]=0.9,qd[10,9]=-0.4,qd[10,10]=0.3,qd[10,11]=0.7,qd[10,12]=0.2 qd[11,1]=1.1,qd[11,2]=-0.4,qd[11,3]=-0.1,qd[11,4]=-1.1,qd[11,5]=-0.8,qd[11,6]=-0.9,qd[11,7]=-0.7,qd[11,8]=-0.7,qd[11,9]=0.7,qd[11,10]=0.4,qd[11,11]=0.0,qd[11,12]=-0.1 qd[12,1]=-1.2,qd[12,2]=-0.1,qd[12,3]=-0.5,qd[12,4]=0.6,qd[12,5]=-1.0,qd[12,6]=-0.3,qd[12,7]=-0.6,qd[12,8]=-0.2,qd[12,9]=-0.8,qd[12,10]=-0.7,qd[12,11]=-0.4,qd[12,12]=0.1 qd[13,1]=0.2,qd[13,2]=1.0,qd[13,3]=-0.3,qd[13,4]=0.9,qd[13,5]=0.6,qd[13,6]=-0.5,qd[13,7]=0.6,qd[13,8]=1.0,qd[13,9]=-1.0,qd[13,10]=-0.1,qd[13,11]=-1.2,qd[13,12]=0.8 qd[14,1]=-0.6,qd[14,2]=-0.5,qd[14,3]=0.7,qd[14,4]=0.4,qd[14,5]=-0.7,qd[14,6]=-0.1,qd[14,7]=0.7,qd[14,8]=0.4,qd[14,9]=-0.7,qd[14,10]=1.0,qd[14,11]=0.1,qd[14,12]=-0.1 qd[15,1]=0.6,qd[15,2]=-0.3,qd[15,3]=-0.1,qd[15,4]=-1.1,qd[15,5]=-1.1,qd[15,6]=0.5,qd[15,7]=-0.1,qd[15,8]=0.1,qd[15,9]=0.7,qd[15,10]=0.9,qd[15,11]=-0.8,qd[15,12]=1.0 qd[16,1]=-0.4,qd[16,2]=-1.0,qd[16,3]=-0.7,qd[16,4]=-0.7,qd[16,5]=-1.1,qd[16,6]=-0.1,qd[16,7]=1.2,qd[16,8]=-0.5,qd[16,9]=-0.7,qd[16,10]=0.3,qd[16,11]=0.5,qd[16,12]=-0.6 qd[17,1]=-0.7,qd[17,2]=0.7,qd[17,3]=1.0,qd[17,4]=-0.5,qd[17,5]=0.7,qd[17,6]=0.3,qd[17,7]=0.8,qd[17,8]=-0.9,qd[17,9]=-0.8,qd[17,10]=-1.0,qd[17,11]=-0.6,qd[17,12]=-1.1 qd[18,1]=0.8,qd[18,2]=0.3,qd[18,3]=0.0,qd[18,4]=0.2,qd[18,5]=0.3,qd[18,6]=-0.8,qd[18,7]=-0.4,qd[18,8]=-1.2,qd[18,9]=-0.9,qd[18,10]=-1.1,qd[18,11]=-0.2,qd[18,12]=0.2 qd[19,1]=0.3,qd[19,2]=1.0,qd[19,3]=-0.4,qd[19,4]=0.9,qd[19,5]=0.3,qd[19,6]=-0.5,qd[19,7]=0.0,qd[19,8]=-1.0,qd[19,9]=-1.2,qd[19,10]=0.1,qd[19,11]=-0.9,qd[19,12]=0.0 qd[20,1]=1.2,qd[20,2]=-0.2,qd[20,3]=-0.9,qd[20,4]=1.1,qd[20,5]=0.5,qd[20,6]=-0.5,qd[20,7]=0.3,qd[20,8]=-0.5,qd[20,9]=-1.2,qd[20,10]=0.6,qd[20,11]=-0.1,qd[20,12]=-0.4 qd[21,1]=0.2,qd[21,2]=0.3,qd[21,3]=0.4,qd[21,4]=-0.1,qd[21,5]=1.2,qd[21,6]=-0.5,qd[21,7]=-0.4,qd[21,8]=-1.1,qd[21,9]=0.5,qd[21,10]=-1.2,qd[21,11]=1.2,qd[21,12]=0.3 qd[22,1]=1.1,qd[22,2]=0.4,qd[22,3]=-0.3,qd[22,4]=-0.2,qd[22,5]=0.4,qd[22,6]=-1.0,qd[22,7]=0.6,qd[22,8]=-0.4,qd[22,9]=-0.5,qd[22,10]=1.2,qd[22,11]=-0.9,qd[22,12]=1.0 qd[23,1]=-1.1,qd[23,2]=0.9,qd[23,3]=1.1,qd[23,4]=0.4,qd[23,5]=-1.2,qd[23,6]=1.0,qd[23,7]=0.3,qd[23,8]=0.3,qd[23,9]=0.3,qd[23,10]=-0.7,qd[23,11]=0.6,qd[23,12]=-0.9 qd[24,1]=-0.1,qd[24,2]=-0.4,qd[24,3]=-0.8,qd[24,4]=-0.8,qd[24,5]=0.9,qd[24,6]=-0.2,qd[24,7]=0.9,qd[24,8]=-0.2,qd[24,9]=-0.9,qd[24,10]=-0.9,qd[24,11]=-0.4,qd[24,12]=-1.2 qd[25,1]=-0.7,qd[25,2]=-0.2,qd[25,3]=-0.4,qd[25,4]=0.4,qd[25,5]=-0.9,qd[25,6]=0.9,qd[25,7]=0.3,qd[25,8]=-0.3,qd[25,9]=-1.1,qd[25,10]=-0.2,qd[25,11]=0.0,qd[25,12]=-0.4 qd[26,1]=-0.6,qd[26,2]=1.1,qd[26,3]=-0.2,qd[26,4]=0.7,qd[26,5]=-0.1,qd[26,6]=1.1,qd[26,7]=-1.2,qd[26,8]=0.0,qd[26,9]=1.1,qd[26,10]=0.3,qd[26,11]=0.7,qd[26,12]=0.8 qd[27,1]=0.1,qd[27,2]=-0.7,qd[27,3]=0.2,qd[27,4]=-0.2,qd[27,5]=0.1,qd[27,6]=1.2,qd[27,7]=-0.5,qd[27,8]=-0.9,qd[27,9]=0.5,qd[27,10]=0.4,qd[27,11]=-1.0,qd[27,12]=0.2 qd[28,1]=0.7,qd[28,2]=-0.6,qd[28,3]=-0.2,qd[28,4]=0.1,qd[28,5]=0.2,qd[28,6]=-0.2,qd[28,7]=-0.8,qd[28,8]=-0.7,qd[28,9]=0.6,qd[28,10]=1.2,qd[28,11]=0.4,qd[28,12]=1.2 qd[29,1]=-0.4,qd[29,2]=-0.1,qd[29,3]=-0.2,qd[29,4]=-0.4,qd[29,5]=-1.2,qd[29,6]=0.8,qd[29,7]=-0.7,qd[29,8]=-0.1,qd[29,9]=0.6,qd[29,10]=0.5,qd[29,11]=-0.9,qd[29,12]=0.7 qd[30,1]=-0.9,qd[30,2]=0.4,qd[30,3]=-0.6,qd[30,4]=-0.7,qd[30,5]=1.1,qd[30,6]=0.9,qd[30,7]=0.2,qd[30,8]=-1.0,qd[30,9]=0.3,qd[30,10]=1.1,qd[30,11]=0.3,qd[30,12]=0.0 qd[31,1]=-0.6,qd[31,2]=-0.4,qd[31,3]=1.1,qd[31,4]=-1.0,qd[31,5]=-0.6,qd[31,6]=1.2,qd[31,7]=0.4,qd[31,8]=0.3,qd[31,9]=-0.1,qd[31,10]=-0.8,qd[31,11]=0.9,qd[31,12]=0.1, qd[32,1]=0.2,qd[32,2]=-0.2,qd[32,3]=-0.3,qd[32,4]=-1.1,qd[32,5]=-0.3,qd[32,6]=-0.9,qd[32,7]=0.4,qd[32,8]=1.0,qd[32,9]=0.5,qd[32,10]=1.1,qd[32,11]=-0.7,qd[32,12]=-1.2 qd[33,1]=1.0,qd[33,2]=-0.8,qd[33,3]=-0.9,qd[33,4]=-0.3,qd[33,5]=-0.8,qd[33,6]=-0.1,qd[33,7]=0.3,qd[33,8]=-0.3,qd[33,9]=0.1,qd[33,10]=-0.1,qd[33,11]=0.1,qd[33,12]=-1.1 qd[34,1]=0.0,qd[34,2]=-0.9,qd[34,3]=0.0,qd[34,4]=-0.8,qd[34,5]=0.6,qd[34,6]=0.9,qd[34,7]=0.2,qd[34,8]=-0.9,qd[34,9]=-1.0,qd[34,10]=-1.2,qd[34,11]=-0.8,qd[34,12]=-1.2 qd[35,1]=0.2,qd[35,2]=0.4,qd[35,3]=-1.2,qd[35,4]=-0.6,qd[35,5]=-1.2,qd[35,6]=0.6,qd[35,7]=0.4,qd[35,8]=-1.1,qd[35,9]=1.2,qd[35,10]=-0.9,qd[35,11]=-0.4,qd[35,12]=-0.1 qd[36,1]=0.7,qd[36,2]=0.5,qd[36,3]=-1.2,qd[36,4]=-0.6,qd[36,5]=0.3,qd[36,6]=0.2,qd[36,7]=-1.2,qd[36,8]=-0.6,qd[36,9]=0.2,qd[36,10]=-0.7,qd[36,11]=-0.1,qd[36,12]=0.8 qd[37,1]=0.3,qd[37,2]=-0.3,qd[37,3]=-1.1,qd[37,4]=-1.0,qd[37,5]=0.5,qd[37,6]=-0.8,qd[37,7]=0.8,qd[37,8]=1.1,qd[37,9]=0.8,qd[37,10]=0.1,qd[37,11]=-0.9,qd[37,12]=0.1 qd[38,1]=-0.8,qd[38,2]=-1.1,qd[38,3]=-0.1,qd[38,4]=-0.5,qd[38,5]=-0.2,qd[38,6]=0.6,qd[38,7]=0.0,qd[38,8]=-0.8,qd[38,9]=-0.3,qd[38,10]=1.2,qd[38,11]=-1.0,qd[38,12]=1.1 qd[39,1]=0.5,qd[39,2]=0.3,qd[39,3]=-0.7,qd[39,4]=-0.2,qd[39,5]=-0.3,qd[39,6]=1.1,qd[39,7]=0.8,qd[39,8]=1.1,qd[39,9]=-1.0,qd[39,10]=-0.1,qd[39,11]=0.4,qd[39,12]=-0.6 qd[40,1]=-0.5,qd[40,2]=0.4,qd[40,3]=0.6,qd[40,4]=0.8,qd[40,5]=-0.3,qd[40,6]=-1.2,qd[40,7]=0.7,qd[40,8]=-0.5,qd[40,9]=-0.7,qd[40,10]=-1.0,qd[40,11]=0.1,qd[40,12]=-0.5 qd[41,1]=1.1,qd[41,2]=0.3,qd[41,3]=-1.2,qd[41,4]=1.0,qd[41,5]=0.7,qd[41,6]=-1.2,qd[41,7]=0.8,qd[41,8]=-0.7,qd[41,9]=0.1,qd[41,10]=-0.2,qd[41,11]=-1.0,qd[41,12]=1.0 qd[42,1]=-0.6,qd[42,2]=-0.2,qd[42,3]=1.0,qd[42,4]=0.9,qd[42,5]=-1.1,qd[42,6]=-0.6,qd[42,7]=0.3,qd[42,8]=0.7,qd[42,9]=-0.7,qd[42,10]=0.0,qd[42,11]=0.1,qd[42,12]=-0.6 qd[43,1]=0.6,qd[43,2]=-0.6,qd[43,3]=-0.5,qd[43,4]=0.2,qd[43,5]=-0.7,qd[43,6]=0.3,qd[43,7]=-0.5,qd[43,8]=0.8,qd[43,9]=-0.5,qd[43,10]=-1.1,qd[43,11]=-0.2,qd[43,12]=1.2 qd[44,1]=0.0,qd[44,2]=0.2,qd[44,3]=0.1,qd[44,4]=-0.9,qd[44,5]=-0.9,qd[44,6]=-1.2,qd[44,7]=-0.8,qd[44,8]=-1.0,qd[44,9]=0.4,qd[44,10]=0.1,qd[44,11]=0.6,qd[44,12]=0.4 qd[45,1]=-1.2,qd[45,2]=1.0,qd[45,3]=1.2,qd[45,4]=-0.8,qd[45,5]=-1.1,qd[45,6]=0.4,qd[45,7]=-0.2,qd[45,8]=0.6,qd[45,9]=-0.2,qd[45,10]=0.5,qd[45,11]=-1.0,qd[45,12]=-0.2 qd[46,1]=-0.2,qd[46,2]=-1.1,qd[46,3]=-0.5,qd[46,4]=0.1,qd[46,5]=0.9,qd[46,6]=0.3,qd[46,7]=0.5,qd[46,8]=-0.6,qd[46,9]=-1.0,qd[46,10]=0.8,qd[46,11]=-0.7,qd[46,12]=-0.7 qd[47,1]=-0.3,qd[47,2]=-0.3,qd[47,3]=0.7,qd[47,4]=-0.9,qd[47,5]=1.0,qd[47,6]=0.8,qd[47,7]=-0.7,qd[47,8]=-0.9,qd[47,9]=0.5,qd[47,10]=0.8,qd[47,11]=0.1,qd[47,12]=0.2 qd[48,1]=-0.8,qd[48,2]=-0.8,qd[48,3]=1.2,qd[48,4]=0.7,qd[48,5]=-0.7,qd[48,6]=0.1,qd[48,7]=1.0,qd[48,8]=-0.8,qd[48,9]=-0.6,qd[48,10]=0.5,qd[48,11]=1.0,qd[48,12]=-0.5 qd[49,1]=-0.3,qd[49,2]=-0.9,qd[49,3]=0.6,qd[49,4]=-0.2,qd[49,5]=-0.1,qd[49,6]=0.4,qd[49,7]=0.5,qd[49,8]=-1.1,qd[49,9]=1.0,qd[49,10]=-1.2,qd[49,11]=0.0,qd[49,12]=-1.0 qd[50,1]=-0.9,qd[50,2]=-0.2,qd[50,3]=1.1,qd[50,4]=0.5,qd[50,5]=0.5,qd[50,6]=-0.8,qd[50,7]=0.3,qd[50,8]=0.2,qd[50,9]=0.0,qd[50,10]=0.3,qd[50,11]=-0.6,qd[50,12]=-1.1 qd[51,1]=-1.1,qd[51,2]=0.0,qd[51,3]=1.0,qd[51,4]=0.0,qd[51,5]=0.4,qd[51,6]=0.1,qd[51,7]=-0.3,qd[51,8]=-0.7,qd[51,9]=-0.6,qd[51,10]=0.7,qd[51,11]=-0.8,qd[51,12]=0.9 qd[52,1]=0.0,qd[52,2]=-0.5,qd[52,3]=-0.2,qd[52,4]=-1.0,qd[52,5]=-1.2,qd[52,6]=-1.0,qd[52,7]=0.7,qd[52,8]=-0.3,qd[52,9]=-0.8,qd[52,10]=0.4,qd[52,11]=0.0,qd[52,12]=-0.5 qd[53,1]=-0.1,qd[53,2]=0.5,qd[53,3]=-0.1,qd[53,4]=-1.0,qd[53,5]=-0.6,qd[53,6]=-0.5,qd[53,7]=-0.6,qd[53,8]=-0.4,qd[53,9]=0.4,qd[53,10]=-0.8,qd[53,11]=-1.2,qd[53,12]=0.5 qd[54,1]=0.1,qd[54,2]=-0.8,qd[54,3]=0.6,qd[54,4]=0.1,qd[54,5]=1.1,qd[54,6]=0.6,qd[54,7]=0.3,qd[54,8]=-0.8,qd[54,9]=-1.0,qd[54,10]=-0.5,qd[54,11]=-0.5,qd[54,12]=-1.1 qd[55,1]=-1.1,qd[55,2]=0.1,qd[55,3]=1.1,qd[55,4]=0.9,qd[55,5]=0.3,qd[55,6]=-0.3,qd[55,7]=0.9,qd[55,8]=-1.1,qd[55,9]=-0.5,qd[55,10]=0.7,qd[55,11]=0.6,qd[55,12]=-0.2 qd[56,1]=-0.9,qd[56,2]=0.4,qd[56,3]=1.2,qd[56,4]=-1.2,qd[56,5]=0.8,qd[56,6]=0.5,qd[56,7]=-0.5,qd[56,8]=0.5,qd[56,9]=0.8,qd[56,10]=-0.4,qd[56,11]=-1.0,qd[56,12]=-1.1 qd[57,1]=0.8,qd[57,2]=-0.3,qd[57,3]=0.4,qd[57,4]=-1.0,qd[57,5]=-0.5,qd[57,6]=0.3,qd[57,7]=-1.1,qd[57,8]=0.0,qd[57,9]=0.3,qd[57,10]=0.1,qd[57,11]=-0.8,qd[57,12]=0.7 qd[58,1]=-0.2,qd[58,2]=-1.2,qd[58,3]=1.2,qd[58,4]=1.1,qd[58,5]=-1.0,qd[58,6]=0.9,qd[58,7]=0.1,qd[58,8]=-0.5,qd[58,9]=0.7,qd[58,10]=-1.2,qd[58,11]=-0.6,qd[58,12]=1.2 qd[59,1]=-0.1,qd[59,2]=-1.0,qd[59,3]=-0.7,qd[59,4]=0.9,qd[59,5]=0.4,qd[59,6]=-0.1,qd[59,7]=-0.6,qd[59,8]=0.4,qd[59,9]=0.6,qd[59,10]=1.0,qd[59,11]=-0.7,qd[59,12]=1.1 qd[60,1]=-0.4,qd[60,2]=-0.3,qd[60,3]=0.1,qd[60,4]=0.7,qd[60,5]=1.0,qd[60,6]=0.6,qd[60,7]=-0.3,qd[60,8]=1.0,qd[60,9]=-0.8,qd[60,10]=-0.5,qd[60,11]=0.5,qd[60,12]=0.8 qd[61,1]=0.4,qd[61,2]=-0.7,qd[61,3]=0.7,qd[61,4]=0.0,qd[61,5]=1.1,qd[61,6]=0.9,qd[61,7]=0.2,qd[61,8]=-0.9,qd[61,9]=-1.1,qd[61,10]=-0.4,qd[61,11]=-0.1,qd[61,12]=0.1 qd[62,1]=0.7,qd[62,2]=-0.2,qd[62,3]=-0.6,qd[62,4]=0.9,qd[62,5]=0.0,qd[62,6]=0.3,qd[62,7]=1.2,qd[62,8]=0.3,qd[62,9]=-0.6,qd[62,10]=-0.6,qd[62,11]=0.3,qd[62,12]=-1.0 qd[63,1]=1.0,qd[63,2]=0.7,qd[63,3]=-0.7,qd[63,4]=-0.2,qd[63,5]=0.9,qd[63,6]=0.1,qd[63,7]=0.9,qd[63,8]=1.0,qd[63,9]=-0.9,qd[63,10]=1.0,qd[63,11]=-0.2,qd[63,12]=-0.3 qd[64,1]=-0.7,qd[64,2]=1.1,qd[64,3]=0.9,qd[64,4]=1.1,qd[64,5]=0.3,qd[64,6]=-0.2,qd[64,7]=0.3,qd[64,8]=-1.1,qd[64,9]=-1.0,qd[64,10]=0.4,qd[64,11]=-0.6,qd[64,12]=-0.5 qd[65,1]=0.5,qd[65,2]=-0.2,qd[65,3]=-0.1,qd[65,4]=-0.6,qd[65,5]=0.3,qd[65,6]=0.7,qd[65,7]=1.0,qd[65,8]=0.6,qd[65,9]=-0.2,qd[65,10]=-1.2,qd[65,11]=0.3,qd[65,12]=-0.6 qd[66,1]=1.0,qd[66,2]=-0.8,qd[66,3]=-0.5,qd[66,4]=0.2,qd[66,5]=0.1,qd[66,6]=-0.4,qd[66,7]=-0.7,qd[66,8]=-0.4,qd[66,9]=1.1,qd[66,10]=-1.1,qd[66,11]=-0.5,qd[66,12]=-0.5 qd[67,1]=1.1,qd[67,2]=-0.4,qd[67,3]=-0.2,qd[67,4]=-0.6,qd[67,5]=0.4,qd[67,6]=-0.8,qd[67,7]=0.5,qd[67,8]=-0.9,qd[67,9]=-0.6,qd[67,10]=0.1,qd[67,11]=1.2,qd[67,12]=0.7 qd[68,1]=-0.2,qd[68,2]=-0.5,qd[68,3]=-0.1,qd[68,4]=-0.1,qd[68,5]=0.7,qd[68,6]=0.3,qd[68,7]=1.1,qd[68,8]=0.9,qd[68,9]=-0.8,qd[68,10]=0.2,qd[68,11]=0.2,qd[68,12]=-0.5 qd[69,1]=1.1,qd[69,2]=-0.9,qd[69,3]=0.4,qd[69,4]=-0.7,qd[69,5]=0.2,qd[69,6]=0.0,qd[69,7]=0.4,qd[69,8]=1.2,qd[69,9]=0.8,qd[69,10]=-0.7,qd[69,11]=-0.8,qd[69,12]=0.1 qd[70,1]=-0.8,qd[70,2]=0.3,qd[70,3]=0.4,qd[70,4]=-1.1,qd[70,5]=-0.1,qd[70,6]=1.2,qd[70,7]=-0.9,qd[70,8]=-0.7,qd[70,9]=1.2,qd[70,10]=-1.1,qd[70,11]=-0.2,qd[70,12]=0.3 qd[71,1]=-0.3,qd[71,2]=-1.2,qd[71,3]=0.5,qd[71,4]=-0.8,qd[71,5]=0.2,qd[71,6]=1.1,qd[71,7]=1.2,qd[71,8]=-0.8,qd[71,9]=0.9,qd[71,10]=-1.1,qd[71,11]=-1.1,qd[71,12]=1.2, qd[72,1]=-0.3,qd[72,2]=-1.2,qd[72,3]=0.7,qd[72,4]=0.3,qd[72,5]=0.4,qd[72,6]=0.6,qd[72,7]=0.1,qd[72,8]=0.7,qd[72,9]=-0.6,qd[72,10]=-0.6,qd[72,11]=0.7,qd[72,12]=0.8 qd[73,1]=-1.1,qd[73,2]=0.2,qd[73,3]=0.2,qd[73,4]=-1.1,qd[73,5]=-0.6,qd[73,6]=1.1,qd[73,7]=-0.1,qd[73,8]=0.5,qd[73,9]=1.2,qd[73,10]=0.9,qd[73,11]=0.8,qd[73,12]=-0.7 qd[74,1]=0.9,qd[74,2]=0.5,qd[74,3]=-1.1,qd[74,4]=-0.5,qd[74,5]=0.0,qd[74,6]=-1.2,qd[74,7]=0.2,qd[74,8]=1.2,qd[74,9]=-0.5,qd[74,10]=-0.3,qd[74,11]=-0.3,qd[74,12]=-0.8 qd[75,1]=0.8,qd[75,2]=0.7,qd[75,3]=-1.2,qd[75,4]=0.4,qd[75,5]=-0.1,qd[75,6]=-1.2,qd[75,7]=-0.7,qd[75,8]=-0.1,qd[75,9]=-1.0,qd[75,10]=0.0,qd[75,11]=-1.0,qd[75,12]=-0.3 qd[76,1]=-0.8,qd[76,2]=1.0,qd[76,3]=0.9,qd[76,4]=-1.1,qd[76,5]=-0.9,qd[76,6]=0.4,qd[76,7]=0.6,qd[76,8]=-0.1,qd[76,9]=0.8,qd[76,10]=-0.5,qd[76,11]=-0.2,qd[76,12]=-0.3 qd[77,1]=-0.7,qd[77,2]=-1.1,qd[77,3]=0.5,qd[77,4]=0.1,qd[77,5]=-0.6,qd[77,6]=0.6,qd[77,7]=-0.1,qd[77,8]=1.1,qd[77,9]=0.0,qd[77,10]=-1.2,qd[77,11]=-0.1,qd[77,12]=0.4 qd[78,1]=0.5,qd[78,2]=-1.1,qd[78,3]=-1.1,qd[78,4]=0.0,qd[78,5]=-0.5,qd[78,6]=0.0,qd[78,7]=0.7,qd[78,8]=1.2,qd[78,9]=-0.9,qd[78,10]=-0.2,qd[78,11]=0.5,qd[78,12]=-1.0 qd[79,1]=-0.4,qd[79,2]=-0.3,qd[79,3]=0.3,qd[79,4]=-0.1,qd[79,5]=-1.0,qd[79,6]=1.0,qd[79,7]=-0.7,qd[79,8]=-0.7,qd[79,9]=1.0,qd[79,10]=-1.2,qd[79,11]=0.5,qd[79,12]=0.8 qd[80,1]=0.6,qd[80,2]=-0.3,qd[80,3]=0.0,qd[80,4]=0.4,qd[80,5]=-0.8,qd[80,6]=-0.3,qd[80,7]=-0.7,qd[80,8]=-0.9,qd[80,9]=-0.3,qd[80,10]=0.2,qd[80,11]=1.1,qd[80,12]=1.1 qd[81,1]=-0.3,qd[81,2]=-0.7,qd[81,3]=0.2,qd[81,4]=-0.7,qd[81,5]=-0.3,qd[81,6]=0.5,qd[81,7]=1.2,qd[81,8]=-0.1,qd[81,9]=-0.8,qd[81,10]=-1.1,qd[81,11]=-0.1,qd[81,12]=-0.8 qd[82,1]=0.2,qd[82,2]=-0.4,qd[82,3]=-0.9,qd[82,4]=-0.2,qd[82,5]=1.2,qd[82,6]=1.2,qd[82,7]=0.3,qd[82,8]=-0.7,qd[82,9]=-1.1,qd[82,10]=-0.2,qd[82,11]=-0.2,qd[82,12]=-0.7 qd[83,1]=1.2,qd[83,2]=-0.7,qd[83,3]=-0.5,qd[83,4]=0.1,qd[83,5]=0.2,qd[83,6]=-1.1,qd[83,7]=0.3,qd[83,8]=-1.0,qd[83,9]=0.6,qd[83,10]=-0.3,qd[83,11]=0.2,qd[83,12]=-1.1 qd[84,1]=0.7,qd[84,2]=-1.2,qd[84,3]=0.9,qd[84,4]=0.0,qd[84,5]=-0.7,qd[84,6]=0.2,qd[84,7]=-0.7,qd[84,8]=1.2,qd[84,9]=0.5,qd[84,10]=1.0,qd[84,11]=-0.4,qd[84,12]=1.2 qd[85,1]=1.1,qd[85,2]=-0.4,qd[85,3]=-0.7,qd[85,4]=0.4,qd[85,5]=0.7,qd[85,6]=-0.4,qd[85,7]=-0.3,qd[85,8]=0.5,qd[85,9]=-0.2,qd[85,10]=0.6,qd[85,11]=0.0,qd[85,12]=0.8 qd[86,1]=1.2,qd[86,2]=-0.3,qd[86,3]=-0.1,qd[86,4]=-0.9,qd[86,5]=0.6,qd[86,6]=0.0,qd[86,7]=0.6,qd[86,8]=0.6,qd[86,9]=0.9,qd[86,10]=-0.6,qd[86,11]=-1.2,qd[86,12]=0.4 qd[87,1]=0.3,qd[87,2]=-1.0,qd[87,3]=0.3,qd[87,4]=-0.1,qd[87,5]=-1.0,qd[87,6]=1.1,qd[87,7]=-0.8,qd[87,8]=-0.4,qd[87,9]=0.6,qd[87,10]=0.0,qd[87,11]=0.6,qd[87,12]=1.0 qd[88,1]=-0.3,qd[88,2]=0.0,qd[88,3]=-0.3,qd[88,4]=0.8,qd[88,5]=-0.8,qd[88,6]=0.8,qd[88,7]=0.7,qd[88,8]=1.1,qd[88,9]=-0.5,qd[88,10]=0.0,qd[88,11]=0.6,qd[88,12]=-1.0 qd[89,1]=0.4,qd[89,2]=0.8,qd[89,3]=-0.3,qd[89,4]=-0.2,qd[89,5]=-1.2,qd[89,6]=-0.2,qd[89,7]=0.0,qd[89,8]=0.0,qd[89,9]=1.2,qd[89,10]=1.2,qd[89,11]=0.5,qd[89,12]=-1.1 qd[90,1]=0.5,qd[90,2]=-0.4,qd[90,3]=-0.8,qd[90,4]=-1.0,qd[90,5]=0.0,qd[90,6]=-0.7,qd[90,7]=0.0,qd[90,8]=-0.5,qd[90,9]=-1.1,qd[90,10]=1.0,qd[90,11]=0.8,qd[90,12]=0.1 qd[91,1]=-0.6,qd[91,2]=0.1,qd[91,3]=-0.3,qd[91,4]=-0.8,qd[91,5]=-0.5,qd[91,6]=0.2,qd[91,7]=-1.1,qd[91,8]=0.3,qd[91,9]=0.6,qd[91,10]=1.0,qd[91,11]=-0.2,qd[91,12]=0.9 qd[92,1]=1.0,qd[92,2]=0.3,qd[92,3]=-0.5,qd[92,4]=0.6,qd[92,5]=-1.2,qd[92,6]=-0.1,qd[92,7]=-1.0,qd[92,8]=-0.3,qd[92,9]=0.0,qd[92,10]=-1.2,qd[92,11]=0.4,qd[92,12]=0.1, qd[93,1]=-0.1,qd[93,2]=-1.2,qd[93,3]=-1.1,qd[93,4]=-0.3,qd[93,5]=0.9,qd[93,6]=-0.7,qd[93,7]=1.0,qd[93,8]=0.1,qd[93,9]=0.3,qd[93,10]=-0.6,qd[93,11]=0.4,qd[93,12]=-0.5 qd[94,1]=-1.2,qd[94,2]=0.8,qd[94,3]=0.1,qd[94,4]=1.1,qd[94,5]=-0.7,qd[94,6]=1.2,qd[94,7]=-0.5,qd[94,8]=0.7,qd[94,9]=-0.4,qd[94,10]=0.9,qd[94,11]=-1.2,qd[94,12]=-0.3 qd[95,1]=0.2,qd[95,2]=-0.4,qd[95,3]=-0.9,qd[95,4]=0.0,qd[95,5]=0.6,qd[95,6]=0.4,qd[95,7]=0.5,qd[95,8]=0.7,qd[95,9]=-1.1,qd[95,10]=0.4,qd[95,11]=-0.2,qd[95,12]=-1.1 qd[96,1]=0.8,qd[96,2]=0.2,qd[96,3]=-1.1,qd[96,4]=0.7,qd[96,5]=-1.2,qd[96,6]=-1.0,qd[96,7]=0.0,qd[96,8]=-0.3,qd[96,9]=1.1,qd[96,10]=-0.8,qd[96,11]=-0.5,qd[96,12]=0.9 qd[97,1]=0.7,qd[97,2]=-0.7,qd[97,3]=1.2,qd[97,4]=0.1,qd[97,5]=-1.0,qd[97,6]=0.1,qd[97,7]=0.5,qd[97,8]=1.1,qd[97,9]=-0.9,qd[97,10]=0.9,qd[97,11]=0.6,qd[97,12]=-1.2 qd[98,1]=1.0,qd[98,2]=-0.1,qd[98,3]=-0.8,qd[98,4]=0.0,qd[98,5]=0.7,qd[98,6]=-0.6,qd[98,7]=0.6,qd[98,8]=0.2,qd[98,9]=-0.2,qd[98,10]=0.8,qd[98,11]=1.0,qd[98,12]=-0.4 qd[99,1]=0.2,qd[99,2]=-0.9,qd[99,3]=0.1,qd[99,4]=0.5,qd[99,5]=0.0,qd[99,6]=0.8,qd[99,7]=-1.0,qd[99,8]=-0.4,qd[99,9]=0.9,qd[99,10]=-0.2,qd[99,11]=0.6,qd[99,12]=0.0 qd[100,1]=-1.0,qd[100,2]=-0.4,qd[100,3]=-0.3,qd[100,4]=0.9,qd[100,5]=0.8,qd[100,6]=1.0,qd[100,7]=-1.2,qd[100,8]=0.5,qd[100,9]=0.3,qd[100,10]=-0.4,qd[100,11]=0.1,qd[100,12]=0.1 s3[0,1]=0.3,s3[0,2]=-0.8,s3[0,3]=-0.8,s3[0,4]=1.2,s3[0,5]=0.6,s3[0,6]=0.3,s3[0,7]=-0.7,s3[0,8]=0.5,s3[0,9]=-0.7,s3[0,10]=0.1,s3[0,11]=0.1,s3[0,12]=-0.4,s3[0,13]=0.7,s3[0,14]=0.7 s3[0,15]=-0.3,s3[0,16]=-0.5,s3[0,17]=1.0,s3[0,18]=-0.7,s3[0,19]=0.9,s3[0,20]=-0.3,s3[0,21]=0.1,s3[0,22]=0.8,s3[0,23]=0.4,s3[0,24]=-1.0,s3[0,25]=0.3,s3[0,26]=-1.0,s3[0,27]=0.6,s3[0,28]=0.2,s3[0,29]=-0.5,s3[0,30]=0.7 s3[1,1]=0.2,s3[1,2]=-0.6,s3[1,3]=1.1,s3[1,4]=-0.9,s3[1,5]=1.0,s3[1,6]=-0.4,s3[1,7]=1.2,s3[1,8]=-0.2,s3[1,9]=-0.3,s3[1,10]=-0.3,s3[1,11]=0.2,s3[1,12]=-0.5,s3[1,13]=0.7,s3[1,14]=0.3 s3[1,15]=-0.5,s3[1,16]=-0.1,s3[1,17]=0.2,s3[1,18]=-1.1,s3[1,19]=-0.2,s3[1,20]=-0.9,s3[1,21]=-0.6,s3[1,22]=0.5,s3[1,23]=1.1,s3[1,24]=-0.7,s3[1,25]=-0.9,s3[1,26]=-0.5,s3[1,27]=0.8,s3[1,28]=0.6,s3[1,29]=0.9,s3[1,30]=0.9 s3[2,1]=-1.0,s3[2,2]=0.2,s3[2,3]=-0.2,s3[2,4]=-0.1,s3[2,5]=-0.5,s3[2,6]=1.0,s3[2,7]=-0.5,s3[2,8]=-0.6,s3[2,9]=0.8,s3[2,10]=0.6,s3[2,11]=0.2,s3[2,12]=-0.9,s3[2,13]=-1.0,s3[2,14]=0.8 s3[2,15]=0.4,s3[2,16]=-0.4,s3[2,17]=0.3,s3[2,18]=-0.5,s3[2,19]=1.2,s3[2,20]=-0.5,s3[2,21]=0.8,s3[2,22]=-0.7,s3[2,23]=-0.6,s3[2,24]=-1.1,s3[2,25]=0.1,s3[2,26]=-1.2,s3[2,27]=-0.1,s3[2,28]=1.1,s3[2,29]=0.3,s3[2,30]=-1.0 s3[3,1]=-0.2,s3[3,2]=0.5,s3[3,3]=-0.6,s3[3,4]=0.3,s3[3,5]=0.6,s3[3,6]=-1.1,s3[3,7]=0.7,s3[3,8]=-0.3,s3[3,9]=0.6,s3[3,10]=-0.7,s3[3,11]=-0.3,s3[3,12]=0.6,s3[3,13]=-0.6,s3[3,14]=0.4 s3[3,15]=-1.1,s3[3,16]=-0.6,s3[3,17]=0.7,s3[3,18]=-1.2,s3[3,19]=0.5,s3[3,20]=-1.1,s3[3,21]=0.7,s3[3,22]=0.0,s3[3,23]=-0.4,s3[3,24]=0.1,s3[3,25]=0.5,s3[3,26]=0.4,s3[3,27]=-0.5,s3[3,28]=0.4,s3[3,29]=0.5,s3[3,30]=-0.9 s3[4,1]=-0.4,s3[4,2]=0.6,s3[4,3]=1.2,s3[4,4]=-0.5,s3[4,5]=1.0,s3[4,6]=-0.6,s3[4,7]=-1.0,s3[4,8]=1.2,s3[4,9]=0.4,s3[4,10]=0.8,s3[4,11]=-0.6,s3[4,12]=0.9,s3[4,13]=0.6,s3[4,14]=0.0 s3[4,15]=0.1,s3[4,16]=-0.8,s3[4,17]=0.2,s3[4,18]=-0.1,s3[4,19]=-0.5,s3[4,20]=-0.3,s3[4,21]=-0.4,s3[4,22]=0.6,s3[4,23]=0.0,s3[4,24]=-0.8,s3[4,25]=-1.0,s3[4,26]=-0.6,s3[4,27]=-1.2,s3[4,28]=0.8,s3[4,29]=-0.6,s3[4,30]=0.9 s3[5,1]=-1.1,s3[5,2]=-0.9,s3[5,3]=-0.4,s3[5,4]=-0.9,s3[5,5]=0.3,s3[5,6]=-0.7,s3[5,7]=0.5,s3[5,8]=0.7,s3[5,9]=0.4,s3[5,10]=0.2,s3[5,11]=-0.1,s3[5,12]=-1.0,s3[5,13]=-0.6,s3[5,14]=-0.5 s3[5,15]=0.6,s3[5,16]=-1.0,s3[5,17]=1.2,s3[5,18]=-0.5,s3[5,19]=-1.0,s3[5,20]=1.2,s3[5,21]=0.5,s3[5,22]=-1.0,s3[5,23]=-0.2,s3[5,24]=-0.9,s3[5,25]=0.6,s3[5,26]=0.4,s3[5,27]=-1.0,s3[5,28]=0.5,s3[5,29]=-0.1,s3[5,30]=-0.1 s3[6,1]=-0.2,s3[6,2]=0.8,s3[6,3]=0.9,s3[6,4]=1.0,s3[6,5]=0.7,s3[6,6]=-0.7,s3[6,7]=0.4,s3[6,8]=1.1,s3[6,9]=-0.8,s3[6,10]=1.0,s3[6,11]=0.8,s3[6,12]=0.5,s3[6,13]=-0.1,s3[6,14]=-0.5 s3[6,15]=-0.2,s3[6,16]=-0.9,s3[6,17]=-0.5,s3[6,18]=-0.8,s3[6,19]=0.6,s3[6,20]=0.7,s3[6,21]=-0.1,s3[6,22]=-0.3,s3[6,23]=-0.8,s3[6,24]=0.5,s3[6,25]=-0.6,s3[6,26]=0.3,s3[6,27]=-0.1,s3[6,28]=-0.1,s3[6,29]=0.6,s3[6,30]=0.8 s3[7,1]=-0.2,s3[7,2]=0.3,s3[7,3]=-1.2,s3[7,4]=-0.8,s3[7,5]=-1.0,s3[7,6]=0.4,s3[7,7]=-0.3,s3[7,8]=1.0,s3[7,9]=1.0,s3[7,10]=-0.8,s3[7,11]=0.1,s3[7,12]=0.8,s3[7,13]=1.2,s3[7,14]=-0.6 s3[7,15]=0.3,s3[7,16]=-1.2,s3[7,17]=1.2,s3[7,18]=0.8,s3[7,19]=0.5,s3[7,20]=-0.6,s3[7,21]=0.4,s3[7,22]=0.1,s3[7,23]=-0.4,s3[7,24]=-0.8,s3[7,25]=-0.6,s3[7,26]=-0.6,s3[7,27]=-0.7,s3[7,28]=-0.3,s3[7,29]=-0.4,s3[7,30]=-0.1 s3[8,1]=1.0,s3[8,2]=-0.4,s3[8,3]=-1.1,s3[8,4]=0.6,s3[8,5]=-0.2,s3[8,6]=-0.7,s3[8,7]=-0.7,s3[8,8]=-0.1,s3[8,9]=1.0,s3[8,10]=1.2,s3[8,11]=-0.2,s3[8,12]=1.2,s3[8,13]=-0.9,s3[8,14]=-0.6 s3[8,15]=0.6,s3[8,16]=-0.1,s3[8,17]=-0.4,s3[8,18]=0.8,s3[8,19]=0.1,s3[8,20]=-0.3,s3[8,21]=-0.1,s3[8,22]=0.5,s3[8,23]=-0.7,s3[8,24]=0.2,s3[8,25]=-0.8,s3[8,26]=-0.6,s3[8,27]=-0.6,s3[8,28]=-1.0,s3[8,29]=0.4,s3[8,30]=1.0 s3[9,1]=0.6,s3[9,2]=-0.3,s3[9,3]=-0.8,s3[9,4]=-0.2,s3[9,5]=0.7,s3[9,6]=0.4,s3[9,7]=1.2,s3[9,8]=0.7,s3[9,9]=0.2,s3[9,10]=0.5,s3[9,11]=0.1,s3[9,12]=-0.8,s3[9,13]=0.2,s3[9,14]=-0.6 s3[9,15]=0.8,s3[9,16]=0.3,s3[9,17]=0.0,s3[9,18]=0.7,s3[9,19]=-1.1,s3[9,20]=0.2,s3[9,21]=-0.7,s3[9,22]=1.0,s3[9,23]=1.2,s3[9,24]=0.8,s3[9,25]=0.5,s3[9,26]=0.0,s3[9,27]=-0.7,s3[9,28]=-0.9,s3[9,29]=0.5,s3[9,30]=1.1 s3[10,1]=-0.2,s3[10,2]=0.4,s3[10,3]=0.7,s3[10,4]=1.2,s3[10,5]=0.5,s3[10,6]=1.0,s3[10,7]=-1.1,s3[10,8]=0.0,s3[10,9]=1.2,s3[10,10]=-0.6,s3[10,11]=0.1,s3[10,12]=-1.1,s3[10,13]=-0.5,s3[10,14]=0.1 s3[10,15]=-0.7,s3[10,16]=-0.6,s3[10,17]=0.0,s3[10,18]=0.2,s3[10,19]=0.6,s3[10,20]=0.6,s3[10,21]=0.3,s3[10,22]=-0.5,s3[10,23]=-0.2,s3[10,24]=0.6,s3[10,25]=1.1,s3[10,26]=-0.4,s3[10,27]=0.7,s3[10,28]=-0.1,s3[10,29]=-0.2,s3[10,30]=-0.8 s3[11,1]=0.1,s3[11,2]=0.6,s3[11,3]=-0.5,s3[11,4]=0.9,s3[11,5]=0.0,s3[11,6]=-0.4,s3[11,7]=1.0,s3[11,8]=-0.8,s3[11,9]=1.2,s3[11,10]=0.9,s3[11,11]=0.1,s3[11,12]=0.1,s3[11,13]=-0.3,s3[11,14]=0.6 s3[11,15]=0.8,s3[11,16]=0.1,s3[11,17]=0.2,s3[11,18]=-1.0,s3[11,19]=0.3,s3[11,20]=-0.9,s3[11,21]=0.7,s3[11,22]=0.3,s3[11,23]=-0.7,s3[11,24]=-1.0,s3[11,25]=1.0,s3[11,26]=0.9,s3[11,27]=-0.5,s3[11,28]=0.1,s3[11,29]=0.2,s3[11,30]=-1.1 s3[12,1]=1.0,s3[12,2]=-0.4,s3[12,3]=-0.3,s3[12,4]=-0.4,s3[12,5]=-0.2,s3[12,6]=0.6,s3[12,7]=-0.8,s3[12,8]=1.2,s3[12,9]=0.9,s3[12,10]=0.6,s3[12,11]=-0.1,s3[12,12]=0.3,s3[12,13]=-0.6,s3[12,14]=0.0 s3[12,15]=-0.3,s3[12,16]=-0.8,s3[12,17]=-0.1,s3[12,18]=0.0,s3[12,19]=0.7,s3[12,20]=1.0,s3[12,21]=-0.9,s3[12,22]=0.6,s3[12,23]=0.6,s3[12,24]=0.4,s3[12,25]=0.8,s3[12,26]=-0.6,s3[12,27]=0.7,s3[12,28]=-0.4,s3[12,29]=1.1,s3[12,30]=1.0 s3[13,1]=1.2,s3[13,2]=0.7,s3[13,3]=-0.9,s3[13,4]=-1.1,s3[13,5]=1.2,s3[13,6]=-0.4,s3[13,7]=-0.7,s3[13,8]=0.8,s3[13,9]=-0.9,s3[13,10]=0.4,s3[13,11]=0.0,s3[13,12]=0.3,s3[13,13]=-0.5,s3[13,14]=-0.6 s3[13,15]=-0.9,s3[13,16]=0.7,s3[13,17]=0.5,s3[13,18]=0.2,s3[13,19]=-0.2,s3[13,20]=-1.0,s3[13,21]=-0.1,s3[13,22]=-0.1,s3[13,23]=0.1,s3[13,24]=-0.5,s3[13,25]=-0.2,s3[13,26]=1.1,s3[13,27]=-0.4,s3[13,28]=0.8,s3[13,29]=-0.1,s3[13,30]=-1.0 s3[14,1]=-0.5,s3[14,2]=0.1,s3[14,3]=0.7,s3[14,4]=-0.6,s3[14,5]=0.9,s3[14,6]=-0.9,s3[14,7]=-0.5,s3[14,8]=-0.9,s3[14,9]=0.3,s3[14,10]=-0.3,s3[14,11]=-0.3,s3[14,12]=-0.3,s3[14,13]=-0.2,s3[14,14]=0.8 s3[14,15]=0.4,s3[14,16]=0.3,s3[14,17]=1.1,s3[14,18]=-0.6,s3[14,19]=-0.2,s3[14,20]=0.1,s3[14,21]=1.2,s3[14,22]=0.2,s3[14,23]=0.2,s3[14,24]=-1.1,s3[14,25]=0.9,s3[14,26]=0.3,s3[14,27]=0.9,s3[14,28]=-1.1,s3[14,29]=1.2,s3[14,30]=-0.7 s3[15,1]=-0.5,s3[15,2]=-0.5,s3[15,3]=0.9,s3[15,4]=0.3,s3[15,5]=-0.3,s3[15,6]=-0.7,s3[15,7]=0.9,s3[15,8]=-0.9,s3[15,9]=-0.2,s3[15,10]=0.1,s3[15,11]=0.0,s3[15,12]=0.7,s3[15,13]=0.5,s3[15,14]=0.9 s3[15,15]=0.4,s3[15,16]=0.2,s3[15,17]=0.9,s3[15,18]=0.1,s3[15,19]=-0.3,s3[15,20]=1.2,s3[15,21]=0.7,s3[15,22]=-0.3,s3[15,23]=-1.2,s3[15,24]=-0.2,s3[15,25]=0.7,s3[15,26]=-1.1,s3[15,27]=-0.5,s3[15,28]=1.2,s3[15,29]=0.4,s3[15,30]=-1.0 s3[16,1]=-1.0,s3[16,2]=-0.2,s3[16,3]=-0.2,s3[16,4]=-0.3,s3[16,5]=-0.5,s3[16,6]=-1.1,s3[16,7]=0.0,s3[16,8]=1.0,s3[16,9]=0.6,s3[16,10]=0.9,s3[16,11]=-0.3,s3[16,12]=0.9,s3[16,13]=1.1,s3[16,14]=-1.1 s3[16,15]=0.2,s3[16,16]=0.3,s3[16,17]=0.5,s3[16,18]=0.2,s3[16,19]=-0.2,s3[16,20]=0.3,s3[16,21]=0.5,s3[16,22]=-0.6,s3[16,23]=-1.2,s3[16,24]=1.1,s3[16,25]=0.4,s3[16,26]=0.3,s3[16,27]=-0.5,s3[16,28]=0.2,s3[16,29]=-0.3,s3[16,30]=-0.7 s3[17,1]=0.1,s3[17,2]=0.4,s3[17,3]=0.0,s3[17,4]=-0.6,s3[17,5]=1.0,s3[17,6]=0.8,s3[17,7]=1.0,s3[17,8]=-0.2,s3[17,9]=-0.9,s3[17,10]=-0.2,s3[17,11]=-0.6,s3[17,12]=-1.1,s3[17,13]=0.7,s3[17,14]=-0.7 s3[17,15]=0.0,s3[17,16]=-0.8,s3[17,17]=0.3,s3[17,18]=0.6,s3[17,19]=-0.1,s3[17,20]=1.2,s3[17,21]=0.2,s3[17,22]=-0.8,s3[17,23]=-1.2,s3[17,24]=0.4,s3[17,25]=0.9,s3[17,26]=0.0,s3[17,27]=-0.4,s3[17,28]=-0.7,s3[17,29]=-0.3,s3[17,30]=-0.2 s3[18,1]=-0.6,s3[18,2]=1.2,s3[18,3]=1.2,s3[18,4]=1.0,s3[18,5]=0.2,s3[18,6]=0.5,s3[18,7]=0.5,s3[18,8]=0.6,s3[18,9]=0.5,s3[18,10]=0.9,s3[18,11]=-0.7,s3[18,12]=1.1,s3[18,13]=1.2,s3[18,14]=0.3 s3[18,15]=0.2,s3[18,16]=-0.2,s3[18,17]=0.6,s3[18,18]=1.1,s3[18,19]=0.0,s3[18,20]=-0.4,s3[18,21]=0.5,s3[18,22]=0.7,s3[18,23]=-0.5,s3[18,24]=0.9,s3[18,25]=1.0,s3[18,26]=0.2,s3[18,27]=-0.6,s3[18,28]=0.2,s3[18,29]=0.0,s3[18,30]=0.2 s3[19,1]=0.6,s3[19,2]=0.7,s3[19,3]=-1.0,s3[19,4]=-1.1,s3[19,5]=1.0,s3[19,6]=0.7,s3[19,7]=0.1,s3[19,8]=-0.2,s3[19,9]=-0.8,s3[19,10]=-0.4,s3[19,11]=-0.1,s3[19,12]=-0.4,s3[19,13]=0.9,s3[19,14]=-0.8 s3[19,15]=-0.1,s3[19,16]=-0.6,s3[19,17]=-0.7,s3[19,18]=-0.1,s3[19,19]=-0.1,s3[19,20]=-0.1,s3[19,21]=-0.1,s3[19,22]=0.9,s3[19,23]=-0.3,s3[19,24]=0.3,s3[19,25]=-0.1,s3[19,26]=-0.9,s3[19,27]=0.3,s3[19,28]=0.3,s3[19,29]=-0.8,s3[19,30]=-0.5 s3[20,1]=0.4,s3[20,2]=0.7,s3[20,3]=-1.2,s3[20,4]=0.6,s3[20,5]=1.0,s3[20,6]=0.2,s3[20,7]=-0.3,s3[20,8]=0.1,s3[20,9]=0.7,s3[20,10]=-1.0,s3[20,11]=0.4,s3[20,12]=0.7,s3[20,13]=1.2,s3[20,14]=-1.1 s3[20,15]=0.8,s3[20,16]=0.8,s3[20,17]=-1.0,s3[20,18]=-1.2,s3[20,19]=1.0,s3[20,20]=-1.1,s3[20,21]=0.0,s3[20,22]=-0.9,s3[20,23]=-1.2,s3[20,24]=1.0,s3[20,25]=-0.1,s3[20,26]=0.0,s3[20,27]=-0.2,s3[20,28]=-1.1,s3[20,29]=-0.7,s3[20,30]=-0.3 s3[21,1]=0.3,s3[21,2]=1.1,s3[21,3]=-0.9,s3[21,4]=-1.2,s3[21,5]=0.2,s3[21,6]=-0.1,s3[21,7]=-1.2,s3[21,8]=1.1,s3[21,9]=0.3,s3[21,10]=0.2,s3[21,11]=-0.8,s3[21,12]=0.3,s3[21,13]=1.2,s3[21,14]=-1.2 s3[21,15]=1.1,s3[21,16]=-0.1,s3[21,17]=0.9,s3[21,18]=-0.7,s3[21,19]=0.2,s3[21,20]=0.8,s3[21,21]=-0.7,s3[21,22]=-0.3,s3[21,23]=0.5,s3[21,24]=-0.1,s3[21,25]=-0.1,s3[21,26]=0.3,s3[21,27]=0.0,s3[21,28]=-1.1,s3[21,29]=-0.4,s3[21,30]=0.4 s3[22,1]=0.5,s3[22,2]=-0.7,s3[22,3]=-1.1,s3[22,4]=0.1,s3[22,5]=-0.5,s3[22,6]=0.3,s3[22,7]=-0.2,s3[22,8]=-0.9,s3[22,9]=-0.7,s3[22,10]=-0.1,s3[22,11]=-0.6,s3[22,12]=-1.0,s3[22,13]=-0.9,s3[22,14]=0.1 s3[22,15]=-0.7,s3[22,16]=-0.7,s3[22,17]=-0.6,s3[22,18]=-1.1,s3[22,19]=-1.1,s3[22,20]=0.2,s3[22,21]=-0.6,s3[22,22]=-0.2,s3[22,23]=-0.9,s3[22,24]=-0.2,s3[22,25]=-0.6,s3[22,26]=-0.6,s3[22,27]=0.0,s3[22,28]=0.6,s3[22,29]=-0.9,s3[22,30]=-1.1 s3[23,1]=0.8,s3[23,2]=-0.7,s3[23,3]=-0.9,s3[23,4]=-1.0,s3[23,5]=-0.3,s3[23,6]=0.9,s3[23,7]=0.5,s3[23,8]=-0.1,s3[23,9]=0.7,s3[23,10]=-1.0,s3[23,11]=0.5,s3[23,12]=-1.0,s3[23,13]=0.3,s3[23,14]=1.1 s3[23,15]=-0.2,s3[23,16]=-0.4,s3[23,17]=-0.2,s3[23,18]=1.0,s3[23,19]=0.4,s3[23,20]=-0.7,s3[23,21]=0.5,s3[23,22]=-1.2,s3[23,23]=-0.5,s3[23,24]=0.8,s3[23,25]=0.2,s3[23,26]=-0.8,s3[23,27]=0.0,s3[23,28]=1.1,s3[23,29]=-0.2,s3[23,30]=0.5 s3[24,1]=-1.0,s3[24,2]=-0.2,s3[24,3]=1.1,s3[24,4]=0.3,s3[24,5]=-0.4,s3[24,6]=-0.2,s3[24,7]=0.6,s3[24,8]=-0.1,s3[24,9]=0.5,s3[24,10]=-0.7,s3[24,11]=0.7,s3[24,12]=-0.4,s3[24,13]=0.7,s3[24,14]=0.2 s3[24,15]=-0.2,s3[24,16]=0.2,s3[24,17]=-1.2,s3[24,18]=0.0,s3[24,19]=0.0,s3[24,20]=-1.2,s3[24,21]=-0.5,s3[24,22]=-0.4,s3[24,23]=0.5,s3[24,24]=0.2,s3[24,25]=-0.5,s3[24,26]=-0.1,s3[24,27]=0.6,s3[24,28]=-0.4,s3[24,29]=0.1,s3[24,30]=1.0 s3[25,1]=-0.1,s3[25,2]=1.2,s3[25,3]=0.8,s3[25,4]=0.9,s3[25,5]=0.4,s3[25,6]=0.0,s3[25,7]=0.2,s3[25,8]=0.1,s3[25,9]=0.9,s3[25,10]=-1.1,s3[25,11]=-0.4,s3[25,12]=-0.4,s3[25,13]=0.5,s3[25,14]=-0.2 s3[25,15]=-0.8,s3[25,16]=-0.1,s3[25,17]=0.0,s3[25,18]=-0.6,s3[25,19]=0.9,s3[25,20]=0.9,s3[25,21]=-0.3,s3[25,22]=0.2,s3[25,23]=-0.3,s3[25,24]=1.1,s3[25,25]=1.0,s3[25,26]=0.0,s3[25,27]=0.8,s3[25,28]=-0.4,s3[25,29]=-0.4,s3[25,30]=-0.5 s3[26,1]=0.6,s3[26,2]=-1.0,s3[26,3]=-0.7,s3[26,4]=-1.0,s3[26,5]=-0.1,s3[26,6]=0.2,s3[26,7]=0.7,s3[26,8]=-1.2,s3[26,9]=0.5,s3[26,10]=0.2,s3[26,11]=0.3,s3[26,12]=-0.7,s3[26,13]=0.1,s3[26,14]=0.0 s3[26,15]=-0.9,s3[26,16]=-0.1,s3[26,17]=0.4,s3[26,18]=0.2,s3[26,19]=1.2,s3[26,20]=0.9,s3[26,21]=-0.7,s3[26,22]=-0.9,s3[26,23]=1.1,s3[26,24]=-0.7,s3[26,25]=-0.5,s3[26,26]=0.9,s3[26,27]=0.9,s3[26,28]=0.8,s3[26,29]=1.0,s3[26,30]=0.7 s3[27,1]=-0.3,s3[27,2]=-0.4,s3[27,3]=0.9,s3[27,4]=-1.2,s3[27,5]=-1.1,s3[27,6]=0.2,s3[27,7]=0.9,s3[27,8]=0.7,s3[27,9]=-0.8,s3[27,10]=0.6,s3[27,11]=-0.3,s3[27,12]=-0.7,s3[27,13]=0.9,s3[27,14]=-0.3 s3[27,15]=0.1,s3[27,16]=-0.6,s3[27,17]=-1.1,s3[27,18]=0.0,s3[27,19]=-0.2,s3[27,20]=-0.1,s3[27,21]=1.0,s3[27,22]=-0.4,s3[27,23]=-0.7,s3[27,24]=-0.3,s3[27,25]=-0.2,s3[27,26]=1.2,s3[27,27]=1.1,s3[27,28]=0.5,s3[27,29]=-0.8,s3[27,30]=1.0 s3[28,1]=-0.5,s3[28,2]=0.4,s3[28,3]=-0.5,s3[28,4]=-1.0,s3[28,5]=-0.1,s3[28,6]=0.2,s3[28,7]=1.2,s3[28,8]=-1.1,s3[28,9]=0.4,s3[28,10]=1.0,s3[28,11]=-0.3,s3[28,12]=-0.6,s3[28,13]=0.2,s3[28,14]=0.7 s3[28,15]=-0.8,s3[28,16]=1.2,s3[28,17]=-0.6,s3[28,18]=-0.7,s3[28,19]=0.1,s3[28,20]=1.1,s3[28,21]=0.3,s3[28,22]=0.6,s3[28,23]=0.7,s3[28,24]=1.2,s3[28,25]=-0.4,s3[28,26]=0.3,s3[28,27]=-0.6,s3[28,28]=-0.1,s3[28,29]=-0.7,s3[28,30]=0.7 s3[29,1]=0.4,s3[29,2]=0.1,s3[29,3]=-0.4,s3[29,4]=0.4,s3[29,5]=1.1,s3[29,6]=-0.1,s3[29,7]=0.3,s3[29,8]=-1.1,s3[29,9]=0.1,s3[29,10]=-0.8,s3[29,11]=-0.5,s3[29,12]=-0.4,s3[29,13]=0.4,s3[29,14]=-0.6 s3[29,15]=-0.1,s3[29,16]=0.3,s3[29,17]=0.3,s3[29,18]=1.2,s3[29,19]=-0.4,s3[29,20]=-1.0,s3[29,21]=-0.8,s3[29,22]=-1.2,s3[29,23]=0.7,s3[29,24]=0.7,s3[29,25]=-1.1,s3[29,26]=-1.0,s3[29,27]=0.4,s3[29,28]=-1.0,s3[29,29]=0.8,s3[29,30]=0.0 s3[30,1]=-0.6,s3[30,2]=-0.5,s3[30,3]=-1.0,s3[30,4]=0.7,s3[30,5]=-0.9,s3[30,6]=-1.0,s3[30,7]=1.1,s3[30,8]=1.0,s3[30,9]=-0.9,s3[30,10]=0.8,s3[30,11]=0.4,s3[30,12]=0.0,s3[30,13]=-0.4,s3[30,14]=-0.7 s3[30,15]=-0.6,s3[30,16]=-1.2,s3[30,17]=0.8,s3[30,18]=-1.2,s3[30,19]=-0.3,s3[30,20]=-0.7,s3[30,21]=0.0,s3[30,22]=-0.9,s3[30,23]=-0.2,s3[30,24]=-0.2,s3[30,25]=-0.8,s3[30,26]=0.7,s3[30,27]=0.2,s3[30,28]=1.1,s3[30,29]=-0.2,s3[30,30]=-0.4 s3[31,1]=-0.1,s3[31,2]=-0.3,s3[31,3]=-0.2,s3[31,4]=-1.2,s3[31,5]=-0.2,s3[31,6]=-0.4,s3[31,7]=0.7,s3[31,8]=0.1,s3[31,9]=0.2,s3[31,10]=0.0,s3[31,11]=0.5,s3[31,12]=0.6,s3[31,13]=-0.1,s3[31,14]=1.0 s3[31,15]=1.1,s3[31,16]=-0.5,s3[31,17]=0.1,s3[31,18]=0.0,s3[31,19]=-0.1,s3[31,20]=0.1,s3[31,21]=1.0,s3[31,22]=0.4,s3[31,23]=-0.8,s3[31,24]=0.5,s3[31,25]=-0.1,s3[31,26]=0.0,s3[31,27]=-0.6,s3[31,28]=-0.6,s3[31,29]=-1.1,s3[31,30]=0.9 s3[32,1]=0.0,s3[32,2]=0.3,s3[32,3]=-0.2,s3[32,4]=-1.0,s3[32,5]=0.0,s3[32,6]=-0.7,s3[32,7]=1.1,s3[32,8]=0.4,s3[32,9]=0.2,s3[32,10]=0.1,s3[32,11]=0.1,s3[32,12]=0.7,s3[32,13]=-0.3,s3[32,14]=1.0 s3[32,15]=-1.0,s3[32,16]=-0.7,s3[32,17]=-0.6,s3[32,18]=-0.5,s3[32,19]=0.4,s3[32,20]=-0.4,s3[32,21]=0.2,s3[32,22]=-0.8,s3[32,23]=-0.3,s3[32,24]=-0.1,s3[32,25]=0.8,s3[32,26]=0.4,s3[32,27]=0.3,s3[32,28]=0.0,s3[32,29]=-1.2,s3[32,30]=0.4 s3[33,1]=0.9,s3[33,2]=-1.2,s3[33,3]=-0.2,s3[33,4]=-0.6,s3[33,5]=-0.7,s3[33,6]=0.5,s3[33,7]=0.9,s3[33,8]=-0.4,s3[33,9]=-0.4,s3[33,10]=-0.2,s3[33,11]=0.2,s3[33,12]=0.3,s3[33,13]=-0.5,s3[33,14]=0.7 s3[33,15]=0.3,s3[33,16]=-1.0,s3[33,17]=0.5,s3[33,18]=0.3,s3[33,19]=-0.3,s3[33,20]=0.2,s3[33,21]=-1.2,s3[33,22]=0.1,s3[33,23]=-1.0,s3[33,24]=1.0,s3[33,25]=-0.7,s3[33,26]=-1.2,s3[33,27]=1.1,s3[33,28]=-0.1,s3[33,29]=1.0,s3[33,30]=0.8 s3[34,1]=0.2,s3[34,2]=-0.8,s3[34,3]=-0.9,s3[34,4]=-0.5,s3[34,5]=-0.9,s3[34,6]=-0.7,s3[34,7]=-0.8,s3[34,8]=-0.6,s3[34,9]=0.9,s3[34,10]=-0.5,s3[34,11]=0.0,s3[34,12]=0.2,s3[34,13]=0.2,s3[34,14]=0.1 s3[34,15]=0.2,s3[34,16]=-0.6,s3[34,17]=0.9,s3[34,18]=-1.2,s3[34,19]=0.1,s3[34,20]=0.9,s3[34,21]=-0.2,s3[34,22]=0.4,s3[34,23]=0.1,s3[34,24]=-0.8,s3[34,25]=0.9,s3[34,26]=0.7,s3[34,27]=0.7,s3[34,28]=0.7,s3[34,29]=0.8,s3[34,30]=-0.3 s3[35,1]=-0.4,s3[35,2]=0.1,s3[35,3]=0.5,s3[35,4]=0.5,s3[35,5]=-0.3,s3[35,6]=1.1,s3[35,7]=1.1,s3[35,8]=1.0,s3[35,9]=-1.0,s3[35,10]=0.3,s3[35,11]=-0.2,s3[35,12]=0.3,s3[35,13]=-0.8,s3[35,14]=0.9 s3[35,15]=-0.6,s3[35,16]=-1.2,s3[35,17]=0.6,s3[35,18]=-0.6,s3[35,19]=0.1,s3[35,20]=0.3,s3[35,21]=-0.3,s3[35,22]=-0.1,s3[35,23]=0.1,s3[35,24]=0.3,s3[35,25]=-0.1,s3[35,26]=0.6,s3[35,27]=-0.5,s3[35,28]=1.0,s3[35,29]=-0.2,s3[35,30]=-0.6 s3[36,1]=0.3,s3[36,2]=-0.6,s3[36,3]=0.3,s3[36,4]=-1.0,s3[36,5]=0.4,s3[36,6]=-0.2,s3[36,7]=0.8,s3[36,8]=0.8,s3[36,9]=-0.9,s3[36,10]=0.1,s3[36,11]=0.8,s3[36,12]=-0.4,s3[36,13]=-1.0,s3[36,14]=0.6 s3[36,15]=0.8,s3[36,16]=0.6,s3[36,17]=-0.1,s3[36,18]=-0.3,s3[36,19]=0.3,s3[36,20]=-1.0,s3[36,21]=0.6,s3[36,22]=-1.2,s3[36,23]=0.8,s3[36,24]=0.6,s3[36,25]=0.3,s3[36,26]=-0.4,s3[36,27]=0.3,s3[36,28]=-0.3,s3[36,29]=-0.4,s3[36,30]=-0.5 s3[37,1]=0.5,s3[37,2]=-1.2,s3[37,3]=1.0,s3[37,4]=0.8,s3[37,5]=-0.5,s3[37,6]=0.1,s3[37,7]=-0.5,s3[37,8]=0.2,s3[37,9]=-1.1,s3[37,10]=-0.1,s3[37,11]=0.0,s3[37,12]=-0.5,s3[37,13]=-0.6,s3[37,14]=-0.2 s3[37,15]=-0.3,s3[37,16]=0.8,s3[37,17]=0.2,s3[37,18]=-0.4,s3[37,19]=-0.5,s3[37,20]=-0.1,s3[37,21]=0.5,s3[37,22]=0.2,s3[37,23]=-0.3,s3[37,24]=-0.8,s3[37,25]=0.3,s3[37,26]=-0.1,s3[37,27]=-0.4,s3[37,28]=0.2,s3[37,29]=0.7,s3[37,30]=-0.2 s3[38,1]=0.7,s3[38,2]=-1.0,s3[38,3]=0.1,s3[38,4]=-0.3,s3[38,5]=0.9,s3[38,6]=0.3,s3[38,7]=-1.1,s3[38,8]=0.7,s3[38,9]=-0.7,s3[38,10]=0.5,s3[38,11]=0.4,s3[38,12]=-0.7,s3[38,13]=-1.0,s3[38,14]=0.3 s3[38,15]=1.2,s3[38,16]=-0.4,s3[38,17]=1.2,s3[38,18]=0.4,s3[38,19]=-0.3,s3[38,20]=0.4,s3[38,21]=0.2,s3[38,22]=-0.8,s3[38,23]=1.1,s3[38,24]=0.7,s3[38,25]=-0.5,s3[38,26]=-0.2,s3[38,27]=0.6,s3[38,28]=0.6,s3[38,29]=-1.1,s3[38,30]=0.5 s3[39,1]=-0.2,s3[39,2]=-1.0,s3[39,3]=0.1,s3[39,4]=0.4,s3[39,5]=-0.5,s3[39,6]=-1.2,s3[39,7]=-0.9,s3[39,8]=-0.1,s3[39,9]=-1.1,s3[39,10]=-0.4,s3[39,11]=0.0,s3[39,12]=0.4,s3[39,13]=0.9,s3[39,14]=-0.1 s3[39,15]=0.7,s3[39,16]=-0.2,s3[39,17]=0.7,s3[39,18]=0.4,s3[39,19]=-0.3,s3[39,20]=-1.0,s3[39,21]=0.1,s3[39,22]=-0.2,s3[39,23]=-0.7,s3[39,24]=-0.3,s3[39,25]=-0.3,s3[39,26]=-0.7,s3[39,27]=0.4,s3[39,28]=0.5,s3[39,29]=-0.8,s3[39,30]=0.7 s3[40,1]=0.4,s3[40,2]=0.9,s3[40,3]=-0.3,s3[40,4]=-0.3,s3[40,5]=0.3,s3[40,6]=0.9,s3[40,7]=-0.6,s3[40,8]=0.6,s3[40,9]=0.3,s3[40,10]=-0.9,s3[40,11]=0.3,s3[40,12]=0.0,s3[40,13]=-0.5,s3[40,14]=0.9 s3[40,15]=0.0,s3[40,16]=1.2,s3[40,17]=-1.1,s3[40,18]=0.9,s3[40,19]=-0.4,s3[40,20]=-0.1,s3[40,21]=1.2,s3[40,22]=-0.8,s3[40,23]=-0.4,s3[40,24]=0.6,s3[40,25]=0.7,s3[40,26]=0.0,s3[40,27]=-1.0,s3[40,28]=0.3,s3[40,29]=-0.9,s3[40,30]=0.0 s3[41,1]=-0.7,s3[41,2]=0.3,s3[41,3]=0.4,s3[41,4]=-1.2,s3[41,5]=0.5,s3[41,6]=0.3,s3[41,7]=-0.6,s3[41,8]=0.4,s3[41,9]=0.3,s3[41,10]=0.6,s3[41,11]=1.2,s3[41,12]=0.5,s3[41,13]=-0.5,s3[41,14]=0.6 s3[41,15]=-0.1,s3[41,16]=0.6,s3[41,17]=-0.9,s3[41,18]=-0.6,s3[41,19]=0.3,s3[41,20]=-0.1,s3[41,21]=-0.9,s3[41,22]=-0.3,s3[41,23]=0.0,s3[41,24]=0.1,s3[41,25]=-0.1,s3[41,26]=0.6,s3[41,27]=-0.4,s3[41,28]=-0.5,s3[41,29]=-0.7,s3[41,30]=-0.7 s3[42,1]=-0.3,s3[42,2]=-0.6,s3[42,3]=-0.5,s3[42,4]=-0.1,s3[42,5]=1.0,s3[42,6]=-0.6,s3[42,7]=-0.5,s3[42,8]=0.3,s3[42,9]=0.6,s3[42,10]=-0.2,s3[42,11]=0.3,s3[42,12]=1.0,s3[42,13]=-0.7,s3[42,14]=0.6 s3[42,15]=1.0,s3[42,16]=0.4,s3[42,17]=-0.7,s3[42,18]=1.1,s3[42,19]=0.4,s3[42,20]=0.2,s3[42,21]=0.1,s3[42,22]=-0.1,s3[42,23]=0.5,s3[42,24]=-0.5,s3[42,25]=0.1,s3[42,26]=-0.7,s3[42,27]=0.4,s3[42,28]=-0.4,s3[42,29]=-0.9,s3[42,30]=0.3 s3[43,1]=0.1,s3[43,2]=-0.6,s3[43,3]=0.5,s3[43,4]=-0.4,s3[43,5]=0.6,s3[43,6]=0.3,s3[43,7]=-0.3,s3[43,8]=0.8,s3[43,9]=-1.2,s3[43,10]=-1.1,s3[43,11]=0.3,s3[43,12]=0.6,s3[43,13]=-0.6,s3[43,14]=0.0 s3[43,15]=0.1,s3[43,16]=-0.8,s3[43,17]=-0.9,s3[43,18]=-0.6,s3[43,19]=0.3,s3[43,20]=-0.6,s3[43,21]=-0.6,s3[43,22]=0.9,s3[43,23]=-0.5,s3[43,24]=1.1,s3[43,25]=-0.2,s3[43,26]=0.0,s3[43,27]=0.7,s3[43,28]=-1.2,s3[43,29]=-1.1,s3[43,30]=-0.4 s3[44,1]=1.1,s3[44,2]=0.1,s3[44,3]=-0.3,s3[44,4]=0.2,s3[44,5]=-0.6,s3[44,6]=0.1,s3[44,7]=0.0,s3[44,8]=0.0,s3[44,9]=-1.1,s3[44,10]=-1.0,s3[44,11]=0.9,s3[44,12]=0.0,s3[44,13]=-0.3,s3[44,14]=0.9 s3[44,15]=-0.2,s3[44,16]=0.1,s3[44,17]=-0.7,s3[44,18]=0.7,s3[44,19]=-0.5,s3[44,20]=0.2,s3[44,21]=0.2,s3[44,22]=-0.6,s3[44,23]=-0.5,s3[44,24]=0.9,s3[44,25]=-0.2,s3[44,26]=0.9,s3[44,27]=-0.7,s3[44,28]=-0.8,s3[44,29]=0.5,s3[44,30]=-0.8 s3[45,1]=-0.2,s3[45,2]=-0.5,s3[45,3]=0.9,s3[45,4]=-0.2,s3[45,5]=-0.7,s3[45,6]=-0.6,s3[45,7]=-0.9,s3[45,8]=0.0,s3[45,9]=-0.5,s3[45,10]=-0.2,s3[45,11]=-0.1,s3[45,12]=-0.8,s3[45,13]=-0.2,s3[45,14]=0.4 s3[45,15]=0.3,s3[45,16]=-0.3,s3[45,17]=1.1,s3[45,18]=0.3,s3[45,19]=-0.1,s3[45,20]=-0.2,s3[45,21]=-0.3,s3[45,22]=0.6,s3[45,23]=0.2,s3[45,24]=0.6,s3[45,25]=0.0,s3[45,26]=-0.6,s3[45,27]=-1.0,s3[45,28]=0.6,s3[45,29]=0.9,s3[45,30]=0.0 s3[46,1]=0.1,s3[46,2]=-0.6,s3[46,3]=0.3,s3[46,4]=-0.1,s3[46,5]=0.0,s3[46,6]=0.3,s3[46,7]=1.2,s3[46,8]=0.0,s3[46,9]=-0.1,s3[46,10]=1.2,s3[46,11]=-1.2,s3[46,12]=1.0,s3[46,13]=-0.4,s3[46,14]=-0.1 s3[46,15]=1.1,s3[46,16]=-0.1,s3[46,17]=0.6,s3[46,18]=-1.1,s3[46,19]=-0.6,s3[46,20]=1.1,s3[46,21]=0.3,s3[46,22]=0.7,s3[46,23]=-0.7,s3[46,24]=1.2,s3[46,25]=1.1,s3[46,26]=-0.5,s3[46,27]=-0.1,s3[46,28]=0.1,s3[46,29]=-1.0,s3[46,30]=-0.4 s3[47,1]=-0.6,s3[47,2]=-1.2,s3[47,3]=-1.0,s3[47,4]=-0.4,s3[47,5]=0.9,s3[47,6]=-0.2,s3[47,7]=-0.7,s3[47,8]=-0.2,s3[47,9]=0.6,s3[47,10]=0.0,s3[47,11]=0.3,s3[47,12]=0.4,s3[47,13]=0.0,s3[47,14]=-0.9 s3[47,15]=-0.1,s3[47,16]=0.3,s3[47,17]=0.0,s3[47,18]=-0.4,s3[47,19]=-0.1,s3[47,20]=-0.3,s3[47,21]=-0.4,s3[47,22]=-0.6,s3[47,23]=-1.1,s3[47,24]=-0.5,s3[47,25]=-1.1,s3[47,26]=1.2,s3[47,27]=0.0,s3[47,28]=0.1,s3[47,29]=0.7,s3[47,30]=0.4 s3[48,1]=-0.4,s3[48,2]=-0.9,s3[48,3]=-1.0,s3[48,4]=-0.4,s3[48,5]=0.0,s3[48,6]=-0.1,s3[48,7]=-0.8,s3[48,8]=-0.9,s3[48,9]=0.3,s3[48,10]=0.0,s3[48,11]=0.8,s3[48,12]=-0.3,s3[48,13]=-0.7,s3[48,14]=0.4 s3[48,15]=-0.9,s3[48,16]=-0.9,s3[48,17]=0.2,s3[48,18]=-0.6,s3[48,19]=1.2,s3[48,20]=0.7,s3[48,21]=0.1,s3[48,22]=0.6,s3[48,23]=0.0,s3[48,24]=-0.1,s3[48,25]=0.3,s3[48,26]=-0.5,s3[48,27]=-0.7,s3[48,28]=0.7,s3[48,29]=-0.7,s3[48,30]=-1.1 s3[49,1]=-0.9,s3[49,2]=-1.1,s3[49,3]=0.0,s3[49,4]=0.2,s3[49,5]=-0.9,s3[49,6]=-1.0,s3[49,7]=0.8,s3[49,8]=-0.3,s3[49,9]=-1.0,s3[49,10]=-1.0,s3[49,11]=-0.9,s3[49,12]=0.3,s3[49,13]=0.0,s3[49,14]=-0.4 s3[49,15]=-0.1,s3[49,16]=0.0,s3[49,17]=0.2,s3[49,18]=-0.4,s3[49,19]=0.1,s3[49,20]=0.5,s3[49,21]=1.1,s3[49,22]=1.0,s3[49,23]=-0.4,s3[49,24]=0.4,s3[49,25]=-0.5,s3[49,26]=0.9,s3[49,27]=0.0,s3[49,28]=0.4,s3[49,29]=0.9,s3[49,30]=-0.4 s3[50,1]=0.2,s3[50,2]=0.7,s3[50,3]=-0.2,s3[50,4]=-1.0,s3[50,5]=0.3,s3[50,6]=0.7,s3[50,7]=-0.3,s3[50,8]=0.5,s3[50,9]=0.7,s3[50,10]=-0.7,s3[50,11]=-0.1,s3[50,12]=0.1,s3[50,13]=0.5,s3[50,14]=0.6 s3[50,15]=-0.2,s3[50,16]=-0.4,s3[50,17]=-1.2,s3[50,18]=1.1,s3[50,19]=-0.3,s3[50,20]=0.9,s3[50,21]=-0.1,s3[50,22]=0.2,s3[50,23]=-0.7,s3[50,24]=0.3,s3[50,25]=-0.8,s3[50,26]=-0.5,s3[50,27]=0.5,s3[50,28]=1.2,s3[50,29]=-1.0,s3[50,30]=0.9 so[0,1]=-1.2,so[0,2]=-0.7,so[0,3]=0.9,so[0,4]=0.5,so[0,5]=0.9,so[0,6]=-0.1,so[0,7]=-0.2,so[0,8]=-0.5,so[0,9]=-1.1,so[0,10]=0.5,so[0,11]=-1.0,so[0,12]=1.0,so[0,13]=-0.8,so[0,14]=0.6 so[0,15]=0.6,so[0,16]=1.2,so[0,17]=-0.1,so[0,18]=1.1,so[0,19]=1.1,so[0,20]=0.6,so[0,21]=0.3,so[0,22]=0.6,so[0,23]=-1.1,so[0,24]=-0.7,so[0,25]=-0.1,so[0,26]=-1.0,so[0,27]=-0.2,so[0,28]=-0.2,so[0,29]=-0.1,so[0,30]=0.1 so[1,1]=1.0,so[1,2]=-1.1,so[1,3]=-0.6,so[1,4]=-1.0,so[1,5]=0.2,so[1,6]=0.4,so[1,7]=1.0,so[1,8]=0.8,so[1,9]=0.5,so[1,10]=-0.8,so[1,11]=0.1,so[1,12]=-0.1,so[1,13]=-1.2,so[1,14]=-0.9 so[1,15]=0.3,so[1,16]=1.0,so[1,17]=-0.9,so[1,18]=-0.5,so[1,19]=1.1,so[1,20]=1.0,so[1,21]=0.1,so[1,22]=-1.0,so[1,23]=1.0,so[1,24]=-0.9,so[1,25]=-0.4,so[1,26]=-0.6,so[1,27]=0.3,so[1,28]=-0.6,so[1,29]=0.1,so[1,30]=0.7 so[2,1]=-1.0,so[2,2]=-0.3,so[2,3]=0.2,so[2,4]=-0.9,so[2,5]=0.7,so[2,6]=-0.1,so[2,7]=0.3,so[2,8]=1.1,so[2,9]=-0.8,so[2,10]=-0.5,so[2,11]=-1.1,so[2,12]=1.2,so[2,13]=-1.0,so[2,14]=-0.6 so[2,15]=0.6,so[2,16]=1.2,so[2,17]=-0.1,so[2,18]=0.5,so[2,19]=0.5,so[2,20]=0.8,so[2,21]=-1.2,so[2,22]=-0.8,so[2,23]=-1.1,so[2,24]=1.1,so[2,25]=0.7,so[2,26]=0.5,so[2,27]=0.0,so[2,28]=-1.1,so[2,29]=-0.5,so[2,30]=0.6 so[3,1]=-0.8,so[3,2]=-0.5,so[3,3]=0.5,so[3,4]=0.2,so[3,5]=0.2,so[3,6]=-1.1,so[3,7]=-0.8,so[3,8]=-1.0,so[3,9]=-1.1,so[3,10]=0.4,so[3,11]=-1.0,so[3,12]=-0.3,so[3,13]=0.6,so[3,14]=1.1 so[3,15]=0.7,so[3,16]=0.4,so[3,17]=0.1,so[3,18]=1.0,so[3,19]=1.0,so[3,20]=-0.7,so[3,21]=1.1,so[3,22]=-1.0,so[3,23]=-0.9,so[3,24]=-0.9,so[3,25]=-0.7,so[3,26]=-0.3,so[3,27]=-0.2,so[3,28]=-0.3,so[3,29]=-1.0,so[3,30]=0.1 so[4,1]=-0.3,so[4,2]=-0.9,so[4,3]=1.2,so[4,4]=0.1,so[4,5]=1.1,so[4,6]=-1.1,so[4,7]=-0.1,so[4,8]=0.4,so[4,9]=0.4,so[4,10]=-0.6,so[4,11]=0.8,so[4,12]=-0.2,so[4,13]=-0.1,so[4,14]=1.0 so[4,15]=-1.1,so[4,16]=0.3,so[4,17]=-0.5,so[4,18]=-1.0,so[4,19]=1.2,so[4,20]=0.1,so[4,21]=-0.7,so[4,22]=0.1,so[4,23]=-0.3,so[4,24]=0.1,so[4,25]=0.6,so[4,26]=0.6,so[4,27]=0.7,so[4,28]=1.1,so[4,29]=-0.8,so[4,30]=-0.4 so[5,1]=-1.1,so[5,2]=0.1,so[5,3]=0.9,so[5,4]=0.1,so[5,5]=0.2,so[5,6]=0.6,so[5,7]=0.2,so[5,8]=0.0,so[5,9]=-0.2,so[5,10]=-0.2,so[5,11]=-0.3,so[5,12]=-1.1,so[5,13]=0.6,so[5,14]=0.8 so[5,15]=-0.1,so[5,16]=-0.1,so[5,17]=0.3,so[5,18]=0.2,so[5,19]=0.8,so[5,20]=-0.7,so[5,21]=0.6,so[5,22]=-1.1,so[5,23]=0.8,so[5,24]=-0.9,so[5,25]=0.1,so[5,26]=0.1,so[5,27]=-0.4,so[5,28]=0.8,so[5,29]=-0.7,so[5,30]=0.6 so[6,1]=0.7,so[6,2]=-0.2,so[6,3]=-1.2,so[6,4]=0.4,so[6,5]=0.3,so[6,6]=-1.0,so[6,7]=0.2,so[6,8]=-1.0,so[6,9]=-1.2,so[6,10]=1.2,so[6,11]=0.5,so[6,12]=0.8,so[6,13]=-1.1,so[6,14]=-0.6 so[6,15]=-0.3,so[6,16]=0.4,so[6,17]=-0.2,so[6,18]=-0.1,so[6,19]=-1.2,so[6,20]=0.1,so[6,21]=0.1,so[6,22]=0.8,so[6,23]=1.1,so[6,24]=0.5,so[6,25]=1.0,so[6,26]=0.0,so[6,27]=-0.8,so[6,28]=-0.3,so[6,29]=-0.6,so[6,30]=0.4 so[7,1]=0.3,so[7,2]=0.1,so[7,3]=0.6,so[7,4]=-0.5,so[7,5]=0.2,so[7,6]=0.5,so[7,7]=1.2,so[7,8]=0.0,so[7,9]=-0.1,so[7,10]=-1.1,so[7,11]=0.9,so[7,12]=-0.9,so[7,13]=-1.0,so[7,14]=0.0 so[7,15]=0.3,so[7,16]=-1.2,so[7,17]=0.7,so[7,18]=1.0,so[7,19]=0.9,so[7,20]=0.2,so[7,21]=-0.5,so[7,22]=-0.1,so[7,23]=0.6,so[7,24]=0.0,so[7,25]=1.1,so[7,26]=-1.2,so[7,27]=-0.8,so[7,28]=0.9,so[7,29]=1.2,so[7,30]=-0.4 so[8,1]=-0.3,so[8,2]=0.4,so[8,3]=0.3,so[8,4]=-1.1,so[8,5]=1.0,so[8,6]=0.7,so[8,7]=0.8,so[8,8]=0.2,so[8,9]=0.4,so[8,10]=-0.9,so[8,11]=0.1,so[8,12]=-0.6,so[8,13]=1.1,so[8,14]=-0.3 so[8,15]=0.2,so[8,16]=0.2,so[8,17]=-0.4,so[8,18]=0.5,so[8,19]=0.9,so[8,20]=-0.3,so[8,21]=1.0,so[8,22]=-0.7,so[8,23]=1.0,so[8,24]=-0.5,so[8,25]=0.0,so[8,26]=-1.2,so[8,27]=-0.6,so[8,28]=0.5,so[8,29]=-0.8,so[8,30]=0.5 so[9,1]=0.7,so[9,2]=0.2,so[9,3]=0.5,so[9,4]=-0.6,so[9,5]=0.4,so[9,6]=0.8,so[9,7]=1.1,so[9,8]=-0.8,so[9,9]=-1.2,so[9,10]=-1.0,so[9,11]=-0.5,so[9,12]=0.4,so[9,13]=0.8,so[9,14]=-0.1 so[9,15]=-0.2,so[9,16]=-0.5,so[9,17]=-0.6,so[9,18]=-0.4,so[9,19]=-0.3,so[9,20]=0.7,so[9,21]=0.6,so[9,22]=1.1,so[9,23]=0.3,so[9,24]=0.6,so[9,25]=0.0,so[9,26]=-1.2,so[9,27]=-0.5,so[9,28]=-0.9,so[9,29]=-1.1,so[9,30]=0.8 so[10,1]=-0.1,so[10,2]=-1.0,so[10,3]=-0.4,so[10,4]=-0.5,so[10,5]=1.0,so[10,6]=-0.6,so[10,7]=1.1,so[10,8]=1.2,so[10,9]=-0.9,so[10,10]=-0.4,so[10,11]=-1.2,so[10,12]=0.7,so[10,13]=-0.1,so[10,14]=0.8 so[10,15]=-0.5,so[10,16]=-0.8,so[10,17]=-0.9,so[10,18]=-0.9,so[10,19]=0.6,so[10,20]=1.1,so[10,21]=0.0,so[10,22]=1.0,so[10,23]=0.3,so[10,24]=-0.9,so[10,25]=0.5,so[10,26]=-1.1,so[10,27]=-0.3,so[10,28]=-0.8,so[10,29]=-0.9,so[10,30]=-0.6 so[11,1]=0.4,so[11,2]=-1.0,so[11,3]=0.8,so[11,4]=1.0,so[11,5]=1.1,so[11,6]=-0.5,so[11,7]=-0.1,so[11,8]=-0.8,so[11,9]=-1.1,so[11,10]=-0.4,so[11,11]=0.5,so[11,12]=-0.6,so[11,13]=-0.2,so[11,14]=-0.5 so[11,15]=-0.3,so[11,16]=-0.7,so[11,17]=0.3,so[11,18]=1.2,so[11,19]=1.2,so[11,20]=0.1,so[11,21]=1.2,so[11,22]=0.1,so[11,23]=-0.5,so[11,24]=0.3,so[11,25]=-0.9,so[11,26]=0.2,so[11,27]=-1.2,so[11,28]=-0.8,so[11,29]=0.3,so[11,30]=1.0 so[12,1]=-0.3,so[12,2]=-0.4,so[12,3]=-0.2,so[12,4]=-0.8,so[12,5]=-0.2,so[12,6]=-0.1,so[12,7]=-0.4,so[12,8]=0.2,so[12,9]=0.3,so[12,10]=0.4,so[12,11]=0.8,so[12,12]=1.0,so[12,13]=-0.5,so[12,14]=-0.5,so[12,15]=-0.7 so[12,16]=-1.1,so[12,17]=-0.1,so[12,18]=-0.1,so[12,19]=-1.1,so[12,20]=0.5,so[12,21]=-0.2,so[12,22]=0.0,so[12,23]=-0.5,so[12,24]=-1.0,so[12,25]=-0.6,so[12,26]=1.1,so[12,27]=0.2,so[12,28]=-0.1,so[12,29]=-0.6,so[12,30]=0.3 so[13,1]=-0.5,so[13,2]=0.2,so[13,3]=0.3,so[13,4]=0.2,so[13,5]=-0.5,so[13,6]=-1.0,so[13,7]=1.1,so[13,8]=0.6,so[13,9]=-0.1,so[13,10]=-1.2,so[13,11]=0.3,so[13,12]=-0.9,so[13,13]=-1.2,so[13,14]=-1.2,so[13,15]=0.7 so[13,16]=0.1,so[13,17]=1.1,so[13,18]=0.3,so[13,19]=1.1,so[13,20]=-0.9,so[13,21]=-0.3,so[13,22]=1.0,so[13,23]=0.4,so[13,24]=1.0,so[13,25]=0.8,so[13,26]=-0.4,so[13,27]=0.7,so[13,28]=0.1,so[13,29]=-0.2,so[13,30]=-0.5 so[14,1]=0.4,so[14,2]=0.7,so[14,3]=0.9,so[14,4]=0.3,so[14,5]=-1.1,so[14,6]=0.9,so[14,7]=0.5,so[14,8]=0.7,so[14,9]=0.9,so[14,10]=-1.2,so[14,11]=-0.2,so[14,12]=-0.8,so[14,13]=-0.9,so[14,14]=0.7,so[14,15]=0.6 so[14,16]=0.1,so[14,17]=-1.1,so[14,18]=-0.5,so[14,19]=-0.3,so[14,20]=0.6,so[14,21]=0.5,so[14,22]=1.2,so[14,23]=-1.0,so[14,24]=0.0,so[14,25]=0.9,so[14,26]=-1.1,so[14,27]=-0.2,so[14,28]=0.2,so[14,29]=-0.7,so[14,30]=0.9 so[15,1]=0.4,so[15,2]=0.5,so[15,3]=-0.6,so[15,4]=0.3,so[15,5]=-0.1,so[15,6]=-0.6,so[15,7]=1.0,so[15,8]=0.2,so[15,9]=0.7,so[15,10]=-0.3,so[15,11]=-0.9,so[15,12]=1.1,so[15,13]=1.2,so[15,14]=0.5,so[15,15]=0.1 so[15,16]=-0.7,so[15,17]=0.6,so[15,18]=0.4,so[15,19]=-1.1,so[15,20]=-1.1,so[15,21]=1.0,so[15,22]=-0.8,so[15,23]=-0.8,so[15,24]=0.6,so[15,25]=-0.5,so[15,26]=-0.7,so[15,27]=-0.6,so[15,28]=0.9,so[15,29]=0.9,so[15,30]=0.4 so[16,1]=0.3,so[16,2]=-1.1,so[16,3]=0.4,so[16,4]=0.2,so[16,5]=-0.5,so[16,6]=0.9,so[16,7]=-0.2,so[16,8]=-1.1,so[16,9]=0.9,so[16,10]=-0.7,so[16,11]=-1.0,so[16,12]=-1.0,so[16,13]=1.2,so[16,14]=0.6,so[16,15]=0.9 so[16,16]=0.0,so[16,17]=-0.9,so[16,18]=-0.9,so[16,19]=0.0,so[16,20]=-0.3,so[16,21]=-1.1,so[16,22]=1.1,so[16,23]=0.2,so[16,24]=0.1,so[16,25]=0.2,so[16,26]=-0.7,so[16,27]=-0.1,so[16,28]=-1.0,so[16,29]=0.3,so[16,30]=-0.7 so[17,1]=-1.1,so[17,2]=-0.2,so[17,3]=-0.5,so[17,4]=1.0,so[17,5]=0.6,so[17,6]=0.0,so[17,7]=0.4,so[17,8]=-1.2,so[17,9]=-1.1,so[17,10]=0.1,so[17,11]=0.4,so[17,12]=1.2,so[17,13]=-1.0,so[17,14]=-0.1,so[17,15]=0.8 so[17,16]=0.1,so[17,17]=0.4,so[17,18]=-0.2,so[17,19]=0.7,so[17,20]=-0.8,so[17,21]=-0.9,so[17,22]=0.9,so[17,23]=-0.6,so[17,24]=0.8,so[17,25]=-0.5,so[17,26]=0.4,so[17,27]=0.9,so[17,28]=-0.5,so[17,29]=0.3,so[17,30]=-0.1 so[18,1]=-0.4,so[18,2]=-0.2,so[18,3]=0.7,so[18,4]=1.2,so[18,5]=0.8,so[18,6]=-1.2,so[18,7]=1.0,so[18,8]=-0.9,so[18,9]=-0.9,so[18,10]=-1.1,so[18,11]=-0.7,so[18,12]=0.0,so[18,13]=0.2,so[18,14]=-0.5,so[18,15]=0.8 so[18,16]=-1.0,so[18,17]=-0.9,so[18,18]=0.3,so[18,19]=-0.4,so[18,20]=1.2,so[18,21]=1.2,so[18,22]=1.2,so[18,23]=-0.3,so[18,24]=0.3,so[18,25]=0.5,so[18,26]=-0.5,so[18,27]=1.0,so[18,28]=0.5,so[18,29]=-0.9,so[18,30]=0.1 so[19,1]=-0.8,so[19,2]=0.9,so[19,3]=0.2,so[19,4]=-0.8,so[19,5]=0.4,so[19,6]=-0.8,so[19,7]=0.6,so[19,8]=0.1,so[19,9]=1.1,so[19,10]=0.6,so[19,11]=0.4,so[19,12]=0.8,so[19,13]=-0.2,so[19,14]=-0.6,so[19,15]=0.3 so[19,16]=-1.0,so[19,17]=-0.9,so[19,18]=-1.1,so[19,19]=-0.5,so[19,20]=0.9,so[19,21]=-0.8,so[19,22]=-1.2,so[19,23]=-1.2,so[19,24]=-0.9,so[19,25]=-1.2,so[19,26]=-0.2,so[19,27]=1.2,so[19,28]=0.8,so[19,29]=0.5,so[19,30]=0.7 so[20,1]=0.7,so[20,2]=-1.0,so[20,3]=-0.3,so[20,4]=0.5,so[20,5]=0.1,so[20,6]=0.3,so[20,7]=-0.7,so[20,8]=1.1,so[20,9]=-1.2,so[20,10]=-0.3,so[20,11]=1.2,so[20,12]=1.2,so[20,13]=-0.7,so[20,14]=1.0,so[20,15]=0.8 so[20,16]=-0.5,so[20,17]=1.0,so[20,18]=-0.6,so[20,19]=0.4,so[20,20]=-1.1,so[20,21]=-0.4,so[20,22]=1.1,so[20,23]=-1.2,so[20,24]=0.7,so[20,25]=0.9,so[20,26]=1.2,so[20,27]=1.0,so[20,28]=0.1,so[20,29]=0.3,so[20,30]=-0.6 so[21,1]=-0.7,so[21,2]=0.7,so[21,3]=0.8,so[21,4]=0.2,so[21,5]=1.0,so[21,6]=-0.8,so[21,7]=0.6,so[21,8]=-1.1,so[21,9]=-0.8,so[21,10]=1.1,so[21,11]=0.0,so[21,12]=1.1,so[21,13]=0.9,so[21,14]=0.9,so[21,15]=0.9 so[21,16]=0.1,so[21,17]=-0.6,so[21,18]=0.9,so[21,19]=0.1,so[21,20]=1.2,so[21,21]=0.5,so[21,22]=1.0,so[21,23]=1.2,so[21,24]=0.4,so[21,25]=-0.5,so[21,26]=0.9,so[21,27]=-0.5,so[21,28]=-1.0,so[21,29]=-0.3,so[21,30]=0.0 so[22,1]=0.2,so[22,2]=-0.3,so[22,3]=-0.8,so[22,4]=-0.4,so[22,5]=-0.1,so[22,6]=1.1,so[22,7]=0.1,so[22,8]=1.0,so[22,9]=0.1,so[22,10]=-1.1,so[22,11]=-1.1,so[22,12]=0.0,so[22,13]=0.8,so[22,14]=-0.3,so[22,15]=-0.8 so[22,16]=-0.9,so[22,17]=-0.1,so[22,18]=-0.5,so[22,19]=-1.1,so[22,20]=1.0,so[22,21]=-0.7,so[22,22]=0.0,so[22,23]=0.3,so[22,24]=-0.6,so[22,25]=0.0,so[22,26]=0.6,so[22,27]=-0.1,so[22,28]=-1.1,so[22,29]=-0.8,so[22,30]=-0.4 so[23,1]=-1.2,so[23,2]=0.5,so[23,3]=-0.5,so[23,4]=0.0,so[23,5]=0.4,so[23,6]=0.7,so[23,7]=0.3,so[23,8]=-0.3,so[23,9]=0.5,so[23,10]=1.0,so[23,11]=-0.7,so[23,12]=0.5,so[23,13]=0.1,so[23,14]=-1.2,so[23,15]=0.2 so[23,16]=-0.3,so[23,17]=0.8,so[23,18]=0.4,so[23,19]=-0.3,so[23,20]=-0.6,so[23,21]=1.1,so[23,22]=-1.0,so[23,23]=0.2,so[23,24]=0.9,so[23,25]=-0.4,so[23,26]=1.2,so[23,27]=-0.6,so[23,28]=1.2,so[23,29]=0.5,so[23,30]=0.8 so[24,1]=-1.1,so[24,2]=0.3,so[24,3]=0.4,so[24,4]=0.5,so[24,5]=0.7,so[24,6]=0.4,so[24,7]=0.8,so[24,8]=0.4,so[24,9]=0.4,so[24,10]=-0.7,so[24,11]=-0.7,so[24,12]=0.5,so[24,13]=-1.1,so[24,14]=0.3,so[24,15]=0.6 so[24,16]=-0.6,so[24,17]=-0.2,so[24,18]=0.9,so[24,19]=-1.2,so[24,20]=-0.6,so[24,21]=0.5,so[24,22]=-0.8,so[24,23]=1.1,so[24,24]=0.3,so[24,25]=0.9,so[24,26]=1.2,so[24,27]=-0.1,so[24,28]=0.9,so[24,29]=-0.6,so[24,30]=-0.9 so[25,1]=-0.3,so[25,2]=-0.1,so[25,3]=0.2,so[25,4]=0.9,so[25,5]=1.1,so[25,6]=1.1,so[25,7]=0.0,so[25,8]=0.2,so[25,9]=0.3,so[25,10]=0.3,so[25,11]=0.6,so[25,12]=-0.9,so[25,13]=0.1,so[25,14]=-1.0,so[25,15]=0.2 so[25,16]=0.6,so[25,17]=-0.3,so[25,18]=1.2,so[25,19]=0.8,so[25,20]=0.7,so[25,21]=0.3,so[25,22]=1.2,so[25,23]=-0.6,so[25,24]=-1.2,so[25,25]=-0.1,so[25,26]=0.6,so[25,27]=0.9,so[25,28]=-1.0,so[25,29]=-1.1,so[25,30]=0.0 so[26,1]=1.1,so[26,2]=-0.1,so[26,3]=-0.4,so[26,4]=-1.2,so[26,5]=0.6,so[26,6]=0.9,so[26,7]=-1.1,so[26,8]=-1.0,so[26,9]=-0.9,so[26,10]=0.6,so[26,11]=1.1,so[26,12]=0.9,so[26,13]=0.0,so[26,14]=1.2,so[26,15]=1.2 so[26,16]=0.2,so[26,17]=-0.1,so[26,18]=0.9,so[26,19]=0.3,so[26,20]=-1.0,so[26,21]=0.0,so[26,22]=1.1,so[26,23]=-0.2,so[26,24]=0.9,so[26,25]=-1.2,so[26,26]=0.2,so[26,27]=0.8,so[26,28]=-1.2,so[26,29]=-0.9,so[26,30]=0.7 so[27,1]=-0.6,so[27,2]=-1.2,so[27,3]=0.5,so[27,4]=-0.9,so[27,5]=-1.0,so[27,6]=-0.8,so[27,7]=-0.4,so[27,8]=-0.9,so[27,9]=0.0,so[27,10]=-1.0,so[27,11]=-0.8,so[27,12]=-0.6,so[27,13]=0.3,so[27,14]=1.0,so[27,15]=-1.2 so[27,16]=-0.4,so[27,17]=-1.1,so[27,18]=-0.1,so[27,19]=1.1,so[27,20]=0.7,so[27,21]=-0.2,so[27,22]=1.0,so[27,23]=0.2,so[27,24]=0.8,so[27,25]=0.7,so[27,26]=-1.1,so[27,27]=1.2,so[27,28]=-1.0,so[27,29]=0.9,so[27,30]=-0.4 so[28,1]=-0.2,so[28,2]=-1.0,so[28,3]=0.8,so[28,4]=0.5,so[28,5]=-1.0,so[28,6]=0.6,so[28,7]=0.9,so[28,8]=-0.2,so[28,9]=0.1,so[28,10]=-1.1,so[28,11]=-1.2,so[28,12]=-0.5,so[28,13]=0.7,so[28,14]=-0.1,so[28,15]=-0.4 so[28,16]=-0.4,so[28,17]=-0.4,so[28,18]=-0.7,so[28,19]=0.9,so[28,20]=0.3,so[28,21]=-1.2,so[28,22]=-0.4,so[28,23]=-0.1,so[28,24]=1.2,so[28,25]=1.0,so[28,26]=-1.2,so[28,27]=1.2,so[28,28]=-0.8,so[28,29]=-0.5,so[28,30]=0.4 so[29,1]=-1.0,so[29,2]=-1.1,so[29,3]=0.5,so[29,4]=-0.2,so[29,5]=1.0,so[29,6]=0.0,so[29,7]=0.1,so[29,8]=1.0,so[29,9]=-0.9,so[29,10]=0.4,so[29,11]=-0.6,so[29,12]=-1.2,so[29,13]=-0.9,so[29,14]=-1.2,so[29,15]=0.9 so[29,16]=1.1,so[29,17]=0.9,so[29,18]=-0.5,so[29,19]=-0.3,so[29,20]=-1.0,so[29,21]=-0.3,so[29,22]=0.9,so[29,23]=-0.5,so[29,24]=-1.1,so[29,25]=-1.2,so[29,26]=-0.7,so[29,27]=0.7,so[29,28]=1.2,so[29,29]=1.0,so[29,30]=-0.7 so[30,1]=-1.0,so[30,2]=0.9,so[30,3]=0.4,so[30,4]=1.1,so[30,5]=-1.1,so[30,6]=-0.9,so[30,7]=0.8,so[30,8]=0.4,so[30,9]=1.1,so[30,10]=0.0,so[30,11]=-0.5,so[30,12]=-0.5,so[30,13]=-0.3,so[30,14]=-1.2,so[30,15]=0.9 so[30,16]=-1.2,so[30,17]=-0.8,so[30,18]=1.1,so[30,19]=-1.0,so[30,20]=0.7,so[30,21]=-1.0,so[30,22]=1.0,so[30,23]=0.5,so[30,24]=-0.8,so[30,25]=1.1,so[30,26]=1.2,so[30,27]=-0.1,so[30,28]=0.8,so[30,29]=-1.2,so[30,30]=-0.8 so[31,1]=0.1,so[31,2]=0.7,so[31,3]=-0.8,so[31,4]=-1.2,so[31,5]=1.2,so[31,6]=0.8,so[31,7]=-0.3,so[31,8]=0.6,so[31,9]=0.8,so[31,10]=-0.2,so[31,11]=0.9,so[31,12]=-1.1,so[31,13]=-1.0,so[31,14]=0.4,so[31,15]=1.0 so[31,16]=-0.3,so[31,17]=-0.1,so[31,18]=-1.0,so[31,19]=0.0,so[31,20]=0.8,so[31,21]=-0.9,so[31,22]=-0.4,so[31,23]=-0.5,so[31,24]=-0.1,so[31,25]=0.7,so[31,26]=0.1,so[31,27]=0.7,so[31,28]=-0.5,so[31,29]=-0.3,so[31,30]=-1.0 so[32,1]=1.1,so[32,2]=-0.6,so[32,3]=-1.1,so[32,4]=-0.2,so[32,5]=-0.7,so[32,6]=0.7,so[32,7]=0.3,so[32,8]=0.9,so[32,9]=-0.4,so[32,10]=-0.4,so[32,11]=-0.3,so[32,12]=-0.7,so[32,13]=0.7,so[32,14]=0.0,so[32,15]=-0.8 so[32,16]=0.7,so[32,17]=0.1,so[32,18]=-1.0,so[32,19]=-0.5,so[32,20]=0.2,so[32,21]=-0.6,so[32,22]=0.3,so[32,23]=0.8,so[32,24]=-0.3,so[32,25]=0.7,so[32,26]=-0.1,so[32,27]=1.1,so[32,28]=0.8,so[32,29]=0.7,so[32,30]=-0.2 so[33,1]=0.9,so[33,2]=1.1,so[33,3]=0.8,so[33,4]=-0.7,so[33,5]=-0.5,so[33,6]=0.6,so[33,7]=-0.8,so[33,8]=0.3,so[33,9]=1.0,so[33,10]=-0.7,so[33,11]=0.5,so[33,12]=0.7,so[33,13]=0.6,so[33,14]=0.5,so[33,15]=0.5,so[33,16]=-1.0,so[33,17]=0.5,so[33,18]=-0.5,so[33,19]=-1.1,so[33,20]=-0.5,so[33,21]=0.7,so[33,22]=0.9,so[33,23]=-0.2,so[33,24]=-1.0,so[33,25]=1.2,so[33,26]=1.2,so[33,27]=1.2,so[33,28]=0.7,so[33,29]=-0.4,so[33,30]=-1.0 so[34,1]=-0.9,so[34,2]=-0.6,so[34,3]=-0.9,so[34,4]=1.0,so[34,5]=-0.9,so[34,6]=0.8,so[34,7]=1.1,so[34,8]=-1.2,so[34,9]=0.4,so[34,10]=-0.8,so[34,11]=1.0,so[34,12]=-0.4,so[34,13]=-1.1,so[34,14]=-1.1,so[34,15]=0.4,so[34,16]=-0.3,so[34,17]=0.3,so[34,18]=-0.7,so[34,19]=0.1,so[34,20]=0.0,so[34,21]=0.0,so[34,22]=-0.2,so[34,23]=0.6,so[34,24]=0.3,so[34,25]=0.9,so[34,26]=1.0,so[34,27]=0.8,so[34,28]=1.1,so[34,29]=-1.1,so[34,30]=0.2 so[35,1]=-0.3,so[35,2]=-1.1,so[35,3]=0.1,so[35,4]=0.9,so[35,5]=0.0,so[35,6]=-0.2,so[35,7]=-1.1,so[35,8]=-0.4,so[35,9]=0.9,so[35,10]=0.8,so[35,11]=0.3,so[35,12]=1.2,so[35,13]=0.5,so[35,14]=0.4,so[35,15]=0.1,so[35,16]=0.1,so[35,17]=-0.1,so[35,18]=-0.9,so[35,19]=1.1,so[35,20]=0.3,so[35,21]=0.1,so[35,22]=0.1,so[35,23]=0.4,so[35,24]=0.8,so[35,25]=-0.4,so[35,26]=-1.0,so[35,27]=0.0,so[35,28]=1.0,so[35,29]=0.0,so[35,30]=-0.4 so[36,1]=0.3,so[36,2]=0.6,so[36,3]=0.5,so[36,4]=-0.9,so[36,5]=-0.6,so[36,6]=-1.0,so[36,7]=0.6,so[36,8]=1.1,so[36,9]=-1.2,so[36,10]=-1.1,so[36,11]=-0.1,so[36,12]=0.9,so[36,13]=0.8,so[36,14]=1.1,so[36,15]=0.3,so[36,16]=0.0,so[36,17]=-0.2,so[36,18]=0.8,so[36,19]=0.0,so[36,20]=1.0,so[36,21]=0.1,so[36,22]=0.0,so[36,23]=0.1,so[36,24]=-0.9,so[36,25]=1.0,so[36,26]=-0.1,so[36,27]=-0.6,so[36,28]=-0.7,so[36,29]=-0.2,so[36,30]=1.2 so[37,1]=0.1,so[37,2]=-0.4,so[37,3]=-0.3,so[37,4]=0.7,so[37,5]=-0.7,so[37,6]=-0.2,so[37,7]=0.3,so[37,8]=-1.2,so[37,9]=1.0,so[37,10]=-0.3,so[37,11]=0.4,so[37,12]=-0.3,so[37,13]=-0.7,so[37,14]=0.0,so[37,15]=0.4,so[37,16]=0.5,so[37,17]=0.9,so[37,18]=-0.7,so[37,19]=0.8,so[37,20]=-0.8,so[37,21]=-0.4,so[37,22]=-0.4,so[37,23]=-0.4,so[37,24]=0.8,so[37,25]=1.2,so[37,26]=-1.1,so[37,27]=-0.4,so[37,28]=0.6,so[37,29]=-0.4,so[37,30]=-0.7 so[38,1]=-0.3,so[38,2]=0.7,so[38,3]=0.0,so[38,4]=-0.1,so[38,5]=0.3,so[38,6]=0.3,so[38,7]=0.8,so[38,8]=-0.9,so[38,9]=0.4,so[38,10]=-0.8,so[38,11]=0.4,so[38,12]=-0.3,so[38,13]=-0.2,so[38,14]=-0.7,so[38,15]=0.5,so[38,16]=0.8,so[38,17]=-1.2,so[38,18]=-0.9,so[38,19]=1.0,so[38,20]=0.9,so[38,21]=-0.3,so[38,22]=0.4,so[38,23]=1.1,so[38,24]=-1.2,so[38,25]=-1.0,so[38,26]=0.2,so[38,27]=-1.0,so[38,28]=0.2,so[38,29]=-0.5,so[38,30]=1.1 so[39,1]=-1.1,so[39,2]=0.8,so[39,3]=0.8,so[39,4]=-0.4,so[39,5]=-0.6,so[39,6]=0.6,so[39,7]=-1.2,so[39,8]=-1.2,so[39,9]=0.6,so[39,10]=0.8,so[39,11]=-0.8,so[39,12]=-0.9,so[39,13]=0.0,so[39,14]=1.0,so[39,15]=0.3,so[39,16]=-0.1,so[39,17]=0.2,so[39,18]=1.2,so[39,19]=0.5,so[39,20]=0.9,so[39,21]=0.3,so[39,22]=0.6,so[39,23]=-0.2,so[39,24]=0.8,so[39,25]=-1.2,so[39,26]=-0.9,so[39,27]=-0.1,so[39,28]=-0.9,so[39,29]=-0.2,so[39,30]=0.6 so[40,1]=0.0,so[40,2]=0.3,so[40,3]=-1.0,so[40,4]=1.1,so[40,5]=-0.7,so[40,6]=-1.0,so[40,7]=-0.3,so[40,8]=0.3,so[40,9]=0.2,so[40,10]=-1.2,so[40,11]=-0.1,so[40,12]=0.0,so[40,13]=0.9,so[40,14]=0.7,so[40,15]=0.9,so[40,16]=-0.4,so[40,17]=0.1,so[40,18]=-0.5,so[40,19]=-1.0,so[40,20]=-0.7,so[40,21]=0.1,so[40,22]=-1.1,so[40,23]=-0.8,so[40,24]=-1.0,so[40,25]=-0.8,so[40,26]=1.2,so[40,27]=0.2,so[40,28]=1.0,so[40,29]=-0.6,so[40,30]=-1.0 so[41,1]=0.8,so[41,2]=-0.5,so[41,3]=0.9,so[41,4]=-1.1,so[41,5]=1.1,so[41,6]=-1.2,so[41,7]=-1.1,so[41,8]=-0.8,so[41,9]=0.1,so[41,10]=-0.4,so[41,11]=0.0,so[41,12]=0.5,so[41,13]=0.2,so[41,14]=-0.5,so[41,15]=-0.5,so[41,16]=1.0,so[41,17]=-0.7,so[41,18]=0.4,so[41,19]=1.2,so[41,20]=0.1,so[41,21]=0.8,so[41,22]=-0.8,so[41,23]=-0.4,so[41,24]=1.0,so[41,25]=-0.9,so[41,26]=-0.4,so[41,27]=-0.6,so[41,28]=0.3,so[41,29]=-0.8,so[41,30]=-0.3 so[42,1]=1.2,so[42,2]=-0.9,so[42,3]=0.0,so[42,4]=-0.4,so[42,5]=-1.1,so[42,6]=0.3,so[42,7]=-0.5,so[42,8]=0.4,so[42,9]=0.5,so[42,10]=0.3,so[42,11]=-1.0,so[42,12]=1.0,so[42,13]=0.4,so[42,14]=1.0,so[42,15]=0.7,so[42,16]=-0.7,so[42,17]=0.5,so[42,18]=0.6,so[42,19]=0.4,so[42,20]=0.6,so[42,21]=-0.2,so[42,22]=-0.9,so[42,23]=1.1,so[42,24]=-0.4,so[42,25]=-0.9,so[42,26]=0.5,so[42,27]=-0.4,so[42,28]=-0.5,so[42,29]=0.3,so[42,30]=-0.1 so[43,1]=1.0,so[43,2]=0.5,so[43,3]=-0.4,so[43,4]=-0.9,so[43,5]=0.8,so[43,6]=1.1,so[43,7]=-1.1,so[43,8]=-0.2,so[43,9]=0.6,so[43,10]=0.9,so[43,11]=-0.3,so[43,12]=0.4,so[43,13]=1.1,so[43,14]=1.0,so[43,15]=0.2,so[43,16]=-0.7,so[43,17]=-0.2,so[43,18]=0.8,so[43,19]=-1.0,so[43,20]=0.5,so[43,21]=1.1,so[43,22]=0.6,so[43,23]=0.1,so[43,24]=0.6,so[43,25]=-0.3,so[43,26]=1.0,so[43,27]=-0.2,so[43,28]=-1.0,so[43,29]=0.7,so[43,30]=-0.8 so[44,1]=-0.5,so[44,2]=-1.2,so[44,3]=0.3,so[44,4]=-1.2,so[44,5]=0.3,so[44,6]=-0.5,so[44,7]=1.2,so[44,8]=-1.0,so[44,9]=-0.4,so[44,10]=-0.5,so[44,11]=-1.2,so[44,12]=0.8,so[44,13]=1.2,so[44,14]=-0.5,so[44,15]=1.1,so[44,16]=0.4,so[44,17]=0.7,so[44,18]=0.9,so[44,19]=-0.9,so[44,20]=-0.9,so[44,21]=0.5,so[44,22]=-1.1,so[44,23]=0.4,so[44,24]=0.4,so[44,25]=0.5,so[44,26]=-0.1,so[44,27]=-1.2,so[44,28]=0.2,so[44,29]=-0.8,so[44,30]=-0.6 so[45,1]=0.0,so[45,2]=0.1,so[45,3]=1.2,so[45,4]=-0.4,so[45,5]=0.5,so[45,6]=0.4,so[45,7]=-1.1,so[45,8]=0.1,so[45,9]=-0.2,so[45,10]=0.0,so[45,11]=-1.1,so[45,12]=0.4,so[45,13]=0.7,so[45,14]=0.3,so[45,15]=-1.1,so[45,16]=0.5,so[45,17]=-1.2,so[45,18]=-1.0,so[45,19]=-1.1,so[45,20]=-1.2,so[45,21]=0.2,so[45,22]=0.8,so[45,23]=0.1,so[45,24]=0.0,so[45,25]=0.3,so[45,26]=0.5,so[45,27]=0.6,so[45,28]=0.2,so[45,29]=-0.7,so[45,30]=0.4 so[46,1]=1.2,so[46,2]=0.0,so[46,3]=0.7,so[46,4]=-0.7,so[46,5]=-0.9,so[46,6]=0.3,so[46,7]=-1.1,so[46,8]=1.1,so[46,9]=-0.2,so[46,10]=-0.4,so[46,11]=0.0,so[46,12]=-0.5,so[46,13]=0.8,so[46,14]=-1.2,so[46,15]=-1.1,so[46,16]=-0.2,so[46,17]=-0.5,so[46,18]=-0.1,so[46,19]=0.6,so[46,20]=-0.6,so[46,21]=-0.5,so[46,22]=0.7,so[46,23]=1.2,so[46,24]=0.8,so[46,25]=0.5,so[46,26]=0.0,so[46,27]=1.1,so[46,28]=0.8,so[46,29]=0.4,so[46,30]=-0.9 so[47,1]=-0.1,so[47,2]=-0.8,so[47,3]=0.4,so[47,4]=0.6,so[47,5]=-0.4,so[47,6]=1.1,so[47,7]=0.2,so[47,8]=-0.1,so[47,9]=-0.1,so[47,10]=1.2,so[47,11]=0.2,so[47,12]=-1.2,so[47,13]=1.1,so[47,14]=-1.2,so[47,15]=1.2,so[47,16]=-0.2,so[47,17]=0.7,so[47,18]=-0.3,so[47,19]=0.4,so[47,20]=-0.8,so[47,21]=-0.5,so[47,22]=0.4,so[47,23]=0.7,so[47,24]=0.4,so[47,25]=1.2,so[47,26]=-0.2,so[47,27]=1.0,so[47,28]=0.6,so[47,29]=0.4,so[47,30]=-0.3 so[48,1]=1.1,so[48,2]=-0.4,so[48,3]=0.4,so[48,4]=0.8,so[48,5]=0.0,so[48,6]=-0.4,so[48,7]=-1.1,so[48,8]=-1.1,so[48,9]=-0.2,so[48,10]=-1.2,so[48,11]=-0.3,so[48,12]=-0.7,so[48,13]=1.2,so[48,14]=0.4,so[48,15]=0.2,so[48,16]=0.0,so[48,17]=0.5,so[48,18]=-0.5,so[48,19]=0.9,so[48,20]=-0.9,so[48,21]=-0.5,so[48,22]=0.7,so[48,23]=0.7,so[48,24]=-1.0,so[48,25]=0.3,so[48,26]=-0.2,so[48,27]=0.2,so[48,28]=-1.0,so[48,29]=0.3,so[48,30]=-0.3 so[49,1]=1.2,so[49,2]=0.5,so[49,3]=-0.2,so[49,4]=-1.0,so[49,5]=-0.1,so[49,6]=-0.6,so[49,7]=0.3,so[49,8]=-0.1,so[49,9]=0.6,so[49,10]=-0.9,so[49,11]=-0.5,so[49,12]=-0.7,so[49,13]=0.7,so[49,14]=0.7,so[49,15]=1.1,so[49,16]=-1.2,so[49,17]=0.4,so[49,18]=-0.2,so[49,19]=-0.9,so[49,20]=0.4,so[49,21]=-0.4,so[49,22]=-0.7,so[49,23]=-0.5,so[49,24]=-1.1,so[49,25]=0.8,so[49,26]=-0.3,so[49,27]=0.9,so[49,28]=-1.1,so[49,29]=-0.4,so[49,30]=0.4 so[50,1]=-0.1,so[50,2]=0.3,so[50,3]=-0.1,so[50,4]=-0.5,so[50,5]=0.0,so[50,6]=0.9,so[50,7]=-0.7,so[50,8]=-0.5,so[50,9]=-1.2,so[50,10]=-0.2,so[50,11]=-1.0,so[50,12]=1.2,so[50,13]=0.9,so[50,14]=0.4,so[50,15]=0.2,so[50,16]=-0.9,so[50,17]=0.3,so[50,18]=0.7,so[50,19]=-0.4,so[50,20]=0.7,so[50,21]=-0.4,so[50,22]=1.2,so[50,23]=-0.2,so[50,24]=-1.2,so[50,25]=0.4,so[50,26]=-0.4,so[50,27]=0.4,so[50,28]=-1.0,so[50,29]=-0.3,so[50,30]=0.6 complex i = (0,1) ; convenient variable for imaginary number int types[2] types[0] = @typeA types[1] = @typeB int liartype[2] liartype[0] = @liartypeA liartype[1] = @liartypeB bool move[2] move[0] = @moveA move[1] = @moveB complex moveamt[2] moveamt[0] = @moveamtA moveamt[1] = @moveamtB complex rotstep[2] rotstep[0] = i^(@rotAstep/90) rotstep[1] = i^(@rotBstep/90) complex skewstep[2] skewstep[0] = i^(@skewAstep/90) skewstep[1] = i^(@skewBstep/90) complex startstep[2] startstep[0] = @startAstep startstep[1] = @startBstep complex trapstep[2] trapstep[0] = @trapAstep trapstep[1] = @trapBstep float distscalecs[2] distscalecs[0] = @distscalecsA distscalecs[1] = @distscalecsB float distscalech[2] distscalech[0] = @distscalechA distscalech[1] = @distscalechB float distscalehp[2] distscalehp[0] = @distscalehpA distscalehp[1] = @distscalehpB float distscaleqd[2] distscaleqd[0] = @distscaleqdA distscaleqd[1] = @distscaleqdB float distscalela[2] distscalela[0] = @distscalelaA distscalela[1] = @distscalelaB float distscalepk[2] distscalepk[0] = @distscalepkA distscalepk[1] = @distscalepkB float distscaleli[2] distscaleli[0] = @distscaleliA distscaleli[1] = @distscaleliB float distscalez[2] distscalez[0] = @distscalezA distscalez[1] = @distscalezB float distscaletr[2] distscaletr[0] = @distscaletrA distscaletr[1] = @distscaletrB float distscalehe[2] distscalehe[0] = @distscaleheA distscalehe[1] = @distscaleheB float distscalesp[2] distscalesp[0] = @distscalespA distscalesp[1] = @distscalespB float distscaleg[2] distscaleg[0] = @distscalegA distscaleg[1] = @distscalegB float distscalesq[2] distscalesq[0] = @distscalesqA distscalesq[1] = @distscalesqB float distscales3d[2] distscales3d[0] = @distscales3dA distscales3d[1] = @distscales3dB float distscales3dode[2] distscales3dode[0] = @distscales3dodeA distscales3dode[1] = @distscales3dodeB int max_cos_iterations[2] max_cos_iterations[0] = @max_cos_iterationsA max_cos_iterations[1] = @max_cos_iterationsB int max_chip_iterations[2] max_chip_iterations[0] = @max_chip_iterationsA max_chip_iterations[1] = @max_chip_iterationsB int max_hop_iterations[2] max_hop_iterations[0] = @max_hop_iterationsA max_hop_iterations[1] = @max_hop_iterationsB int max_quad_iterations[2] max_quad_iterations[0] = @max_quad_iterationsA max_quad_iterations[1] = @max_quad_iterationsB int max_lat_iterations[2] max_lat_iterations[0] = @max_lat_iterationsA max_lat_iterations[1] = @max_lat_iterationsB int max_pk_iterations[2] max_pk_iterations[0] = @max_pk_iterationsA max_pk_iterations[1] = @max_pk_iterationsB int max_liar_iterations[2] max_liar_iterations[0] = @max_liar_iterationsA max_liar_iterations[1] = @max_liar_iterationsB int max_tr_iterations[2] max_tr_iterations[0] = @max_tr_iterationsA max_tr_iterations[1] = @max_tr_iterationsB int max_zito_iterations[2] max_zito_iterations[0] = @max_zito_iterationsA max_zito_iterations[1] = @max_zito_iterationsB int max_henon_iterations[2] max_henon_iterations[0] = @max_henon_iterationsA max_henon_iterations[1] = @max_henon_iterationsB int max_sier_iterations[2] max_sier_iterations[0] = @max_sier_iterationsA max_sier_iterations[1] = @max_sier_iterationsB int max_ginger_iterations[2] max_ginger_iterations[0] = @max_ginger_iterationsA max_ginger_iterations[1] = @max_ginger_iterationsB int max_sprott_iterations[2] max_sprott_iterations[0] = @max_sprott_iterationsA max_sprott_iterations[1] = @max_sprott_iterationsB int max_s3d_iterations[2] max_s3d_iterations[0] = @max_s3d_iterationsA max_s3d_iterations[1] = @max_s3d_iterationsB int max_s3dode_iterations[2] max_s3dode_iterations[0] = @max_s3dode_iterationsA max_s3dode_iterations[1] = @max_s3dode_iterationsB float cms[2] cms[0] = @cmsA cms[1] = @cmsB float cm[2] cm[0] = @cmA cm[1] = @cmB float chs[2] chs[0] = @chsA chs[1] = @chsB float ch1[2] ch1[0] = @ch1A ch1[1] = @ch1B float ch2[2] ch2[0] = @ch2A ch2[1] = @ch2B float ch3[2] ch3[0] = @ch3A ch3[1] = @ch3B float hs[2] hs[0] = @hsA hs[1] = @hsB float h1[2] h1[0] = @h1A h1[1] = @h1B float h2[2] h2[0] = @h2A h2[1] = @h2B float h3[2] h3[0] = @h3A h3[1] = @h3B float qs[2] qs[0] = @qsA qs[1] = @qsB float q1[2] q1[0] = @q1A q1[1] = @q1B float q2[2] q2[0] = @q2A q2[1] = @q2B float q3[2] q3[0] = @q3A q3[1] = @q3B float las[2] las[0] = @lasA las[1] = @lasB float pks[2] pks[0] = @pksA pks[1] = @pksB float pkz[2] pkz[0] = @pkzA pkz[1] = @pkzB float s3dz[2] s3dz[0] = @s3dzA s3dz[1] = @s3dzB float s3dodez[2] s3dodez[0] = @s3dodezA s3dodez[1] = @s3dodezB complex pkw[2] pkw[0] = @pkwA pkw[1] = @pkwB complex s3dw[2] s3dw[0] = @s3dwA s3dw[1] = @s3dwB complex s3dodew[2] s3dodew[0] = @s3dodewA s3dodew[1] = @s3dodewB float la1[2] la1[0] = @la1A la1[1] = @la1B float la2[2] la2[0] = @la2A la2[1] = @la2B float la3[2] la3[0] = @la3A la3[1] = @la3B float la4[2] la4[0] = @la4A la4[1] = @la4B float pk1[2] pk1[0] = @pk1A pk1[1] = @pk1B float pk2[2] pk2[0] = @pk2A pk2[1] = @pk2B float pk3[2] pk3[0] = @pk3A pk3[1] = @pk3B float pk4[2] pk4[0] = @pk4A pk4[1] = @pk4B float pk5[2] pk5[0] = @pk5A pk5[1] = @pk5B float lis[2] lis[0] = @lisA lis[1] = @lisB float li1[2] li1[0] = @li1A li1[1] = @li1B float li2[2] li2[0] = @li2A li2[1] = @li2B float li3[2] li3[0] = @li3A li3[1] = @li3B float trs[2] trs[0] = @trsA trs[1] = @trsB float tr1[2] tr1[0] = @tr1A tr1[1] = @tr1B float tr2[2] tr2[0] = @tr2A tr2[1] = @tr2B float tr3[2] tr3[0] = @tr3A tr3[1] = @tr3B float zs[2] zs[0] = @zsA zs[1] = @zsB float z[2] z[0] = @zA z[1] = @zB float hes[2] hes[0] = @hesA hes[1] = @hesB float he1[2] he1[0] = @he1A he1[1] = @he1B float sps[2] sps[0] = @spsA sps[1] = @spsB float sp1[2] sp1[0] = @sp1A sp1[1] = @sp1B float sp2[2] sp2[0] = @sp2A sp2[1] = @sp2B float sp3[2] sp3[0] = @sp3A sp3[1] = @sp3B float sp4[2] sp4[0] = @sp4A sp4[1] = @sp4B float gs[2] gs[0] = @gsA gs[1] = @gsB float sqs[2] sqs[0] = @sqsA sqs[1] = @sqsB float s3ds[2] s3ds[0] = @s3dsA s3ds[1] = @s3dsB float s3dodes[2] s3dodes[0] = @s3dodesA s3dodes[1] = @s3dodesB float sq1[2] float sq2[2] float sq3[2] float sq4[2] float sq5[2] float sq6[2] float sq7[2] float sq8[2] float sq9[2] float sq10[2] float sq11[2] float sq12[2] if @version < 1.7 sq1[0] = qd[@sqpA,1] sq1[1] = qd[@sqpB,1] sq2[0] = qd[@sqpA,2] sq2[1] = qd[@sqpB,2] sq3[0] = qd[@sqpA,3] sq3[1] = qd[@sqpB,3] sq4[0] = qd[@sqpA,4] sq4[1] = qd[@sqpB,4] sq5[0] = qd[@sqpA,5] sq5[1] = qd[@sqpB,5] sq6[0] = qd[@sqpA,6] sq6[1] = qd[@sqpB,6] sq7[0] = qd[@sqpA,7] sq7[1] = qd[@sqpB,7] sq8[0] = qd[@sqpA,8] sq8[1] = qd[@sqpB,8] sq9[0] = qd[@sqpA,9] sq9[1] = qd[@sqpB,9] sq10[0] = qd[@sqpA,10] sq10[1] = qd[@sqpB,10] sq11[0] = qd[@sqpA,11] sq11[1] = qd[@sqpB,11] sq12[0] = qd[@sqpA,12] sq12[1] = qd[@sqpB,12] else sq1[0] = qd[@sqpAn,1] sq1[1] = qd[@sqpBn,1] sq2[0] = qd[@sqpAn,2] sq2[1] = qd[@sqpBn,2] sq3[0] = qd[@sqpAn,3] sq3[1] = qd[@sqpBn,3] sq4[0] = qd[@sqpAn,4] sq4[1] = qd[@sqpBn,4] sq5[0] = qd[@sqpAn,5] sq5[1] = qd[@sqpBn,5] sq6[0] = qd[@sqpAn,6] sq6[1] = qd[@sqpBn,6] sq7[0] = qd[@sqpAn,7] sq7[1] = qd[@sqpBn,7] sq8[0] = qd[@sqpAn,8] sq8[1] = qd[@sqpBn,8] sq9[0] = qd[@sqpAn,9] sq9[1] = qd[@sqpBn,9] sq10[0] = qd[@sqpAn,10] sq10[1] = qd[@sqpBn,10] sq11[0] = qd[@sqpAn,11] sq11[1] = qd[@sqpBn,11] sq12[0] = qd[@sqpA,12] sq12[1] = qd[@sqpB,12] endif float s3d1[2] float s3d2[2] float s3d3[2] float s3d4[2] float s3d5[2] float s3d6[2] float s3d7[2] float s3d8[2] float s3d9[2] float s3d10[2] float s3d11[2] float s3d12[2] float s3d13[2] float s3d14[2] float s3d15[2] float s3d16[2] float s3d17[2] float s3d18[2] float s3d19[2] float s3d20[2] float s3d21[2] float s3d22[2] float s3d23[2] float s3d24[2] float s3d25[2] float s3d26[2] float s3d27[2] float s3d28[2] float s3d29[2] float s3d30[2] if @version < 1.7 s3d1[0] = s3[@s3dA,1] s3d1[1] = s3[@s3dB,1] s3d2[0] = s3[@s3dA,2] s3d2[1] = s3[@s3dB,2] s3d3[0] = s3[@s3dA,3] s3d3[1] = s3[@s3dB,3] s3d4[0] = s3[@s3dA,4] s3d4[1] = s3[@s3dB,4] s3d5[0] = s3[@s3dA,5] s3d5[1] = s3[@s3dB,5] s3d6[0] = s3[@s3dA,6] s3d6[1] = s3[@s3dB,6] s3d7[0] = s3[@s3dA,7] s3d7[1] = s3[@s3dB,7] s3d8[0] = s3[@s3dA,8] s3d8[1] = s3[@s3dB,8] s3d9[0] = s3[@s3dA,9] s3d9[1] = s3[@s3dB,9] s3d10[0] = s3[@s3dA,10] s3d10[1] = s3[@s3dB,10] s3d11[0] = s3[@s3dA,11] s3d11[1] = s3[@s3dB,11] s3d12[0] = s3[@s3dA,12] s3d12[1] = s3[@s3dB,12] s3d13[0] = s3[@s3dA,13] s3d13[1] = s3[@s3dB,13] s3d14[0] = s3[@s3dA,14] s3d14[1] = s3[@s3dB,14] s3d15[0] = s3[@s3dA,15] s3d15[1] = s3[@s3dB,15] s3d16[0] = s3[@s3dA,16] s3d16[1] = s3[@s3dB,16] s3d17[0] = s3[@s3dA,17] s3d17[1] = s3[@s3dB,17] s3d18[0] = s3[@s3dA,18] s3d18[1] = s3[@s3dB,18] s3d19[0] = s3[@s3dA,19] s3d19[1] = s3[@s3dB,19] s3d20[0] = s3[@s3dA,20] s3d20[1] = s3[@s3dB,20] s3d21[0] = s3[@s3dA,21] s3d21[1] = s3[@s3dB,21] s3d22[0] = s3[@s3dA,22] s3d22[1] = s3[@s3dB,22] s3d23[0] = s3[@s3dA,23] s3d23[1] = s3[@s3dB,23] s3d24[0] = s3[@s3dA,24] s3d24[1] = s3[@s3dB,24] s3d25[0] = s3[@s3dA,25] s3d25[1] = s3[@s3dB,25] s3d26[0] = s3[@s3dA,26] s3d26[1] = s3[@s3dB,26] s3d27[0] = s3[@s3dA,27] s3d27[1] = s3[@s3dB,27] s3d28[0] = s3[@s3dA,28] s3d28[1] = s3[@s3dB,28] s3d29[0] = s3[@s3dA,29] s3d29[1] = s3[@s3dB,29] s3d30[0] = s3[@s3dA,30] s3d30[1] = s3[@s3dB,30] else s3d1[0] = s3[@s3dAn,1] s3d1[1] = s3[@s3dBn,1] s3d2[0] = s3[@s3dAn,2] s3d2[1] = s3[@s3dBn,2] s3d3[0] = s3[@s3dAn,3] s3d3[1] = s3[@s3dBn,3] s3d4[0] = s3[@s3dAn,4] s3d4[1] = s3[@s3dBn,4] s3d5[0] = s3[@s3dAn,5] s3d5[1] = s3[@s3dBn,5] s3d6[0] = s3[@s3dAn,6] s3d6[1] = s3[@s3dBn,6] s3d7[0] = s3[@s3dAn,7] s3d7[1] = s3[@s3dBn,7] s3d8[0] = s3[@s3dAn,8] s3d8[1] = s3[@s3dBn,8] s3d9[0] = s3[@s3dAn,9] s3d9[1] = s3[@s3dBn,9] s3d10[0] = s3[@s3dAn,10] s3d10[1] = s3[@s3dBn,10] s3d11[0] = s3[@s3dAn,11] s3d11[1] = s3[@s3dBn,11] s3d12[0] = s3[@s3dAn,12] s3d12[1] = s3[@s3dBn,12] s3d13[0] = s3[@s3dAn,13] s3d13[1] = s3[@s3dBn,13] s3d14[0] = s3[@s3dAn,14] s3d14[1] = s3[@s3dBn,14] s3d15[0] = s3[@s3dAn,15] s3d15[1] = s3[@s3dBn,15] s3d16[0] = s3[@s3dAn,16] s3d16[1] = s3[@s3dBn,16] s3d17[0] = s3[@s3dAn,17] s3d17[1] = s3[@s3dBn,17] s3d18[0] = s3[@s3dAn,18] s3d18[1] = s3[@s3dBn,18] s3d19[0] = s3[@s3dAn,19] s3d19[1] = s3[@s3dBn,19] s3d20[0] = s3[@s3dAn,20] s3d20[1] = s3[@s3dBn,20] s3d21[0] = s3[@s3dAn,21] s3d21[1] = s3[@s3dBn,21] s3d22[0] = s3[@s3dAn,22] s3d22[1] = s3[@s3dBn,22] s3d23[0] = s3[@s3dAn,23] s3d23[1] = s3[@s3dBn,23] s3d24[0] = s3[@s3dAn,24] s3d24[1] = s3[@s3dBn,24] s3d25[0] = s3[@s3dAn,25] s3d25[1] = s3[@s3dBn,25] s3d26[0] = s3[@s3dAn,26] s3d26[1] = s3[@s3dBn,26] s3d27[0] = s3[@s3dAn,27] s3d27[1] = s3[@s3dBn,27] s3d28[0] = s3[@s3dAn,28] s3d28[1] = s3[@s3dBn,28] s3d29[0] = s3[@s3dAn,29] s3d29[1] = s3[@s3dBn,29] s3d30[0] = s3[@s3dAn,30] s3d30[1] = s3[@s3dBn,30] endif float s3dode1[2] float s3dode2[2] float s3dode3[2] float s3dode4[2] float s3dode5[2] float s3dode6[2] float s3dode7[2] float s3dode8[2] float s3dode9[2] float s3dode10[2] float s3dode11[2] float s3dode12[2] float s3dode13[2] float s3dode14[2] float s3dode15[2] float s3dode16[2] float s3dode17[2] float s3dode18[2] float s3dode19[2] float s3dode20[2] float s3dode21[2] float s3dode22[2] float s3dode23[2] float s3dode24[2] float s3dode25[2] float s3dode26[2] float s3dode27[2] float s3dode28[2] float s3dode29[2] float s3dode30[2] if @version < 1.7 s3dode1[0] = so[@s3dodeA,1] s3dode1[1] = so[@s3dodeB,1] s3dode2[0] = so[@s3dodeA,2] s3dode2[1] = so[@s3dodeB,2] s3dode3[0] = so[@s3dodeA,3] s3dode3[1] = so[@s3dodeB,3] s3dode4[0] = so[@s3dodeA,4] s3dode4[1] = so[@s3dodeB,4] s3dode5[0] = so[@s3dodeA,5] s3dode5[1] = so[@s3dodeB,5] s3dode6[0] = so[@s3dodeA,6] s3dode6[1] = so[@s3dodeB,6] s3dode7[0] = so[@s3dodeA,7] s3dode7[1] = so[@s3dodeB,7] s3dode8[0] = so[@s3dodeA,8] s3dode8[1] = so[@s3dodeB,8] s3dode9[0] = so[@s3dodeA,9] s3dode9[1] = so[@s3dodeB,9] s3dode10[0] = so[@s3dodeA,10] s3dode10[1] = so[@s3dodeB,10] s3dode11[0] = so[@s3dodeA,11] s3dode11[1] = so[@s3dodeB,11] s3dode12[0] = so[@s3dodeA,12] s3dode12[1] = so[@s3dodeB,12] s3dode13[0] = so[@s3dodeA,13] s3dode13[1] = so[@s3dodeB,13] s3dode14[0] = so[@s3dodeA,14] s3dode14[1] = so[@s3dodeB,14] s3dode15[0] = so[@s3dodeA,15] s3dode15[1] = so[@s3dodeB,15] s3dode16[0] = so[@s3dodeA,16] s3dode16[1] = so[@s3dodeB,16] s3dode17[0] = so[@s3dodeA,17] s3dode17[1] = so[@s3dodeB,17] s3dode18[0] = so[@s3dodeA,18] s3dode18[1] = so[@s3dodeB,18] s3dode19[0] = so[@s3dodeA,19] s3dode19[1] = so[@s3dodeB,19] s3dode20[0] = so[@s3dodeA,20] s3dode20[1] = so[@s3dodeB,20] s3dode21[0] = so[@s3dodeA,21] s3dode21[1] = so[@s3dodeB,21] s3dode22[0] = s3[@s3dodeA,22] s3dode22[1] = s3[@s3dodeB,22] s3dode23[0] = so[@s3dodeA,23] s3dode23[1] = so[@s3dodeB,23] s3dode24[0] = so[@s3dodeA,24] s3dode24[1] = so[@s3dodeB,24] s3dode25[0] = so[@s3dodeA,25] s3dode25[1] = so[@s3dodeB,25] s3dode26[0] = so[@s3dodeA,26] s3dode26[1] = so[@s3dodeB,26] s3dode27[0] = so[@s3dodeA,27] s3dode27[1] = so[@s3dodeB,27] s3dode28[0] = so[@s3dodeA,28] s3dode28[1] = so[@s3dodeB,28] s3dode29[0] = so[@s3dodeA,29] s3dode29[1] = so[@s3dodeB,29] s3dode30[0] = so[@s3dodeA,30] s3dode30[1] = so[@s3dodeB,30] else s3dode1[0] = so[@s3dodeAn,1] s3dode1[1] = so[@s3dodeBn,1] s3dode2[0] = so[@s3dodeAn,2] s3dode2[1] = so[@s3dodeBn,2] s3dode3[0] = so[@s3dodeAn,3] s3dode3[1] = so[@s3dodeBn,3] s3dode4[0] = so[@s3dodeAn,4] s3dode4[1] = so[@s3dodeBn,4] s3dode5[0] = so[@s3dodeAn,5] s3dode5[1] = so[@s3dodeBn,5] s3dode6[0] = so[@s3dodeAn,6] s3dode6[1] = so[@s3dodeBn,6] s3dode7[0] = so[@s3dodeAn,7] s3dode7[1] = so[@s3dodeBn,7] s3dode8[0] = so[@s3dodeAn,8] s3dode8[1] = so[@s3dodeBn,8] s3dode9[0] = so[@s3dodeAn,9] s3dode9[1] = so[@s3dodeBn,9] s3dode10[0] = so[@s3dodeAn,10] s3dode10[1] = so[@s3dodeBn,10] s3dode11[0] = so[@s3dodeAn,11] s3dode11[1] = so[@s3dodeBn,11] s3dode12[0] = so[@s3dodeAn,12] s3dode12[1] = so[@s3dodeBn,12] s3dode13[0] = so[@s3dodeAn,13] s3dode13[1] = so[@s3dodeBn,13] s3dode14[0] = so[@s3dodeAn,14] s3dode14[1] = so[@s3dodeBn,14] s3dode15[0] = so[@s3dodeAn,15] s3dode15[1] = so[@s3dodeBn,15] s3dode16[0] = so[@s3dodeAn,16] s3dode16[1] = so[@s3dodeBn,16] s3dode17[0] = so[@s3dodeAn,17] s3dode17[1] = so[@s3dodeBn,17] s3dode18[0] = so[@s3dodeAn,18] s3dode18[1] = so[@s3dodeBn,18] s3dode19[0] = so[@s3dodeAn,19] s3dode19[1] = so[@s3dodeBn,19] s3dode20[0] = so[@s3dodeAn,20] s3dode20[1] = so[@s3dodeBn,20] s3dode21[0] = so[@s3dodeAn,21] s3dode21[1] = so[@s3dodeBn,21] s3dode22[0] = s3[@s3dodeAn,22] s3dode22[1] = s3[@s3dodeBn,22] s3dode23[0] = so[@s3dodeAn,23] s3dode23[1] = so[@s3dodeBn,23] s3dode24[0] = so[@s3dodeAn,24] s3dode24[1] = so[@s3dodeBn,24] s3dode25[0] = so[@s3dodeAn,25] s3dode25[1] = so[@s3dodeBn,25] s3dode26[0] = so[@s3dodeAn,26] s3dode26[1] = so[@s3dodeBn,26] s3dode27[0] = so[@s3dodeAn,27] s3dode27[1] = so[@s3dodeBn,27] s3dode28[0] = so[@s3dodeAn,28] s3dode28[1] = so[@s3dodeBn,28] s3dode29[0] = so[@s3dodeAn,29] s3dode29[1] = so[@s3dodeBn,29] s3dode30[0] = so[@s3dodeAn,30] s3dode30[1] = so[@s3dodeBn,30] endif init: float pd = 0 float texture_dec = 0 float texture_gna = 0 float texture_tr = 0 float texture = 0 complex tz = 0 float d = 0 float distance = 0 float distances[2] complex pp[2] float px[2] float py[2] float pz[2] complex z1[2] float pxx = 0 float pyy = 0 int att_iter = 0 complex rot[2] rot[0] = i^(@angA/90) rot[1] = i^(@angB/90) complex skew[2] skew[0] = i^(@skewA/90) skew[1] = i^(@skewB/90) complex startoffset[2] startoffset[0] = @startA startoffset[1] = @startB complex trapoffset[2] trapoffset[0] = @offsetA trapoffset[1] = @offsetB float min_dist = 1e+318 if @trap_mode == 5 || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 \ || @trap_mode == 9 min_dist = 0 endif bool trapped = false float x = 0 float y = 0 complex r = 1 complex r2 = i ^ 0.411111111111 complex w = 0 complex ww = 0 float t = 0 float sum = 0.0 float freq = 1.0 float exptrap_p = 0 float exptrap_z = 1 complex f_p = 0 complex f_pi[2] float distsum = 0 float distave = 0 complex trap_z = 0 complex trap2_z = 0 complex trap_p = 0 int trap_iter = 0 int max_iter = 0 int iter = 0 bool msk = false bool trap = false bool rmask = false if @settrap == 1 msk = true trap = true elseif @settrap == 2 rmask = true trap = true endif int skip = 0 int patnum = 0 if iter == 0 if @alliter max_iter = #maxiter skip = 0 else skip = @skip if @no_of_iters != 0 max_iter = skip + @no_of_iters else max_iter = #maxiter endif endif endif int ii = 7 complex p = #pixel * @nscale * r + @noffset WHILE (ii > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 if (bx0 < 0) bx0 = bx0 + 256 endif if (by0 < 0) by0 = by0 + 256 endif float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq / 2 p = p * r2 * 2 ii = ii - 1 ENDWHILE if @transfer == 0 float xx = real(#pixel)+@fbm*(sum+1) float yy = imag(#pixel)+@fbm*(sum+1) elseif @transfer == 1 float xx = real(#pixel)*(1+@fbm*(sum+1)) float yy = imag(#pixel)*(1+@fbm*(sum+1)) elseif @transfer == 2 float xx = real(#pixel)/(1+@fbm*(sum+1)) float yy = imag(#pixel)/(1+@fbm*(sum+1)) elseif @transfer == 3 float xx = real(#pixel)+20*log(@fbm*(sum+1)) float yy = imag(#pixel)+20*log(@fbm*(sum+1)) elseif @transfer == 4 float xx = real(#pixel)+exp(@fbm*(sum+1)) float yy = imag(#pixel)+exp(@fbm*(sum+1)) elseif @transfer == 5 float xx = real(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) float yy = imag(#pixel)+(@fbm*(sum+1))*(@fbm*(sum+1)) elseif @transfer == 6 float xx = real(#pixel)+sqrt(@fbm*(sum+1)) float yy = imag(#pixel)+sqrt(@fbm*(sum+1)) elseif @transfer == 7 float xx = real(#pixel)+sin(@fbm*(sum+1)) float yy = imag(#pixel)+sin(@fbm*(sum+1)) elseif @transfer == 8 float xx = real(#pixel)+asin(@fbm*(sum+1)) float yy = imag(#pixel)+asin(@fbm*(sum+1)) elseif @transfer == 9 float xx = real(#pixel)+tan(@fbm*(sum+1)) float yy = imag(#pixel)+tan(@fbm*(sum+1)) elseif @transfer == 10 float xx = real(#pixel)+atan(@fbm*(sum+1)) float yy = imag(#pixel)+atan(@fbm*(sum+1)) else float xx = real(#pixel-#center)+(@fbm*(sum+1)) float yy = imag(#pixel-#center)+(@fbm*(sum+1)) endif p = xx + flip(yy) ; Toby's Morph code complex z2 = (0,0) complex z3 = (0,0) complex z4 = (0,0) complex z1tp = (0,0) complex z1tq = (0,0) complex qw = (0,0) complex er = (0,0) complex ty = (0,0) complex nuvar = (0,0) loop: ; Toby's Morph code complex z1t = #z if @showm if @tha2 == false qw = @nufunc(z1t-@tw)^@exp3 er = @nufunc2((z1t-@tw2)^@exp1) ty = @nufunc3((z1t-@tw3)^@exp2) if @change == "1" z1t = @nufunc(z1t-@tw)^@exp1 elseif @change == "2" z1t = qw+er elseif @change == "3" z1t = qw-er elseif @change == "4" z1t = qw*er elseif @change == "5" z1t = qw/er elseif @change == "6" z1t = qw^er elseif @change == "7" if @op == "+" z1t = qw+(er+ty) elseif @op == "-" z1t = qw+(er-ty) elseif @op == "*" z1t = qw+(er*ty) elseif @op == "/" z1t = qw+(er/ty) elseif @op == "^" z1t = qw+(er^ty) endif elseif @change == "8" if @op == "+" z1t = qw-(er+ty) elseif @op == "-" z1t = qw-(er-ty) elseif @op == "*" z1t = qw-(er*ty) elseif @op == "/" z1t = qw-(er/ty) elseif @op == "^" z1t = qw-(er^ty) endif elseif @change == "9" if @op == "+" z1t = qw*(er+ty) elseif @op == "-" z1t = qw*(er-ty) elseif @op == "*" z1t = qw*(er*ty) elseif @op == "/" z1t = qw*(er/ty) elseif @op == "^" z1t = qw*(er^ty) endif elseif @change == "10" if @op == "+" z1t = qw/(er+ty) elseif @op == "-" z1t = qw/(er-ty) elseif @op == "*" z1t = qw/(er*ty) elseif @op == "/" z1t = qw/(er/ty) elseif @op == "^" z1t = qw/(er^ty) endif elseif @change == "11" if @op == "+" z1t = qw^(er+ty) elseif @op == "-" z1t = qw^(er-ty) elseif @op == "*" z1t = qw^(er*ty) elseif @op == "/" z1t = qw^(er/ty) elseif @op == "^" z1t = qw^(er^ty) endif endif else if @zchange1 == "|z|" z2 = |z1t| elseif @zchange1 == "atan2(z)" z2 = atan2(z1t) elseif @zchange1 == "real(z)" z2 = real(z1t) elseif @zchange1 == "imag(z)" z2 = imag(z1t) endif if @zchange2 == "|z|" z3 = |z1t| elseif @zchange2 == "atan2(z)" z3 = atan2(z1t) elseif @zchange2 == "real(z)" z3 = real(z1t) elseif @zchange2 == "imag(z)" z3 = imag(z1t) endif if @zchange3 == "|z|" z4 = |z1t| elseif @zchange3 == "atan2(z)" z4 = atan2(z1t) elseif @zchange3 == "real(z)" z4 = real(z1t) elseif @zchange3 == "imag(z)" z4 = imag(z1t) endif aa = @nufunc((z1t-@tw)+@nufunc4(z2-@tw4)^@exp4) bb = @nufunc((z1t-@tw)-@nufunc4(z2-@tw4)^@exp4) cc = @nufunc4((z2-@tw4)^@exp4-@nufunc(z1t-@tw)) ff = real((z3-@tw5)^@exp5) dd = @nufunc5(ff) jj = (z4-@tw6) kk = (z1t-@tw2) oo = (z1t-@tw3) gg = @nufunc2(kk) hh = @nufunc6(jj)^@exp6 ppp = @nufunc3(oo) if @mmode == "z+|z|" nuvar = aa elseif @mmode == "z-|z|" nuvar = bb elseif @mmode == "|z|-z" nuvar = cc endif if @change == "1" z1t = nuvar^@exp1 elseif @change == "2" if @mmode2 == "z+|z|" z1t = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif elseif @change == "3" if @mmode2 == "z+|z|" z1t = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif elseif @change == "4" if @mmode2 == "z+|z|" z1t = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif elseif @change == "5" if @mmode2 == "z+|z|" z1t = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif elseif @change == "6" if @mmode2 == "z+|z|" z1t = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1t = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1t = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1t = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1t = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1t = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif elseif @change == "7" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "8" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "9" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "10" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif elseif @change == "11" if @mmode3 == "z+|z|" z1tq = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1tq = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1tq = @nufunc6(jj^@exp6-ppp)^@exp2 elseif @mmode3 == "z*|z|" z1tq = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1tq = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1tq = @nufunc6(jj^@exp6/ppp)^@exp2 endif if @mmode2 == "z+|z|" z1tp = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1tp = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1tp = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1tp = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1tp = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1tp = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1t = z1tq + z1tp elseif @op == "-" z1t = z1tq - z1tp elseif @op == "*" z1t = z1tq * z1tp elseif @op == "/" z1t = z1tq / z1tp elseif @op == "^" z1t = z1tq ^ z1tp endif endif endif endif int j = 0 complex oldf_p = 0 float oldd = 0 complex zt = 0 float x1 = 0 float y1 = 0 exptrap_z = exptrap_z + exp(-cabs(#z)) while j <= @trapnum z1[j] = z1t*(1-@weight) + p*@weight if move[j]&&iter == 0 trapoffset[j] = trapoffset[j] + #pixel*moveamt[j] endif ; increment parameters rot[j] = rot[j]*rotstep[j] skew[j] = skew[j]*skewstep[j] startoffset[j] = startoffset[j] + startstep[j] trapoffset[j] = trapoffset[j] + trapstep[j] z1[j] = z1[j]*rot[j] z1[j] = real(z1[j]*skew[j]) + flip(imag(z1[j])) x = real(z1[j]) + real(trapoffset[j]) y = imag(z1[j])*@mod + imag(trapoffset[j]) if j == 0 z1[j] = @fn4A(x + flip(y)) else z1[j] = @fn4B(x + flip(y)) endif if types[j] == 1 ; CosMartin px[j] = real(z1[j])*cms[j] py[j] = imag(z1[j])*cms[j] ; Iterate the CosMartin formula att_iter = 0 while att_iter < max_cos_iterations[j] pxx = px[j] px[j] = py[j] - cos(px[j]) py[j] = cm[j] - pxx att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscalecs[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 0 ; Chip px[j] = real(z1[j])*chs[j] py[j] = imag(z1[j])*chs[j] ; Iterate the Chip formula att_iter = 0 while att_iter < max_chip_iterations[j] pxx = px[j] if px[j] != 0 px[j] = py[j] - px[j]/abs(px[j])*cos(sqr(log(abs(ch2[j]*px[j]-ch3[j])))) \ *atan(sqr(log(abs(ch3[j]*px[j]-ch2[j])))) else px[j] = py[j] - cos(sqr(log(abs(ch2[j]*px[j]-ch3[j])))) \ *atan(sqr(log(abs(ch3[j]*px[j]-ch2[j])))) endif py[j] = ch1[j] - pxx att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscalech[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 2 ; Henon px[j] = real(z1[j])*hes[j] py[j] = imag(z1[j])*hes[j] ; Iterate the Henon formula att_iter = 0 while att_iter < max_henon_iterations[j] pxx = px[j] px[j] = sin(he1[j])*px[j] - cos(he1[j])*(py[j]-px[j]^2) py[j] = cos(he1[j])*pxx + sin(he1[j])*(py[j]-pxx^2) att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscalehe[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 3 ; Hopalong px[j] = real(z1[j])*hs[j] py[j] = imag(z1[j])*hs[j] ; Iterate the Hopalong formula att_iter = 0 while att_iter < max_hop_iterations[j] pxx = px[j] if px[j] != 0 px[j] = py[j] - px[j]/abs(px[j])*sqrt(abs(h2[j]*px[j]-h3[j])) else px[j] = py[j] - sqrt(abs(h2[j]*px[j]-h3[j])) endif py[j] = h1[j] - pxx att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscalehp[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 4 ; Gingerbread px[j] = real(z1[j])*gs[j] py[j] = imag(z1[j])*gs[j] ; Iterate the Gingerbread formula att_iter = 0 while att_iter < max_ginger_iterations[j] pxx = px[j] px[j] = 1 - py[j] + abs(px[j]) py[j] = pxx att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscaleg[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 5 ; Latoocarfian px[j] = real(z1[j])*las[j] py[j] = imag(z1[j])*las[j] ; Iterate the Latoocarfian formula att_iter = 0 while att_iter < max_lat_iterations[j] pxx = px[j] px[j] = sin(py[j]*la2[j]) + la3[j]*sin(px[j]*la2[j]) py[j] = sin(pxx*la1[j]) + la4[j]*sin(py[j]*la1[j]) att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscalela[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 8 ; Quadruptwo px[j] = real(z1[j])*qs[j] py[j] = imag(z1[j])*qs[j] ; Iterate the Quadruptwo formula att_iter = 0 while att_iter < max_quad_iterations[j] pxx = px[j] if px[j] != 0 px[j] = py[j] - px[j]/abs(px[j])*sin(log(abs(q2[j]*px[j]-q3[j]))) \ *atan(sqr(log(abs(q3[j]*px[j]-q2[j])))) else px[j] = py[j] - sin(log(abs(q2[j]*px[j]-q3[j]))) \ *atan(sqr(log(abs(q3[j]*px[j]-q2[j])))) endif py[j] = q1[j] - pxx att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscaleqd[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 6 ; Liar px[j] = real(z1[j])*lis[j] py[j] = imag(z1[j])*lis[j] ; Iterate the Liar formula att_iter = 0 while att_iter < max_liar_iterations[j] pxx = px[j] if liartype[j] == 0 if real(px[j] + flip(z1[j])) < (li1[j]) px[j] = li2[j] - abs(py[j]-px[j]) py[j] = abs(li3[j] - pxx - py[j]) endif elseif liartype[j] == 1 if imag(px[j] + flip(z1[j])) < (li1[j]) px[j] = li2[j] - abs(py[j]-px[j]) py[j] = abs(li3[j] - pxx - py[j]) endif else if cabs(px[j] + flip(z1[j])) < (li1[j]) px[j] = li2[j] - abs(py[j]-px[j]) py[j] = abs(li3[j] - pxx - py[j]) endif endif att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscaleli[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 9 ; Sierpinski pp[j] = z1[j]*(sps[j]) ; Iterate the Sierpinski formula att_iter = 0 while att_iter < max_sier_iterations[j] if (imag(pp[j]) > sp3[j]) pp[j] = sp1[j]*real(pp[j]) + flip(sp1[j]*imag(pp[j]) -sp2[j]) elseif (real(pp[j]) > sp4[j]) pp[j] = sp1[j]*real(pp[j]) -sp2[j] + flip(sp1[j]*imag(pp[j])) else pp[j] = sp1[j]*real(pp[j]) + flip(sp1[j]*imag(pp[j])) endif att_iter = att_iter + 1 endwhile if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscalesp[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 10 ; Sprott3D px[j] = real(z1[j])*s3ds[j] py[j] = imag(z1[j])*s3ds[j] pz[j] = s3dz[j]*s3ds[j] ; Iterate the Sprott3D formula att_iter = 0 while att_iter < max_s3d_iterations[j] pxx = px[j] pyy = py[j] px[j] = s3d1[j] + s3d2[j]*px[j] + s3d3[j]*px[j]*px[j] + s3d4[j]*px[j]*py[j] \ + s3d5[j]*px[j]*pz[j] + s3d6[j]*py[j] + s3d7[j]*py[j]*py[j] + \ s3d8[j]*py[j]*pz[j] + s3d9[j]*pz[j] + s3d10[j]*pz[j]*pz[j] py[j] = s3d11[j] + s3d12[j]*pxx + s3d13[j]*pxx*pxx + s3d14[j]*pxx*py[j] \ + s3d15[j]*pxx*pz[j] + s3d16[j]*py[j] + s3d17[j]*py[j]*py[j] + \ s3d18[j]*py[j]*pz[j] + s3d19[j]*pz[j] + s3d20[j]*pz[j]*pz[j] pz[j] = s3d21[j] + s3d22[j]*pxx + s3d23[j]*pxx*pxx + s3d24[j]*pxx*pyy + \ s3d25[j]*pxx*pz[j] + s3d26[j]*pyy + s3d27[j]*pyy*pyy + \ s3d28[j]*pyy*pz[j] + s3d29[j]*pz[j] + s3d30[j]*pz[j]*pz[j] att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) + pz[j]*s3dw[j] if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscales3d[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 11 ; Sprott3D_ODE px[j] = real(z1[j])*s3dodes[j] py[j] = imag(z1[j])*s3dodes[j] pz[j] = s3dodez[j]*s3dodes[j] ; Iterate the Sprott3D_ODE formula att_iter = 0 while att_iter < max_s3dode_iterations[j] pxx = px[j] pyy = py[j] px[j] = px[j] + 0.1*(s3dode1[j] + s3dode2[j]*px[j] + s3dode3[j]*px[j]*px[j] + s3dode4[j]*px[j]*py[j] \ + s3dode5[j]*px[j]*pz[j] + s3dode6[j]*py[j] + s3dode7[j]*py[j]*py[j] + \ s3dode8[j]*py[j]*pz[j] + s3dode9[j]*pz[j] + s3dode10[j]*pz[j]*pz[j]) py[j] = py[j] + 0.1*(s3dode11[j] + s3dode12[j]*pxx + s3dode13[j]*pxx*pxx + s3dode14[j]*pxx*py[j] \ + s3dode15[j]*pxx*pz[j] + s3dode16[j]*py[j] + s3dode17[j]*py[j]*py[j] + \ s3dode18[j]*py[j]*pz[j] + s3dode19[j]*pz[j] + s3dode20[j]*pz[j]*pz[j]) pz[j] = pz[j] + 0.1*(s3dode21[j] + s3dode22[j]*pxx + s3dode23[j]*pxx*pxx + s3dode24[j]*pxx*pyy + \ s3dode25[j]*pxx*pz[j] + s3dode26[j]*pyy + s3dode27[j]*pyy*pyy + \ s3dode28[j]*pyy*pz[j] + s3dode29[j]*pz[j] + s3dode30[j]*pz[j]*pz[j]) att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) + pz[j]*s3dodew[j] if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscales3dode[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 12 ; SprottQuad px[j] = real(z1[j])*sqs[j] py[j] = imag(z1[j])*sqs[j] ; Iterate the SprottQuad formula att_iter = 0 while att_iter < max_sprott_iterations[j] pxx = px[j] px[j] = sq1[j] + sq2[j]*px[j] + sq3[j]*px[j]*px[j] + sq4[j]*px[j]*py[j] \ + sq5[j]*py[j] + sq6[j]*py[j]*py[j] py[j] = sq7[j] + sq8[j]*pxx + sq9[j]*pxx*pxx + sq10[j]*pxx*py[j] \ + sq11[j]*py[j] + sq12[j]*py[j]*py[j] att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscalesq[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 13 ; Threeply px[j] = real(z1[j])*trs[j] py[j] = imag(z1[j])*trs[j] ; Iterate the Threeply formula att_iter = 0 while att_iter < max_tr_iterations[j] pxx = px[j] if px[j] != 0 px[j] = py[j] - px[j]/abs(px[j])*(abs(sin(px[j])*cos(tr2[j]) + tr3[j] \ - px[j]*sin(tr1[j] + tr2[j] + tr3[j]))) else px[j] = py[j] - (abs(sin(px[j])*cos(tr2[j]) + tr3[j] \ - px[j]*sin(tr1[j] + tr2[j] + tr3[j]))) endif py[j] = tr1[j] - pxx att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscaletr[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 14 ; Zito px[j] = real(z1[j])*zs[j] py[j] = imag(z1[j])*zs[j] ; Iterate the Zito formula att_iter = 0 while att_iter < max_zito_iterations[j] pxx = px[j] px[j] = px[j]*py[j] +z[j]*px[j] - py[j] py[j]= pxx + py[j] att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscalez[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z elseif types[j] == 7 ; Pickover px[j] = real(z1[j])*pks[j] py[j] = imag(z1[j])*pks[j] pz[j] = pkz[j]*pks[j] ; Iterate the Pickover formula att_iter = 0 while att_iter < max_pk_iterations[j] pxx = px[j] if j == 0 px[j] = real(@pkfunc1A(py[j]*pk1[j]) - pz[j]*@pkfunc2A(px[j]*pk2[j])) py[j] = real(pz[j]*@pkfunc3A(pxx*pk3[j]) - @pkfunc4A(py[j]*pk4[j])) pz[j] = real(pk5[j]*@pkfunc5A(pxx)) elseif j == 1 px[j] = real(@pkfunc1B(py[j]*pk1[j]) - pz[j]*@pkfunc2B(px[j]*pk2[j])) py[j] = real(pz[j]*@pkfunc3B(pxx*pk3[j]) - @pkfunc4B(py[j]*pk4[j])) pz[j] = real(pk5[j]*@pkfunc5B(pxx)) endif att_iter = att_iter + 1 endwhile pp[j] = px[j] + flip(py[j]) + pz[j]*pkw[j] if j == 0 f_pi[j] = @fn5A(pp[j]+startoffset[j]) else f_pi[j] = @fn5B(pp[j]+startoffset[j]) endif if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_pi[j])) endif d = @dmod*distscalepk[j]*abs(|z1[j]| - |f_pi[j]|) if @trapvar == 1 d = abs(d*d - d) elseif @trapvar == 2 d = abs(d*d*d - d) elseif @trapvar == 3 d = abs(d*d*d -d*d +d) elseif @trapvar == 4 if @version >= 1.3 d = abs(d - |f_pi[j]|) else d = abs(d + |f_pi[j]|) endif elseif @trapvar == 5 d = abs(d - cabs(fn3(f_pi[j]))) elseif @trapvar == 6 d = cabs((z1[j]-f_pi[j])*(d/10-f_pi[j])) elseif @trapvar == 7 d = cabs(fn3(f_pi[j])*(d/10-z1[j]+f_pi[j])) elseif @trapvar == 8 d = cabs(fn3(f_pi[j])*(d/10-(x+y))) elseif @trapvar == 9 d = cabs(fn3(f_pi[j])*(d/10-(x*y))) endif distsum = d + distsum distave = distsum/exptrap_z endif distances[j] = d x1 = px[j] y1 = py[j] oldf_p = f_pi[j] oldd = d if (@trapnum == 1) if (@trapAweight == "A") ; elseif (@trapAweight == "-A") distances[0] = -distances[0] f_pi[0] = -f_pi[0] elseif (@trapAweight == "|A|") distances[0] = abs(distances[0]) f_pi[0] = abs(f_pi[0]) elseif (@trapAweight == "A*A") distances[0] = sqr(distances[0]) f_pi[0] = sqr(f_pi[0]) elseif (@trapAweight == "-A*A") distances[0] = -sqr(distances[0]) f_pi[0] = -sqr(f_pi[0]) elseif (@trapAweight == "A*A*A") distances[0] = sqr(distances[0])*distances[0] f_pi[0] = sqr(f_pi[0])*f_pi[0] elseif (@trapAweight == "-A*A*A") distances[0] = -sqr(distances[0])*distances[0] f_pi[0] = -sqr(f_pi[0])*f_pi[0] elseif (@trapAweight == "|A*A*A|") distances[0] = abs(sqr(distances[0])*distances[0]) f_pi[0] = abs(sqr(f_pi[0])*f_pi[0]) elseif (@trapAweight == "log(A)") distances[0] = log(distances[0]) f_pi[0] = log(f_pi[0]) elseif (@trapAweight == "exp(A)") distances[0] = exp(distances[0]) f_pi[0] = exp(f_pi[0]) elseif (@trapAweight == "sqrt(A)") distances[0] = sqrt(distances[0]) f_pi[0] = sqrt(f_pi[0]) elseif (@trapAweight == "A^(1/3)") distances[0] = (distances[0])^(1/3) f_pi[0] = (f_pi[0])^(1/3) endif if (@trapBweight == "B") ; elseif (@trapBweight == "-B") distances[1] = -distances[1] f_pi[1] = -f_pi[1] elseif (@trapBweight == "|B|") distances[1] = abs(distances[1]) f_pi[1] = abs(f_pi[1]) elseif (@trapBweight == "B*B") distances[1] = sqr(distances[1]) f_pi[1] = sqr(f_pi[1]) elseif (@trapBweight == "-B*B") distances[1] = -sqr(distances[1]) f_pi[1] = -sqr(f_pi[1]) elseif (@trapBweight == "B*B*B") distances[1] = sqr(distances[1])*distances[1] f_pi[1] = sqr(f_pi[1])*f_pi[1] elseif (@trapBweight == "-B*B*B") distances[1] = -sqr(distances[1])*distances[1] f_pi[1] = -sqr(f_pi[1])*f_pi[1] elseif (@trapBweight == "|B*B*B|") distances[1] = abs(sqr(distances[1])*distances[1]) f_pi[1] = abs(sqr(f_pi[1])*f_pi[1]) elseif (@trapBweight == "log(B)") distances[1] = log(distances[1]) f_pi[1] = log(f_pi[1]) elseif (@trapBweight == "exp(B)") distances[1] = exp(distances[1]) f_pi[1] = exp(f_pi[1]) elseif (@trapBweight == "sqrt(B)") distances[1] = sqrt(distances[1]) f_pi[1] = sqrt(f_pi[1]) elseif (@trapBweight == "B^(1/3)") distances[1] = (distances[1])^(1/3) f_pi[1] = (f_pi[1])^(1/3) endif endif if (@trapnum == 0) d = distances[0] f_p = f_pi[0] elseif (@trapnum == 1) if (@trapmerge == "min(A,B)") if (distances[0] < distances[1]) d = distances[0] else d = distances[1] endif if (cabs(f_pi[0]) < cabs(f_pi[1])) f_p = f_pi[0] else f_p = f_pi[1] endif elseif (@trapmerge == "max(A,B)") if (distances[0] > distances[1]) d = distances[0] else d = distances[1] endif if (cabs(f_pi[0]) > cabs(f_pi[1])) f_p = f_pi[0] else f_p = f_pi[1] endif elseif (@trapmerge == "A+B") d = distances[0] + distances[1] f_p = f_pi[0] + f_pi[1] elseif (@trapmerge == "A*B") d = distances[0] * distances[1] f_p = f_pi[0] * f_pi[1] elseif (@trapmerge == "A/B") d = distances[0] / distances[1] f_p = f_pi[0] / f_pi[1] elseif (@trapmerge == "B/A") d = distances[1] / distances[0] f_p = f_pi[1] / f_pi[0] elseif (@trapmerge == "1/(A*B)") d = 1 / (distances[0] * distances[1]) f_p = 1/(f_pi[0] * f_pi[1]) elseif (@trapmerge == "A^B") d = distances[0] ^ distances[1] f_p = f_pi[0] ^ f_pi[1] elseif (@trapmerge == "B^A") d = distances[1] ^ distances[0] f_p = f_pi[1] ^ f_pi[0] elseif (@trapmerge == "A") d = distances[0] f_p = f_pi[0] elseif (@trapmerge == "B") d = distances[1] f_p = f_pi[1] elseif (@trapmerge == "|A-B|") d = abs(distances[0] - distances[1]) f_p = abs(f_pi[0] - f_pi[1]) elseif (@trapmerge == "Func(A) op Func(B)") if @mop == "+" d = real(@mfuncA(distances[0])) + real(@mfuncB(distances[1])) f_p = @mfuncA(f_pi[0]) + @mfuncB(f_pi[1]) elseif @mop == "-" d = real(@mfuncA(distances[0])) - real(@mfuncB(distances[1])) f_p = @mfuncA(f_pi[0]) - @mfuncB(f_pi[1]) elseif @mop == "*" d = real(@mfuncA(distances[0])) * real(@mfuncB(distances[1])) f_p = @mfuncA(f_pi[0]) * @mfuncB(f_pi[1]) elseif @mop == "/" d = real(@mfuncA(distances[0])) / real(@mfuncB(distances[1])) f_p = @mfuncA(f_pi[0]) / @mfuncB(f_pi[1]) elseif @mop == "^" d = real(@mfuncA(distances[0])) ^ real(@mfuncB(distances[1])) f_p = @mfuncA(f_pi[0]) ^ @mfuncB(f_pi[1]) endif elseif (@trapmerge == "A AND B") if (distances[0] < @width && distances[1] < @width) d = distances[0] else d = @width endif elseif (@trapmerge == "B AND A") if (distances[1] < @width && distances[0] < @width) d = distances[1] else d = @width endif elseif (@trapmerge == "A OR B") if (distances[0] < @width) d = distances[0] elseif (distances[1] < @width) d = distances[1] else d = @width endif elseif (@trapmerge == "B OR A") if (distances[1] < @width) d = distances[1] elseif (distances[0] < @width) d = distances[0] else d = @width endif elseif (@trapmerge == "A NOT B") if (distances[0] < @width && distances[1] >= @width) d = distances[0] else d = @width endif elseif (@trapmerge == "B NOT A") if (distances[1] < @width && distances[0] >= @width) d = distances[1] else d = @width endif endif if (@trapmergeabs) d = abs(d) endif endif j = j + 1 endwhile if !@distmerge d = oldd endif if !@f_pmerge f_p = oldf_p endif if @trap_mode == 0 if (iter >= skip && iter < max_iter) \ && d < min_dist min_dist = d + @edge distance = d trap_iter = iter trap_z = #z trap2_z = zt trap_p = f_p endif elseif @trap_mode == 1 if (iter >= skip && iter < max_iter) \ && !trapped && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap2_z = zt trap_p = f_p endif elseif @trap_mode == 2 if (iter >= skip && iter < max_iter) \ && d < @width trapped = true distance = d trap_iter = iter trap_z = #z trap2_z = zt trap_p = f_p endif elseif @trap_mode == 3 d = cabs(f_p) if (iter >= skip && iter < max_iter) \ && d < min_dist min_dist = d + @edge distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap2_z = zt trap_p = f_p endif endif if @trap_mode == 4 if (iter >= skip && iter < max_iter) \ && d < @width trapped = true min_dist = distave distance = distave trap_iter = iter trap_z = #z trap2_z = zt trap_p = f_p endif endif if @trap_mode == 5 if (iter >= skip && iter < max_iter) \ && d > min_dist && d < @width trapped = true min_dist = d distance = d trap_iter = iter trap_z = #z trap2_z = zt trap_p = f_p endif elseif @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 \ || @trap_mode ==9 if (iter >= skip && iter < max_iter) \ && d < @width trapped = true distance = distance + d trap_iter = iter trap_z = trap_z + #z trap2_z = trap2_z + zt trap_p = trap_p + f_p endif elseif @trap_mode == 10 || @trap_mode == 11 || @trap_mode == 12 \ || @trap_mode ==13 if (iter >= skip && iter < max_iter) \ && !trapped && d < @width trapped = true distance = distance + d trap_iter = iter trap_z = trap_z + #z trap2_z = trap2_z + zt trap_p = trap_p + f_p endif endif iter = iter + 1 if (iter >= max_iter+@itergap)&&!@alliter && (patnum == 0 || patnum < @pattern) max_iter = max_iter + @itergap + @no_of_iters if @pattern != 0 patnum = patnum + 1 endif endif final: float zrzr = 0 float zizi = 0 float rzrz = 0 float iziz = 0 float r0r0 = 0 float i0i0 = 0 float r1r1 = 0 float i1i1 = 0 float azaz = 0 float bzbz = 0 float czcz = 0 float dzdz = 0 int iii = 0 float avav = 1 float xbxb = 1 float frfr = 0 float fifi = 0 float zaza = 0 float zzzz = 0 complex ptr = 0 if @addfbm == true w = fn2(fn1((trap_z+@tfbm*(xx+flip(yy)))*10^@pwr))*@ts else w = fn2(fn1((trap_z)*10^@pwr))*@ts endif ww = fn2(fn1((w - @fn6(w)))) + @toffset t = cabs(ww)*@tc t = (t - round(t))*@tweight ;decimal texture if @dectxt > 0 && @advd if @ztyp2 == "#z" tz = ((#z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Morph z" if @version <= 1.3 tz = ((zt-@txia2)*@txib2)^@txic2 else tz = ((f_p-@txia2)*@txib2)^@txic2 endif elseif @ztyp2 == "Trap z" if @version <= 1.3 tz = ((trap2_z-@txia2)*@txib2)^@txic2 else tz = ((trap_p-@txia2)*@txib2)^@txic2 endif elseif @ztyp2 == "Trap #z" tz = ((trap_z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap dist" tz = ((distance-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Raw dist" tz = ((d-@txia2)*@txib2)^@txic2 endif if @dec_init == 0 pd = real(@fntx5(@fntx4(tz))^@exad4) elseif @dec_init == 1 pd = real(@fntx4(real(tz))^@exad4+@fntx5(imag(tz))^@exad5) elseif @dec_init == 2 pd = real(@fntx4(real(tz))^@exad4-@fntx5(imag(tz))^@exad5) elseif @dec_init == 3 pd = real(@fntx4(real(tz))^@exad4*@fntx5(imag(tz))^@exad5) elseif @dec_init == 4 pd = real(@fntx4(imag(tz))^@exad4-@fntx5(real(tz))^@exad5) elseif @dec_init == 5 pd = real(@fntx5(@fntx4(x1))^@exad4) elseif @dec_init == 6 pd = real(@fntx5(@fntx4(y1))^@exad4) elseif @dec_init == 7 pd = real(@fntx4(x1)^@exad4+@fntx5(y1)^@exad5) elseif @dec_init == 8 pd = real(@fntx4(x1)^@exad4-@fntx5(y1)^@exad5) elseif @dec_init == 9 pd = real(@fntx5(y1)^@exad4-@fntx4(x1)^@exad5) elseif @dec_init == 10 pd = real(@fntx4(x1)^@exad4*@fntx5(y1)^@exad5) elseif @dec_init == 11 pd = real(@fntx4(x1)^@exad4/@fntx5(y1)^@exad5) elseif @dec_init == 12 pd = real(@fntx5(y1)^@exad4/@fntx4(x1)^@exad5) elseif @dec_init == 13 pd = real(@fntx4(x1)^@exad4^@fntx5(y1)^@exad5) elseif @dec_init == 14 pd = real(@fntx5(y1)^@exad4^@fntx4(x1)^@exad5) elseif @dec_init == 15 pd = real(@fntx4(x1)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 16 pd = real(@fntx4(x1)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 17 pd = real(@fntx5(tz)^@exad4-@fntx4(x1)^@exad5) elseif @dec_init == 18 pd = real(@fntx4(x1)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 19 pd = real(@fntx4(x1)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 20 pd = real(@fntx5(tz)^@exad4/@fntx4(x1)^@exad5) elseif @dec_init == 21 pd = real(@fntx4(y1)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 22 pd = real(@fntx4(y1)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 23 pd = real(@fntx5(tz)^@exad4-@fntx4(y1)^@exad5) elseif @dec_init == 24 pd = real(@fntx4(y1)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 25 pd = real(@fntx4(y1)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 26 pd = real(@fntx5(tz)^@exad4/@fntx4(y1)^@exad5) endif if @dec_type == 0 pd = pd-ceil(pd*@dec_scale)/@dec_scale elseif @dec_type == 1 pd = pd-floor(pd*@dec_scale)/@dec_scale elseif @dec_type == 2 pd = pd-trunc(pd*@dec_scale)/@dec_scale elseif @dec_type == 3 pd = pd-round(pd*@dec_scale)/@dec_scale elseif @dec_type == 4 pd = pd-real(@fndec(pd*@dec_scale))/@dec_scale elseif @dec_type == 5 pd = pd-round(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 6 pd = pd-round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 7 pd = pd+round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 8 pd = pd-round(pd*@dec_scale)/@dec_scale-trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 9 pd = pd-round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 10 pd = pd+round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 11 pd = pd-trunc(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 12 pd = pd-trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 13 pd = pd+trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 14 pd = pd-trunc(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 15 pd = pd-trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 16 pd = pd+trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 17 pd = pd-ceil(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 18 pd = pd-ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 19 pd = pd+ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale)/@dec_scale2 endif if @dec_size != 0 pd = pd/@dec_size endif texture_dec = @dectxt*pd if @dec_limit !=0 texture_dec= texture_dec%@dec_limit endif if @dec_sgn == true texture_dec = abs(texture_dec) endif texture_dec = 10 * texture_dec * @decamt endif ; popgnarl texture if (@gnarl_amt != 0)&& @advpg if @ztyp3 == "#z" tz = ((#z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Morph z" if @version <= 1.3 tz = ((zt-@txia3)*@txib3)^@txic3 else tz = ((f_p-@txia3)*@txib3)^@txic3 endif elseif @ztyp3 == "Trap z" if @version <= 1.3 tz = ((trap2_z-@txia3)*@txib3)^@txic3 else tz = ((trap_p-@txia3)*@txib3)^@txic3 endif elseif @ztyp3 == "Trap #z" tz = ((trap_z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap dist" tz = ((distance-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Raw dist" tz = ((d-@txia3)*@txib3)^@txic3 endif if @gnarl_init == 0 p = @fntx7(@fntx6(tz))^@exad6 elseif @gnarl_init == 1 p = @fntx6(real(tz))^@exad6+@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 2 p = @fntx6(real(tz))^@exad6-@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 3 p = @fntx6(real(tz))^@exad6*@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 4 p = @fntx6(imag(tz))^@exad6-@fntx7(real(tz))^@exad7 elseif @gnarl_init == 5 p = @fntx7(@fntx6(x1))^@exad6 elseif @gnarl_init == 6 p = @fntx7(@fntx6(y1))^@exad6 elseif @gnarl_init == 7 p = @fntx6(x1)^@exad6+@fntx7(y1)^@exad7 elseif @gnarl_init == 8 p = @fntx6(x1)^@exad6-@fntx7(y1)^@exad7 elseif @gnarl_init == 9 p = @fntx7(y1)^@exad6-@fntx6(x1)^@exad7 elseif @gnarl_init == 10 p = @fntx6(x1)^@exad6*@fntx7(y1)^@exad7 elseif @gnarl_init == 11 p = @fntx6(x1)^@exad6/@fntx7(y1)^@exad7 elseif @gnarl_init == 12 p = @fntx7(y1)^@exad6/@fntx6(x1)^@exad7 elseif @gnarl_init == 13 p = @fntx6(x1)^@exad6^@fntx7(y1)^@exad7 elseif @gnarl_init == 14 p = @fntx7(y1)^@exad6^@fntx6(x1)^@exad7 elseif @gnarl_init == 15 p = @fntx6(x1)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 16 p = @fntx6(x1)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 17 p = @fntx7(tz)^@exad6-@fntx6(x1)^@exad7 elseif @gnarl_init == 18 p = @fntx6(x1)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 19 p = @fntx6(x1)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 20 p = @fntx7(tz)^@exad6/@fntx6(x1)^@exad7 elseif @gnarl_init == 21 p = @fntx6(y1)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 22 p = @fntx6(y1)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 23 p = @fntx7(tz)^@exad6-@fntx6(y1)^@exad7 elseif @gnarl_init == 24 p = @fntx6(y1)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 25 p = @fntx6(y1)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 26 p = @fntx7(tz)^@exad6/@fntx6(y1)^@exad7 elseif @gnarl_init == 27 p = @fntx7(@fntx6(#pixel))^@exad6 endif if @gnarl_scaling == 0 p = p-ceil(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 1 p = p-floor(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 2 p = p-trunc(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 3 p = p-round(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 4 p = p-real(@fngnarl(p*@gnarl_scale))/@gnarl_scale elseif @gnarl_scaling == 5 p = p-round(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 6 p = p-round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 7 p = p+round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 8 p = p-round(p*@gnarl_scale)/@gnarl_scale-trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 9 p = p-round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 10 p = p+round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 11 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 12 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 13 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 14 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 15 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 16 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 17 p = p-ceil(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 18 p = p-ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 19 p = p+ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale)/@gnarl_scale2 endif if @gnarl_size != 0 p = p/@gnarl_size endif xx = real(p) yy = imag(p) float xOld = 0 int iter3 = @gnarl_octaves while (iter3 > 0) iter3 = iter3-1 xOld = xx if @gnarl_form == 0 xx = xx - sin(yy + sin(yy)) yy = yy - sin(xOld + sin(xOld)) elseif @gnarl_form == 1 xx = xx - sin(yy + log(yy + cos(yy))) yy = yy - sin(xOld + log(xOld + cos(xOld))) elseif @gnarl_form == 2 xx = xx - sin(yy + cos(yy)) yy = yy - sin(xOld + cos(xOld)) elseif @gnarl_form == 3 xx = xx - sin(yy + log(yy + tan(yy))) yy = yy - sin(xOld + log(xOld + tan(xOld))) elseif @gnarl_form == 4 xx = xx - sin(yy + log(yy + sin(yy))) yy = yy - sin(xOld + log(xOld + sin(xOld))) endif endwhile if (@gnarl_type == 0) texture_gna = real(@fng(xx)) elseif (@gnarl_type == 1) texture_gna = real(@fng(yy)) elseif (@gnarl_type == 2) texture_gna = real(@fng(xx+yy)) elseif (@gnarl_type == 3) texture_gna = real(@fng(xx*yy)) elseif (@gnarl_type == 4) texture_gna = real(@fng(xx-yy)) elseif (@gnarl_type == 5) texture_gna = real(@fng(xx/yy)) elseif (@gnarl_type == 6) texture_gna = real(@fng(yy/xx)) elseif (@gnarl_type == 7) texture_gna = real(@fng(xx^yy)) elseif (@gnarl_type == 8) texture_gna = real(@fng(yy^xx)) elseif (@gnarl_type == 9) texture_gna = real(@fng(1/xx)) elseif (@gnarl_type == 10) texture_gna = real(@fng(1/yy)) elseif (@gnarl_type == 11) texture_gna = atan2(xx+i*yy)/(2*#pi) if (texture_gna < 0) texture_gna = texture_gna + 1 endif elseif (@gnarl_type == 12) texture_gna = |xx+i*yy| elseif (@gnarl_type == 13) texture_gna = (xx+yy+|xx+i*yy|)/3 elseif (@gnarl_type == 14) texture_gna = (xx*yy*|xx+i*yy|)^(1/3) endif if @gnarl_limit !=0 texture_gna= 10 * (texture_gna%@gnarl_limit) * @gnarl_amt endif endif ;geometrix texture if (@trtxt != 0) && @advtr if @ztyp5 == "#z" tz = ((#z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Morph z" if @version <= 1.3 tz = ((zt-@trxia)*@trxib)^@trxic else tz = ((f_p-@trxia)*@trxib)^@trxic endif elseif @ztyp5 == "Trap z" if @version <= 1.3 tz = ((trap2_z-@trxia)*@trxib)^@trxic else tz = ((trap_p-@trxia)*@trxib)^@trxic endif elseif @ztyp5 == "Trap #z" tz = ((trap_z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap dist" tz = ((distance-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Raw dist" tz = ((d-@trxia)*@trxib)^@trxic endif if @trinit == 0 ptr = (@fntx11(@fntx10(tz))^@exad10) elseif @trinit == 1 ptr = (@fntx10(real(tz))^@exad10+@fntx11(imag(tz))^@exad11) elseif @trinit == 2 ptr = (@fntx10(real(tz))^@exad10-@fntx11(imag(tz))^@exad11) elseif @trinit == 3 ptr = (@fntx10(real(tz))^@exad10*@fntx11(imag(tz))^@exad11) elseif @trinit == 4 ptr = (@fntx10(imag(tz))^@exad10-@fntx11(real(tz))^@exad11) elseif @trinit == 5 ptr = (@fntx11(@fntx10(x1))^@exad10) elseif @trinit == 6 ptr = (@fntx11(@fntx10(y1))^@exad10) elseif @trinit == 7 ptr = (@fntx10(x1)^@exad10+@fntx11(y1)^@exad11) elseif @trinit == 8 ptr = (@fntx10(x1)^@exad10-@fntx11(y1)^@exad11) elseif @trinit == 9 ptr = (@fntx11(y1)^@exad11-@fntx10(x1)^@exad10) elseif @trinit == 10 ptr = (@fntx10(x1)^@exad10*@fntx11(y1)^@exad11) elseif @trinit == 11 ptr = (@fntx10(x1)^@exad10/@fntx11(y1)^@exad11) elseif @trinit == 12 ptr = (@fntx11(y1)^@exad11/@fntx10(x1)^@exad10) elseif @trinit == 13 ptr = (@fntx10(x1)^@exad10^@fntx11(y1)^@exad11) elseif @trinit == 14 ptr = (@fntx11(y1)^@exad11^@fntx10(x1)^@exad10) elseif @trinit == 15 ptr = (@fntx10(x1)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 16 ptr = (@fntx10(x1)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 17 ptr = (@fntx11(tz)^@exad11-@fntx10(x1)^@exad10) elseif @trinit == 18 ptr = (@fntx10(x1)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 19 ptr = (@fntx10(x1)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 20 ptr = (@fntx11(tz)^@exad11/@fntx10(x1)^@exad10) elseif @trinit == 21 ptr = (@fntx10(y1)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 22 ptr = (@fntx10(y1)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 23 ptr = (@fntx11(tz)^@exad11-@fntx10(y1)^@exad10) elseif @trinit == 24 ptr = (@fntx10(y1)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 25 ptr = (@fntx10(y1)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 26 ptr = (@fntx11(tz)^@exad11/@fntx10(y1)^@exad10) endif endif if @advtr zrzr = real(@fnzr(ptr))*@scc zizi = imag(@fnzi(ptr))*@scc rzrz = floor(zrzr) iziz = floor(zizi) r0r0 = rzrz - 1 i0i0 = iziz - 1 r1r1 = rzrz + 1 i1i1 = iziz + 1 azaz = cabs(@fn1tx(r0r0) + @fn2tx(i0i0)) azaz = cabs(@fn3tx(azaz)) azaz = (azaz % @shad1 * 2) bzbz = cabs(@fn1tx(r1r1) + @fn2tx(i0i0)) bzbz = cabs(@fn3tx(bzbz)) bzbz = (bzbz % @shad2 * 2) czcz = cabs(@fn1tx(r1r1) + @fn2tx(i1i1)) czcz = cabs(@fn3tx(czcz)) czcz = (czcz % @shad3 * 2) dzdz = cabs(@fn1tx(r0r0) + @fn2tx(i1i1)) dzdz = cabs(@fn3tx(dzdz)) dzdz = (dzdz % @shad4 * 2) iii = 1 repeat avav = avav / (@trp1 * 2) xbxb = xbxb / (@trp2 * 2) frfr = rzrz + avav fifi = iziz + avav zaza = (azaz + bzbz + czcz + dzdz) / (@trp3 * 4) zzzz = zzzz * xbxb + zaza if (zrzr > frfr) if (zizi > fifi) rzrz = frfr iziz = fifi azaz = zzzz else rzrz = frfr dzdz = zzzz endif else if (zizi > fifi) iziz = fifi bzbz = zzzz else czcz = zzzz endif endif iii = iii + 1 until iii >= @freq texture_tr = (zaza-trunc(zaza*2)^@exp)*@trtxt if @geo_limit != 0 texture_tr = ((zaza-trunc(zaza)^@exp*2)% @geo_limit)*@trtxt endif if @geo_sgn == true texture_tr = abs(texture_tr) endif endif texture = (texture_dec+texture_gna+texture_tr)*@txamt/6000 if @trap_mode == 7 || @trap_mode == 11 distance = distance + cabs(trap_p) endif if @trap_mode == 8 || @trap_mode == 12 distance = distance + cabs(trap_z) endif if @trap_mode == 9 || @trap_mode == 13 distance = distance + (cabs(trap_z) + cabs(trap_p))/2 endif if (@trap_mode == 1 || @trap_mode == 2 || @trap_mode == 5 \ || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 || \ @trap_mode == 9 || @trap_mode == 10 || @trap_mode == 11 \ || @trap_mode == 12 || @trap_mode == 13) \ || @trap_mode == 4 if !trapped && @back == true #solid = true else if @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif elseif @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture endif endif elseif (@trap_mode != 1 && @trap_mode != 2 && @trap_mode != 5 \ && @trap_mode != 6 && @trap_mode != 7 && @trap_mode != 8 \ && @trap_mode != 9 && @trap_mode != 10 && @trap_mode != 11 \ && @trap_mode != 12 && @trap_mode != 13 \ || (@trap_mode==4)) && trap if msk == true && min_dist > @width #solid = true else if @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif elseif @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture endif endif if rmask == true && min_dist <= @width #solid = true else if @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif elseif @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture endif endif else if @color_mode == 0 #index = distance*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 1 #index = 0.01*trap_iter*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture if @discrete == 1 #index = (trap_iter % @modcolor)/@modcolor endif elseif @color_mode == 2 #index = cabs(trap_z)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 3 #index = abs(real(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 4 #index = abs(imag(trap_z))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 6 #index = cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 7 #index = abs(real(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 8 #index = abs(imag(trap_p))*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p)*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture elseif @color_mode == 11 #index = 0.01 * exptrap_p*0.99*(1+@fbmf*(sum+1)*0.5)/(1+@fbmf)+t+texture endif endif default: title = "Attractor Traps" float param version caption = "Version number" default = 1.7 hint = "This is for backwards compatibility with old versions \ of the formula." visible = false endparam heading caption = "Attractor Traps" endheading $ifdef VER40 heading text = "Orbit trap formula that uses strange attractors as the trapping \ functions. The SprottQuad trap type includes 101 2D quadratic \ strange attractors. The Sprott3D trap type includes 51 3D quadratic \ strange attractors. Simultaneous ordinary differential equations \ (ODE) can be approximately solved using the Euler finite difference \ method. The Sprott3D_ODE trap type include 51 attractors from the \ solution of quadratic differential equations." endheading heading text = "Some of the code is based upon appoaches of Mark Townsend and Damien Jones. \ The Morph code and the code for Decimal texturing, Popgnarl texturing \ and Geometrix texturing is from Toby Marshall. Some of the textures \ Toby used were originally developed by Michèle Dessureault \ (popgnarl and decimal)." endheading $else heading caption = "Orbit trap formula that uses" endheading heading caption = "strange attractors as the trapping" endheading heading caption = "functions. The 'SprottQuad' trap type" endheading heading caption = "includes 100 quadratic strange attractors." endheading heading caption = "Some of the code is based upon appoaches" endheading heading caption = "of Mark Townsend and Damien Jones." endheading heading caption = "The Morph code is from Toby Marshall." endheading $endif bool param expert caption = "Expert mode" default = false endparam heading caption = "General Parameters" endheading param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" "Farthest" \ "Sum" "Weighted Sum" "Weighted Sum 2" "Weighted Sum 3" \ "Sum 2" "Weighted Sum 4" "Weighted Sum 5" "Weighted Sum 6" endparam float param edge caption = "Edge Effects" default = 0.0 visible = @trap_mode == 0 || @trap_mode == 3 endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param discrete caption = "Iteration options" default = 0 enum = "normal" "discrete colors" visible = @color_mode == 1 hint = "'discrete colors' allows the user to set the total number of colors \ to use with mod iter." endparam int param modcolor caption = "# of iteration colors" default = 8 visible = @color_mode == 1 && @discrete == 1 hint = "Number of iteration colors to use with mod iter. This is useful \ for gradient masks where the mask allows a specific mod iter to \ be opaque or transparent." endparam param trapvar caption = "Trap variants" default = 0 enum = "default" "1" "2" "3" "4" "5" "6" "7" "8" "9" endparam float param mod caption = "Trap modifier" default = 1.0 endparam func fn3 caption = "Trap var function" default = acos() visible=@trapvar == 5||@trapvar == 7||@trapvar == 8||@trapvar == 9 endfunc param width caption = "Trap width" default = 0.1 endparam float param dmod caption = "Distance modifier" default = 1.0 endparam param settrap caption = "Trapping Mask" default = 0 enum = "none" "normal" "reverse" visible = (@trap_mode == 0 || @trap_mode == 3) endparam param back caption = "Solid Background" default = true visible=(@trap_mode == 1 || @trap_mode == 2 || @trap_mode == 5 \ || @trap_mode == 6 || @trap_mode == 7 || @trap_mode == 8 || \ @trap_mode == 9 || @trap_mode == 10 || @trap_mode == 11 \ || @trap_mode == 12 || @trap_mode == 13) || (@trap_mode == 4) endparam param trapnum caption = "Number of Traps" default = 0 enum = "1" "2" hint = "This is the number of traps to use." visible = @expert endparam bool param alliter caption = "Use all iterations" default = true visible = @expert endparam param skip caption = "Initial iterations" hint = "This is the initial number of iterations before watching \ the orbit." default = 0 min = 0 visible = (!@alliter && @expert) endparam param no_of_iters caption = "Iterations to trap" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 visible = !@alliter && @expert endparam param itergap caption = "Iterations to skip" default = 0 min = 0 hint = "This is the number of iterations before resuming monitoring of the \ orbit." visible = !@alliter && @expert endparam int param pattern caption = "Pattern repeat" default = 0 min = 0 hint = "Set to zero for unlimited repeats, otherwise it sets the number of \ times 'trap iters' and 'skip iters' is carried out." visible = !@alliter && @expert endparam heading caption = "Trap Merging" visible = @trapnum == 1 && @expert endheading param trapAweight caption = "Trap A Weight" default = 0 enum = "A" "-A" "|A|" "A*A" "-A*A" "A*A*A" "-A*A*A" "|A*A*A|" "log(A)" \ "exp(A)" "sqrt(A)" "A^(1/3)" hint = "Sets the weight for this trap." visible = @trapnum == 1 && @expert endparam param trapBweight caption = "Trap B Weight" default = 0 enum = "B" "-B" "|B|" "B*B" "-B*B" "B*B*B" "-B*B*B" "|B*B*B|" "log(B)" \ "exp(B)" "sqrt(B)" "B^(1/3)" hint = "Sets the weight for this trap." visible = @trapnum == 1 && @expert endparam param trapmerge caption = "Merge Mode" default = 0 enum = "min(A,B)" "max(A,B)" "A+B" "A*B" "A/B" "B/A" "1/(A*B)" "A^B" "B^A" \ "|A-B|" "Func(A) op Func(B)" "A" "B" "A AND B" "B AND A" "A OR B" \ "B OR A" "A NOT B" "B NOT A" hint = "Sets the merge method for the traps" visible = @trapnum == 1 && @expert endparam func mfuncA caption = "Merge func A" default = ident() visible = @trapnum == 1 && @expert && @trapmerge == "Func(A) op Func(B)" endfunc func mfuncB caption = "Merge func B" default = atan() visible = @trapnum == 1 && @expert && @trapmerge == "Func(A) op Func(B)" endfunc param mop caption = "Merge operator" default = 2 enum = "+" "-" "*" "/" "^" visible = @trapnum == 1 && @expert && @trapmerge == "Func(A) op Func(B)" endparam param trapmergeabs caption = "No Negative Distances" default = false hint = "If set, converts negative combined trap distances to positive." visible = @trapnum == 1 && @expert endparam bool param distmerge caption = "Merge distance" default = true visible = @trapnum == 1 && @expert endparam bool param f_pmerge caption = "Merge trap metric" default = false visible = @trapnum == 1 && @expert && (@color_mode == 6 || \ @color_mode == 7 || @color_mode == 8 || @color_mode == 9 \ || @color_mode == 10) hint = "This affects only certain color modes. It can be used with \ interesting results with 'Merge distance' turned off." endparam heading caption = "Trap Parameters" visible = @trapnum == 0 endheading heading caption = "Trap A Parameters" visible = @trapnum == 1 && @expert endheading param typeA caption = "Trap Type" default = 0 enum = "Chip" "CosMartin" "Henon" "Hopalong" "Gingerbread""Latoocarfian" \ "Liar" "Pickover" "Quadruptwo" "Sierpinski" "Sprott3D" \ "Sprott3D_ODE" "SprottQuad" "Threeply" "Zito" endparam param liartypeA caption = "Liar type" default = 0 enum = "real" "imag" "abs" visible = @typeA == "Liar" endparam float param cmA caption = "CosMartin parameter" default = 6.28318 visible = @typeA == "CosMartin" endparam float param distscalecsA caption = "Distance scale" default = 0.08 visible = @typeA == "CosMartin" endparam float param cmsA caption = "Attractor scale" default = 20 visible = @typeA == "CosMartin" endparam int param max_cos_iterationsA caption = "Attractor iterations" default = 10 visible = @typeA == "CosMartin" endparam float param ch1A caption = "Chip parameter #1" default = -15 visible = @typeA == "Chip" endparam float param ch2A caption = "Chip parameter #2" default = -3 visible = @typeA == "Chip" endparam float param ch3A caption = "Chip parameter #3" default = 1 visible = @typeA == "Chip" endparam float param distscalechA caption = "Distance scale" default = 0.01 visible = @typeA == "chip" endparam float param chsA caption = "Attractor scale" default = 15 visible = @typeA == "Chip" endparam int param max_chip_iterationsA caption = "Attractor iterations" default = 5 visible = @typeA == "chip" endparam float param h1A caption = "Hopalong parameter #1" default = 0.4 visible = @typeA == "Hopalong" endparam float param h2A caption = "Hopalong parameter #2" default = 1 visible = @typeA == "Hopalong" endparam float param h3A caption = "Hopalong parameter #3" default = 0 visible = @typeA == "Hopalong" endparam float param distscalehpA caption = "Distance scale" default = 0.06 visible = @typeA == "Hopalong" endparam float param hsA caption = "Attractor scale" default = 15 visible = @typeA == "Hopalong" endparam int param max_hop_iterationsA caption = "Attractor iterations" default = 10 visible = @typeA == "Hopalong" endparam float param q1A caption = "Quadruptwo param #1" default = 34 visible = @typeA == "Quadruptwo" endparam float param q2A caption = "Quadruptwo param #2" default = 1 visible = @typeA == "Quadruptwo" endparam float param q3A caption = "Quadruptwo param #3" default = 5 visible = @typeA == "Quadruptwo" endparam float param distscaleqdA caption = "Distance scale" default = 0.05 visible = @typeA == "Quadruptwo" endparam float param qsA caption = "Attractor scale" default = 15 visible = @typeA == "Quadruptwo" endparam int param max_quad_iterationsA caption = "Attractor iterations" default = 4 visible = @typeA == "Quadruptwo" endparam float param la1A caption = "Latoocarfian #1" default = -1 visible = @typeA == "Latoocarfian" endparam float param la2A caption = "Latoocarfian #2" default = 2.9 visible = @typeA == "Latoocarfian" endparam float param la3A caption = "Latoocarfian #3" default = 0.8 visible = @typeA == "Latoocarfian" endparam float param la4A caption = "Latoocarfian #4" default = 0.7 visible = @typeA == "Latoocarfian" endparam float param distscalelaA caption = "Distance scale" default = 10 visible = @typeA == "Latoocarfian" endparam float param lasA caption = "Attractor scale" default = 0.05 visible = @typeA == "Latoocarfian" endparam int param max_lat_iterationsA caption = "Attractor iterations" default = 20 visible = @typeA == "Latoocarfian" endparam float param pkzA caption = "Initialize Height" default = 0 visible = @typeA == "Pickover" endparam complex param pkwA caption = "Height weight" default = (0,0) visible = @typeA == "Pickover" endparam float param pk1A caption = "Pickover #1" default = 2.24 visible = @typeA == "Pickover" endparam float param pk2A caption = "Pickover #2" default = 0.43 visible = @typeA == "Pickover" endparam float param pk3A caption = "Pickover #3" default = -0.65 visible = @typeA == "Pickover" endparam float param pk4A caption = "Pickover #4" default = -2.43 visible = @typeA == "Pickover" endparam float param pk5A caption = "Pickover #5" default = 1.0 visible = @typeA == "Pickover" endparam func pkfunc1A caption = "Pickover Fn #1" default = sin() visible = @typeA == "Pickover" endfunc func pkfunc2A caption = "Pickover Fn #2" default = cos() visible = @typeA == "Pickover" endfunc func pkfunc3A caption = "Pickover Fn #3" default = sin() visible = @typeA == "Pickover" endfunc func pkfunc4A caption = "Pickover Fn #4" default = cos() visible = @typeA == "Pickover" endfunc func pkfunc5A caption = "Pickover Fn #5" default = sin() visible = @typeA == "Pickover" endfunc float param distscalepkA caption = "Distance scale" default = 5 visible = @typeA == "Pickover" endparam float param pksA caption = "Attractor scale" default = 0.1 visible = @typeA == "Pickover" endparam int param max_pk_iterationsA caption = "Attractor iterations" default = 10 visible = @typeA == "Pickover" endparam float param li1A caption = "Liar param #1" default = 1 visible = @typeA == "Liar" endparam float param li2A caption = "Liar param #2" default = 1 visible = @typeA == "Liar" endparam float param li3A caption = "Liar param #3" default = 1 visible = @typeA == "Liar" endparam float param distscaleliA caption = "Distance scale" default = 1 visible = @typeA == "Liar" endparam float param lisA caption = "Attractor scale" default = 0.05 visible = @typeA == "Liar" endparam int param max_Liar_iterationsA caption = "Attractor iterations" default = 20 visible = @typeA == "Liar" endparam float param tr1A caption = "Threeply param #1" default = -55 visible = @typeA == "Threeply" endparam float param tr2A caption = "Threeply param #2" default = -1 visible = @typeA == "Threeply" endparam float param tr3A caption = "Threeply param #3" default = 0.8 visible = @typeA == "Threeply" endparam float param distscaletrA caption = "Distance scale" default = 0.0003 visible = @typeA == "Threeply" endparam float param trsA caption = "Attractor scale" default = 50 visible = @typeA == "Threeply" endparam int param max_tr_iterationsA caption = "Attractor iterations" default = 10 visible = @typeA == "Threeply" endparam float param zA caption = "Zito parameter" default = 0.357 visible = @typeA == "Zito" endparam float param distscalezA caption = "Distance scale" default = 1 visible = @typeA == "Zito" endparam float param zsA caption = "Attractor scale" default = 2 visible = @typeA == "Zito" endparam int param max_zito_iterationsA caption = "Attractor iterations" default = 10 visible = @typeA == "Zito" endparam float param he1A caption = "Henon parameter" default = 1.5 visible = @typeA == "Henon" endparam float param distscaleheA caption = "Distance scale" default = 5 visible = @typeA == "Henon" endparam float param hesA caption = "Attractor scale" default = 1.5 visible = @typeA == "Henon" endparam int param max_henon_iterationsA caption = "Attractor iterations" default =5 visible = @typeA == "Henon" endparam float param sp1A caption = "Sierpinski param #1" default = 2 visible = @typeA == "Sierpinski" endparam float param sp2A caption = "Sierpinski param #2" default = 1 visible = @typeA == "Sierpinski" endparam float param sp3A caption = "Sierpinski param #3" default = 0.5 visible = @typeA == "Sierpinski" endparam float param sp4A caption = "Sierpinski param #4" default = 0.5 visible = @typeA == "Sierpinski" endparam float param distscalespA caption = "Distance scale" default = 1 visible = @typeA == "Sierpinski" endparam float param spsA caption = "Attractor scale" default = 1 visible = @typeA == "Sierpinski" endparam int param max_sier_iterationsA caption = "Attractor iterations" default =10 visible = @typeA == "Sierpinski" endparam float param distscalegA caption = "Distance scale" default = 0.07 visible = @typeA == "Gingerbread" endparam float param gsA caption = "Attractor scale" default = 10 visible = @typeA == "Gingerbread" endparam int param max_ginger_iterationsA caption = "Attractor iterations" default =10 visible = @typeA == "Gingerbread" endparam int param sqpA caption = "Sprott selector" default = 0 min = 0 max = 100 visible = @typeA == "SprottQuad" && @version < 1.7 endparam param sqpAn caption = "Sprott selector" default = 0 enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" \ "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" \ "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" \ "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" \ "60" "61" "62" "63" "64" "65" "66" "67" "69" "69" "70" "71" "72" "73" "74" \ "75" "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" \ "90" "91" "92" "93" "94" "95" "96" "97" "98" "99" "100" visible = @typeA == "SprottQuad" && @version >= 1.7 endparam float param distscalesqA caption = "Distance scale" default = 2 visible = @typeA == "SprottQuad" endparam float param sqsA caption = "Attractor scale" default = 3 visible = @typeA == "SprottQuad" endparam int param max_sprott_iterationsA caption = "Attractor iterations" default =5 visible = @typeA == "SprottQuad" endparam int param s3dA caption = "Sprott selector" default = 0 min = 0 max = 50 visible = @typeA == "Sprott3D" && @version < 1.7 endparam param s3dAn caption = "Sprott selector" default = 0 enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" \ "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" \ "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" \ "45" "46" "47" "48" "49" "50" visible = @typeA == "Sprott3D" && @version >= 1.7 endparam float param s3dzA caption = "Initialize Height" default = 0 visible = @typeA == "Sprott3D" endparam complex param s3dwA caption = "Height weight" default = (0,0) visible = @typeA == "Sprott3D" endparam float param distscales3dA caption = "Distance scale" default = 10 visible = @typeA == "Sprott3D" endparam float param s3dsA caption = "Attractor scale" default = 0.8 visible = @typeA == "Sprott3D" endparam int param max_s3d_iterationsA caption = "Attractor iterations" default =5 visible = @typeA == "Sprott3D" endparam int param s3dodeA caption = "Sprott selector" default = 0 min = 0 max = 50 visible = @typeA == "Sprott3D_ODE" && @version < 1.7 endparam param s3dodeAn caption = "Sprott selector" default = 0 enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" \ "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" \ "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" \ "45" "46" "47" "48" "49" "50" visible = @typeA == "Sprott3D_ODE" && @version >= 1.7 endparam float param s3dodezA caption = "Initialize Height" default = 0 visible = @typeA == "Sprott3D_ODE" endparam complex param s3dodewA caption = "Height weight" default = (0,0) visible = @typeA == "Sprott3D_ODE" endparam float param distscales3dodeA caption = "Distance scale" default = 1 visible = @typeA == "Sprott3D_ODE" endparam float param s3dodesA caption = "Attractor scale" default = 10 visible = @typeA == "Sprott3D_ODE" endparam int param max_s3dode_iterationsA caption = "Attractor iterations" default =5 visible = @typeA == "Sprott3D_ODE" endparam func fn4A caption = "Attractor pre-func" default = ident() endfunc func fn5A caption = "Attractor post-func" default = ident() endfunc param angA caption = "Trap rotation" default = 0.0 endparam param skewA caption = "Trap Skew" default = 0.0 endparam param startA caption = "Start offset" default = (0.0,0.0) endparam param offsetA caption = "Trap offset" default = (0.0,0.0) endparam param moveA caption = "Move trap offset" default = false endparam complex param moveamtA caption = "Move amount" default = (1,0) visible = @moveA endparam heading caption = "Progressive Parameters" visible = (@trapnum == 0 && @expert) endheading heading caption = "Progressive A Parameters" visible = @trapnum == 1 && @expert endheading float param rotAstep caption = "Inc rotation" default = 0 visible = @expert endparam float param skewAstep caption = "Inc skew" default = 0 visible = @expert endparam complex param startAstep caption = "Inc start" default = (0,0) visible = @expert endparam complex param trapAstep caption = "Inc trap offset" default = (0,0) visible = @expert endparam heading caption = "Trap B Parameters" visible = @trapnum == 1 && @expert endheading param typeB caption = "Trap Type" default = 0 enum = "Chip" "CosMartin" "Henon" "Hopalong" "Gingerbread""Latoocarfian" \ "Liar" "Pickover" "Quadruptwo" "Sierpinski" "Sprott3D" \ "Sprott3D_ODE" "SprottQuad" "Threeply" "Zito" visible = @trapnum == 1 && @expert endparam param liartypeB caption = "Liar type" default = 0 enum = "real" "imag" "abs" visible = @typeB == "Liar" && @trapnum == 1 && @expert endparam float param cmB caption = "CosMartin parameter" default = 6.28318 visible = @typeB == "CosMartin" && @trapnum == 1 && @expert endparam float param distscalecsB caption = "Distance scale" default = 0.08 visible = @typeB == "CosMartin" && @trapnum == 1 && @expert endparam float param cmsB caption = "Attractor scale" default = 20 visible = @typeB == "CosMartin" && @trapnum == 1 && @expert endparam int param max_cos_iterationsB caption = "Attractor iterations" default = 10 visible = @typeB == "CosMartin" && @trapnum == 1 && @expert endparam float param ch1B caption = "Chip parameter #1" default = -15 visible = @typeB == "Chip" && @trapnum == 1 && @expert endparam float param ch2B caption = "Chip parameter #2" default = -3 visible = @typeB == "Chip" && @trapnum == 1 && @expert endparam float param ch3B caption = "Chip parameter #3" default = 1 visible = @typeB == "Chip" && @trapnum == 1 && @expert endparam float param distscalechB caption = "Distance scale" default = 0.01 visible = @typeB == "Chip" && @trapnum == 1 && @expert endparam float param chsB caption = "Attractor scale" default = 15 visible = @typeB == "Chip" && @trapnum == 1 && @expert endparam int param max_chip_iterationsB caption = "Attractor iterations" default = 5 visible = @typeB == "Chip" && @trapnum == 1 && @expert endparam float param h1B caption = "Hopalong parameter #1" default = 0.4 visible = @typeB == "Hopalong" && @trapnum == 1 && @expert endparam float param h2B caption = "Hopalong parameter #2" default = 1 visible = @typeB == "Hopalong" && @trapnum == 1 && @expert endparam float param h3B caption = "Hopalong parameter #3" default = 0 visible = @typeB == "Hopalong" && @trapnum == 1 && @expert endparam float param distscalehpB caption = "Distance scale" default = 0.06 visible = @typeB == "Hopalong" && @trapnum == 1 && @expert endparam float param hsB caption = "Attractor scale" default = 15 visible = @typeB == "Hopalong" && @trapnum == 1 && @expert endparam int param max_hop_iterationsB caption = "Attractor iterations" default = 10 visible = @typeB == "Hopalong" && @trapnum == 1 && @expert endparam float param q1B caption = "Quadruptwo param #1" default = 34 visible = @typeB == "Quadruptwo" && @trapnum == 1 && @expert endparam float param q2B caption = "Quadruptwo param #2" default = 1 visible = @typeB == "Quadruptwo" && @trapnum == 1 && @expert endparam float param q3B caption = "Quadruptwo param #3" default = 5 visible = @typeB == "Quadruptwo" && @trapnum == 1 && @expert endparam float param distscaleqdB caption = "Distance scale" default = 0.05 visible = @typeB == "Quadruptwo" && @trapnum == 1 && @expert endparam float param qsB caption = "Attractor scale" default = 15 visible = @typeB == "Quadruptwo" && @trapnum == 1 && @expert endparam int param max_quad_iterationsB caption = "Attractor iterations" default = 4 visible = @typeB == "Quadruptwo" && @trapnum == 1 && @expert endparam float param la1B caption = "Latoocarfian param #1" default = -1 visible = @typeB == "Latoocarfian"&& @trapnum == 1 && @expert endparam float param la2B caption = "Latoocarfian param #2" default = 2.9 visible = @typeB == "Latoocarfian"&& @trapnum == 1 && @expert endparam float param la3B caption = "Latoocarfian param #3" default = 0.8 visible = @typeB == "Latoocarfian"&& @trapnum == 1 && @expert endparam float param la4B caption = "Latoocarfian param #4" default = 0.7 visible = @typeB == "Latoocarfian"&& @trapnum == 1 && @expert endparam float param distscalelaB caption = "Distance scale" default = 10 visible = @typeB == "Latoocarfian"&& @trapnum == 1 && @expert endparam float param lasB caption = "Attractor scale" default = 0.05 visible = @typeB == "Latoocarfian" && @trapnum == 1 && @expert endparam int param max_lat_iterationsB caption = "Attractor iterations" default = 20 visible = @typeB == "Latoocarfian"&& @trapnum == 1 && @expert endparam float param pkzB caption = "Initialize Height" default = 1 visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam complex param pkwB caption = "Height weight" default = (0,0) visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam float param pk1B caption = "Pickover #1" default = 2.24 visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam float param pk2B caption = "Pickover #2" default = 0.43 visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam float param pk3B caption = "Pickover #3" default = -0.65 visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam float param pk4B caption = "Pickover #4" default = -2.43 visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam float param pk5B caption = "Pickover #5" default = 1.0 visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam func pkfunc1B caption = "Pickover Fn #1" default = sin() visible = @typeB == "Pickover" && @trapnum == 1 && @expert endfunc func pkfunc2B caption = "Pickover Fn #2" default = cos() visible = @typeB == "Pickover" && @trapnum == 1 && @expert endfunc func pkfunc3B caption = "Pickover Fn #3" default = sin() visible = @typeB == "Pickover" && @trapnum == 1 && @expert endfunc func pkfunc4B caption = "Pickover Fn #4" default = cos() visible = @typeB == "Pickover" && @trapnum == 1 && @expert endfunc func pkfunc5B caption = "Pickover Fn #5" default = sin() visible = @typeB == "Pickover" && @trapnum == 1 && @expert endfunc float param distscalepkB caption = "Distance scale" default = 5 visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam float param pksB caption = "Attractor scale" default = 0.1 visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam int param max_pk_iterationsB caption = "Attractor iterations" default = 10 visible = @typeB == "Pickover" && @trapnum == 1 && @expert endparam float param li1B caption = "Liar param #1" default = 1 visible = @typeB == "Liar" && @trapnum == 1 && @expert endparam float param li2B caption = "Liar param #2" default = 1 visible = @typeB == "Liar" && @trapnum == 1 && @expert endparam float param li3B caption = "Liar param #3" default = 1 visible = @typeB == "Liar" && @trapnum == 1 && @expert endparam float param distscaleliB caption = "Distance scale" default = 1 visible = @typeB == "Liar" && @trapnum == 1 && @expert endparam float param lisB caption = "Attractor scale" default = 0.05 visible = @typeB == "Liar" && @trapnum == 1 && @expert endparam int param max_Liar_iterationsB caption = "Attractor iterations" default = 20 visible = @typeB == "Liar" && @trapnum == 1 && @expert endparam float param tr1B caption = "Threeply param #1" default = -55 visible = @typeB == "Threeply" && @trapnum == 1 && @expert endparam float param tr2B caption = "Threeply param #2" default = -1 visible = @typeB == "Threeply" && @trapnum == 1 && @expert endparam float param tr3B caption = "Threeply param #3" default = 0.8 visible = @typeB == "Threeply" && @trapnum == 1 && @expert endparam float param distscaletrB caption = "Distance scale" default = 0.0003 visible = @typeB == "Threeply" && @trapnum == 1 && @expert endparam float param trsB caption = "Attractor scale" default = 50 visible = @typeB == "Threeply" && @trapnum == 1 && @expert endparam int param max_tr_iterationsB caption = "Attractor iterations" default = 10 visible = @typeB == "Threeply" && @trapnum == 1 && @expert endparam float param zB caption = "Zito parameter" default = 0.357 visible = @typeB == "Zito"&& @trapnum == 1 && @expert endparam float param distscalezB caption = "Distance scale" default = 1 visible = @typeB == "Zito"&& @trapnum == 1 && @expert endparam float param zsB caption = "Attractor scale" default = 2 visible = @typeB == "Zito"&& @trapnum == 1 && @expert endparam int param max_zito_iterationsB caption = "Attractor iterations" default = 10 visible = @typeB == "Zito"&& @trapnum == 1 && @expert endparam float param he1B caption = "Henon parameter" default = 1.5 visible = @typeB == "Henon"&& @trapnum == 1 && @expert endparam float param distscaleheB caption = "Distance scale" default = 5 visible = @typeB == "Henon"&& @trapnum == 1 && @expert endparam float param hesB caption = "Attractor scale" default = 1.5 visible = @typeB == "Henon"&& @trapnum == 1 && @expert endparam int param max_henon_iterationsB caption = "Attractor iterations" default = 5 visible = @typeB == "Henon"&& @trapnum == 1 && @expert endparam float param sp1B caption = "Sierpinski param" default = 2 visible = @typeB == "Sierpinski"&& @trapnum == 1 && @expert endparam float param sp2B caption = "Sierpinski param #2" default = 1 visible = @typeB == "Sierpinski"&& @trapnum == 1 && @expert endparam float param sp3B caption = "Sierpinski param #3" default = 0.5 visible = @typeB == "Sierpinski" && @trapnum == 1 && @expert endparam float param sp4B caption = "Sierpinski param #4" default = 0.5 visible = @typeB == "Sierpinski"&& @trapnum == 1 && @expert endparam float param distscalespB caption = "Distance scale" default = 1 visible = @typeB == "Sierpinski"&& @trapnum == 1 && @expert endparam float param spsB caption = "Attractor scale" default = 1 visible = @typeB == "Sierpinski"&& @trapnum == 1 && @expert endparam int param max_sier_iterationsB caption = "Attractor iterations" default =10 visible = @typeB == "Sierpinski"&& @trapnum == 1 && @expert endparam float param distscalegB caption = "Distance scale" default = 0.07 visible = @typeB == "Gingerbread"&& @trapnum == 1 && @expert endparam float param gsB caption = "Attractor scale" default = 10 visible = @typeB == "Gingerbread"&& @trapnum == 1 && @expert endparam int param max_ginger_iterationsB caption = "Attractor iterations" default =10 visible = @typeB == "Gingerbread" && @trapnum == 1 && @expert endparam int param sqpB caption = "Sprott selector" default = 0 min = 0 max = 100 visible = @typeB == "SprottQuad" && @trapnum == 1 && @expert && @version < 1.7 endparam int param sqpBn caption = "Sprott selector" default = 0 enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" \ "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" \ "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" \ "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" \ "60" "61" "62" "63" "64" "65" "66" "67" "69" "69" "70" "71" "72" "73" "74" \ "75" "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" \ "90" "91" "92" "93" "94" "95" "96" "97" "98" "99" "100" visible = @typeB == "SprottQuad" && @trapnum == 1 && @expert && @version >= 1.7 endparam float param distscalesqB caption = "Distance scale" default = 2 visible = @typeB == "SprottQuad" && @trapnum == 1 && @expert endparam float param sqsB caption = "Attractor scale" default = 3 visible = @typeB == "SprottQuad" && @trapnum == 1 && @expert endparam int param max_sprott_iterationsB caption = "Attractor iterations" default =5 visible = @typeB == "SprottQuad" && @trapnum == 1 && @expert endparam int param s3dB caption = "Sprott selector" default = 0 min = 0 max = 50 visible = @typeB == "Sprott3D" && @trapnum == 1 && @expert && @version < 1.7 endparam param s3dBn caption = "Sprott selector" default = 0 enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" \ "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" \ "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" \ "45" "46" "47" "48" "49" "50" visible = @typeB == "Sprott3D" && @trapnum == 1 && @expert && @version >= 1.7 endparam float param s3dzB caption = "Initialize Height" default = 1 visible = @typeB == "Sprott3D" && @trapnum == 1 && @expert endparam complex param s3dwB caption = "Height weight" default = (0,0) visible = @typeB == "Sprott3D" && @trapnum == 1 && @expert endparam float param distscales3dB caption = "Distance scale" default = 10 visible = @typeB == "Sprott3D" && @trapnum == 1 && @expert endparam float param s3dsB caption = "Attractor scale" default = 0.8 visible = @typeB == "Sprott3D" && @trapnum == 1 && @expert endparam int param max_s3d_iterationsB caption = "Attractor iterations" default =5 visible = @typeB == "Sprott3D" && @trapnum == 1 && @expert endparam int param s3dodeB caption = "Sprott selector" default = 0 min = 0 max = 50 visible = @typeB == "Sprott3D_ODE" && @trapnum == 1 && @expert && @version < 1.7 endparam param s3dodeBn caption = "Sprott selector" default = 0 enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" \ "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" \ "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" \ "45" "46" "47" "48" "49" "50" visible = @typeB == "Sprott3D_ODE" && @trapnum == 1 && @expert && @version >= 1.7 endparam float param s3dodezB caption = "Initialize Height" default = 0 visible = @typeB == "Sprott3D_ODE" && @trapnum == 1 && @expert endparam complex param s3dodewB caption = "Height weight" default = (0,0) visible = @typeB == "Sprott3D_ODE" && @trapnum == 1 && @expert endparam float param distscales3dodeB caption = "Distance scale" default = 1 visible = @typeB == "Sprott3D_ODE" && @trapnum == 1 && @expert endparam float param s3dodesB caption = "Attractor scale" default = 10 visible = @typeB == "Sprott3D_ODE" && @trapnum == 1 && @expert endparam int param max_s3dode_iterationsB caption = "Attractor iterations" default =5 visible = @typeB == "Sprott3D_ODE" && @trapnum == 1 && @expert endparam func fn4B caption = "Attractor pre-func" default = ident() visible = @trapnum == 1 && @expert endfunc func fn5B caption = "Attractor post-func" default = ident() visible = @trapnum == 1 && @expert endfunc param angB caption = "Trap rotation" default = 0.0 visible = @trapnum == 1 && @expert endparam param skewB caption = "Trap Skew" default = 0.0 visible = @trapnum == 1 && @expert endparam param startB caption = "Start offset" default = (0.0,0.0) visible = @trapnum == 1 && @expert endparam param offsetB caption = "Trap offset" default = (0.0,0.0) visible = @trapnum == 1 && @expert endparam param moveB caption = "Move trap offset" default = false visible = @trapnum == 1 && @expert endparam complex param moveamtB caption = "Move amount" default = (1,0) visible = @moveB && @trapnum == 1 && @expert endparam heading caption = "Progressive B Parameters" visible = @trapnum == 1 && @expert endheading float param rotBstep caption = "Inc rotation" default = 0 visible = @trapnum == 1 && @expert endparam float param skewBstep caption = "Inc skew" default = 0 visible = @trapnum == 1 && @expert endparam complex param startBstep caption = "Inc start" default = (0,0) visible = @trapnum == 1 && @expert endparam complex param trapBstep caption = "Inc trap offset" default = (0,0) visible = @trapnum == 1 && @expert endparam heading caption = "fBm Parameters" visible = @expert endheading param weight caption = "fBm Weight" default = 0.0 min = 0.0 max = 1.0 visible = @expert endparam param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = @expert endparam param fbm caption = "fBm Transfer Weight" default = 0.0 min = 0.0 visible = @expert endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @expert endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = @expert endparam param fbmf caption = "fBm Final Weight" default = 10.0 visible = @expert endparam heading caption = "Texture Parameters" visible = @expert endheading param toffset caption = "Texture offset" default = (-1,-1) hint = "Changes the texture pattern." visible = @expert endparam param tweight caption = "Texture weight" default = 0.0 visible = @expert endparam param ts caption = "Texture scale" default = 20.0 visible = @expert endparam param tc caption = "Texture modifier" default = 5.0 visible = @expert endparam param pwr caption = "Texture power" default = 1.0 visible = @expert endparam param addfbm caption = "Add fBm" default = false visible=@expert endparam param tfbm caption = "fBm Amount" default = 1.0 visible=@addfbm==true && @expert endparam func fn1 caption = "Texture Function 1" default = sqr() visible = @expert endfunc func fn2 caption = "Texture Function 2" default = acos() visible = @expert endfunc func fn6 caption = "Texture Function 3" default = round() visible=@expert endfunc heading caption = "Morph Parameters" visible = (@change == 0 && @exp1 == (1,0) && @exp2 == (1,0) \ && @exp3 == (1,0) && @tw == (0,0) && @tw2 == (0,0) && @tw3 == \ (0,0) && @tha2 == false)&& @expert endheading heading caption = "Morph Parameters [active]" visible = (@change != 0 || @exp1 != (1,0) || @exp2 != (1,0) || \ @exp3 != (1,0) || @tw != (0,0) || @tw2 != (0,0) || \ @tw3 != (0,0) || @tha2 == true)&& @expert endheading param showm caption = "Morph Parameters" hint = "Additional shaping parameters and functions." default = false visible = @expert endparam param tha2 caption = "Morph -> Morph II" default = false visible = @showm&& @expert endparam param change caption = "Morph" enum = "1""2""3""4""5""6""7""8""9""10""11" default = 0 visible = @showm && @expert endparam param mmode caption = "Z1 Mode" enum = "z+|z|""z-|z|""|z|-z" default = 0 hint = "Defines relationship of z1 to z in 1st z block" visible = @showm && @tha2 && @expert endparam param zchange1 caption = "Z1 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z1 variable " visible = @showm && @tha2 && @expert endparam param mmode2 caption = "Z2 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z2 to z in 2nd z block" visible = @showm && @tha2 && @change > 0 && @expert endparam param zchange2 caption = "Z2 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z2 variable " visible = @showm && @tha2 && @change > 0 && @expert endparam param mmode3 caption = "Z3 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z3 to z in 3rd z block" visible = @showm && @tha2 && @change > 5 && @expert endparam param zchange3 caption = "Z3 type" enum = "|z|""atan2(z)""real(z)""imag(z)" hint = "Determines the character of z3 variable " default = 0 visible = @showm && @tha2 && @change > 5 && @expert endparam complex param exp1 caption = "Bias 1" default = (1,0) visible = @showm && @expert endparam complex param exp3 caption = "Bias 2" default = (1,0) visible = @showm && @change > 0 && @expert endparam complex param exp2 caption = "Bias 3" default = (1,0) visible = @showm && @change > 5&& @expert endparam complex param exp4 caption = "Bias Z1" default = (1,0) visible = @tha2 && @showm && @expert endparam complex param exp5 caption = "Bias Z2" default = (1,0) visible = @tha2 && @showm && @change > 0 && @expert endparam complex param exp6 caption = "Bias Z3" default = (1,0) visible = @tha2 && @showm && @change > 5 && @expert endparam complex param tw caption = "Twist 1" default = (0,0) visible = @showm && @expert endparam complex param tw2 caption = "Twist 2" default = (0,0) visible = @showm && @change > 0 && @expert endparam complex param tw3 caption = "Twist 3" default = (0,0) visible = @showm && @change > 5 && @expert endparam complex param tw4 caption = "Twist Z1" default = (0,0) visible = @tha2 && @showm && @expert endparam complex param tw5 caption = "Twist Z2" default = (0,0) visible = @tha2 && @showm && @change > 0 && @expert endparam complex param tw6 caption = "Twist Z3" default = (0,0) visible = @tha2 && @showm && @change > 5 && @expert endparam param op caption = "Operator" enum = "+""-""*""/""^" default = 0 visible = @showm && @change > 5&& @expert endparam func nufunc caption = "Morph function 1" default = ident() visible = @showm&& @expert endfunc func nufunc2 caption = "Morph function 2" default = ident () visible = @showm && @change > 0&& @expert endfunc func nufunc3 caption = "Morph function 3" default = ident () visible = @showm && @change > 5 && @expert endfunc func nufunc4 caption = "Morph function Z1" default = ident () visible = @tha2 && @showm && @expert endfunc func nufunc5 caption = "Morph function Z2" default = zero () visible = @tha2 && @showm && @change > 0 && @expert endfunc func nufunc6 caption = "Morph function Z3" default = zero () visible = @tha2 && @showm && @change > 5 && @expert endfunc heading caption = "Toby's Texture Parameters" visible = @expert endheading param advt caption = "Texture Parameters" default = true visible = false endparam float param txamt caption = "Overall Tx Percent" default = 100.0 hint = "Controls the amount of \ Random, fBm, Decimal, Popgnarl and Additional \ texture applied cumulatively." visible = @advt && @expert endparam heading caption = "Decimal" visible = @advt && @decamt == 0 && @expert endheading heading caption = "Decimal [active]" visible = @advt && @decamt != 0 && @expert endheading param advd caption = "Decimal Texturing" default = false visible = @advt && @expert endparam float param decamt caption = "Decimal Tx Amount" default = 0.0 visible = @advt && @advd && @expert endparam param dec_init caption = "Decimal Initialisation" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advd && @expert endparam param ztyp2 caption = "Init z type" enum = "#z""Morph z""Trap z""Trap #z""Trap dist" "Raw dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Decimal Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && \ @expert endparam func fntx4 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Decimal Initialization'" visible = @advt && @advd && @expert endfunc func fntx5 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Decimal Initialization'" visible = @advt && @advd && @expert endfunc param dec_type caption = "Decimal Type" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advd && @expert endparam func fndec caption = "Type Function" default = atanh () hint = "Active when 'Decimal Type' = 'All Functions'" visible = @advt && @advd && @dec_type == 4 && @expert endfunc complex param txia2 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && @expert endparam complex param txib2 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && @expert endparam complex param txic2 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) && @expert endparam float param dec_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Decimal Type'" visible = @advt && @advd && @expert endparam float param dec_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present) defined in 'Decimal Type'" visible = @advt && @advd && @dec_type > 4 && @expert endparam float param dectxt caption = "Decimal Depth" default = 1.0 hint = "Changes the amount and to some extent \ the pattern of the texture." visible = @advt && @advd && @expert endparam float param dec_limit caption = "Decimal Limit" default = 2.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advd && @expert endparam complex param exad4 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 1st (or only) variable present defined in \ 'Decimal Initialization'" visible = @advt && @advd && @expert endparam complex param exad5 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 2nd variable (when present) defined in \ 'Decimal Initialization'" visible = @advt && @advd && !(@dec_init == 0 ||@dec_init == 5 || \ @dec_init == 6) && @expert endparam float param dec_size caption = "Decimal Size" default = 1.0 visible = @advt && @advd && @expert endparam param dec_sgn caption = "Apply Decimal Sign?" default = true visible = @advt && @advd && @expert endparam heading caption = "Popgnarl" visible = @advt && @gnarl_amt == 0 && @expert endheading heading caption = "Popgnarl [active]" visible = @advt && @gnarl_amt != 0 && @expert endheading param advpg caption = "Popgnarl Texturing" default = false visible = @advt && @expert endparam float param gnarl_amt caption = "Popgnarl Amount" default = 0.0 min = 0.0 visible = @advt && @advpg && @expert endparam param gnarl_init caption = "Popgnarl Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advpg && @expert endparam param ztyp3 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Trap dist" "Raw dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Popgnarl Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam func fntx6 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg && @expert endfunc func fntx7 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg && @expert endfunc complex param txia3 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam complex param txib3 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam complex param txic3 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) && @expert endparam complex param exad6 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 1st (or only) variable defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && @expert endparam complex param exad7 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 2nd variable (when present) defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && !(@gnarl_init == 0 || @gnarl_init == 5 || \ @gnarl_init == 6 || @gnarl_init == 21) && @expert endparam param gnarl_type caption = "Popgnarl Mode" enum = "real" "imag" "real+imag" "real*imag" "real-imag" \ "real/imag" "imag/real" "real^imag" "imag^real" \ "1/real" "1/imag" "angle" "magnitude" "arith. mean" \ "geom. mean" visible = @advt && @advpg && @expert endparam func fng caption = "Mode Function" default = abs() hint = "Acts on the variables in 'Popgnarl Mode'" visible = @advt && @advpg && @gnarl_type < 11 && @expert endfunc param gnarl_scaling caption = "Popgnarl Scaling" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advpg && @expert endparam func fngnarl caption = "Scaling Function" default = atanh () visible = @advt && @advpg && @gnarl_scaling == 4 && @expert endfunc float param gnarl_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @expert endparam float param gnarl_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present)defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @gnarl_scaling > 4 && @expert endparam param gnarl_form caption = "Popgnarl Formula" enum = "gnarl" "popcorn" "popsicle" "tannous" "narlog" visible = @advt && @advpg && @expert endparam float param gnarl_limit caption = "Popgnarl Limit" default = 1.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advpg && @expert endparam float param gnarl_size caption = "Popgnarl Size" default = 1.0 visible = @advt && @advpg && @expert endparam int param gnarl_octaves caption = "Popgnarl Octaves" default = 5 min = 1 visible = @advt && @advpg && @expert endparam heading caption = "Geometrix" visible = @advt && @trtxt == 0&& @expert endheading heading caption = "Geometrix [active]" visible = @advt && @trtxt != 0 && @expert endheading param advtr caption = "Geometrix Texturing" default = false visible = @advt && @expert endparam float param trtxt caption = "Geometrix Tx Amt" default = 0.0 visible = @advt && @advtr&& @expert endparam param trinit caption = "Geometrix Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advtr&& @expert endparam param ztyp5 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Trap dist" "Raw dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Geometrix Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam func fntx10 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr && @expert endfunc func fntx11 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr && @expert endfunc complex param trxia caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam complex param trxib caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam complex param trxic caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21)&& @expert endparam complex param exad10 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'Geometrix Initialization'" visible = @advt && @advtr&& @expert endparam complex param exad11 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'Geometrix Initialization'" visible = @advt && @advtr && !(@trinit == 0 ||@trinit == 5 || @trinit == 6 ||\ @trinit == 21)&& @expert endparam float param exp caption = "Contrast" default = 0.6 visible = @advt && @advtr && @expert hint = "Higher values intensify the contrast between texture sections. If \ you find burned-out areas of texture try lowering this value" endparam float param scc caption = "Density" default = 1.0 hint = "Higher values create finer detail in the texture" visible = @advt && @advtr && @expert endparam float param trp1 caption = "Scale" default = 1 visible = @advt && @advtr&& @expert hint = "Densest texture is at '1'. Try other values and increase the \ 'Density' value to achieve different texture patterns" endparam float param freq caption = "Definition 1" default = 10 visible = @advt && @advtr && @expert hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition and/or complexity" endparam float param trp2 caption = "Definition 2" default = .7 hint = "Works interactively with other 'Definition' params. Lower values \ yield more texture definition" visible = @advt && @advtr&& @expert endparam float param trp3 caption = "Definition 3" default = .7 hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition" visible = @advt && @advtr && @expert endparam float param shad1 caption = "Shading 1" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam float param shad2 caption = "Shading 2" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam float param shad3 caption = "Shading 3" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam float param shad4 caption = "Shading 4" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr&& @expert endparam func fnzr caption = "Z function 1" default = ident() visible = @advt && @advtr && @expert endfunc func fnzi caption = "Z function 2" default = ident() visible = @advt && @advtr && @expert endfunc func fn1tx caption = "Real function" default = sqrt() visible = @advt && @advtr && @expert endfunc func fn2tx caption = "Imag function" default = ident() visible = @advt && @advtr&& @expert endfunc func fn3tx caption = "Overall function" default = asin() visible = @advt && @advtr&& @expert endfunc float param geo_limit caption = "Geometrix Limit" default = 0.0 hint = "Low values limit texture contrast. Zero is 'off'" visible = @advt && @advtr&& @expert endparam bool param geo_sgn caption = "Soften Texture" default = false visible = @advt && @advtr&& @expert endparam } DirectColorSlope { ; Ron Barnett, November 2006 ; This ucl is intended for use with slope formulas global: ; light origin float lpointx = @lpointx float lpointy = @lpointy float lpointz = @lplane ; light point at float lightx = @lightx float lighty = @lighty float lightz = @lightz float d2r = #pi/180; degrees to radians conversion factor ; light vector float lx = 0 float ly = 0 float lz = 0 if @ltype == "Infinite light" lx = cos(@angle*d2r) * cos(@elevation*d2r) ly = sin(@angle*d2r) * cos(@elevation*d2r) lz = -sin(@elevation*d2r) else lx = lightx-lpointx ly = -lighty+lpointy lz = lightz-lpointz endif float vd = sqrt(lx^2+ly^2+lz^2) lx = lx/vd ly = ly/vd lz = lz/vd ; Color range variables and initialization. color colorMap [2, 2] ; int offset = 0 if (@colorPreset == "Preset") ; User specified custom range. if @colorchoice == "Magenta" colorMap [0,1] = @colorMax1, colorMap [0,0] = @colorMin1 elseif @colorchoice == "Blueviolet" colorMap [0,1] = @colorMax2, colorMap [0,0] = @colorMin2 elseif @colorchoice == "AliceBlue" colorMap [0,1] = @colorMax3, colorMap [0,0] = @colorMin3 elseif @colorchoice == "AntiqueWhite" colorMap [0,1] = @colorMax4, colorMap [0,0] = @colorMin4 elseif @colorchoice == "Aquamarine" colorMap [0,1] = @colorMax5, colorMap [0,0] = @colorMin5 elseif @colorchoice == "Azure" colorMap [0,1] = @colorMax6, colorMap [0,0] = @colorMin6 elseif @colorchoice == "Beige" colorMap [0,1] = @colorMax7, colorMap [0,0] = @colorMin7 elseif @colorchoice == "Black" colorMap [0,1] = @colorMax8, colorMap [0,0] = @colorMin8 elseif @colorchoice == "BlanchedAlmond" colorMap [0,1] = @colorMax9, colorMap [0,0] = @colorMin9 elseif @colorchoice == "Blue" colorMap [0,1] = @colorMax10, colorMap [0,0] = @colorMin10 elseif @colorchoice == "Brown" colorMap [0,1] = @colorMax11, colorMap [0,0] = @colorMin11 elseif @colorchoice == "Burlywood" colorMap [0,1] = @colorMax12, colorMap [0,0] = @colorMin12 elseif @colorchoice == "CadetBlue" colorMap [0,1] = @colorMax13, colorMap [0,0] = @colorMin13 elseif @colorchoice == "Chocolate" colorMap [0,1] = @colorMax14, colorMap [0,0] = @colorMin14 elseif @colorchoice == "Coral" colorMap [0,1] = @colorMax15, colorMap [0,0] = @colorMin15 elseif @colorchoice == "CornflowerBlue" colorMap [0,1] = @colorMax16, colorMap [0,0] = @colorMin16 elseif @colorchoice == "Cornsilk" colorMap [0,1] = @colorMax17, colorMap [0,0] = @colorMin17 elseif @colorchoice == "Crimson" colorMap [0,1] = @colorMax18, colorMap [0,0] = @colorMin18 elseif @colorchoice == "Cyan" colorMap [0,1] = @colorMax19, colorMap [0,0] = @colorMin19 elseif @colorchoice == "DarkBlue" colorMap [0,1] = @colorMax20, colorMap [0,0] = @colorMin20 elseif @colorchoice == "DarkCyan" colorMap [0,1] = @colorMax21, colorMap [0,0] = @colorMin21 elseif @colorchoice == "DarkGoldenrod" colorMap [0,1] = @colorMax22, colorMap [0,0] = @colorMin22 elseif @colorchoice == "DarkGreen" colorMap [0,1] = @colorMax23, colorMap [0,0] = @colorMin23 elseif @colorchoice == "Silver" colorMap [0,1] = @colorMax24, colorMap [0,0] = @colorMin24 elseif @colorchoice == "DarkKhaki" colorMap [0,1] = @colorMax25, colorMap [0,0] = @colorMin25 elseif @colorchoice == "DarkMagenta" colorMap [0,1] = @colorMax26, colorMap [0,0] = @colorMin26 elseif @colorchoice == "DarkOliveGreen" colorMap [0,1] = @colorMax27, colorMap [0,0] = @colorMin27 elseif @colorchoice == "DarkOrchid" colorMap [0,1] = @colorMax28, colorMap [0,0] = @colorMin28 elseif @colorchoice == "DeepPink" colorMap [0,1] = @colorMax29, colorMap [0,0] = @colorMin29 elseif @colorchoice == "DarkRed" colorMap [0,1] = @colorMax30, colorMap [0,0] = @colorMin30 elseif @colorchoice == "DarkSalmon" colorMap [0,1] = @colorMax31, colorMap [0,0] = @colorMin31 elseif @colorchoice == "DarkSlateBlue" colorMap [0,1] = @colorMax32, colorMap [0,0] = @colorMin32 elseif @colorchoice == "DarkSlateGrey" colorMap [0,1] = @colorMax33, colorMap [0,0] = @colorMin33 elseif @colorchoice == "DarkTurquoise" colorMap [0,1] = @colorMax34, colorMap [0,0] = @colorMin34 elseif @colorchoice == "DarkViolet" colorMap [0,1] = @colorMax35, colorMap [0,0] = @colorMin35 elseif @colorchoice == "DeepSkyBlue" colorMap [0,1] = @colorMax36, colorMap [0,0] = @colorMin36 elseif @colorchoice == "DimGrey" colorMap [0,1] = @colorMax37, colorMap [0,0] = @colorMin37 elseif @colorchoice == "DodgerBlue" colorMap [0,1] = @colorMax38, colorMap [0,0] = @colorMin38 elseif @colorchoice == "FireBrick" colorMap [0,1] = @colorMax39, colorMap [0,0] = @colorMin39 elseif @colorchoice == "FloralWhite" colorMap [0,1] = @colorMax40, colorMap [0,0] = @colorMin40 elseif @colorchoice == "Chartreuse" colorMap [0,1] = @colorMax41, colorMap [0,0] = @colorMin41 elseif @colorchoice == "DarkSeaGreen" colorMap [0,1] = @colorMax42, colorMap [0,0] = @colorMin42 elseif @colorchoice == "ForestGreen" colorMap [0,1] = @colorMax43, colorMap [0,0] = @colorMin43 elseif @colorchoice == "Fuchia" colorMap [0,1] = @colorMax44, colorMap [0,0] = @colorMin44 elseif @colorchoice == "Gainsboro" colorMap [0,1] = @colorMax45, colorMap [0,0] = @colorMin45 elseif @colorchoice == "GhostWhite" colorMap [0,1] = @colorMax46, colorMap [0,0] = @colorMin46 elseif @colorchoice == "Gold" colorMap [0,1] = @colorMax47, colorMap [0,0] = @colorMin47 elseif @colorchoice == "Goldenrod" colorMap [0,1] = @colorMax48, colorMap [0,0] = @colorMin48 elseif @colorchoice == "Grey" colorMap [0,1] = @colorMax49, colorMap [0,0] = @colorMin49 elseif @colorchoice == "Green" colorMap [0,1] = @colorMax50, colorMap [0,0] = @colorMin50 elseif @colorchoice == "GreenYellow" colorMap [0,1] = @colorMax51, colorMap [0,0] = @colorMin51 elseif @colorchoice == "Honeydew" colorMap [0,1] = @colorMax52, colorMap [0,0] = @colorMin52 elseif @colorchoice == "HotPink" colorMap [0,1] = @colorMax53, colorMap [0,0] = @colorMin53 elseif @colorchoice == "IndianRed" colorMap [0,1] = @colorMax54, colorMap [0,0] = @colorMin54 elseif @colorchoice == "Indigo" colorMap [0,1] = @colorMax55, colorMap [0,0] = @colorMin55 elseif @colorchoice == "Ivory" colorMap [0,1] = @colorMax56, colorMap [0,0] = @colorMin56 elseif @colorchoice == "Khaki" colorMap [0,1] = @colorMax57, colorMap [0,0] = @colorMin57 elseif @colorchoice == "Lavender" colorMap [0,1] = @colorMax58, colorMap [0,0] = @colorMin58 elseif @colorchoice == "LavenderBlush" colorMap [0,1] = @colorMax59, colorMap [0,0] = @colorMin59 elseif @colorchoice == "LawnGreen" colorMap [0,1] = @colorMax60, colorMap [0,0] = @colorMin60 elseif @colorchoice == "LemonChiffon" colorMap [0,1] = @colorMax61, colorMap [0,0] = @colorMin61 elseif @colorchoice == "LightBlue" colorMap [0,1] = @colorMax62, colorMap [0,0] = @colorMin62 elseif @colorchoice == "LightCoral" colorMap [0,1] = @colorMax63, colorMap [0,0] = @colorMin63 elseif @colorchoice == "LightCyan" colorMap [0,1] = @colorMax64, colorMap [0,0] = @colorMin64 elseif @colorchoice == "LightGoldenrodYellow" colorMap [0,1] = @colorMax65, colorMap [0,0] = @colorMin65 elseif @colorchoice == "LightGreen" colorMap [0,1] = @colorMax66, colorMap [0,0] = @colorMin66 elseif @colorchoice == "LightGrey" colorMap [0,1] = @colorMax67, colorMap [0,0] = @colorMin67 elseif @colorchoice == "LightPink" colorMap [0,1] = @colorMax68, colorMap [0,0] = @colorMin68 elseif @colorchoice == "LightSalmon" colorMap [0,1] = @colorMax69, colorMap [0,0] = @colorMin69 elseif @colorchoice == "LightSeaGreen" colorMap [0,1] = @colorMax70, colorMap [0,0] = @colorMin70 elseif @colorchoice == "LightSkyBlue" colorMap [0,1] = @colorMax71, colorMap [0,0] = @colorMin71 elseif @colorchoice == "LightSlateGrey" colorMap [0,1] = @colorMax72, colorMap [0,0] = @colorMin72 elseif @colorchoice == "LightSteelBlue" colorMap [0,1] = @colorMax73, colorMap [0,0] = @colorMin73 elseif @colorchoice == "LightYellow" colorMap [0,1] = @colorMax74, colorMap [0,0] = @colorMin74 elseif @colorchoice == "Lime" colorMap [0,1] = @colorMax75, colorMap [0,0] = @colorMin75 elseif @colorchoice == "LimeGreen" colorMap [0,1] = @colorMax76, colorMap [0,0] = @colorMin76 elseif @colorchoice == "Linen" colorMap [0,1] = @colorMax77, colorMap [0,0] = @colorMin77 elseif @colorchoice == "Maroon" colorMap [0,1] = @colorMax78, colorMap [0,0] = @colorMin78 elseif @colorchoice == "MediumAquamarine" colorMap [0,1] = @colorMax79, colorMap [0,0] = @colorMin79 elseif @colorchoice == "MediumBlue" colorMap [0,1] = @colorMax80, colorMap [0,0] = @colorMin80 elseif @colorchoice == "MediumOrchid" colorMap [0,1] = @colorMax81, colorMap [0,0] = @colorMin81 elseif @colorchoice == "MediumPurple" colorMap [0,1] = @colorMax82, colorMap [0,0] = @colorMin82 elseif @colorchoice == "MediumSeaGreen" colorMap [0,1] = @colorMax83, colorMap [0,0] = @colorMin83 elseif @colorchoice == "MediumSlateBlue" colorMap [0,1] = @colorMax84, colorMap [0,0] = @colorMin84 elseif @colorchoice == "MediumSpringGreen" colorMap [0,1] = @colorMax85, colorMap [0,0] = @colorMin85 elseif @colorchoice == "MediumTurquoise" colorMap [0,1] = @colorMax86, colorMap [0,0] = @colorMin86 elseif @colorchoice == "MediumVioletRed" colorMap [0,1] = @colorMax87, colorMap [0,0] = @colorMin87 elseif @colorchoice == "MidnightBlue" colorMap [0,1] = @colorMax88, colorMap [0,0] = @colorMin88 elseif @colorchoice == "MintCream" colorMap [0,1] = @colorMax89, colorMap [0,0] = @colorMin89 elseif @colorchoice == "MistyRose" colorMap [0,1] = @colorMax90, colorMap [0,0] = @colorMin90 elseif @colorchoice == "Moccasin" colorMap [0,1] = @colorMax91, colorMap [0,0] = @colorMin91 elseif @colorchoice == "NavajoWhite" colorMap [0,1] = @colorMax92, colorMap [0,0] = @colorMin92 elseif @colorchoice == "OldLace" colorMap [0,1] = @colorMax93, colorMap [0,0] = @colorMin93 elseif @colorchoice == "Olive" colorMap [0,1] = @colorMax94, colorMap [0,0] = @colorMin94 elseif @colorchoice == "OliveDrab" colorMap [0,1] = @colorMax95, colorMap [0,0] = @colorMin95 elseif @colorchoice == "Orange" colorMap [0,1] = @colorMax96, colorMap [0,0] = @colorMin96 elseif @colorchoice == "OrangeRed" colorMap [0,1] = @colorMax97, colorMap [0,0] = @colorMin97 elseif @colorchoice == "Orchid" colorMap [0,1] = @colorMax98, colorMap [0,0] = @colorMin98 elseif @colorchoice == "PaleGoldenrod" colorMap [0,1] = @colorMax99, colorMap [0,0] = @colorMin99 elseif @colorchoice == "PaleGreen" colorMap [0,1] = @colorMax100, colorMap [0,0] = @colorMin100 elseif @colorchoice == "PaleTurquoise" colorMap [0,1] = @colorMax101, colorMap [0,0] = @colorMin101 elseif @colorchoice == "PaleVioletRed" colorMap [0,1] = @colorMax102, colorMap [0,0] = @colorMin102 elseif @colorchoice == "PapayaWhip" colorMap [0,1] = @colorMax103, colorMap [0,0] = @colorMin103 elseif @colorchoice == "PeachPuff" colorMap [0,1] = @colorMax104, colorMap [0,0] = @colorMin104 elseif @colorchoice == "Peru" colorMap [0,1] = @colorMax105, colorMap [0,0] = @colorMin105 elseif @colorchoice == "Pink" colorMap [0,1] = @colorMax106, colorMap [0,0] = @colorMin106 elseif @colorchoice == "Plum" colorMap [0,1] = @colorMax107, colorMap [0,0] = @colorMin107 elseif @colorchoice == "PowderBlue" colorMap [0,1] = @colorMax108, colorMap [0,0] = @colorMin108 elseif @colorchoice == "Purple" colorMap [0,1] = @colorMax109, colorMap [0,0] = @colorMin109 elseif @colorchoice == "Red" colorMap [0,1] = @colorMax110, colorMap [0,0] = @colorMin110 elseif @colorchoice == "RosyBrown" colorMap [0,1] = @colorMax111, colorMap [0,0] = @colorMin111 elseif @colorchoice == "RoyalBlue" colorMap [0,1] = @colorMax112, colorMap [0,0] = @colorMin112 elseif @colorchoice == "SaddleBrown" colorMap [0,1] = @colorMax113, colorMap [0,0] = @colorMin113 elseif @colorchoice == "Salmon" colorMap [0,1] = @colorMax114, colorMap [0,0] = @colorMin114 elseif @colorchoice == "SandyBrown" colorMap [0,1] = @colorMax115, colorMap [0,0] = @colorMin115 elseif @colorchoice == "SeaGreen" colorMap [0,1] = @colorMax116, colorMap [0,0] = @colorMin116 elseif @colorchoice == "SeaShell" colorMap [0,1] = @colorMax117, colorMap [0,0] = @colorMin117 elseif @colorchoice == "Sienna" colorMap [0,1] = @colorMax118, colorMap [0,0] = @colorMin118 elseif @colorchoice == "SkyBlue" colorMap [0,1] = @colorMax119, colorMap [0,0] = @colorMin119 elseif @colorchoice == "SlateBlue" colorMap [0,1] = @colorMax120, colorMap [0,0] = @colorMin120 elseif @colorchoice == "SlateGrey" colorMap [0,1] = @colorMax121, colorMap [0,0] = @colorMin121 elseif @colorchoice == "Snow" colorMap [0,1] = @colorMax122, colorMap [0,0] = @colorMin122 elseif @colorchoice == "SpringGreen" colorMap [0,1] = @colorMax123, colorMap [0,0] = @colorMin123 elseif @colorchoice == "SteelBlue" colorMap [0,1] = @colorMax124, colorMap [0,0] = @colorMin124 elseif @colorchoice == "Tan" colorMap [0,1] = @colorMax125, colorMap [0,0] = @colorMin125 elseif @colorchoice == "Teal" colorMap [0,1] = @colorMax126, colorMap [0,0] = @colorMin126 elseif @colorchoice == "Thistle" colorMap [0,1] = @colorMax127, colorMap [0,0] = @colorMin127 elseif @colorchoice == "Tomato" colorMap [0,1] = @colorMax128, colorMap [0,0] = @colorMin128 elseif @colorchoice == "Turquoise" colorMap [0,1] = @colorMax129, colorMap [0,0] = @colorMin129 elseif @colorchoice == "Violet" colorMap [0,1] = @colorMax130, colorMap [0,0] = @colorMin130 elseif @colorchoice == "Wheat" colorMap [0,1] = @colorMax131, colorMap [0,0] = @colorMin131 elseif @colorchoice == "White" colorMap [0,1] = @colorMax132, colorMap [0,0] = @colorMin132 elseif @colorchoice == "WhiteSmoke" colorMap [0,1] = @colorMax133, colorMap [0,0] = @colorMin133 elseif @colorchoice == "Yellow" colorMap [0,1] = @colorMax134, colorMap [0,0] = @colorMin134 elseif @colorchoice == "YellowGreen" colorMap [0,1] = @colorMax135, colorMap [0,0] = @colorMin135 endif elseif (@colorPreset == "Generate") ; Compute the color ranges using the gradient. color gradientColor = gradient(0.475) colorMap [0,1] = hsl(hue(gradientColor), sat(gradientColor), @luminanceUpper) colorMap [0,0] = hsl(hue(gradientColor), sat(gradientColor), @luminanceLower) endif init: float extent = 1.0 - @extent float hval = 0 ; highlight param for spheres float colorPos = 0 float colr = 0 float luminance = 0 color color2 = rgba(0,0,0,1) color color3 = rgba(0,0,0,1) loop: final: float res=0 float lowtrap=abs(round(real(@itrap)*#maxiter)) float hightrap=abs(round(imag(@itrap)*#maxiter)) if lowtrap>hightrap res=lowtrap lowtrap=hightrap hightrap=res endif if (@trapsum == true) lowtrap=real(@itrap) hightrap=imag(@itrap) if lowtrap>hightrap res=lowtrap lowtrap=hightrap hightrap=res endif endif float vz = -sqrt(1-|#z|) ; extract implied portion of normal float l = abs(lx*real(#z) + ly*imag(#z) + lz*vz) colorPos = @scale*(1-l)/2 colr = @scale*(1-l)/2 if colorPos > 0.5 while colorPos > 0.5 colorPos = colorPos - 0.5 endwhile colorPos = colorPos/2 else colorPos = colorPos / 0.5 endif if @reverse colorPos = 1-ColorPos endif if @highlight_type == "none" hval = 0 elseif @highlight_type == "linear" if colorPos > extent hval = (5*@highlight*(colorPos-extent)/(1-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "log" if colorPos > extent hval = (5*@highlight*log(colorPos-extent+1)/log(2-extent)+1)/(5*@highlight + 1) else hval = 0 endif elseif @highlight_type == "exponential" if colorPos > extent hval = (5*@highlight*(exp(colorPos-extent)-1)/(exp(1-extent)-1)+1)/(5*@highlight + 1) else hval = 0 endif endif if @colorpreset == "Gradient" color3 = gradient(colr) else color3 = blend(colorMap[0,0], blend(colorMap[0,1],@hcolor,hval^@hblend), \ colorPos^@cblend) endif luminance = lum(color3) if (@trap == true) if (#numiter>=lowtrap)&&(#numiter<=hightrap) ; Is pixel in trap? if luminance < @ambient color2 = hsl(hue(@ambcolor),sat(@ambcolor),@ambient) #color = blend(color3,color2,0.5) else #color = color3 endif else #solid = true endif elseif (@trapsum == true) float ht = abs(vz) if (ht>=lowtrap)&&(ht<=hightrap) ; Is pixel in trap? if luminance < @ambient color2 = hsl(hue(@ambcolor),sat(@ambcolor),@ambient) #color = blend(color3,color2,0.5) else #color = color3 endif else #solid = true endif else if luminance < @ambient color2 = hsl(hue(@ambcolor),sat(@ambcolor),@ambient) #color = blend(color3,color2,0.5) else #color = color3 endif endif if cabs(#z) == 0 #solid = true endif default: title = "Direct Color Slope" render = false $ifdef VER40 heading text = "This formula is intended for use with Slope formulas." endheading $else heading Caption = "This formula is intended for use with slope formulas." endheading $endif param version default = 1.00 visible = false hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." endparam param trap caption="Use Trap by Iteration" default = false endparam param trapsum caption="Use Trap by Height" default = false endparam param itrap caption="Trap Limits" default=(0.0,1.0) hint="Between 0.0 and 1.0" endparam heading caption = "Color Settings" endheading param colorPreset caption = "Color Options" enum = "Gradient" "Generate" "Preset" default = 2 hint = "Use 'Gradient' for colors from the gradient. \ Use 'Generate' to use the gradient to define the raytrace gradient." endparam float param luminanceUpper caption = "Lum. Upper Value" default = 0.6 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the upper value \ when generating the ranges from the gradient. This value \ is used with the brighter end of the color range." visible = (@colorPreset == "Generate") endparam float param luminanceLower caption = "Lum. Lower Value" default = 0.2 min = 0.0 max = 1.0 hint = "The value of the Luminance component for the lower value \ when generating the ranges from the gradient. This value \ is used with the darker end of the color range." visible = (@colorPreset == "Generate") endparam param colorchoice caption = "Preset choices" enum = "AliceBlue" "AntiqueWhite" "Aquamarine" "Azure" "Beige" "Black" \ "BlanchedAlmond" "Blue" "BlueViolet" "Brown" "Burlywood" \ "CadetBlue" "Chartreuse" "Chocolate" "Coral" "CornflowerBlue" "Cornsilk" \ "Crimson" "Cyan" "DarkBlue" "DarkCyan" "DarkGoldenrod" \ "DarkGreen" "DarkKhaki" "DarkMagenta" "DarkOliveGreen" \ "DarkOrchid" "DarkRed" "DarkSalmon" "DarkSeaGreen" "DarkSlateBlue" \ "DarkSlateGrey" "DarkTurquoise" "DarkViolet" "DeepPink" "DeepSkyBlue" \ "DimGrey" "DodgerBlue" "FireBrick" "FloralWhite" "ForestGreen" \ "Fuchia" "Gainsboro" "GhostWhite" "Gold" "Goldenrod" "Grey" "Green" \ "GreenYellow" "Honeydew" "HotPink" "IndianRed" "Indigo" "Ivory" \ "Khaki" "Lavender" "LavenderBlush" "LawnGreen" "LemonChiffon" \ "LightBlue" "LightCoral" "LightCyan" "LightGoldenrodYellow" \ "LightGreen" "LightGrey" "LightPink" "LightSalmon" "LightSeaGreen" \ "LightSkyBlue" "LightSlateGrey" "LightSteelBlue" "LightYellow" "Lime" \ "LimeGreen" "Linen" "Magenta" "Maroon" "MediumAquamarine" "MediumBlue" \ "MediumOrchid" "MediumPurple" "MediumSeaGreen" "MediumSlateBlue" \ "MediumSpringGreen" "MediumTurquoise" "MediumVioletRed" "MidnightBlue" \ "MintCream" "MistyRose" "Moccasin" "NavajoWhite" "OldLace" "Olive" \ "OliveDrab" "Orange" "OrangeRed" "Orchid" "PaleGoldenrod" "PaleGreen" \ "PaleTurquoise" "PaleVioletRed" "PapayaWhip" "PeachPuff" "Peru" \ "Pink" "Plum" "PowderBlue" "Purple" "Red" "RosyBrown" "RoyalBlue" \ "SaddleBrown" "Salmon" "SandyBrown" "SeaGreen" "SeaShell" "Sienna" \ "Silver" "SkyBlue" "SlateBlue" "SlateGrey" "Snow" "SpringGreen" \ "SteelBlue" "Tan" "Teal" "Thistle" "Tomato" "Turquoise" "Violet" \ "Wheat" "White" "WhiteSmoke" "Yellow" "YellowGreen" default = 69 visible = @colorPreset == "Preset" endparam ;-------------------------------------------------------------------- ; Color Presets ;-------------------------------------------------------------------- heading caption = " Preset Color Settings" visible = (@colorPreset == "Preset") endheading color param colorMax1 caption = "Color Range 1 High" default = rgba(1,0,1,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Magenta" endparam color param colorMin1 caption = "Color Range 1 Low" default = rgba(100/255,0,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Magenta" endparam color param colorMax2 caption = "Color Range 1 High" default = rgba(138/255,43/255,226/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "BlueViolet" endparam color param colorMin2 caption = "Color Range 1 Low" default = rgba(52/255,13/255,87/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "BlueViolet" endparam color param colorMax3 caption = "Color Range 1 High" default = rgba(240/255,248/255,1,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "AliceBlue" endparam color param colorMin3 caption = "Color Range 1 Low" default = rgba(0,55/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "AliceBlue" endparam color param colorMax4 caption = "Color Range 1 High" default = rgba(250/255,235/255,215/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "AntiqueWhite" endparam color param colorMin4 caption = "Color Range 1 Low" default = rgba(88/255,56/255,12/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "AntiqueWhite" endparam color param colorMax5 caption = "Color Range 1 High" default = rgba(127/255,255/255,212/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Aquamarine" endparam color param colorMin5 caption = "Color Range 1 Low" default = rgba(0,100/255,66/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Aquamarine" endparam color param colorMax6 caption = "Color Range 1 High" default = rgba(240/255,255/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Azure" endparam color param colorMin6 caption = "Color Range 1 Low" default = rgba(0.0,100/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Azure" endparam color param colorMax7 caption = "Color Range 1 High" default = rgba(245/255,245/255,220/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Beige" endparam color param colorMin7 caption = "Color Range 1 Low" default = rgba(77/255,77/255,23/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Beige" endparam color param colorMax8 caption = "Color Range 1 High" default = rgba(0.1,0.1,0.1,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Black" endparam color param colorMin8 caption = "Color Range 1 Low" default = rgba(0.0,0.0,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Black" endparam color param colorMax9 caption = "Color Range 1 High" default = rgba(255/255,235/255,205/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "BlanchedAlmond" endparam color param colorMin9 caption = "Color Range 1 Low" default = rgba(100/255,60/255,0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "BlanchedAlmond" endparam color param colorMax10 caption = "Color Range 1 High" default = rgba(0,0,1.0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Blue" endparam color param colorMin10 caption = "Color Range 1 Low" default = rgba(0.0,0.0,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Blue" endparam color param colorMax11 caption = "Color Range 1 High" default = rgba(165/255,42/255,42/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Brown" endparam color param colorMin11 caption = "Color Range 1 Low" default = rgba(79/255,21/255,21/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Brown" endparam color param colorMax12 caption = "Color Range 1 High" default = rgba(222/255,184/255,135/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Burlywood" endparam color param colorMin12 caption = "Color Range 1 Low" default = rgba(78/255,53/255,22/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Burlywood" endparam color param colorMax13 caption = "Color Range 1 High" default = rgba(95/255,158/255,160/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "CadetBlue" endparam color param colorMin13 caption = "Color Range 1 Low" default = rgba(38/255,62/255,62/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "CadetBlue" endparam color param colorMax14 caption = "Color Range 1 High" default = rgba(210/255,105/255,30/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Chocolate" endparam color param colorMin14 caption = "Color Range 1 Low" default = rgba(87/255,43/255,13/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Chocolate" endparam color param colorMax15 caption = "Color Range 1 High" default = rgba(1,127/255,80/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Coral" endparam color param colorMin15 caption = "Color Range 1 Low" default = rgba(100/255,28/255,0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Coral" endparam color param colorMax16 caption = "Color Range 1 High" default = rgba(100/255,147/255,237/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "CornflowerBlue" endparam color param colorMin16 caption = "Color Range 1 Low" default = rgba(11/255,40/255,89/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "CornflowerBlue" endparam color param colorMax17 caption = "Color Range 1 High" default = rgba(1.0,248/255,220/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Cornsilk" endparam color param colorMin17 caption = "Color Range 1 Low" default = rgba(100/255,80/255,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Cornsilk" endparam color param colorMax18 caption = "Color Range 1 High" default = rgba(220/255,20/255,60/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Crimson" endparam color param colorMin18 caption = "Color Range 1 Low" default = rgba(91/255,9/255,26/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Crimson" endparam color param colorMax19 caption = "Color Range 1 High" default = rgba(0,1.0,1.0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Cyan" endparam color param colorMin19 caption = "Color Range 1 Low" default = rgba(0.0,100/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Cyan" endparam color param colorMax20 caption = "Color Range 1 High" default = rgba(0.0,0.0,139/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkBlue" endparam color param colorMin20 caption = "Color Range 1 Low" default = rgba(0.0,0.0,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkBlue" endparam color param colorMax21 caption = "Color Range 1 High" default = rgba(0.0,139/255,139/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkCyan" endparam color param colorMin21 caption = "Color Range 1 Low" default = rgba(0.0,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkCyan" endparam color param colorMax22 caption = "Color Range 1 High" default = rgba(184/255,134/255,11/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkGoldenrod" endparam color param colorMin22 caption = "Color Range 1 Low" default = rgba(47/255,34/255,3/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkGoldenrod" endparam color param colorMax23 caption = "Color Range 1 High" default = rgba(0.0,100/255,0.0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkGreen" endparam color param colorMin23 caption = "Color Range 1 Low" default = rgba(0.0,50/255,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkGreen" endparam color param colorMax24 caption = "Color Range 1 High" default = rgba(169/255,169/255,169/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Silver" endparam color param colorMin24 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Silver" endparam color param colorMax25 caption = "Color Range 1 High" default = rgba(189/255,183/255,107/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkKhaki" endparam color param colorMin25 caption = "Color Range 1 Low" default = rgba(69/255,66/255,31/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkKhaki" endparam color param colorMax26 caption = "Color Range 1 High" default = rgba(139/255,0.0,139/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkMagenta" endparam color param colorMin26 caption = "Color Range 1 Low" default = rgba(50/255,0.0,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkMagenta" endparam color param colorMax27 caption = "Color Range 1 High" default = rgba(85/255,107/255,47/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkOliveGreen" endparam color param colorMin27 caption = "Color Range 1 Low" default = rgba(28/255,34/255,16/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkOliveGreen" endparam color param colorMax28 caption = "Color Range 1 High" default = rgba(153/255,50/255,204/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkOrchid" endparam color param colorMin28 caption = "Color Range 1 Low" default = rgba(30/255,10/255,40/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkOrchid" endparam color param colorMax29 caption = "Color Range 1 High" default = rgba(255/255,20/255,147/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DeepPink" endparam color param colorMin29 caption = "Color Range 1 Low" default = rgba(100/255,0,55/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DeepPink" endparam color param colorMax30 caption = "Color Range 1 High" default = rgba(139/255,0.0,0.0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkRed" endparam color param colorMin30 caption = "Color Range 1 Low" default = rgba(50/255,0.0,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkRed" endparam color param colorMax31 caption = "Color Range 1 High" default = rgba(233/255,150/255,122/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkSalmon" endparam color param colorMin31 caption = "Color Range 1 Low" default = rgba(85/255,33/255,15/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkSalmon" endparam color param colorMax32 caption = "Color Range 1 High" default = rgba(71/255,61/255,139/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkSlateBlue" endparam color param colorMin32 caption = "Color Range 1 Low" default = rgba(18/255,16/255,34/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkSlateBlue" endparam color param colorMax33 caption = "Color Range 1 High" default = rgba(47/255,79/255,79/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkSlateGrey" endparam color param colorMin33 caption = "Color Range 1 Low" default = rgba(19/255,31/255,30/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkSlateGrey" endparam color param colorMax34 caption = "Color Range 1 High" default = rgba(0.0,206/255,209/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkTurquoise" endparam color param colorMin34 caption = "Color Range 1 Low" default = rgba(0.0,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkTurquoise" endparam color param colorMax35 caption = "Color Range 1 High" default = rgba(148/255,0.0,211/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkViolet" endparam color param colorMin35 caption = "Color Range 1 Low" default = rgba(35/255,0.0,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkViolet" endparam color param colorMax36 caption = "Color Range 1 High" default = rgba(0.0,191/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DeepSkyBlue" endparam color param colorMin36 caption = "Color Range 1 Low" default = rgba(0.0,75/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DeepSkyBlue" endparam color param colorMax37 caption = "Color Range 1 High" default = rgba(105/255,105/255,105/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DimGrey" endparam color param colorMin37 caption = "Color Range 1 Low" default = rgba(25/255,25/255,25/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DimGrey" endparam color param colorMax38 caption = "Color Range 1 High" default = rgba(30/255,144/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DodgerBlue" endparam color param colorMin38 caption = "Color Range 1 Low" default = rgba(0.0,52/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DodgerBlue" endparam color param colorMax39 caption = "Color Range 1 High" default = rgba(178/255,34/255,34/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "FireBrick" endparam color param colorMin39 caption = "Color Range 1 Low" default = rgba(41/255,9/255,9/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "FireBrick" endparam color param colorMax40 caption = "Color Range 1 High" default = rgba(255/255,250/255,240/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "FloralWhite" endparam color param colorMin40 caption = "Color Range 1 Low" default = rgba(100/255,70/255,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "FloralWhite" endparam color param colorMax41 caption = "Color Range 1 High" default = rgba(127/255,255/255,0,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Chartreuse" endparam color param colorMin41 caption = "Color Range 1 Low" default = rgba(50/255,100/255,0.0,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Chartreuse" endparam color param colorMax42 caption = "Color Range 1 High" default = rgba(143/255,188/255,143/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "DarkSeaGreen" endparam color param colorMin42 caption = "Color Range 1 Low" default = rgba(38/255,62/255,38/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "DarkSeaGreen" endparam color param colorMax43 caption = "Color Range 1 High" default = rgba(34/255,139/255,34/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "ForestGreen" endparam color param colorMin43 caption = "Color Range 1 Low" default = rgba(10/255,40/255,10/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "ForestGreen" endparam color param colorMax44 caption = "Color Range 1 High" default = rgba(255/255,0/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Fuchia" endparam color param colorMin44 caption = "Color Range 1 Low" default = rgba(100/255,0/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Fuchia" endparam color param colorMax45 caption = "Color Range 1 High" default = rgba(220/255,220/255,220/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Gainsboro" endparam color param colorMin45 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Gainsboro" endparam color param colorMax46 caption = "Color Range 1 High" default = rgba(248/255,248/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "GhostWhite" endparam color param colorMin46 caption = "Color Range 1 Low" default = rgba(0/255,0/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "GhostWhite" endparam color param colorMax47 caption = "Color Range 1 High" default = rgba(255/255,215/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Gold" endparam color param colorMin47 caption = "Color Range 1 Low" default = rgba(100/255,85/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Gold" endparam color param colorMax48 caption = "Color Range 1 High" default = rgba(218/255,165/255,32/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Goldenrod" endparam color param colorMin48 caption = "Color Range 1 Low" default = rgba(87/255,66/255,13/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Goldenrod" endparam color param colorMax49 caption = "Color Range 1 High" default = rgba(128/255,128/255,128/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Grey" endparam color param colorMin49 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Grey" endparam color param colorMax50 caption = "Color Range 1 High" default = rgba(0/255,128/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Green" endparam color param colorMin50 caption = "Color Range 1 Low" default = rgba(0/255,50/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Green" endparam color param colorMax51 caption = "Color Range 1 High" default = rgba(173/255,255/255,47/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "GreenYellow" endparam color param colorMin51 caption = "Color Range 1 Low" default = rgba(62/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "GreenYellow" endparam color param colorMax52 caption = "Color Range 1 High" default = rgba(240/255,255/255,240/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Honeydew" endparam color param colorMin52 caption = "Color Range 1 Low" default = rgba(0/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Honeydew" endparam color param colorMax53 caption = "Color Range 1 High" default = rgba(255/255,105/255,180/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "HotPink" endparam color param colorMin53 caption = "Color Range 1 Low" default = rgba(100/255,0/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "HotPink" endparam color param colorMax54 caption = "Color Range 1 High" default = rgba(205/255,92/255,92/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "IndianRed" endparam color param colorMin54 caption = "Color Range 1 Low" default = rgba(76/255,24/255,24/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "IndianRed" endparam color param colorMax55 caption = "Color Range 1 High" default = rgba(75/255,0/255,130/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Indigo" endparam color param colorMin55 caption = "Color Range 1 Low" default = rgba(29/255,0/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Indigo" endparam color param colorMax56 caption = "Color Range 1 High" default = rgba(255/255,255/255,240/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Ivory" endparam color param colorMin56 caption = "Color Range 1 Low" default = rgba(100/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Ivory" endparam color param colorMax57 caption = "Color Range 1 High" default = rgba(240/255,230/255,140/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Khaki" endparam color param colorMin57 caption = "Color Range 1 Low" default = rgba(88/255,80/255,12/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Khaki" endparam color param colorMax58 caption = "Color Range 1 High" default = rgba(230/255,230/255,250/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Lavender" endparam color param colorMin58 caption = "Color Range 1 Low" default = rgba(17/255,17/255,83/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Lavender" endparam color param colorMax59 caption = "Color Range 1 High" default = rgba(255/255,240/255,245/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LavenderBlush" endparam color param colorMin59 caption = "Color Range 1 Low" default = rgba(100/255,0/255,44/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LavenderBlush" endparam color param colorMax60 caption = "Color Range 1 High" default = rgba(124/255,252/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LawnGreen" endparam color param colorMin60 caption = "Color Range 1 Low" default = rgba(50/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LawnGreen" endparam color param colorMax61 caption = "Color Range 1 High" default = rgba(255/255,250/255,205/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LemonChiffon" endparam color param colorMin61 caption = "Color Range 1 Low" default = rgba(100/255,90/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LemonChiffon" endparam color param colorMax62 caption = "Color Range 1 High" default = rgba(173/255,216/255,230/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightBlue" endparam color param colorMin62 caption = "Color Range 1 Low" default = rgba(24/255,64/255,76/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightBlue" endparam color param colorMax63 caption = "Color Range 1 High" default = rgba(240/255,128/255,128/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightCoral" endparam color param colorMin63 caption = "Color Range 1 Low" default = rgba(89/255,11/255,11/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightCoral" endparam color param colorMax64 caption = "Color Range 1 High" default = rgba(224/255,255/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightCyan" endparam color param colorMin64 caption = "Color Range 1 Low" default = rgba(0/255,100/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightCyan" endparam color param colorMax65 caption = "Color Range 1 High" default = rgba(250/255,250/255,210/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightGoldenrodYellow" endparam color param colorMin65 caption = "Color Range 1 Low" default = rgba(90/255,90/255,10/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightGoldenrodYellow" endparam color param colorMax66 caption = "Color Range 1 High" default = rgba(144/255,238/255,144/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightGreen" endparam color param colorMin66 caption = "Color Range 1 Low" default = rgba(14/255,86/255,14/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightGreen" endparam color param colorMax67 caption = "Color Range 1 High" default = rgba(211/255,211/255,211/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightGrey" endparam color param colorMin67 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightGrey" endparam color param colorMax68 caption = "Color Range 1 High" default = rgba(255/255,182/255,193/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightPink" endparam color param colorMin68 caption = "Color Range 1 Low" default = rgba(100/255,0/255,17/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightPink" endparam color param colorMax69 caption = "Color Range 1 High" default = rgba(255/255,160/255,122/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSalmon" endparam color param colorMin69 caption = "Color Range 1 Low" default = rgba(100/255,30/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSalmon" endparam color param colorMax70 caption = "Color Range 1 High" default = rgba(32/255,178/255,170/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSeaGreen" endparam color param colorMin70 caption = "Color Range 1 Low" default = rgba(16/255,84/255,80/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSeaGreen" endparam color param colorMax71 caption = "Color Range 1 High" default = rgba(135/255,206/255,250/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSkyBlue" endparam color param colorMin71 caption = "Color Range 1 Low" default = rgba(5/255,62/255,95/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSkyBlue" endparam color param colorMax72 caption = "Color Range 1 High" default = rgba(119/255,136/255,153/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSlateGrey" endparam color param colorMin72 caption = "Color Range 1 Low" default = rgba(43/255,50/255,57/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSlateGrey" endparam color param colorMax73 caption = "Color Range 1 High" default = rgba(175/255,196/255,222/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightSteelBlue" endparam color param colorMin73 caption = "Color Range 1 Low" default = rgba(30/255,48/255,70/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightSteelBlue" endparam color param colorMax74 caption = "Color Range 1 High" default = rgba(255/255,255/255,224/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LightYellow" endparam color param colorMin74 caption = "Color Range 1 Low" default = rgba(100/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LightYellow" endparam color param colorMax75 caption = "Color Range 1 High" default = rgba(0/255,255/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Lime" endparam color param colorMin75 caption = "Color Range 1 Low" default = rgba(0/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Lime" endparam color param colorMax76 caption = "Color Range 1 High" default = rgba(50/255,205/255,50/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "LimeGreen" endparam color param colorMin76 caption = "Color Range 1 Low" default = rgba(20/255,80/255,20/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "LimeGreen" endparam color param colorMax77 caption = "Color Range 1 High" default = rgba(250/255,240/255,230/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Linen" endparam color param colorMin77 caption = "Color Range 1 Low" default = rgba(83/255,50/255,17/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Linen" endparam color param colorMax78 caption = "Color Range 1 High" default = rgba(128/255,0/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Maroon" endparam color param colorMin78 caption = "Color Range 1 Low" default = rgba(50/255,0/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Maroon" endparam color param colorMax79 caption = "Color Range 1 High" default = rgba(102/255,205/255,170/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumAquamarine" endparam color param colorMin79 caption = "Color Range 1 Low" default = rgba(25/255,75/255,58/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumAquamarine" endparam color param colorMax80 caption = "Color Range 1 High" default = rgba(0/255,0/255,205/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumBlue" endparam color param colorMin80 caption = "Color Range 1 Low" default = rgba(0/255,0/255,100/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumBlue" endparam color param colorMax81 caption = "Color Range 1 High" default = rgba(186/255,85/255,211/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumOrchid" endparam color param colorMin81 caption = "Color Range 1 Low" default = rgba(68/255,21/255,79/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumOrchid" endparam color param colorMax82 caption = "Color Range 1 High" default = rgba(147/255,112/255,219/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumPurple" endparam color param colorMin82 caption = "Color Range 1 Low" default = rgba(40/255,21/255,79/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumPurple" endparam color param colorMax83 caption = "Color Range 1 High" default = rgba(60/255,179/255,113/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumSeaGreen" endparam color param colorMin83 caption = "Color Range 1 Low" default = rgba(26/255,74/255,47/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumSeaGreen" endparam color param colorMax84 caption = "Color Range 1 High" default = rgba(123/255,104/255,238/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumSlateBlue" endparam color param colorMin84 caption = "Color Range 1 Low" default = rgba(22/255,11/255,89/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumSlateBlue" endparam color param colorMax85 caption = "Color Range 1 High" default = rgba(0/255,250/255,154/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumSpringGreen" endparam color param colorMin85 caption = "Color Range 1 Low" default = rgba(0/255,100/255,61/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumSpringGreen" endparam color param colorMax86 caption = "Color Range 1 High" default = rgba(72/255,209/255,204/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumTurquoise" endparam color param colorMin86 caption = "Color Range 1 Low" default = rgba(21/255,79/255,77/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumTurquoise" endparam color param colorMax87 caption = "Color Range 1 High" default = rgba(199/255,21/255,133/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MediumVioletRed" endparam color param colorMin87 caption = "Color Range 1 Low" default = rgba(90/255,10/255,61/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MediumVioletRed" endparam color param colorMax88 caption = "Color Range 1 High" default = rgba(25/255,25/255,112/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MidnightBlue" endparam color param colorMin88 caption = "Color Range 1 Low" default = rgba(10/255,10/255,40/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MidnightBlue" endparam color param colorMax89 caption = "Color Range 1 High" default = rgba(245/255,255/255,250/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MintCream" endparam color param colorMin89 caption = "Color Range 1 Low" default = rgba(0/255,100/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MintCream" endparam color param colorMax90 caption = "Color Range 1 High" default = rgba(255/255,228/255,225/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "MistyRose" endparam color param colorMin90 caption = "Color Range 1 Low" default = rgba(100/255,10/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "MistyRose" endparam color param colorMax91 caption = "Color Range 1 High" default = rgba(255/255,228/255,181/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Moccasin" endparam color param colorMin91 caption = "Color Range 1 Low" default = rgba(100/255,65/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Moccasin" endparam color param colorMax92 caption = "Color Range 1 High" default = rgba(255/255,222/255,173/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "NavajoWhite" endparam color param colorMin92 caption = "Color Range 1 Low" default = rgba(100/255,60/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "NavajoWhite" endparam color param colorMax93 caption = "Color Range 1 High" default = rgba(253/255,245/255,230/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "OldLace" endparam color param colorMin93 caption = "Color Range 1 Low" default = rgba(92/255,64/255,8/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "OldLace" endparam color param colorMax94 caption = "Color Range 1 High" default = rgba(128/255,128/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Olive" endparam color param colorMin94 caption = "Color Range 1 Low" default = rgba(50/255,50/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Olive" endparam color param colorMax95 caption = "Color Range 1 High" default = rgba(107/255,142/255,35/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "OliveDrab" endparam color param colorMin95 caption = "Color Range 1 Low" default = rgba(31/255,40/255,10/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "OliveDrab" endparam color param colorMax96 caption = "Color Range 1 High" default = rgba(255/255,165/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Orange" endparam color param colorMin96 caption = "Color Range 1 Low" default = rgba(100/255,65/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Orange" endparam color param colorMax97 caption = "Color Range 1 High" default = rgba(255/255,69/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "OrangeRed" endparam color param colorMin97 caption = "Color Range 1 Low" default = rgba(100/255,28/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "OrangeRed" endparam color param colorMax98 caption = "Color Range 1 High" default = rgba(218/255,112/255,214/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Orchid" endparam color param colorMin98 caption = "Color Range 1 Low" default = rgba(79/255,21/255,78/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Orchid" endparam color param colorMax99 caption = "Color Range 1 High" default = rgba(238/255,232/255,170/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PaleGoldenrod" endparam color param colorMin99 caption = "Color Range 1 Low" default = rgba(81/255,74/255,19/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PaleGoldenrod" endparam color param colorMax100 caption = "Color Range 1 High" default = rgba(152/255,251/255,152/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PaleGreen" endparam color param colorMin100 caption = "Color Range 1 Low" default = rgba(4/255,96/255,4/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PaleGreen" endparam color param colorMax101 caption = "Color Range 1 High" default = rgba(175/255,238/255,238/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PaleTurquoise" endparam color param colorMin101 caption = "Color Range 1 Low" default = rgba(18/255,82/255,82/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PaleTurquoise" endparam color param colorMax102 caption = "Color Range 1 High" default = rgba(219/255,112/255,147/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PaleVioletRed" endparam color param colorMin102 caption = "Color Range 1 Low" default = rgba(79/255,21/255,41/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PaleVioletRed" endparam color param colorMax103 caption = "Color Range 1 High" default = rgba(255/255,239/255,213/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PapayaWhip" endparam color param colorMin103 caption = "Color Range 1 Low" default = rgba(100/255,63/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PapayaWhip" endparam color param colorMax104 caption = "Color Range 1 High" default = rgba(255/255,218/255,185/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PeachPuff" endparam color param colorMin104 caption = "Color Range 1 Low" default = rgba(100/255,48/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PeachPuff" endparam color param colorMax105 caption = "Color Range 1 High" default = rgba(205/255,133/255,63/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Peru" endparam color param colorMin105 caption = "Color Range 1 Low" default = rgba(79/255,50/255,21/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Peru" endparam color param colorMax106 caption = "Color Range 1 High" default = rgba(255/255,192/255,203/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Pink" endparam color param colorMin106 caption = "Color Range 1 Low" default = rgba(100/255,0/255,19/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Pink" endparam color param colorMax107 caption = "Color Range 1 High" default = rgba(221/255,160/255,221/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Plum" endparam color param colorMin107 caption = "Color Range 1 Low" default = rgba(73/255,27/255,73/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Plum" endparam color param colorMax108 caption = "Color Range 1 High" default = rgba(176/255,224/255,230/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "PowderBlue" endparam color param colorMin108 caption = "Color Range 1 Low" default = rgba(25/255,70/255,75/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "PowderBlue" endparam color param colorMax109 caption = "Color Range 1 High" default = rgba(128/255,0/255,128/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Purple" endparam color param colorMin109 caption = "Color Range 1 Low" default = rgba(50/255,0/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Purple" endparam color param colorMax110 caption = "Color Range 1 High" default = rgba(255/255,0/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Red" endparam color param colorMin110 caption = "Color Range 1 Low" default = rgba(100/255,0/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Red" endparam color param colorMax111 caption = "Color Range 1 High" default = rgba(188/255,143/255,143/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "RosyBrown" endparam color param colorMin111 caption = "Color Range 1 Low" default = rgba(62/255,38/255,38/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "RosyBrown" endparam color param colorMax112 caption = "Color Range 1 High" default = rgba(65/255,105/255,225/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "RoyalBlue" endparam color param colorMin112 caption = "Color Range 1 Low" default = rgba(14/255,32/255,86/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "RoyalBlue" endparam color param colorMax113 caption = "Color Range 1 High" default = rgba(139/255,69/255,19/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SaddleBrown" endparam color param colorMin113 caption = "Color Range 1 Low" default = rgba(43/255,22/255,7/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SaddleBrown" endparam color param colorMax114 caption = "Color Range 1 High" default = rgba(250/255,128/255,114/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Salmon" endparam color param colorMin114 caption = "Color Range 1 Low" default = rgba(96/255,14/255,4/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Salmon" endparam color param colorMax115 caption = "Color Range 1 High" default = rgba(244/255,164/255,96/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SandyBrown" endparam color param colorMin115 caption = "Color Range 1 Low" default = rgba(93/255,47/255,7/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SandyBrown" endparam color param colorMax116 caption = "Color Range 1 High" default = rgba(46/255,139/255,87/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SeaGreen" endparam color param colorMin116 caption = "Color Range 1 Low" default = rgba(13/255,37/255,23/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SeaGreen" endparam color param colorMax117 caption = "Color Range 1 High" default = rgba(255/255,245/255,238/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SeaShell" endparam color param colorMin117 caption = "Color Range 1 Low" default = rgba(100/255,41/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SeaShell" endparam color param colorMax118 caption = "Color Range 1 High" default = rgba(160/255,82/255,45/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Sienna" endparam color param colorMin118 caption = "Color Range 1 Low" default = rgba(39/255,20/255,11/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Sienna" endparam color param colorMax119 caption = "Color Range 1 High" default = rgba(135/255,206/255,235/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SkyBlue" endparam color param colorMin119 caption = "Color Range 1 Low" default = rgba(15/255,66/255,85/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SkyBlue" endparam color param colorMax120 caption = "Color Range 1 High" default = rgba(106/255,90/255,205/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SlateBlue" endparam color param colorMin120 caption = "Color Range 1 Low" default = rgba(21/255,34/255,76/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SlateBlue" endparam color param colorMax121 caption = "Color Range 1 High" default = rgba(112/255,128/255,144/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SlateGrey" endparam color param colorMin121 caption = "Color Range 1 Low" default = rgba(44/255,50/255,56/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SlateGrey" endparam color param colorMax122 caption = "Color Range 1 High" default = rgba(255/255,250/255,250/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Snow" endparam color param colorMin122 caption = "Color Range 1 Low" default = rgba(100/255,0/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Snow" endparam color param colorMax123 caption = "Color Range 1 High" default = rgba(0/255,255/255,127/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SpringGreen" endparam color param colorMin123 caption = "Color Range 1 Low" default = rgba(0/255,100/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SpringGreen" endparam color param colorMax124 caption = "Color Range 1 High" default = rgba(70/255,130/255,180/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "SteelBlue" endparam color param colorMin124 caption = "Color Range 1 Low" default = rgba(29/255,53/255,79/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "SteelBlue" endparam color param colorMax125 caption = "Color Range 1 High" default = rgba(210/255,180/255,140/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Tan" endparam color param colorMin125 caption = "Color Range 1 Low" default = rgba(71/255,53/255,29/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Tan" endparam color param colorMax126 caption = "Color Range 1 High" default = rgba(0/255,128/255,128/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Teal" endparam color param colorMin126 caption = "Color Range 1 Low" default = rgba(0/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Teal" endparam color param colorMax127 caption = "Color Range 1 High" default = rgba(216/255,191/255,216/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Thistle" endparam color param colorMin127 caption = "Color Range 1 Low" default = rgba(61/255,39/255,61/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Thistle" endparam color param colorMax128 caption = "Color Range 1 High" default = rgba(255/255,99/255,71/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Tomato" endparam color param colorMin128 caption = "Color Range 1 Low" default = rgba(100/255,16/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Tomato" endparam color param colorMax129 caption = "Color Range 1 High" default = rgba(64/255,224/255,208/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Turquoise" endparam color param colorMin129 caption = "Color Range 1 Low" default = rgba(15/255,85/255,78/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Turquoise" endparam color param colorMax130 caption = "Color Range 1 High" default = rgba(238/255,130/255,238/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Violet" endparam color param colorMin130 caption = "Color Range 1 Low" default = rgba(87/255,13/255,87/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Violet" endparam color param colorMax131 caption = "Color Range 1 High" default = rgba(245/255,223/255,179/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Wheat" endparam color param colorMin131 caption = "Color Range 1 Low" default = rgba(88/255,62/255,12/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Wheat" endparam color param colorMax132 caption = "Color Range 1 High" default = rgba(255/255,255/255,255/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "White" endparam color param colorMin132 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "White" endparam color param colorMax133 caption = "Color Range 1 High" default = rgba(245/255,245/255,245/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "WhiteSmoke" endparam color param colorMin133 caption = "Color Range 1 Low" default = rgba(50/255,50/255,50/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "WhiteSmoke" endparam color param colorMax134 caption = "Color Range 1 High" default = rgba(255/255,255/255,0/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "Yellow" endparam color param colorMin134 caption = "Color Range 1 Low" default = rgba(100/255,100/255,0/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "Yellow" endparam color param colorMax135 caption = "Color Range 1 High" default = rgba(154/255,205/255,50/255,1) hint = "Specifies the color at the high end." visible = @colorPreset == "Preset" && @colorchoice == "YellowGreen" endparam color param colorMin135 caption = "Color Range 1 Low" default = rgba(61/255,80/255,20/255,1) hint = "Specifies the color at the low end" visible = @colorPreset == "Preset" && @colorchoice == "YellowGreen" endparam heading caption = "Color Parameters" visible = @colorPreset != "Gradient" endheading color param hcolor caption = "Highlight color" default = rgba(255/255,255/255,255/255,1) visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param highlight_type caption = "Color Highlight Type" default = 1 enum = "none" "linear" "log" "exponential" hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam param extent caption = "Highlight Extent" default = 0.5 min = 0.0 max = 0.5 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param hblend caption = "Highlight power" default = 1.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" endparam float param scale caption = "color scale adj" default = 1.0 endparam heading text = "Use 'Reverse Colors' for the coloring formula 'Indra's Promise' \ when 'calc as slope' is selected." endheading bool param reverse caption = "Reverse Colors" default = false endparam float param cblend caption = "color blend power" default = 1.0 visible = @colorPreset != "Gradient" endparam float param ambient caption = "Ambient light" default = 0.05 endparam color param ambcolor caption = "Ambient color" default = rgba(192/255,192/255,192/255,1) endparam heading caption = "Slope Lighting" endheading param ltype caption = "Light type" enum = "Point source" "Infinite light" default = 1 endparam param angle caption = "Light Rotation" default = 120.0 hint = "Gives the rotation of the light source, in degrees." visible=@ltype == "Infinite light" endparam param elevation caption = "Light Elevation" default = 60.0 hint = "Gives the elevation of the light source, in degrees." visible=@ltype == "Infinite light" endparam $ifdef VER40 heading text = "Light Origin" visible= @ltype == "Point source" endheading $else heading caption = " Light Origin" visible= @ltype == "Point source" endheading $endif float param lpointx caption = " X" default = 1.5 visible= @ltype == "Point source" endparam float param lpointy caption = " Y" default = 2 visible= @ltype == "Point source" endparam float param lplane caption = " Z" default = 5 visible= @ltype == "Point source" endparam $ifdef VER40 heading text = "Light Point At" visible= @ltype == "Point source" endheading $else heading caption = " Light Point At" visible= @ltype == "Point source" endheading $endif float param lightx caption = " X" default = 0.0 visible= @ltype == "Point source" endparam float param lighty caption = " Y" default = 0.0 visible= @ltype == "Point source" endparam float param lightz caption = " Z" default = 0.0 visible= @ltype == "Point source" endparam ; param ambient ; caption = "Ambient Light" ; default = 0.0 ; min = -1.0 ; max = 1.0 ; hint = "Specifies the level of ambient light. Use -1.0 to \ ; color all surfaces." ; visible=@noslope==false ; endparam } FibersAndThings {; Ron Barnett, December 2006 ; Coloring method that looks like triange inequality average ; or curvature average but which works specifically for convergent ; fractals like Cayley Julia and Cayley Mandelbrot. ; The smoothing code is modified from Linas Vepstas and Damien Jones. ; Some of the code ideas came from the work of Jussi Härkönen ; Corrections to the fractional iteration count made by Jussi Härkönen init: complex ci = (0,1) complex rot = ci^(@ang/90) complex skew = ci^(@skew/90) complex prot = ci^(@prot/90) complex z2 = 0 complex zold = (0,0) complex zold2 = (0,0) int i = 0 float a = 0 float a2 = 0 float f = 0 complex ztype = (0,0) if @zmod == "point" || @zmod == "rot point" ztype = @spoint endif float power = 0 loop: a2 = a if @flavor != "smooth" z2 = real(#z)*skew + flip(imag(#z)) z2 = z2*rot else z2 = #z endif if @zmod == "rot point" && |ztype| != 0 ztype = ztype*prot endif if @flavor == "Standard" a = a + cabs(fn1(@density*(atan2(fn2(z2-zold-ztype)))+@colorshift*#pi)) elseif @flavor == "Curvature" a = a + cabs(fn1(@density*(atan2(fn2((z2-zold)/(zold-zold2)-ztype)))+@colorshift*#pi)) elseif @flavor == "Decomposition" a = a + cabs(fn1(@density*(atan2(fn2(z2-ztype)))+@colorshift*#pi)) elseif @flavor == "Decomp multiply" a = a + cabs(fn1(@density*(atan2(fn2(z2*zold-ztype)))+@colorshift*#pi)) elseif @flavor == "Decomp divide" a = a + cabs(fn1(@density*(atan2(fn2(z2/zold-ztype)))+@colorshift*#pi)) elseif @flavor == "Magnitude" a = a + cabs(fn1(@density*(cabs(fn2(z2-ztype)))+@colorshift*#pi)) elseif @flavor == "Magnitude 2" a = a + cabs(fn1(@density*(cabs(fn2(z2-zold-ztype)))+@colorshift*#pi)) elseif @flavor == "Magnitude 3" a = a + cabs(fn1(@density*(|fn2(z2-ztype)|)+@colorshift*#pi)) elseif @flavor == "Magnitude 4" a = a + cabs(fn1(@density*(|fn2(z2-zold-ztype)|)+@colorshift*#pi)) endif zold2 = zold zold = z2 i = i + 1 final: power = log(|#z - zold|) / log(|zold - zold2|) z2 = real(#z)*skew + flip(imag(#z)) z2 = z2*rot if @version > 1.1 f = (log(log(@bailout)) - log(log(1/(|(zold - z2)|))))/log(power) else f = (log(log(@bailout)) - log(log(1/(|(zold - z2)|))))*@fudge endif a = a/i a2 = a2/(i-1) #index = a2 + (a-a2)*(f+1) if @flavor == "Smooth" if @version > 1.1 #index = 0.05*(i+f) else #index = 0.05*(i-1-log(log(1/(|(zold - z2)|)))/log(2)) endif endif default: title = "Fibers and Things" heading caption = "Fibers and Things" endheading $ifdef VER40 heading text = "This coloring method was designed for use with convergent fractals. \ It was specifically designed for the convergent formulas in reb.ufm \ and may not work with all convergent fractals. The bailout should \ be the same for both the coloring formula and the ufm. Some coding ideas \ came from the work of Jussi Härkönen as did corrections \ to the convergent smoothing algorithm." endheading $endif float param version caption = "Version number" default = 1.2 hint = "This is for backwards compatibility with old versions \ of the formula." visible = false endparam param bailout caption = "bailout" default = 1e-12 visible = @version >= 1.2 ||(@version <= 1.1&& @flavor != "smooth") endparam param flavor caption = "flavor" default = 0 enum = "standard" "curvature" "decomposition" "decomp multiply" \ "decomp divide" "magnitude" "magnitude 2" "magnitude 3" \ "magnitude 4" "smooth" endparam param zmod caption ="z modifier" enum = "none" "point" "rot point" default = 0 visible = @flavor != "smooth" endparam float param prot caption = "point rotation" default = 0 visible = @flavor != "smooth"&&@zmod == "rot point" endparam complex param spoint caption = "point val" default = (1,-1) visible = @flavor != "smooth"&&(@zmod == "point" || @zmod == "rot point") endparam float param ang caption ="z rotation" default = 0 visible = @flavor != "smooth" endparam float param skew caption ="z skew" default = 0 visible = @flavor != "smooth" endparam func fn1 caption = "fiber function #1" default = cos() visible = @flavor != "smooth" endfunc func fn2 caption = "fiber function #2" default = ident() visible = @flavor != "smooth" endfunc complex param density caption = "fiber density" default = 10.0 visible = @flavor != "smooth" endparam float param colorshift caption = "color shift" default = 0.0 min = 0 max = 1 visible = @flavor != "smooth" endparam float param fudge caption = "fudge factor" default = 1.46 visible = @flavor != "smooth"&&@version <= 1.1 endparam } IndrasPearlsWorkshop {; modified june 2009, original June 2006 Ronald Barnett ; ; Based upon the depth-first tree search algorithm in the book \ ; Indra's Pearls by Mumford, Series and Wright. It is considerably faster \ ; than most other algorithms in generating the limit set. ; $define debug global: int level = @level2 float magn = #magn int ilev = 0 int lmem = 0 ; max number of circles = 12,000,000 complex cs[2500000] float rad[2500000] float clr[2500000] float levval[2500000] lmem = 2500000 ; max number of iterations = 1000 complex word[10000,4] int tag[10000] complex ta = @ta complex tb = @tb complex tabAB = @tabAB complex taj = @taj complex tbj = @tbj if !@expert && @typeb == "Double Cusps" && @version >= 450 tb = (2,0) if @tb2 == "1 100 Cusp" ta = (1.99901430461837,-3.94468287279129e-005) elseif @tb2 == "2 99 Cusp" ta = (1.99599050389291,-0.000302826761310194) elseif @tb2 == "3 100 Cusp" ta = (1.99118310579765,-0.000982081178197968) elseif @tb2 == "4 99 Cusp" ta = (1.98427416931522,-0.00237401043014847) elseif @tb2 == "1 20 Cusp" ta = (1.97610935068938,-0.0048356814305054) elseif @tb2 == "1 15 Cusp" ta = (1.95859103011179,-0.0112785606117653) elseif @tb2 == "4 49 Cusp" ta = (1.93835083660474,-0.019395686513188) elseif @tb2 == "1 10 Cusp" ta = (1.91342329586682,-0.0362880775225429) elseif @tb2 == "2 19 Cusp" ta = (1.90377999779718,-0.0395799512688805) elseif @tb2 == "1 9 Cusp" ta = (1.89640725094921,-0.0487530128986506) elseif @tb2 == "7 43 Cusp" ta = (1.80785523999043,-0.136998687907137) elseif @tb2 == "3 10 Cusp" ta = (1.65831239517773,-0.5) elseif @tb2 == "2 5 Cusp" ta = (1.64213876865348,-0.766588417465459) elseif @tb2 == "1 2 Cusp" ta = (1.73205080756888,-1) elseif @tb2 == "45 73 Cusp" ta = (1.61933783851931,-1.28383283090043) elseif @tb2 == "21 34 Cusp" ta = (1.6179907967521,-1.29170028664218) elseif @tb2 == "29 43 Cusp" ta = (1.68758065989549,-1.42135680196061) elseif @tb2 == "7 10 Cusp" ta = (1.6583123951777,-1.5) elseif @tb2 == "4 5 Cusp" ta = (1.76674170432658,-1.77989479542502) elseif @tb2 == "23 27 Cusp" ta = (1.83505650616894,-1.90213775413426) elseif @tb2 == "67 75 Cusp" ta = (1.90027319939568,-1.95937520532296) elseif @tb2 == "84 89 Cusp" ta = (1.97025843018908,-1.99365174531239) endif elseif !@expert && @typeb == "Special" && @version >= 450 if @tbs == "Accident" ta = (1.9021130325903071442328786667588,0) tb = (1.9021130325903071442328786667588,0) elseif @tbs == "Frills and Curls" ta = (2.3,0) tb = (2.1,-0.1995) magn = 0.3*magn elseif @tbs == "Nearby Group" ta = (1.91,-0.05) tb = (2,0) elseif @tbs == "Quasifuchsian #1" ta = (1.91,0.05) tb = (1.91,0.05) magn = 0.05*magn elseif @tbs == "Quasifuchsian #2" ta = (1.91,0.046) tb = (3,0) elseif @tbs == "Quasifuchsian #3" ta = (1.95,0.0173) tb = (3,0) elseif @tbs == "Quasi Double Degen" ta = (1.7846648,-0.73852) tb = (3,0) magn = 0.011*magn elseif @tbs == "Quasi Single Degen" ta = (1.785,-0.73852) tb = (3,0) magn = 0.011*magn elseif @tbs == "Spiral Degenerate" ta = (1.9264340533,-0.0273817919) tb = (2,0) elseif @tbs == "Troel's Point" ta = (1.6168866453,-0.7056734968) tb = (2,0) endif elseif !@expert && @typeb == "Special #2" && @version >= 450 if @tbs2 == "Order 2 #1" ta = (1.924781,-0.047528) tb = (2,0) tabAB = (0,0) magn = magn*3 elseif @tbs2 == "Order 2 #2" ta = (2,0) tb = (2,0) tabAB = (0,0) magn = magn*3 elseif @tbs2 == "Order 2 #3" ta = (1.9,0.1) tb = (3,0) tabAB = (0,0) magn = magn*1.5 elseif @tbs2 == "Order 2 #4" ta = (1.925,-0.162417) tb = (1.91,0.2) tabAB = (0,0) magn = magn*3 elseif @tbs2 == "Commutator (2,3)" ta = (1.9,-0.102) tb = (2,0) tabAB = (2,3) elseif @tbs2 == "Commutator (2,2)" ta = (1.9,-0.095) tb = (3,0) tabAB = (2,2) endif endif float maxrad = @maxrad if @limit && @version >= 450 && !@oldcolor maxrad = 0.01/magn endif bool inwin = false complex gens[4,4] complex igens[1,4] complex ctgens[1,4] complex hermit[1,4] bool bterm = false bool aturn = false complex gtab = 0 complex gz0 = 0 complex gz = 0 complex gQ = 0 complex gR = 0 float theta = 0 complex im = (0,1) float vector = 0 complex u = 0 complex cu = 0 float ku = @su float kv = 0 float kx = @sx float ky = 0 float kk = 0 int checktag = -1 complex det = 0 float epsilon = @epsilon if @version >= 450 && !@oldcolor epsilon = epsilon/magn endif complex temp1 = 0 complex temp2 = 0 complex temp3 = 0 complex temp4 = 0 int maxi = 0 int ii = 0 int h = 0 int w = 0 int pxx = 0 int pyy = 0 int rds = 0 int iii = 9 float fx = 0.0 float ffx = 0.0 float xx = 0.0 float fy = 0.0 float ffy = 0.0 float vfx = 0.0 float vffx = 0.0 float vxx = 0.0 float vfy = 0.0 float vffy = 0.0 int px = 0 int py = 0 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/magn float tymax = txmax*#height/#width float xmin = cx - txmax/2 float ymin = cy - tymax/2 float rwidth = 0 float Inc = @percentInc*0.01 float wd = Inc*#width float ht = Inc*#height int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) float count[round(#width*(1+@percentInc*0.01))+1,round(#height*(1+@percentInc*0.01))+1] float lev[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] float gsum[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] complex gr = (1,1) complex gr2 = (0,1) ^ 0.411111111111 float gfreq = 1.0 int gi = 0 complex gp = 0 float gbx0 = 0 float gby0 = 0 float gbx1 = 0 float gby1 = 0 float grx0 = 0 float gry0 = 0 float grx1 = 0 float gry1 = 0 float gb00 = 0 float gb10 = 0 float gb01 = 0 float gb11 = 0 float gg_b00_0 = 0 float gg_b10_0 = 0 float gg_b01_0 = 0 float gg_b11_0 = 0 float gg_b00_1 = 0 float gg_b10_1 = 0 float gg_b01_1 = 0 float gg_b11_1 = 0 float gd = 0.0 float gu1 = 0 float gv1 = 0 float gu2 = 0 float gv2 = 0 float gsx = 0 float gsy = 0 float ga = 0 float gb = 0 complex gpixel=0 complex gp = 0 float fsum = 0 ; while (h < #height+ht) while (w < #width+wd) gpixel = w/(#width+wd) + flip(h/(#height+ht)) gp = gpixel * @gnscale * gr + @gnoffset gi = @giter gfreq = @gfreq gsum[w,h] = 0 WHILE (gi > 0) gbx0 = floor(real(gp)) % 256 gby0 = floor(imag(gp)) % 256 IF (gbx0 < 0) gbx0 = gbx0 + 256 ENDIF IF (gby0 < 0) gby0 = gby0 + 256 ENDIF gbx1 = (gbx0 + 1) % 256 gby1 = (gby0 + 1) % 256 grx0 = real(gp) - floor(real(gp)) gry0 = imag(gp) - floor(imag(gp)) grx1 = grx0 - 1 gry1 = gry0 - 1 gb00 = (gbx0^2 % 65536 + gby0)^2 % 65536 gb10 = (gbx1^2 % 65536 + gby0)^2 % 65536 gb01 = (gbx0^2 % 65536 + gby1)^2 % 65536 gb11 = (gbx1^2 % 65536 + gby1)^2 % 65536 gg_b00_0 = (gb00)^2*0.25 % 512 - 256 gg_b10_0 = (gb10)^2*0.25 % 512 - 256 gg_b01_0 = (gb01)^2*0.25 % 512 - 256 gg_b11_0 = (gb11)^2*0.25 % 512 - 256 gg_b00_1 = (gb00+1)^2*0.25 % 512 - 256 gg_b10_1 = (gb10+1)^2*0.25 % 512 - 256 gg_b01_1 = (gb01+1)^2*0.25 % 512 - 256 gg_b11_1 = (gb11+1)^2*0.25 % 512 - 256 gd = 1 / sqrt(sqr(gg_b00_0) + sqr(gg_b00_1)) gg_b00_0 = gg_b00_0 * gd gg_b00_1 = gg_b00_1 * gd gd = 1 / sqrt(sqr(gg_b10_0) + sqr(gg_b10_1)) gg_b10_0 = gg_b10_0 * gd gg_b10_1 = gg_b10_1 * gd gd = 1 / sqrt(sqr(gg_b01_0) + sqr(gg_b01_1)) gg_b01_0 = gg_b01_0 * gd gg_b01_1 = gg_b01_1 * gd gd = 1 / sqrt(sqr(gg_b11_0) + sqr(gg_b11_1)) gg_b11_0 = gg_b11_0 * gd gg_b11_1 = gg_b11_1 * gd gu1 = grx0 * gg_b00_0 + gry0 * gg_b00_1 gv1 = grx1 * gg_b10_0 + gry0 * gg_b10_1 gu2 = grx0 * gg_b01_0 + gry1 * gg_b01_1 gv2 = grx1 * gg_b11_0 + gry1 * gg_b11_1 gsx = sqr(grx0) * (3 - grx0*2) gsy = sqr(gry0) * (3 - gry0*2) ga = gu1 + gsx*(gv1-gu1) gb = gu2 + gsx*(gv2-gu2) gsum[w,h] = gsum[w,h] + (ga + gsy*(gb-ga))*gfreq gfreq = gfreq / 2 gp = gp * gr2 * 2 gi = gi - 1 ENDWHILE w = w + 1 endwhile w = 0 h = h + 1 endwhile w = 0 h = 0 ; ; initial circles if (@type == "Disjoint Schottky" && @expert) || \ (@type == "Disjoint Schottky" && @version < 450) || \ (@typeb == "Disjoint Schottky" && !@expert) cs[0] = (1.112,1.202) ;a cs[1] = (0.877,-0.948) ;b cs[2] = (-1.178,-1.112) ;A cs[3] = (-0.812,0.872) ;B rad[0] = 0.8 ;ra rad[1] = 1.045 ;rA rad[2] = 0.775 ;rb rad[3] = 1.125 ;rB ; Mobius transforms ; The mobius transform is the composite of the following transforms, ; represented in their matrix forms. The circles a and A are used to ; illustrate: ; |1 a| |0 Ra*ra| |u 0| |1 -A| ; |0 1| |1 0 | |0 cu| |0 1| ; maps exterior of A onto interior of a ; angle between x axis and line between a and A theta = atan2(cs[0]-cs[2]) u = sin(theta)+flip(cos(theta)) cu = conj(u) gens[0,0] = cs[0]*u gens[0,1] = rad[0]*rad[2]*cu-cs[0]*cs[2]*u gens[0,2] = u gens[0,3] = -cs[2]*u ; maps the exterior of B onto the interior of b ; angle between x axis and line between b and B theta = atan2(cs[1]-cs[3]) u = sin(theta)+flip(cos(theta)) cu = conj(u) gens[1,0] = cs[1]*u gens[1,1] = rad[1]*rad[3]*cu-cs[1]*cs[3]*u gens[1,2] = u gens[1,3] = -cs[3]*u ; normalize det = gens[0,0]*gens[0,3]-gens[0,1]*gens[0,2] det = 1/sqrt(det) gens[0,0] = gens[0,0]*det gens[0,1] = gens[0,1]*det gens[0,2] = gens[0,2]*det gens[0,3] = gens[0,3]*det det = gens[1,0]*gens[1,3]-gens[1,1]*gens[1,2] det = 1/sqrt(det) gens[1,0] = gens[1,0]*det gens[1,1] = gens[1,1]*det gens[1,2] = gens[1,2]*det gens[1,3] = gens[1,3]*det elseif (@type == "Kissing Schottky" && @expert) || \ (@type == "Kissing Schottky" && @version < 450) || \ (@typeb == "Kissing Schottky" && !@expert) ; uses formula on page 170 of "Indra's Pearls" ky = sqrt(kx^2-1) kv = sqrt(ku^2-1) if @plus == "Larger root" kk = (1+sqrt(1-ky^2*kv^2))/(ky*kv) else kk = (1-sqrt(1-ky^2*kv^2))/(ky*kv) endif cs[0] = flip(kk*ku/kv) ;a cs[1] = kx/ky ;b cs[2] = -flip(kk*ku/kv) ;A cs[3] = -kx/ky ;B rad[0] = kk/kv ;ra rad[1] = 1/ky ;rb rad[2] = kk/kv ;rA rad[3] = 1/ky ;rB gens[0,0] = ku gens[0,1] = flip(kk*kv) gens[0,2] = -flip(kv/kk) gens[0,3] = ku gens[1,0] = kx gens[1,1] = ky gens[1,2] = ky gens[1,3] = kx det = gens[0,0]*gens[0,3]-gens[0,1]*gens[0,2] det = 1/sqrt(det) gens[0,0] = gens[0,0]*det gens[0,1] = gens[0,1]*det gens[0,2] = gens[0,2]*det gens[0,3] = gens[0,3]*det det = gens[1,0]*gens[1,3]-gens[1,1]*gens[1,2] det = 1/sqrt(det) gens[1,0] = gens[1,0]*det gens[1,1] = gens[1,1]*det gens[1,2] = gens[1,2]*det gens[1,3] = gens[1,3]*det elseif (@type == "Apollonian Gasket" && @expert) || \ (@type == "Apollonian Gasket" && @version < 450) || \ (@typeb == "Apollonian Gasket" && !@expert) if @exam == "1" ; uses info on page 201 of Indra's Pearls cs[0] = (0,0) ;a - this is a line, the real axis cs[1] = (1,-1) ;b cs[2] = (0,-0.25) ;A cs[3] = (-1,-1) ;B rad[0] = -1 ;ra rad[1] = 1 ;rb rad[2] = 0.25 ;rA rad[3] = 1 ;rB gens[0,0] = 1 gens[0,1] = 0 gens[0,2] = (0,-2) gens[0,3] = 1 gens[1,0] = (1,-1) gens[1,1] = (1,0) gens[1,2] = (1,0) gens[1,3] = (1,1) elseif @exam == "2" ; use info on page 202 of Indra's Pearls cs[0] = (0,2) ;a cs[1] = (1,0) ;b - this is a line, x = 1 cs[2] = (0,0) ;A cs[3] = (-1,0) ;B - this is a line, x = -1 rad[0] = 1 ;ra rad[1] = -0.5 ;rb rad[2] = 1 ;rA rad[3] = -0.5 ;rB gens[0,0] = 2 gens[0,1] = (0,-1) gens[0,2] = (0,-1) gens[0,3] = 0 gens[1,0] = 1 gens[1,1] = 0 gens[1,2] = 2 gens[1,3] = 1 endif elseif (@type == "Grandma's Special" && @expert) || \ (@type == "Grandma's Special" && @version < 450) gtab = (ta*tb+sqrt(ta*ta*tb*tb-4*(ta*ta+tb*tb)))/2 gz0 = (gtab-2)*tb/(tb*gtab-2*ta+2*(0,1)*gtab) cs[0] = (0,0) ;a cs[1] = (0,0) ;b cs[2] = (0,0) ;A cs[3] = (0,0) ;B rad[0] = @radinit ;ra if rad[0] < 0 while rad[0]<-1 rad[0] = rad[0]+1 endwhile endif rad[2] = rad[0] ;rA rad[1] = -@radinit ;rb if rad[1] < 0 while rad[0]<-1 rad[1] = rad[1]+1 endwhile endif rad[3] = rad[1] ;rB gens[0,0] = (tb-(0,2))/2 gens[0,1] = tb/2 gens[0,2] = tb/2 gens[0,3] = conj(gens[0,0]) gens[1,0] = ta/2 gens[1,2] = (ta*gtab-2*tb+(0,4))/((2*gtab+4)*gz0) gens[1,1] = (ta*gtab-2*tb-(0,4))*gz0/(2*gtab-4) gens[1,3] = ta/2 det = gens[0,0]*gens[0,3]-gens[0,1]*gens[0,2] det = 1/sqrt(det) gens[0,0] = gens[0,0]*det gens[0,1] = gens[0,1]*det gens[0,2] = gens[0,2]*det gens[0,3] = gens[0,3]*det elseif (@type == "Grandma's Special #2" && @expert) || \ (@type == "Grandma's Special #2" && @version < 450) gz = 0.5*sqrt(@ta^2*@tb^2-4*@ta^2-4*@tb^2+4*@tabAB+8) gtab = 0.5*@ta*@tb-gz gQ = sqrt(2-@tabAB) gR = sqrt(2+@tabAB) if cabs(@tabAB+im*gQ*gR)<2 gR = -gR endif gz0 = (gtab-2)*(@tb+gR)/(@tb*gtab-2*@ta+im*gQ*gtab) cs[0] = (0,0) ;a cs[1] = (0,0) ;b cs[2] = (0,0) ;A cs[3] = (0,0) ;B rad[0] = @radinit ;ra if rad[0] < 0 while rad[0]<-1 rad[0] = rad[0]+1 endwhile endif rad[2] = rad[0] ;rA rad[1] = -@radinit ;rb if rad[1] < 0 while rad[0]<-1 rad[1] = rad[1]+1 endwhile endif rad[3] = rad[1] ;rB gens[0,0] = (@tb-im*gQ)/2 gens[0,1] = (@tb*gtab-2*@ta-im*gQ*gtab)/((2*gtab+4)*gz0) gens[0,2] = (@tb*gtab-2*@ta+im*gQ*gtab)*gz0/(2*gtab-4) gens[0,3] = (@tb+im*gQ)/2 gens[1,0] = @ta/2 gens[1,1] = (@ta*gtab-2*@tb+2*im*gQ)/((2*gtab+4)*gz0) gens[1,2] = (@ta*gtab-2*@tb-2*im*gQ)*gz0/(2*gtab-4) gens[1,3] = @ta/2 det = gens[0,0]*gens[0,3]-gens[0,1]*gens[0,2] det = 1/sqrt(det) gens[0,0] = gens[0,0]*det gens[0,1] = gens[0,1]*det gens[0,2] = gens[0,2]*det gens[0,3] = gens[0,3]*det elseif @typeb == "Special #2" && !@expert && @version >= 450 gz = 0.5*sqrt(ta^2*tb^2-4*ta^2-4*tb^2+4*tabAB+8) gtab = 0.5*ta*tb-gz gQ = sqrt(2-tabAB) gR = sqrt(2+tabAB) if cabs(tabAB+im*gQ*gR)<2 gR = -gR endif gz0 = (gtab-2)*(tb+gR)/(tb*gtab-2*ta+im*gQ*gtab) cs[0] = (0,0) ;a cs[1] = (0,0) ;b cs[2] = (0,0) ;A cs[3] = (0,0) ;B rad[0] = @radinit ;ra if rad[0] < 0 while rad[0]<-1 rad[0] = rad[0]+1 endwhile endif rad[2] = rad[0] ;rA rad[1] = -@radinit ;rb if rad[1] < 0 while rad[0]<-1 rad[1] = rad[1]+1 endwhile endif rad[3] = rad[1] ;rB gens[0,0] = (tb-im*gQ)/2 gens[0,1] = (tb*gtab-2*ta-im*gQ*gtab)/((2*gtab+4)*gz0) gens[0,2] = (tb*gtab-2*ta+im*gQ*gtab)*gz0/(2*gtab-4) gens[0,3] = (tb+im*gQ)/2 gens[1,0] = ta/2 gens[1,1] = (ta*gtab-2*tb+2*im*gQ)/((2*gtab+4)*gz0) gens[1,2] = (ta*gtab-2*tb-2*im*gQ)*gz0/(2*gtab-4) gens[1,3] = ta/2 det = gens[0,0]*gens[0,3]-gens[0,1]*gens[0,2] det = 1/sqrt(det) gens[0,0] = gens[0,0]*det gens[0,1] = gens[0,1]*det gens[0,2] = gens[0,2]*det gens[0,3] = gens[0,3]*det elseif (@typeb == "Double Cusps" || @typeb == "Special") && !@expert \ && @version >= 450 gtab = (ta*tb+sqrt(ta*ta*tb*tb-4*(ta*ta+tb*tb)))/2 gz0 = (gtab-2)*tb/(tb*gtab-2*ta+2*(0,1)*gtab) cs[0] = (0,0) ;a cs[1] = (0,0) ;b cs[2] = (0,0) ;A cs[3] = (0,0) ;B rad[0] = -1 ;ra if rad[0] < 0 while rad[0]<-1 rad[0] = rad[0]+1 endwhile endif rad[2] = rad[0] ;rA rad[1] = 1 ;rb if rad[1] < 0 while rad[0]<-1 rad[1] = rad[1]+1 endwhile endif rad[3] = rad[1] ;rB gens[0,0] = (tb-(0,2))/2 gens[0,1] = tb/2 gens[0,2] = tb/2 gens[0,3] = conj(gens[0,0]) gens[1,0] = ta/2 gens[1,2] = (ta*gtab-2*tb+(0,4))/((2*gtab+4)*gz0) gens[1,1] = (ta*gtab-2*tb-(0,4))*gz0/(2*gtab-4) gens[1,3] = ta/2 det = gens[0,0]*gens[0,3]-gens[0,1]*gens[0,2] det = 1/sqrt(det) gens[0,0] = gens[0,0]*det gens[0,1] = gens[0,1]*det gens[0,2] = gens[0,2]*det gens[0,3] = gens[0,3]*det elseif (@type == "Jorgensen" && @expert) || \ (@type == "Jorgensen" && @version < 450) gtab = (taj*tbj-sqrt(taj*taj*tbj*tbj-4*(taj*taj+tbj*tbj)))/2 cs[0] = (0,0) ;a cs[1] = (0,0) ;b cs[2] = (0,0) ;A cs[3] = (0,0) ;B rad[0] = @radinit ;ra if rad[0] < 0 while rad[0]<-1 rad[0] = rad[0]+1 endwhile endif rad[2] = rad[0] ;rA rad[1] = -@radinit ;rb if rad[1] < 0 while rad[0]<-1 rad[1] = rad[1]+1 endwhile endif rad[3] = rad[1] ;rB gens[0,0] = taj-tb/gtab gens[0,1] = taj/gtab^2 gens[0,2] = taj gens[0,3] = tbj/gtab gens[1,0] = tbj-taj/gtab gens[1,2] = -tbj/gtab^2 gens[1,1] = -tbj gens[1,3] = taj/gtab det = gens[0,0]*gens[0,3]-gens[0,1]*gens[0,2] det = 1/sqrt(det) gens[0,0] = gens[0,0]*det gens[0,1] = gens[0,1]*det gens[0,2] = gens[0,2]*det gens[0,3] = gens[0,3]*det elseif (@type == "Riley" && @expert) || \ (@type == "Riley" && @version < 450) cs[0] = (0,0) ;a cs[1] = (0,0) ;b cs[2] = (0,0) ;A cs[3] = (0,0) ;B ; cs[0] = (0.5,-0.25) ;a ; cs[1] = (2,1) ;b ; cs[2] = (-0.5,-0.25) ;A ; cs[3] = (0,1) ;B rad[0] = 1 rad[1] = 1 rad[2] = 1 rad[3] = 1 ; rad[0] = -0.25 ;rB ; rad[1] = 1 ;rB ; rad[0] = -0.25 ;rB ; rad[3] = 1 ;rB gens[0,0] = 1 gens[0,1] = 0 gens[0,2] = @rc gens[0,3] = 1 gens[1,0] = 1 gens[1,2] = 0 gens[1,1] = 2 gens[1,3] = 1 det = gens[0,0]*gens[0,3]-gens[0,1]*gens[0,2] det = 1/sqrt(det) gens[0,0] = gens[0,0]*det gens[0,1] = gens[0,1]*det gens[0,2] = gens[0,2]*det gens[0,3] = gens[0,3]*det elseif (@type == "Maskit" && @expert) || \ (@type == "Maskit" && @version < 450) cs[0] = (0,2) ;a cs[1] = (1,0) ;b - this is a line, x = 1 cs[2] = (0,0) ;A cs[3] = (-1,0) ;B - this is a line, x = -1 rad[0] = 1 ;ra rad[1] = -0.5 ;rb rad[2] = 1 ;rA rad[3] = -0.5 ;rB gens[0,0] = @m gens[0,1] = 1 gens[0,2] = 1 gens[0,3] = 0 gens[1,0] = 1 gens[1,2] = 0 gens[1,1] = 2 gens[1,3] = 1 det = gens[0,0]*gens[0,3]-gens[0,1]*gens[0,2] det = 1/sqrt(det) gens[0,0] = gens[0,0]*det gens[0,1] = gens[0,1]*det gens[0,2] = gens[0,2]*det gens[0,3] = gens[0,3]*det endif ; inverses gens[2,0] = gens[0,3] gens[2,1] = -gens[0,1] gens[2,2] = -gens[0,2] gens[2,3] = gens[0,0] gens[3,0] = gens[1,3] gens[3,1] = -gens[1,1] gens[3,2] = -gens[1,2] gens[3,3] = gens[1,0] ii = 4 ilev = 1 level = level + 1 tag[0] = 0 word[0,0] = gens[0,0] word[0,1] = gens[0,1] word[0,2] = gens[0,2] word[0,3] = gens[0,3] bool turn = false bool terminate = false while (tag[0] != 1 || !terminate)&& level != 1 while !bterm ; go_forward code if !turn if ilev < level ilev = ilev + 1 endif tag[ilev-1] = (tag[ilev-2]+1) % 4 endif turn = false ; word[ilev-1] = word[ilev-2]*gens[tag[ilev-1]]} det = word[ilev-2,0]*word[ilev-2,3]-word[ilev-2,1]*word[ilev-2,2] temp1 = word[ilev-2,0] temp2 = word[ilev-2,1] temp3 = word[ilev-2,2] temp4 = word[ilev-2,3] word[ilev-1,0] = temp1*gens[tag[ilev-1],0]+temp2*gens[tag[ilev-1],2] word[ilev-1,1] = temp1*gens[tag[ilev-1],1]+temp2*gens[tag[ilev-1],3] word[ilev-1,2] = temp3*gens[tag[ilev-1],0]+temp4*gens[tag[ilev-1],2] word[ilev-1,3] = temp3*gens[tag[ilev-1],1]+temp4*gens[tag[ilev-1],3] ; branch_termination code ; newcirc=mob_on_circ(word[lev-2],circ[tags[lev-1]]) ; David Wright Hermitian code to handle both lines and circles igens[0,0] = word[ilev-2,3] igens[0,1] = -word[ilev-2,1] igens[0,2] = -word[ilev-2,2] igens[0,3] = word[ilev-2,0] ;calculate transpose conjugate temp1 = igens[0,0] temp2 = igens[0,1] temp3 = igens[0,2] temp4 = igens[0,3] ctgens[0,0] = conj(temp1) ctgens[0,1] = conj(temp3) ctgens[0,2] = conj(temp2) ctgens[0,3] = conj(temp4) ; calculate Hermitian matrix for a circle (or line) if rad[tag[ilev-1]] > 0 ;calculation for cirlce hermit[0,0] = 1 hermit[0,1] = -cs[tag[ilev-1]] hermit[0,2] = conj(hermit[0,1]) hermit[0,3] = |cs[tag[ilev-1]]|-rad[tag[ilev-1]]^2 else ;calculation for line vector = tan(-#pi*rad[tag[ilev-1]]) hermit[0,0] = 0 hermit[0,1] = vector+im hermit[0,2] = conj(hermit[0,1]) hermit[0,3] = -2*imag(cs[tag[ilev-1]])*(1+vector*vector) endif ;calculate ctgens*hermit*igens ; product of hermit and igens det = hermit[0,0]*hermit[0,3]-hermit[0,1]*hermit[0,2] temp1 = hermit[0,0] temp2 = hermit[0,1] temp3 = hermit[0,2] temp4 = hermit[0,3] hermit[0,0] = temp1*igens[0,0]+temp2*igens[0,2] hermit[0,1] = temp1*igens[0,1]+temp2*igens[0,3] hermit[0,2] = temp3*igens[0,0]+temp4*igens[0,2] hermit[0,3] = temp3*igens[0,1]+temp4*igens[0,3] ; previous product and product with ctgens det = ctgens[0,0]*ctgens[0,3]-ctgens[0,1]*ctgens[0,2] temp1 = hermit[0,0] temp2 = hermit[0,1] temp3 = hermit[0,2] temp4 = hermit[0,3] hermit[0,0] = ctgens[0,0]*temp1+ctgens[0,1]*temp3 hermit[0,1] = ctgens[0,0]*temp2+ctgens[0,1]*temp4 hermit[0,2] = ctgens[0,2]*temp1+ctgens[0,3]*temp3 hermit[0,3] = ctgens[0,2]*temp2+ctgens[0,3]*temp4 ;retrieve new circle and radius if hermit[0,0] != 0 ;Hermitian is for a circle cs[ii] = -hermit[0,1]/hermit[0,0] rad[ii] = sqrt(|hermit[0,1]|-real(hermit[0,0])*real(hermit[0,3])) \ /cabs(hermit[0,0]) else ;Hermitian is for a line cs[ii] = -hermit[0,3]/(2*hermit[0,2]) rad[ii] = -atan2(im*hermit[0,1])/#pi if rad[ii] >= 0 rad[ii] = rad[ii] - 1 endif endif levval[ii] = ilev-1 if @method == "level" clr[ii] = ilev-1 elseif @method == "number" clr[ii] = ii endif ; check to see if circle is in the view window vfx = real(cs[ii]) vfy = imag(cs[ii]) vffx = vfx - xmin vffy = vfy - ymin vffy = tymax - vffy vffx = vffx/txmax vffy = vffy/tymax vxx = vffx vffx = (0.5*#width + (vffx - 0.5)*cos(#angle)*#width - \ (vffy - 0.5)*sin(#angle)*#height) vffy = (0.5*#height + (vffy - 0.5)*cos(#angle)*#height + \ (vxx - 0.5)*sin(#angle)*#width) vffx = (vffx+wd2)/#width vffy = (vffy+ht2)/#height if (vffx > -rad[ii] && vffx < 1+rad[ii]) && \ (vffy > -rad[ii] && vffy < 1+rad[ii]) inwin = true else if @nocheck && !@limit inwin = true else inwin = false endif endif if ii >= lmem-4 bterm = true else if (ilev == level) || (abs(rad[ii]) < epsilon) bterm = true if @limit && inwin ii = ii + 1 endif else bterm = false endif if !@limit && inwin ii = ii + 1 endif endif endwhile bterm = false repeat ilev = ilev-1 ; available_turn code if ilev > 0 if (tag[ilev]+3)%4 == (tag[ilev-1]+2)%4 aturn = false else aturn = true endif endif until ilev == 0 || aturn ; turn_and_go_forward code tag[ilev] = (tag[ilev] +3) % 4 if ilev == 0 word[0,0] = gens[tag[0],0] word[0,1] = gens[tag[0],1] word[0,2] = gens[tag[0],2] word[0,3] = gens[tag[0],3] if checktag == 0 && tag[0] == 0 terminate = true endif else ;word[lev] = word[lev-1]*gens[tags[lev]] turn = true det = word[ilev-1,0]*word[ilev-1,3]-word[ilev-1,1]*word[ilev-1,2] temp1 = word[ilev-1,0] temp2 = word[ilev-1,1] temp3 = word[ilev-1,2] temp4 = word[ilev-1,3] word[ilev,0] = temp1*gens[tag[ilev],0]+temp2*gens[tag[ilev],2] word[ilev,1] = temp1*gens[tag[ilev],1]+temp2*gens[tag[ilev],3] word[ilev,2] = temp3*gens[tag[ilev],0]+temp4*gens[tag[ilev],2] word[ilev,3] = temp3*gens[tag[ilev],1]+temp4*gens[tag[ilev],3] endif ilev = ilev + 1 ; ready to start last main branch and set flag for final termination if tag[0] == 3 checktag = 0 endif endwhile int maxi = ii-1 if level == 1 maxi = 3 endif level = level -1 ; translate circles to pixels ; initialize arrays ; while(h < #height+ht) while(w < #width+wd) count[w,h] = 0 lev[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile iii = 0 bool behind = false float radius = 0 float backcolor = 0 while iii <= maxi behind = false radius = (rad[iii]) if ((@limit &&(levval[iii] >= level)||(radius < 5/#width/magn))|| \ !(@limit||(levval[iii] <= @levshow-1))) && radius >= 0 && radius < maxrad if @limit && radius < 5/#width/magn radius = 5/#width/magn endif fx = real(cs[iii]) fy = imag(cs[iii]) float rxx = 0 float ryy = 0 float fz = 0 if @rmap fx = fx*@zoom*magn fy = fy*@zoom*magn rxx = fx ryy = fy fx = fx/(fx^2+fy^2+1)*2*@sphrad/magn fy = fy/(rxx^2+fy^2+1)*2*@sphrad/magn fz = (rxx^2+ryy^2)/(rxx^2+ryy^2+1)*2*@sphrad/magn ; rotation around the y axis ; rxx = fx fx = (fz-@sphrad/magn)*sin(@yangle*#pi/180) + \ (fx)*cos(@yangle*#pi/180) fz = @sphrad/magn+(fz-@sphrad/magn)*cos(@yangle*#pi/180) - \ (rxx)*sin(@yangle*#pi/180) ; ; rotation around the x axis ; ryy = fy fy = (fy)*cos(@xangle*#pi/180) - \ (fz-@sphrad/magn)*sin(@xangle*#pi/180) fz = @sphrad/magn+(ryy)*sin(@xangle*#pi/180) + \ (fz-@sphrad/magn)*cos(@xangle*#pi/180) fx = fx + @xlate/magn fy = fy + @ylate/magn if fz < @sphrad behind = true endif endif ffx = fx - xmin ffy = fy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax xx = ffx ffx = (0.5*#width + (ffx - 0.5)*cos(#angle)*#width - \ (ffy - 0.5)*sin(#angle)*#height) ffy = (0.5*#height + (ffy - 0.5)*cos(#angle)*#height + \ (xx - 0.5)*sin(#angle)*#width) px = round(ffx)+wd2 py = round(ffy)+ht2 rds = round(radius*#width/txmax) rwidth = @rwidth*round(radius*#width/txmax) pxx = px-rds pyy = py-rds bool boxborder = false if @bcolor backcolor = 0 else backcolor = fz endif while pxx <= px+rds pyy = py-rds while pyy <= py+rds boxborder = (pxx >= px-rds+round(@bborder*#magn) && pxx <= px+rds-round(@bborder*#magn)) && \ (pyy >= py-rds+round(@bborder*#magn) && pyy <= py+rds-round(@bborder*#magn)) if pxx > 0 && pyy > 0 && pxx < #width+wd && pyy < #height+ht fsum = gsum[pxx,pyy]/rds*100 if @fill == 0 if ((rds*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0 count[pxx,pyy] = sqrt((rwidth/2*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((rds-rwidth/2)*(1+@gfbmf*(1+fsum))/(1+@gfbmf)-sqrt((pxx-px)^2+(pyy-py)^2))^2) lev[pxx,pyy] = @rcolor-1 endif if ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2- \ ((pxx-px))^2- ((pyy-py))^2) >=0) && \ ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr- \ (@alpha*(pxx-px))^@pwr-(@beta*(pyy-py))^@pwr)/@gamma >= 0 \ || !@clip) count[pxx,pyy] = (((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^ \ @pwr-(@alpha*(pxx-px))^@pwr-(@beta*(pyy-py))^@pwr)^ \ (1/@pwr)/@gamma if @method == "size" if boxborder lev[pxx,pyy] = trunc(radius^@adj*100) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif elseif @method == "number" if boxborder lev[pxx,pyy] = trunc(clr[iii]^@adj) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor else endif elseif @method == "position" if boxborder lev[pxx,pyy] = trunc(cabs(cs[iii]^@adj)*200) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif elseif @method == "level" if boxborder lev[pxx,pyy] = clr[iii] else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif endif if @method == "special" if boxborder lev[pxx,pyy] = lev[pxx,pyy]+levval[iii] else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif else if boxborder lev[pxx,pyy] = lev[pxx,pyy]%@ncolor else lev[pxx,pyy] = @brcolor endif endif endif elseif @fill == 1 if ((rds*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0 count[pxx,pyy] = sqrt((rwidth/2*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((rds-rwidth/2)*(1+@gfbmf*(1+fsum))/(1+@gfbmf)-sqrt((pxx-px)^2+(pyy-py)^2))^2) lev[pxx,pyy] = @rcolor-1 endif if ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0) && \ ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr+(@alpha*(pxx-px))^@pwr- \ (@beta*(pyy-py))^@pwr)/@gamma >=0 || !@clip) count[pxx,pyy] = (((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr+(@alpha*(pxx-px))^@pwr-(@beta*(pyy-py))^@pwr)^ \ (1/@pwr)/@gamma if @method == "size" if boxborder lev[pxx,pyy] = trunc(radius^@adj*100) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif elseif @method == "number" if boxborder lev[pxx,pyy] = trunc(clr[iii]^@adj) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor else endif elseif @method == "position" if boxborder lev[pxx,pyy] = trunc(cabs(cs[iii]^@adj)*200) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif elseif @method == "level" if boxborder lev[pxx,pyy] = clr[iii] else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif endif if @method == "special" if boxborder lev[pxx,pyy] = lev[pxx,pyy]+levval[iii] else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif else if boxborder lev[pxx,pyy] = lev[pxx,pyy]%@ncolor else lev[pxx,pyy] = @brcolor endif endif endif elseif @fill == 2 if ((rds*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0 count[pxx,pyy] = sqrt((rwidth/2*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((rds-rwidth/2)*(1+@gfbmf*(1+fsum))/(1+@gfbmf)-sqrt((pxx-px)^2+(pyy-py)^2))^2) lev[pxx,pyy] = @rcolor-1 endif if ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0) && \ ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr+(@alpha*(pxx-px))^@pwr+ \ (@beta*(pyy-py))^@pwr)/@gamma >= 0 || !@clip) count[pxx,pyy] = (((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr+(@alpha*(pxx-px))^@pwr+(@beta*(pyy-py))^@pwr)^ \ (1/@pwr)/@gamma if @method == "size" if boxborder lev[pxx,pyy] = trunc(radius^@adj*100) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif elseif @method == "number" if boxborder lev[pxx,pyy] = trunc(clr[iii]^@adj) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor else endif elseif @method == "position" if boxborder lev[pxx,pyy] = trunc(cabs(cs[iii]^@adj)*200) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif elseif @method == "level" if boxborder lev[pxx,pyy] = clr[iii] else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif endif if @method == "special" if boxborder lev[pxx,pyy] = lev[pxx,pyy]+levval[iii] else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif else if boxborder lev[pxx,pyy] = lev[pxx,pyy]%@ncolor else lev[pxx,pyy] = @brcolor endif endif endif elseif @fill == 3 if ((rds*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0 count[pxx,pyy] = sqrt((rwidth/2*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((rds-rwidth/2)*(1+@gfbmf*(1+fsum))/(1+@gfbmf)-sqrt((pxx-px)^2+(pyy-py)^2))^2) lev[pxx,pyy] = @rcolor-1 endif if ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^2-((pxx-px))^2-((pyy-py))^2) >=0) && \ ((((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr-(@alpha*(pxx-px))^@pwr+ \ (@beta*(pyy-py))^@pwr)/@gamma >= 0 || !@clip) count[pxx,pyy] = (((rds-rwidth)*(1+@gfbmf*(1+fsum))/(1+@gfbmf))^@pwr-(@alpha*(pxx-px))^@pwr+(@beta*(pyy-py))^@pwr)^ \ (1/@pwr)/@gamma if @method == "size" if boxborder lev[pxx,pyy] = trunc(radius^@adj*100) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif elseif @method == "number" if boxborder lev[pxx,pyy] = trunc(clr[iii]^@adj) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor else endif elseif @method == "position" if boxborder lev[pxx,pyy] = trunc(cabs(cs[iii]^@adj)*200) else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif elseif @method == "level" if boxborder lev[pxx,pyy] = clr[iii] else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif endif if @method == "special" if boxborder lev[pxx,pyy] = lev[pxx,pyy]+levval[iii] else lev[pxx,pyy] = @brcolor endif if behind lev[pxx,pyy] = backcolor endif else if boxborder lev[pxx,pyy] = lev[pxx,pyy]%@ncolor else lev[pxx,pyy] = @brcolor endif endif endif endif endif pyy = pyy + 1 endwhile pxx = pxx + 1 endwhile endif iii = iii + 1 endwhile ; init: float nhit=0 float nlev = 0 float nhit=0 float nhitx=0 float nhity=0 float e1 = 0.0; potentials float e2 = 0.0 float e3 = 0.0 float vx = 0.0; normal vector float vy = 0.0 float vz = 0.0 float vd = 0.0 float cen = 0 float cenx = 0 float ceny = 0 complex t = 0 float tII = 0 complex z1 = 0 float t1x = 0 float t2x = 0 float t3x = 0 float t1y = 0 float t2y = 0 float t3y = 0 float e1 = 0 float e2 = 0 float e3 = 0 float tx = 0 float ty = 0 float tz = 0 float td = 0 complex ww = 0 complex www = 0 complex r = 1 complex r2 = (0,1) ^ 0.411111111111 float sum = 0.0 float freq = 1.0 int in = 7 complex pp = #pixel*@nscale*r + @noffset WHILE (in > 0) ; determine integer coordinate for corners of square ; surrounding pp float bx0 = floor(real(pp)) % 256 float by0 = floor(imag(pp)) % 256 IF (bx0 < 0) bx0 = bx0 + 256 ENDIF IF (by0 < 0) by0 = by0 + 256 ENDIF float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(pp) - floor(real(pp)) float ry0 = imag(pp) - floor(imag(pp)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from pin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^2 % 65536 + by0)^2 % 65536 float b10 = (bx1^2 % 65536 + by0)^2 % 65536 float b01 = (bx0^2 % 65536 + by1)^2 % 65536 float b11 = (bx1^2 % 65536 + by1)^2 % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^2*0.25 % 512 - 256 float g_b10_0 = (b10)^2*0.25 % 512 - 256 float g_b01_0 = (b01)^2*0.25 % 512 - 256 float g_b11_0 = (b11)^2*0.25 % 512 - 256 float g_b00_1 = (b00+1)^2*0.25 % 512 - 256 float g_b10_1 = (b10+1)^2*0.25 % 512 - 256 float g_b01_1 = (b01+1)^2*0.25 % 512 - 256 float g_b11_1 = (b11+1)^2*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner 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 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float aa = u1 + sx*(v1-u1) float bb = u2 + sx*(v2-u2) sum = sum + (aa + sy*(bb-aa))*freq freq = freq / 2 pp = pp * r2 * 2 in = in - 1 ENDWHILE loop: final: int xcrd = #x int ycrd = #y bool inside = true ; if @applymapping==true ; generate the x and y location in the image float dxx = (real(#pixel)-real(#center))*(#width)/4*magn float dyy = (imag(#pixel)-imag(#center))*(#width)/4*magn float transx = (#width+wd)*0.5; float transy = (#height+ht)*0.5; float cosan = cos(#angle); float sinan = sin(#angle); xcrd = round((transx + (dxx*cosan + dyy*sinan))) ycrd = round((transy + (dxx*sinan - dyy*cosan))) ; is this in our image? if (xcrd+wd2<0 || xcrd>=#width+wd2 || ycrd+ht2<0 || ycrd>=#height+ht2) inside = false endif endif if inside == true && count[xcrd,ycrd] > 0 nhit=count[xcrd,ycrd] nhitx=count[xcrd+1,ycrd] nhity=count[xcrd,ycrd+1] nlev=lev[xcrd,ycrd] else #solid=true endif float x = 0.0 float y = 0.0 IF @transfer == 0 x = real(#pixel)*100+@fbm*(sum+1) y = imag(#pixel)*100+@fbm*(sum+1) ELSEIF @transfer == 1 x = real(#pixel)*200*(1+@fbm*(sum+1)*0.5) y = imag(#pixel)*200*(1+@fbm*(sum+1)*0.5) ELSEIF @transfer == 2 x = real(#pixel)*200/(1+@fbm*(sum+1)*0.5) y = imag(#pixel)*200/(1+@fbm*(sum+1)*0.5) ELSEIF @transfer == 3 x = real(#pixel)*200+10*log(@fbm*(sum+1)) y = imag(#pixel)*200+10*log(@fbm*(sum+1)) ELSEIF @transfer == 4 x = real(#pixel)*200+50*exp(@fbm*(sum+1)) y = imag(#pixel)*200+50*exp(@fbm*(sum+1)) ELSEIF @transfer == 5 x = real(#pixel)*200+50*(@fbm*(sum+1))*(@fbm*(sum+1)) y = imag(#pixel)*200+50*(@fbm*(sum+1))*(@fbm*(sum+1)) ELSEIF @transfer == 6 x = real(#pixel)*200+50*sqrt(@fbm*(sum+1)) y = imag(#pixel)*200+50*sqrt(@fbm*(sum+1)) ELSEIF @transfer == 7 x = real(#pixel)*200+50*sin(@fbm*(sum+1)) y = imag(#pixel)*200+50*sin(@fbm*(sum+1)) ELSEIF @transfer == 8 x = real(#pixel)*200+50*asin(@fbm*(sum+1)) y = imag(#pixel)*200+50*asin(@fbm*(sum+1)) ELSEIF @transfer == 9 x = real(#pixel)*200+50*tan(@fbm*(sum+1)) y = imag(#pixel)*200+50*tan(@fbm*(sum+1)) ELSEIF @transfer == 10 x = real(#pixel)*200+50*atan(@fbm*(sum+1)) y = imag(#pixel)*200+50*atan(@fbm*(sum+1)) ENDIF cen = nhit*(1+@fbmf*(sum+0.1)*10)/(1+@fbmf) cenx = nhitx*(1+@fbmf*(sum+0.1)*10)/(1+@fbmf) ceny = nhity*(1+@fbmf*(sum+0.1)*10)/(1+@fbmf) e1 = cen*@zscale e2 = cenx*@zscale e3 = ceny*@zscale IF (@xfer == 1); log e1 = log(e1) e2 = log(e2) e3 = log(e3) ELSEIF (@xfer == 2); sqrt e1 = sqrt(e1) e2 = sqrt(e2) e3 = sqrt(e3) ELSEIF (@xfer == 3); cuberoot e1 = (e1)^(1/3) e2 = (e2)^(1/3) e3 = (e3)^(1/3) ELSEIF (@xfer == 4); exp e1 = exp(e1) e2 = exp(e2) e3 = exp(e3) ELSEIF (@xfer == 5); sqr e1 = sqr(e1) e2 = sqr(e2) e3 = sqr(e3) ELSEIF (@xfer == 6); cube e1 = (e1)^3 e2 = (e2)^3 e3 = (e3)^3 ELSEIF (@xfer == 7); sin e1 = sin(e1) e2 = sin(e2) e3 = sin(e3) ELSEIF (@xfer == 8); cos e1 = cos(e1) e2 = cos(e2) e3 = cos(e3) ELSEIF (@xfer == 9); tan e1 = tan(e1) e2 = tan(e2) e3 = tan(e3) ENDIF ; apply post-scale e1 = e1 * @zscale2 e2 = e2 * @zscale2 e3 = e3 * @zscale2 vx = e2-e1 vy = e3-e1 vz = -0.01 ; normalize vector vd = 1/sqrt(sqr(vx)+sqr(vy)+sqr(vz)) vx = vx*vd vy = vy*vd vz = vz*vd z1 = vx + flip(vy) float d2r = #pi/180; degrees to radians conversion factor ; create the texture float gridx = @gridx float gridy = @gridy x = x*(1+@blend*real(z1))/(1+@blend)+ real(#random)*@dx y = y*(1+@blend*imag(z1))/(1+@blend)+ imag(#random)*@dy IF @smooth == false IF @texture == 0 ;lattice t1x = sin(x/gridx)+@toffset t1y = cos(y/gridy)+@toffset t2x = t1x+0.00000001 t3x = t1x t2y = t1y t3y = t1y+0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 1 ;quilt t1x = tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cotan(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 2 ;circles and squares t1x = sin(x/gridx)+cos(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cos(y/gridy)+sin(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 3 ;triangles t1x = tan(x/gridx)+cotan(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = cotan(y/gridy)+tan(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 4 ;X's and O's t1x = 1/sin(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cos(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 5 ;Dimples t1x = 1/tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cotan(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 6 ;Arrows t1x = 1/tan(x/gridx)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/sin(y/gridy)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 7 ; basketweave t1x = 1/sin(x/gridx)+1/cos(y/gridy)+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = 1/cos(y/gridy)+1/sin(x/gridx)+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 8 ; balls t1x = sin(x/gridx)^2 + cos(y/gridy)^2+@toffset t2x = t1x + 0.00000001 t3x = t1x t1y = sin(y/gridy)^2 + cos(x/gridx)^2+@toffset t2y = t1y t3y = t1y + 0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 9 ;Net t1x = log(abs(sin(x/gridx)))+@toffset t2x = t1x+0.00000001 t3x = t1x t1y = log(abs(cos(y/gridy)))+@toffset t2y = t1y t3y = t1y+0.00000001 e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ENDIF ELSE IF @texture == 0 ;lattice t1x = sin(x/gridx)+1 t2x = sin((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = cos(y/gridy)+1 t2y = t1y t3y = cos((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 1 ;quilt t1x = tan(x/gridx)+1 t2x = tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = cotan(y/gridy)+1 t2y = t1y t3y = cotan((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 2 ;circles and squares t1x = sin(x/gridx)+cos(y/gridy)+@toffset t2x = sin((x+0.00000001)/gridx)+cos(y/gridy)+@toffset t3x = t1x t1y = cos(y/gridy)+sin(x/gridx)+@toffset t2y = t1y t3y = cos((y+0.00000001)/gridy)+sin(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 3 ;triangles t1x = tan(x/gridx)+cotan(y/gridy)+@toffset t2x = tan((x+0.00000001)/gridx)+cotan(y/gridy)+@toffset t3x = t1x t1y = cotan(y/gridy)+tan(x/gridx)+@toffset t2y = t1y t3y = cotan((y+0.00000001)/gridy)+tan(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 4 ;X's and O's t1x = 1/sin(x/gridx)+@toffset t2x = 1/sin((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/cos(y/gridy)+@toffset t2y = t1y t3y = 1/cos((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 5 ;Dimples t1x = 1/tan(x/gridx)+@toffset t2x = 1/tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/cotan(y/gridy)+@toffset t2y = t1y t3y = 1/cotan((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 6 ;Arrows t1x = 1/tan(x/gridx)+@toffset t2x = 1/tan((x+0.00000001)/gridx)+@toffset t3x = t1x t1y = 1/sin(y/gridy)+@toffset t2y = t1y t3y = 1/sin((y+0.00000001)/gridy)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 7 ; basketweave t1x = 1/sin((x+0.00000001)/gridx)+1/cos(y/gridy)+@toffset t2x = 1/sin(x/gridx)+1/cos(y/gridy)+@toffset t3x = t1x t1y = 1/cos(y/gridy)+1/sin(x/gridx)+@toffset t2y = t1y t3y = 1/cos((y+0.00000001)/gridy)+1/sin(x/gridx)+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 8 ; balls t1x = sin((x+0.00000001)/gridx)^2 + cos(y/gridy)^2+@toffset t2x = sin(x/gridx)^2 + cos(y/gridy)^2+@toffset t3x = t1x t1y = sin(y/gridy)^2 + cos(x/gridx)^2+@toffset t2y = t1y t3y = sin((y+0.00000001)/gridy)^2 + cos(x/gridx)^2+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ELSEIF @texture == 9 ;net t1x = log(abs(sin(x/gridx)))+1 t2x = log(abs(sin((x+0.00000001)/gridx)))+@toffset t3x = t1x t1y = log(abs(cos(y/gridy)))+1 t2y = t1y t3y = log(abs(cos((y+0.00000001)/gridy)))+@toffset e1 =cabs(t1x+flip(t1y)) e2 =cabs(t2x+flip(t2y)) e3 =cabs(t3x+flip(t3y)) tx = e2 - e1 ty = e3 - e1 tz = -0.00000001/@theight td = 1/sqrt(sqr(tx)+sqr(ty)+sqr(tz)) tx = tx*td ty = ty*td t = tx + flip(ty) ENDIF ENDIF ; add the weighted texture z1 = z1*(1-@weight) + t*@weight ww = fn2(fn1((fn3(z1+@pmix*((real(#pixel))+flip(imag(#pixel)))))*10^@tpwr))*@ts www = fn2(fn1((ww - round(ww)))) + @toffsetII tII = cabs(www)*@tc tII = (tII - trunc(tII))*@tweight ; create vector for light direction float lx = cos(@angle*d2r) * cos(@elevation*d2r) float ly = sin(@angle*d2r) * cos(@elevation*d2r) float lz = -sin(@elevation*d2r) ; compute cosine of angle between these vectors ; (this is the amount of lighting on the surface) float ll = lx*real(z1) + ly*imag(z1) + lz*vz IF (ll < @ambient); light is below the ambient level ll = @ambient; set it to the ambient level ENDIF IF (@ambient < 0); the ambient level is negative ll = ll + 1; offset to prevent clipping at 0 ENDIF if(nhit==0) #solid=true else if !@oldcolor if @method == "Special" if @version < 450 #index = ll*0.0275*@scale*(1+@fbmf*(1+sum))/(1+@fbmf) + nlev/@level2 + tII else #index = ll*0.0275*@scale*(1+@fbmf*(1+sum))/(1+@fbmf) + 0.05*nlev + tII endif else #index = ll*0.0275*@scale*(1+@fbmf*(1+sum))/(1+@fbmf) + (0.125*nlev%@ncolor+1) +tII endif else if @method == "Special" #index = ll*0.0275*@scale*(1+@fbmf*(1+sum))/(1+@fbmf) + nlev/@level2 + tII else #index = ll*0.0275*@scale*(1+@fbmf*(1+sum))/(1+@fbmf) + (0.125*nlev%@ncolor+1) +tII endif endif endif default: param version caption = "Formula Version" default = 450 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam $ifdef VER40 heading text="Based upon the depth-first tree search algorithm in the book \ Indra's Pearls by Mumford, Series and Wright. It is considerably faster \ than most other algorithms in generating the limit set." endheading heading text="Implements built-in \ lighting based upon Damien's lighting code and fBm in the global \ section using arrays and a modification of Damien's code. \ Use with Pixel formula in mt.ufm or reb.ufm" endheading $else heading caption="Use with Pixel formula in mt.ufm" endheading $endif render=false title="Indra's Pearls Workshop" bool param expert caption = "Expert mode" default = false hint= "The expert mode is intended for those who understand the use of \ traces as described in the book Indra's Pearls." visible = @version >= 450 endparam $ifdef VER40 heading text="The expert mode is intended for those who understand the use of \ traces as described in the book Indra's Pearls." visible = @expert && @version >= 450 endheading $endif param solid caption="solid background?" default=true endparam param applyMapping caption = "Apply Mapping" default = false endparam bool param nocheck caption = "No Window Check" default = false visible = !@limit endparam param percentInc caption = "Oversize by (%)" default = 0.0 visible = @applyMapping == true endparam param level2 caption = "Max Iters" default = 100 min = 0 endparam float param epsilon caption = "Min circle size" default = 0.001 min = 0.00001 endparam float param maxrad caption = "Max circle size" default = 2.0 min = 0.00002 visible = !@limit || @oldcolor endparam param type caption = "Type" default = 3 enum = "Kissing Schottky" "Disjoint Schottky" "Apollonian Gasket" \ "Grandma's Special" "Grandma's Special #2" "Jorgensen" \ "Riley" "Maskit" visible = @expert || @version < 450 endparam param typeb caption = "Type" default = 3 enum = "Kissing Schottky" "Disjoint Schottky" "Apollonian Gasket" \ "Double Cusps" "Special" "Special #2" visible = !@expert && @version >= 450 endparam param tb2 caption = "View" default = 8 enum = "1 100 Cusp" "2 99 Cusp" "3 100 Cusp" "4 99 Cusp" "1 20 Cusp" \ "1 15 Cusp" "4 49 Cusp" "1 10 Cusp" "2 19 Cusp" "1 9 Cusp" \ "7 43 Cusp" "3 10 Cusp" "2 5 Cusp" "1 2 Cusp" "45 73 Cusp" \ "21 34 Cusp" "29 43 Cusp" "7 10 Cusp" "4 5 Cusp" "23 27 Cusp" \ "67 75 Cusp" "84 89 Cusp" visible = @typeb == "Double Cusps" && !@expert&& @version >= 450 endparam param tbs caption = "View" enum = "Accident" "Frills and Curls" "Nearby Group" "Quasifuchsian #1" \ "Quasifuchsian #2" "Quasifuchsian #3" "Quasi Single Degen" \ "Quasi Double Degen" "Spiral Degenerate" "Troel's Point" default = 2 visible = @typeb == "Special" && !@expert&& @version >= 450 endparam param tbs2 caption = "View" enum = "Order 2 #1" "Order 2 #2" "Order 2 #3" "Order 2 #4" \ "Commutator (2,3)" "Commutator (2,2)" default = 4 visible = @typeb == "Special #2" && !@expert&& @version >= 450 endparam param exam caption ="Examples" default = 0 enum = "1" "2" visible=@type=="Apollonian Gasket" || @typeb=="Apollonian Gasket" && \ !@expert endparam param limit caption ="Show Limit Only" default = true endparam param levshow caption = "Min display level" default = 0 visible = !@limit endparam complex param rc caption = "Riley param" default = (0.05,0.93) visible=@type=="Riley" && (@expert || @version < 450) endparam complex param m caption = "Maskit param" default = (0,2) visible=@type=="Maskit" && (@expert || @version < 450) endparam complex param taj caption = "Trace a" default = (1.8,-0.028) visible = @type == "Jorgensen" && (@expert || @version < 450) endparam complex param tbj caption = "Trace b" default = (2,0) visible = @type == "Jorgensen" && (@expert || @version < 450) endparam complex param ta caption = "Trace a" default = (1.64213876,-0.76658841) visible = (@type == "Grandma's Special" || @type == "Grandma's Special #2" \ ) && (@expert || @version < 450) endparam complex param tb caption = "Trace b" default = (2,0) visible = (@type == "Grandma's Special" || @type == "Grandma's Special #2" \ ) && (@expert || @version < 450) endparam complex param tabab caption = "Trace abAB" default = (-2,0) visible = @type == "Grandma's Special #2" && (@expert || @version < 450) endparam float param radinit caption = "Generator rad" default = -1.0 visible = (@type == "Grandma's Special" || @type == "Grandma's Special #2" \ ||@type == "Jorgensen") && (@expert || @version < 450) endparam param plus caption = "k value" default = 0 enum = "Smaller root" "Larger root" visible = @type == "Kissing Schottky" || @typeb == "Kissing Schottky" && \ !@expert endparam float param su caption = "Param for a-A circles" default = 1.143 min = 1.0 visible = @type == "Kissing Schottky" || @typeb == "Kissing Schottky" && \ !@expert endparam float param sx caption = "Param for b-B circles" default = 1.958 min = 1.0 visible = @type == "Kissing Schottky" || @typeb == "Kissing Schottky" && \ !@expert endparam heading caption = "Riemann Parameters" visible = @rmap endheading bool param rmap caption = "Map to Riemann" default = false endparam float param sphrad caption = "Sphere radius" default = 1.5 visible = @rmap endparam float param zoom caption = "Magnification" default = 2.0 visible = @rmap endparam float param xangle caption = "X axis" default = 0.0 visible = @rmap endparam float param yangle caption = "Y axis" default = 180.0 visible = @rmap endparam float param xlate caption = "X translate" default = 0.0 visible = @rmap endparam float param ylate caption = "Y translate" default = 0.0 visible = @rmap endparam bool param bcolor caption = "behind color = 0" default = false visible = @rmap endparam heading caption = "Coloring" endheading float param scale caption = "color scale adj" default = 1.0 visible = !@limit endparam int param ncolor caption = "# of colors" default = 8 min = 1 visible = @method != "special" && !@limit endparam float param rwidth caption = "ring width" default = 0.0 min = 0 visible = !@limit endparam int param rcolor caption = "ring color" default = 1 min = 1 max = 8 visible = !@limit endparam $ifdef VER40 heading text = "If the 'ring width' (above) is greater than the circle diameter, the \ ring will fill a square block that has sides the size of the circle \ diameter, which can lead to some interesting effects. 'Block border' \ puts a border around the square block which will zoom correctly as the \ image is zoomed" endheading $endif float param bborder caption = "Block border" default = 0 min = 0 endparam float param brcolor caption = "Border color" default = -0.5 visible = @bborder != 0 endparam param clip caption = "Clip to formula" default = false visible = !@limit endparam param method caption = "color method" enum = "level" "size" "number" "position" "special" default = 4 endparam param oldcolor caption = "old coloring method" default = false visible = @version >= 450 endparam param adj caption = "color methd adj" default = 1.0 visible = !@limit endparam param xfer caption = "Height Transfer" default = 0 enum = "linear" "log" "sqrt" "cuberoot" "exp" "sqr" "cube" "sin" "cos" "tan" hint = "This function will be applied to the height value \ before a slope is calculated." visible = !@limit endparam param zscale caption = "Height Pre-Scale" default = 0.4 hint = "Specifies the ratio between height and distance. Higher \ values will exaggerate differences between high and low. \ In general, you will want to use smaller numbers here." visible = !@limit endparam param zscale2 caption = "Height Post-Scale" default = 0.025 hint = "Specifies the ratio between height and distance; like \ Height Pre-Scale, except that this value is applied after \ the transfer function." visible = !@limit endparam param @angle caption = "Light Rotation" default = 135 hint = "Gives the rotation of the light source, in degrees." visible = !@limit endparam param @elevation caption = "Light Elevation" default = 60 hint = "Gives the elevation of the light source, in degrees." visible = !@limit endparam float param @ambient caption = "Ambient Light" default = -1 min = -1.0 max = 1.0 hint = "Specifies the level of ambient light. Use -1.0 to \ color all surfaces." visible = !@limit endparam param fill caption = "Fill Type" enum = "quartic 1" "quartic 2" "quartic 3" "quartic 4" default = 0 visible = !@limit endparam float param pwr caption = "Power" default = 2.0 visible = !@limit endparam float param alpha caption = "alpha" default = 1.0 visible = !@limit endparam float param beta caption = "beta" default = 1.0 visible = !@limit endparam float param gamma caption = "gamma" default = 1.0 visible = !@limit endparam heading caption = "Lattice Textures" visible = !@limit endheading param texture caption = "Texture" default = 0 enum = "Lattice" "Quilt" "Circles & Squares" "Triangles" \ "X's & O's" "Dimples" "Arrows" "Basketweave" "Balls" \ "Net" visible = !@limit endparam param gridx caption = "Texture X distance" default = 1.0 visible = !@limit endparam param gridy caption = "Texture Y distance" default = 1.0 visible = !@limit endparam param dx caption = "Texture X randomizer" default = 0.0 visible = !@limit endparam param dy caption = "Texture Y randomizer" default = 0.0 visible = !@limit endparam param theight caption = "Texture Height" default = 1.0 visible = !@limit endparam param weight caption = "Texture Weight" default = 0.0 min = 0.0 max = 1.0 visible = !@limit endparam param blend caption = "Texture Blend" default = 0.0 visible = !@limit endparam param toffset caption = "Texturizer Offset" default = 1.0 visible = !@limit endparam param smooth caption = "Texture Smoothing" default = false hint = "Apply 3D smoothing to the texture" visible = !@limit endparam heading caption = "fBm Textures" visible = !@limit endheading param transfer caption = "fBm Transfer Function" default = 0 enum = "linear" "product" "quotient" "log" "exp" \ "sqr" "sqrt" "sin" "asin" "tan" "atan" visible = !@limit endparam param fbm caption = "fBm Texture Weight" default = 0.0 visible = !@limit endparam param fbmf caption = "fBm Final Weight" default = 0.5 visible = !@limit endparam param noffset caption = "fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = !@limit endparam param nscale caption = "fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = !@limit endparam param gnoffset caption = "global fBm Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = !@limit endparam float param gfbmf caption = "global fBm weight" default = 0.1 visible = !@limit endparam float param gnscale caption = "global fBm Scale" default = 0.0 hint = "This is the overall scale of the noise." visible = !@limit endparam float param gfreq caption = "global fBm freq" default = 1.0 visible = !@limit endparam int param giter caption = "global fBm iter" default = 7 min = 1 visible = !@limit endparam heading caption = "General Textures" visible = !@limit endheading param toffsetII caption = "Texture II offset" default = (-1,-1) hint = "Changes the texture pattern." visible = !@limit endparam param tweight caption = "Texture II weight" default = 0.0 visible = !@limit endparam param ts caption = "Texture II scale" default = 3.0 visible = !@limit endparam param tc caption = "Texture II modifier" default = 5.0 visible = !@limit endparam param tpwr caption = "Texture II power" default = 1.0 visible = !@limit endparam param pmix caption = "Pixel Strange Mix" default = 0.0 visible = !@limit endparam func fn3 caption = "Texture II Adjustment" default = ident() visible = !@limit endfunc func fn1 caption = "Texture II Function 1" default = sqr() visible = !@limit endfunc func fn2 caption = "Texture II Function 2" default = acos() visible = !@limit endfunc } line_art {; April 15, 2007, Ron Barnett ; ; Line plots of 3D surfaces ; global: int i = 0 int j = 0 int k = 0 int l = 0 float u = 0 float v = 0 float ru = 0 float rv = 0 float sr = 0 float kr = 0 float x[600000] float y[600000] float z[600000] bool use[600000] while i < 600000 use[i] = true i = i + 1 endwhile i = 0 int xlimit = 0 int ylimit = 0 float umin = 0 float vmin = 0 float ustep = 0 float vstep = 0 int outlimit = 0 int inlimit = 0 float zmin = 1e10 float zmax = -1e10 if @function == "Mandala" xlimit = trunc((@m0xmax-@m0xmin)/@m0xstep) ylimit = trunc((@m0ymax-@m0ymin)/@m0ystep) umin = @m0xmin vmin = @m0ymin ustep = @m0xstep vstep = @m0ystep elseif @function == "Wiwianka" xlimit = trunc((@m1xmax-@m1xmin)/@m1xstep) ylimit = trunc((@m1ymax-@m1ymin)/@m1ystep) umin = @m1xmin vmin = @m1ymin ustep = @m1xstep vstep = @m1ystep elseif @function == "Banchoff Klein Bottle" xlimit = trunc((@m2xmax-@m2xmin)/@m2xstep) ylimit = trunc((@m2ymax-@m2ymin)/@m2ystep) umin = @m2xmin vmin = @m2ymin ustep = @m2xstep vstep = @m2ystep elseif @function == "Seashell" xlimit = trunc((@m3xmax-@m3xmin)/@m3xstep) ylimit = trunc((@m3ymax-@m3ymin)/@m3ystep) umin = @m3xmin vmin = @m3ymin ustep = @m3xstep vstep = @m3ystep elseif @function == "Mobius Band" xlimit = trunc((@m4xmax-@m4xmin)/@m4xstep) ylimit = trunc((@m4ymax-@m4ymin)/@m4ystep) umin = @m4xmin vmin = @m4ymin ustep = @m4xstep vstep = @m4ystep elseif @function == "Astroidal Ellipsoid" xlimit = trunc((@m5xmax-@m5xmin)/@m5xstep) ylimit = trunc((@m5ymax-@m5ymin)/@m5ystep) umin = @m5xmin vmin = @m5ymin ustep = @m5xstep vstep = @m5ystep elseif @function == "Bohemian Dome" xlimit = trunc((@m6xmax-@m6xmin)/@m6xstep) ylimit = trunc((@m6ymax-@m6ymin)/@m6ystep) umin = @m6xmin vmin = @m6ymin ustep = @m6xstep vstep = @m6ystep elseif @function == "Boy Surface" xlimit = trunc((@m7xmax-@m7xmin)/@m7xstep) ylimit = trunc((@m7ymax-@m7ymin)/@m7ystep) umin = @m7xmin vmin = @m7ymin ustep = @m7xstep vstep = @m7ystep elseif @function == "Dini's Surface" xlimit = trunc((@m8xmax-@m8xmin)/@m8xstep) ylimit = trunc((@m8ymax-@m8ymin)/@m8ystep) umin = @m8xmin vmin = @m8ymin ustep = @m8xstep vstep = @m8ystep elseif @function == "Enneper's Surface" xlimit = trunc((@m9xmax-@m9xmin)/@m9xstep) ylimit = trunc((@m9ymax-@m9ymin)/@m9ystep) umin = @m9xmin vmin = @m9ymin ustep = @m9xstep vstep = @m9ystep elseif @function == "Kuen's Surface" xlimit = trunc((@m10xmax-@m10xmin)/@m10xstep) ylimit = trunc((@m10ymax-@m10ymin)/@m10ystep) umin = @m10xmin vmin = @m10ymin ustep = @m10xstep vstep = @m10ystep elseif @function == "Swallowtail" xlimit = trunc((@m11xmax-@m11xmin)/@m11xstep) ylimit = trunc((@m11ymax-@m11ymin)/@m11ystep) umin = @m11xmin vmin = @m11ymin ustep = @m11xstep vstep = @m11ystep elseif @function == "Catalan's Surface" xlimit = trunc((@m12xmax-@m12xmin)/@m12xstep) ylimit = trunc((@m12ymax-@m12ymin)/@m12ystep) umin = @m12xmin vmin = @m12ymin ustep = @m12xstep vstep = @m12ystep elseif @function == "Hennenberg's Surface" xlimit = trunc((@m13xmax-@m13xmin)/@m13xstep) ylimit = trunc((@m13ymax-@m13ymin)/@m13ystep) umin = @m13xmin vmin = @m13ymin ustep = @m13xstep vstep = @m13ystep elseif @function == "Corkscrew" xlimit = trunc((@m14xmax-@m14xmin)/@m14xstep) ylimit = trunc((@m14ymax-@m14ymin)/@m14ystep) umin = @m14xmin vmin = @m14ymin ustep = @m14xstep vstep = @m14ystep elseif @function == "Hyperbolic Helicoid" xlimit = trunc((@m15xmax-@m15xmin)/@m15xstep) ylimit = trunc((@m15ymax-@m15ymin)/@m15ystep) umin = @m15xmin vmin = @m15ymin ustep = @m15xstep vstep = @m15ystep elseif @function == "Sine Surface" xlimit = trunc((@m16xmax-@m16xmin)/@m16xstep) ylimit = trunc((@m16ymax-@m16ymin)/@m16ystep) umin = @m16xmin vmin = @m16ymin ustep = @m16xstep vstep = @m16ystep elseif @function == "Klein Bottle" xlimit = trunc((@m20xmax-@m20xmin)/@m20xstep) ylimit = trunc((@m20ymax-@m20ymin)/@m20ystep) umin = @m20xmin vmin = @m20ymin ustep = @m20xstep vstep = @m20ystep elseif @function == "Triangular Trefoil" xlimit = trunc((@m21xmax-@m21xmin)/@m21xstep) ylimit = trunc((@m21ymax-@m21ymin)/@m21ystep) umin = @m21xmin vmin = @m21ymin ustep = @m21xstep vstep = @m21ystep elseif @function == "Bent Horns" xlimit = trunc((@m22xmax-@m22xmin)/@m22xstep) ylimit = trunc((@m22ymax-@m22ymin)/@m22ystep) umin = @m22xmin vmin = @m22ymin ustep = @m22xstep vstep = @m22ystep elseif @function == "Pisot Triaxial" xlimit = trunc((@m23xmax-@m23xmin)/@m23xstep) ylimit = trunc((@m23ymax-@m23ymin)/@m23ystep) umin = @m23xmin vmin = @m23ymin ustep = @m23xstep vstep = @m23ystep elseif @function == "Spherical Harmonics" xlimit = trunc((@m24xmax-@m24xmin)/@m24xstep) ylimit = trunc((@m24ymax-@m24ymin)/@m24ystep) umin = @m24xmin vmin = @m24ymin ustep = @m24xstep vstep = @m24ystep elseif @function == "Slippers Surface" xlimit = trunc((@m25xmax-@m25xmin)/@m25xstep) ylimit = trunc((@m25ymax-@m25ymin)/@m25ystep) umin = @m25xmin vmin = @m25ymin ustep = @m25xstep vstep = @m25ystep elseif @function == "SuperShape" xlimit = trunc((@m26xmax-@m26xmin)/@m26xstep) ylimit = trunc((@m26ymax-@m26ymin)/@m26ystep) umin = @m26xmin vmin = @m26ymin ustep = @m26xstep vstep = @m26ystep elseif @function == "Fano Planes" xlimit = trunc((@m27xmax-@m27xmin)/@m27xstep) ylimit = trunc((@m27ymax-@m27ymin)/@m27ystep) umin = @m27xmin vmin = @m27ymin ustep = @m27xstep vstep = @m27ystep elseif @function == "Twisted Fano" xlimit = trunc((@m28xmax-@m28xmin)/@m28xstep) ylimit = trunc((@m28ymax-@m28ymin)/@m28ystep) umin = @m28xmin vmin = @m28ymin ustep = @m28xstep vstep = @m28ystep elseif @function == "Cresent" xlimit = trunc((@m29xmax-@m29xmin)/@m29xstep) ylimit = trunc((@m29ymax-@m29ymin)/@m29ystep) umin = @m29xmin vmin = @m29ymin ustep = @m29xstep vstep = @m29ystep elseif @function == "Twisted Triaxial" xlimit = trunc((@m30xmax-@m30xmin)/@m30xstep) ylimit = trunc((@m30ymax-@m30ymin)/@m30ystep) umin = @m30xmin vmin = @m30ymin ustep = @m30xstep vstep = @m30ystep elseif @function == "Maeder's Owl" xlimit = trunc((@m31xmax-@m31xmin)/@m31xstep) ylimit = trunc((@m31ymax-@m31ymin)/@m31ystep) umin = @m31xmin vmin = @m31ymin ustep = @m31xstep vstep = @m31ystep elseif @function == "Stiletto Surface" xlimit = trunc((@m32xmax-@m32xmin)/@m32xstep) ylimit = trunc((@m32ymax-@m32ymin)/@m32ystep) umin = @m32xmin vmin = @m32ymin ustep = @m32xstep vstep = @m32ystep elseif @function == "Verrill Surface" xlimit = trunc((@m33xmax-@m33xmin)/@m33xstep) ylimit = trunc((@m33ymax-@m33ymin)/@m33ystep) umin = @m33xmin vmin = @m33ymin ustep = @m33xstep vstep = @m33ystep elseif @function == "Twisted Heart" xlimit = trunc((@m34xmax-@m34xmin)/@m34xstep) ylimit = trunc((@m34ymax-@m34ymin)/@m34ystep) umin = @m34xmin vmin = @m34ymin ustep = @m34xstep vstep = @m34ystep elseif @function == "Figure 8 Torus" xlimit = trunc((@m35xmax-@m35xmin)/@m35xstep) ylimit = trunc((@m35ymax-@m35ymin)/@m35ystep) umin = @m35xmin vmin = @m35ymin ustep = @m35xstep vstep = @m35ystep elseif @function == "Triaxial Teardrop" xlimit = trunc((@m36xmax-@m36xmin)/@m36xstep) ylimit = trunc((@m36ymax-@m36ymin)/@m36ystep) umin = @m36xmin vmin = @m36ymin ustep = @m36xstep vstep = @m36ystep elseif @function == "Lemniscape" xlimit = trunc((@m37xmax-@m37xmin)/@m37xstep) ylimit = trunc((@m37ymax-@m37ymin)/@m37ystep) umin = @m37xmin vmin = @m37ymin ustep = @m37xstep vstep = @m37ystep elseif @function == "Tractrix" xlimit = trunc((@m38xmax-@m38xmin)/@m38xstep) ylimit = trunc((@m38ymax-@m38ymin)/@m38ystep) umin = @m38xmin vmin = @m38ymin ustep = @m38xstep vstep = @m38ystep elseif @function == "Triaxial Tritorus" xlimit = trunc((@m39xmax-@m39xmin)/@m39xstep) ylimit = trunc((@m39ymax-@m39ymin)/@m39ystep) umin = @m39xmin vmin = @m39ymin ustep = @m39xstep vstep = @m39ystep elseif @function == "Saddle Torus" xlimit = trunc((@m40xmax-@m40xmin)/@m40xstep) ylimit = trunc((@m40ymax-@m40ymin)/@m40ystep) umin = @m40xmin vmin = @m40ymin ustep = @m40xstep vstep = @m40ystep elseif @function == "Limpet Torus" xlimit = trunc((@m41xmax-@m41xmin)/@m41xstep) ylimit = trunc((@m41ymax-@m41ymin)/@m41ystep) umin = @m41xmin vmin = @m41ymin ustep = @m41xstep vstep = @m41ystep elseif @function == "Bow Tie" xlimit = trunc((@m42xmax-@m42xmin)/@m42xstep) ylimit = trunc((@m42ymax-@m42ymin)/@m42ystep) umin = @m42xmin vmin = @m42ymin ustep = @m42xstep vstep = @m42ystep elseif @function == "Cross Cap" xlimit = trunc((@m43xmax-@m43xmin)/@m43xstep) ylimit = trunc((@m43ymax-@m43ymin)/@m43ystep) umin = @m43xmin vmin = @m43ymin ustep = @m43xstep vstep = @m43ystep elseif @function == "Whitney Umbrella" xlimit = trunc((@m44xmax-@m44xmin)/@m44xstep) ylimit = trunc((@m44ymax-@m44ymin)/@m44ystep) umin = @m44xmin vmin = @m44ymin ustep = @m44xstep vstep = @m44ystep elseif @function == "Triaxial Hexatorus" xlimit = trunc((@m45xmax-@m45xmin)/@m45xstep) ylimit = trunc((@m45ymax-@m45ymin)/@m45ystep) umin = @m45xmin vmin = @m45ymin ustep = @m45xstep vstep = @m45ystep elseif @function == "Fish Surface" xlimit = trunc((@m46xmax-@m46xmin)/@m46xstep) ylimit = trunc((@m46ymax-@m46ymin)/@m46ystep) umin = @m46xmin vmin = @m46ymin ustep = @m46xstep vstep = @m46ystep elseif @function == "Twisted Pipe" xlimit = trunc((@m47xmax-@m47xmin)/@m47xstep) ylimit = trunc((@m47ymax-@m47ymin)/@m47ystep) umin = @m47xmin vmin = @m47ymin ustep = @m47xstep vstep = @m47ystep elseif @function == "Steiner Surface" xlimit = trunc((@m48xmax-@m48xmin)/@m48xstep) ylimit = trunc((@m48ymax-@m48ymin)/@m48ystep) umin = @m48xmin vmin = @m48ymin ustep = @m48xstep vstep = @m48ystep elseif @function == "Pseudocatenoid" xlimit = trunc((@m49xmax-@m49xmin)/@m49xstep) ylimit = trunc((@m49ymax-@m49ymin)/@m49ystep) umin = @m49xmin vmin = @m49ymin ustep = @m49xstep vstep = @m49ystep elseif @function == "Cross Hole" xlimit = trunc((@m50xmax-@m50xmin)/@m50xstep) ylimit = trunc((@m50ymax-@m50ymin)/@m50ystep) umin = @m50xmin vmin = @m50ymin ustep = @m50xstep vstep = @m50ystep elseif @function == "Elliptic Torus" xlimit = trunc((@m51xmax-@m51xmin)/@m51xstep) ylimit = trunc((@m51ymax-@m51ymin)/@m51ystep) umin = @m51xmin vmin = @m51ymin ustep = @m51xstep vstep = @m51ystep elseif @function == "Ghost Plane" xlimit = trunc((@m52xmax-@m52xmin)/@m52xstep) ylimit = trunc((@m52ymax-@m52ymin)/@m52ystep) umin = @m52xmin vmin = @m52ymin ustep = @m52xstep vstep = @m52ystep elseif @function == "Folium" xlimit = trunc((@m53xmax-@m53xmin)/@m53xstep) ylimit = trunc((@m53ymax-@m53ymin)/@m53ystep) umin = @m53xmin vmin = @m53ymin ustep = @m53xstep vstep = @m53ystep endif float scale = 0 if @function == "Mandala" scale = @m0fscale elseif @function == "Wiwianka" scale = @m1fscale elseif @function == "Banchoff Klein Bottle" scale = @m2fscale elseif @function == "Seashell" scale = @m3fscale elseif @function == "Mobius Band" scale = @m4fscale elseif @function == "Astroidal Ellipsoid" scale = @m5fscale elseif @function == "Bohemian Dome" scale = @m6fscale elseif @function == "Boy Surface" scale = @m7fscale elseif @function == "Dini's Surface" scale = @m8fscale elseif @function == "Enneper's Surface" scale = @m9fscale elseif @function == "Kuen's Surface" scale = @m10fscale elseif @function == "Swallowtail" scale = @m11fscale elseif @function == "Catalan's Surface" scale = @m12fscale elseif @function == "Hennenberg's Surface" scale = @m13fscale elseif @function == "Corkscrew" scale = @m14fscale elseif @function == "Hyperbolic Helicoid" scale = @m15fscale elseif @function == "Sine Surface" scale = @m16fscale elseif @function == "Klein Bottle" scale = @m20fscale elseif @function == "Triangular Trefoil" scale = @m21fscale elseif @function == "Bent Horns" scale = @m22fscale elseif @function == "Pisot Triaxial" scale = @m23fscale elseif @function == "Spherical Harmonics" scale = @m24fscale elseif @function == "Slippers Surface" scale = @m25fscale elseif @function == "SuperShape" scale = @m26fscale elseif @function == "Fano Planes" scale = @m27fscale elseif @function == "Twisted Fano" scale = @m28fscale elseif @function == "Cresent" scale = @m29fscale elseif @function == "Twisted Triaxial" scale = @m30fscale elseif @function == "Maeder's Owl" scale = @m31fscale elseif @function == "Stiletto Surface" scale = @m32fscale elseif @function == "Verrill Surface" scale = @m33fscale elseif @function == "Twisted Heart" scale = @m34fscale elseif @function == "Figure 8 Torus" scale = @m35fscale elseif @function == "Triaxial Teardrop" scale = @m36fscale elseif @function == "Lemniscape" scale = @m37fscale elseif @function == "Tractrix" scale = @m38fscale elseif @function == "Triaxial Tritorus" scale = @m39fscale elseif @function == "Saddle Torus" scale = @m40fscale elseif @function == "Limpet Torus" scale = @m41fscale elseif @function == "Bow Tie" scale = @m42fscale elseif @function == "Cross Cap" scale = @m43fscale elseif @function == "Whitney Umbrella" scale = @m44fscale elseif @function == "Triaxial Hexatorus" scale = @m45fscale elseif @function == "Fish Surface" scale = @m46fscale elseif @function == "Twisted Pipe" scale = @m47fscale elseif @function == "Steiner Surface" scale = @m48fscale elseif @function == "Pseudocatenoid" scale = @m49fscale elseif @function == "Cross Hole" scale = @m50fscale elseif @function == "Elliptic Torus" scale = @m51fscale elseif @function == "Ghost Plane" scale = @m52fscale elseif @function == "Folium" scale = @m53fscale endif complex xrot = (0,1)^(@xang/90) complex yrot = (0,1)^(@yang/90) complex temp = 0 ; ; Generate the points for the lines for a full mesh grid ; while l < 2 if l == 0 outlimit = xlimit inlimit = ylimit else outlimit = ylimit inlimit = xlimit endif while i <= outlimit if l == 0 u = umin + i*ustep else v = vmin + i*vstep endif while j <= inlimit if l == 0 v = vmin + j*vstep else u = umin + j*ustep endif ; ; No line between loops ; if j == inlimit use[k] = false endif if @function == "Mandala" x[k] = u*cos(v)*scale y[k] = u*sin(v)*scale z[k] = v*cos(u)*scale elseif @function == "Wiwianka" x[k] = (1+exp(-100*u^2))*sin(#pi*u)*sin(#pi*v)*scale y[k] = (1+exp(-100*u^2))*sin(#pi*u)*cos(#pi*v)*scale z[k] = (1+exp(-100*u^2))*cos(#pi*u)*scale elseif @function == "Banchoff Klein Bottle" x[k] = (cos(u/@banc)*(cos(u/@banb)*(@bana+cos(v))+ \ (sin(u/@banb)*sin(v)*cos(v))))*scale y[k] = (sin(u/@banc)*(cos(u/@banb)*(@bana+cos(v))+ \ (sin(u/@banb)*sin(v)*cos(v))))*scale z[k] = (-sin(u/@banb)*(@bana+cos(v))+cos(u/@banb)*sin(v)*cos(v))*scale elseif @function == "Seashell" x[k] = (@seaa*(1-v/(2*pi))*cos(@sean*v)*(1+cos(u))+ \ @seac*cos(@sean*v))*scale y[k] = (@seaa*(1-v/(2*pi))*sin(@sean*v)*(1+cos(u))+ \ @seac*sin(@sean*v))*scale z[k] = (@seab*v/(2*pi)+@seaa*(1-v/(2*pi))*sin(u))*scale elseif @function == "Mobius Band" x[k] = (cos(u)+v*cos(u/2)*cos(u))*scale y[k] = (sin(u)+v*cos(u/2)*sin(u))*scale z[k] = (v*sin(u/2))*scale elseif @function == "Astroidal Ellipsoid" x[k] = (@aa*cos(u)*cos(v))^3*scale y[k] = (@ab*sin(u)*cos(v))^3*scale z[k] = (@ac*sin(v))^3*scale elseif @function == "Bohemian Dome" x[k] = (@ba*cos(u))*scale y[k] = (@bb*cos(v) + @ba*sin(u))*scale z[k] = (@bc*sin(v))*scale elseif @function == "Boy Surface" x[k] = ((2/3)*(cos(u)*cos(2*v)+sqrt(2)*sin(u)*cos(v))*cos(u) \ /(sqrt(2) - sin(2*u)*sin(3*v)))*scale y[k] = ((2/3)*(cos(u)*sin(2*v)-sqrt(2)*sin(u)*sin(v))*cos(u) \ /(sqrt(2)-sin(2*u)*sin(3*v)))*scale z[k] = (sqrt(2)*cos(u)^2 / (sqrt(2) - sin(2*u)*sin(2*v)))*scale elseif @function == "Dini's Surface" x[k] = (@da*cos(u)*sin(v))*scale y[k] = (@da*sin(u)*sin(v))*scale z[k] = (@da*(cos(v)+log(tan((v/2))))+@db*u)*scale elseif @function == "Enneper's Surface" x[k] = (u-(u*u*u/3)+u*v*v)*scale y[k] = (v-(v*v*v/3)+u*u*v)*scale z[k] = (u*u-v*v)*scale elseif @function == "Kuen's Surface" x[k] = (2*(cos(u)+u*sin(u))*sin(v)/(1+u*u*sin(v)*sin(v)))*scale y[k] = (2*(sin(u)-u*cos(u))*sin(v)/(1+u*u*sin(v)*sin(v)))*scale z[k] = (log(tan(v/2))+2*cos(v)/(1+u*u*sin(v)*sin(v)))*scale elseif @function == "Swallowtail" x[k] = (u*v^2+3*v^4)*scale y[k] = (-2*u*v-4*v^3)*scale z[k] = (u)*scale elseif @function == "Catalan's Surface" x[k] = (u-sin(u)*cosh(v))*scale y[k] = (1-cos(u)*cosh(v))*scale z[k] = (4*sin(u/2)*sinh(v/2))*scale elseif @function == "Hennenberg's Surface" x[k] = (2*sinh(u)*cos(v)-2/3*sinh(3*u)*cos(3*v))*scale y[k] = (2*sinh(u)*sin(v)+2/3*sinh(3*u)*sin(3*v))*scale z[k] = (2*cosh(2*u)*cos(2*v))*scale elseif @function == "Corkscrew" x[k] = (@ta*cos(u)*cos(v))*scale y[k] = (@ta*sin(u)*cos(v))*scale z[k] = (@ta*sin(v)+@tb*u)*scale elseif @function == "Hyperbolic Helicoid" x[k] = (sinh(v)*cos(@tau*u)/(1+cosh(u)*cosh(v)))*scale y[k] = (sinh(v)*sin(@tau*u)/(1+cosh(u)*cosh(v)))*scale z[k] = (cosh(v)*sinh(u)/(1+cosh(u)*cosh(v)))*scale elseif @function == "Sine Surface" x[k] = (@sa*sin(u))*scale y[k] = (@sa*sin(v))*scale z[k] = (@sa*sin(u+v))*scale elseif @function == "Klein Bottle" kr = 4*(1-cos(u)/2) if u < #pi x[k] = (6*cos(u)*(1+sin(u))+kr*cos(u)*cos(v))*scale y[k] = (16*sin(u)+kr*sin(u)*cos(v))*scale else x[k] = (6*cos(u)*(1+sin(u))+kr*cos(v+#pi))*scale y[k] = (16*sin(u))*scale endif z[k] = (kr*sin(v))*scale elseif @function == "Triangular Trefoil" x[k] = (2*sin(3*u)/(2+cos(v)))*scale y[k] = (2*(sin(u)+2*sin(2*u))/(2+cos(v+2*#pi/3)))*scale z[k] = ((cos(u)-2*cos(2*u))*(2+cos(v))*(2+cos(v+2*#pi/3))/4)*scale elseif @function == "Bent Horns" x[k] = ((2+cos(u))*(v/3-sin(v)))*scale y[k] = ((2+cos(u-2*#pi/3))*(cos(v)-1))*scale z[k] = ((2+cos(u+2*#pi/3))*(cos(v)-1))*scale elseif @function == "Pisot Triaxial" x[k] = (0.655866*cos(1.03002+u)*(2+cos(v)))*scale y[k] = (0.754878*cos(1.40772-u)*(2+0.868837*cos(2.43773+v)))*scale z[k] = (0.868837*cos(2.43773+u)*(2+0.495098*cos(0.377696-v)))*scale elseif @function == "Spherical Harmonics" sr = sin(@m1*u)^@m2+cos(@m3*u)^@m4+sin(@m5*v)^@m6+cos(@m7*v)^@m8 x[k] = (sr*sin(u)*cos(v))*scale y[k] = (sr*cos(u))*scale z[k] = (sr*sin(u)*sin(v))*scale elseif @function == "Slippers Surface" x[k] = ((2+cos(u)*cos(v)^3*sin(v)))*scale-6 y[k] = ((2+cos(u+2*#pi/3))*cos(2*#pi/3+v)^2*sin(2*#pi/3+v)^2)*scale-1 z[k] = (-(2+cos(u-2*#pi/3))*cos(2*#pi/3-v)^2*sin(2*#pi/3-v)^3)*scale elseif @function == "SuperShape" ru = ((1/@ssa*cos(@ssm*u/4))^@ssn2+(1/@ssb*sin(@ssm*u/4))^@ssn3)^(-1/@ssn1) rv = ((1/@ssa*cos(@ssm*v/4))^@ssn2+(1/@ssb*sin(@ssm*v/4))^@ssn3)^(-1/@ssn1) x[k] = (ru*cos(u)*rv*cos(v))*scale y[k] = (ru*sin(u)*rv*cos(v))*scale z[k] = (rv*sin(v))*scale elseif @function == "Fano Planes" x[k] = (cos(2*#pi*(u-v/3))*cos(2*#pi*(-u-v/3))*cos(2*#pi*(u-sqrt(3))))*scale y[k] = (cos(2*#pi*(u-v/3+2/3))*cos(2*#pi*(-u-v/3+2/3))*cos(2*#pi*(-u-v+1)))*scale z[k] = (cos(2*#pi*(u-v/3-2/3))*cos(2*#pi*(-u-v/3-2/3))*cos(2*#pi*(-u+v+1)))*scale elseif @function == "Twisted Fano" x[k] = (cos(2*#pi*(u-v/3))*cos(2*#pi*(-u-v/3))*cos(2*#pi*v)*cos(2*#pi*u))*scale y[k] = (cos(2*#pi*(u-v/3)+2*#pi/3)*cos(2*#pi*(-u-v/3)+2*#pi/3)*cos(2*#pi*(-u-v)+2*#pi/3)*cos(2*#pi*(u-1)))*scale z[k] = (cos(2*#pi*(u-v/3)-2*#pi/3)*cos(2*#pi*(-u-v/3)-2*#pi/3)*cos(2*#pi*(-u+v)+2*#pi/3)*cos(2*#pi*(u-2)))*scale elseif @function == "Cresent" x[k] = ((2+sin(2*#pi*u)*sin(2*#pi*v))*sin(3*#pi*v))*scale y[k] = ((2+sin(2*#pi*u)*sin(2*#pi*v))*cos(3*#pi*v))*scale z[k] = (cos(2*#pi*u)*sin(2*#pi*v)+4*v-2)*scale elseif @function == "Twisted Triaxial" x[k] = ((1-((u*u+v*v)/2)^0.5/#pi)*cos(u)*cos(v)+((u*u+v*v)/2)^0.5/#pi*sin(u)*sin(v))*scale y[k] = ((1-((u*u+v*v)/2)^0.5/#pi)*cos(u+2*#pi/3)*cos(v+2*#pi/3)+((u*u+v*v)/2)^0.5/#pi*sin(u+2*#pi/3)*sin(v+2*#pi/3))*scale z[k] = ((1-((u*u+v*v)/2)^0.5/#pi)*cos(u+4*#pi/3)*cos(v+4*#pi/3)+((u*u+v*v)/2)^0.5/#pi*sin(u+4*#pi/3)*sin(v+4*#pi/3))*scale elseif @function == "Maeder's Owl" x[k] = (v*cos(u)-0.5*v^2*cos(2*u))*scale y[k] = (-v*sin(u)-0.5*v^2*sin(2*u))*scale z[k] = (4*v^1.5*cos(3*u/2)/3)*scale elseif @function == "Stiletto Surface" x[k] = ((2+cos(u))*cos(v)^3*sin(v))*scale y[k] = ((2+cos(u+2*#pi/3))*cos(v+2*#pi/3)^2*sin(v+2*#pi/3)^2)*scale z[k] = (-(2+cos(u-2*#pi/3))*cos(v+2*#pi/3)^2*sin(v+2*#pi/3)^2)*scale elseif @function == "Verrill Surface" x[k] = (-2*u*cos(v)+2*cos(v)/u-2*u^3*cos(3*v)/3)*scale y[k] = (6*u*sin(v)-2*sin(v)/u-2*u^3*sin(3*v)/3)*scale z[k] = (4*log(u))*scale elseif @function == "Twisted Heart" x[k] = ((abs(v)-abs(u) - abs(tanh(u/sqrt(2))*sqrt(2))+abs(tanh(v/sqrt(2))*sqrt(2)))*sin(v))*scale y[k] = ((abs(v)+abs(u) - abs(tanh(u/sqrt(2))*sqrt(2))-abs(tanh(v/sqrt(2))*sqrt(2)))*cos(v))*scale z[k] = ((u^2+v^2)/(cosh(u/sqrt(2))+cosh(v/sqrt(2)))/sqrt(2))*scale elseif @function == "Figure 8 Torus" x[k] = (cos(u)*(@ftc+sin(v)*cos(u)-sin(2*v)*sin(u)/2))*scale y[k] = (sin(u)*(@ftc+sin(v)*cos(u)-sin(2*v)*sin(u)/2))*scale z[k] = (sin(u)*sin(v)+cos(u)*sin(2*v)/2)*scale elseif @function == "Triaxial Teardrop" x[k] = ((1-cos(u))*cos(u+2*#pi/3)*cos(v+2*#pi/3)/2)*scale y[k] = ((1-cos(u))*cos(u+2*#pi/3)*cos(v-2*#pi/3)/2)*scale z[k] = (cos(u-2*#pi/3))*scale elseif @function == "Lemniscape" x[k] = (cos(v)*sqrt(abs(sin(2*u)))*cos(u))*scale y[k] = (cos(v)*sqrt(abs(sin(2*u)))*sin(u))*scale z[k] = ((x[k]/scale)^2-(y[k]/scale)^2+ \ 2*x[k]/scale*y[k]/scale*tan(v)^2)*scale elseif @function == "Tractrix" x[k] = (cos(u)*(v-tanh(v)))*scale y[k] = (cos(u)/cosh(v))*scale z[k] = ((x[k]/scale)^2-(y[k]/scale)^2+ \ 2*x[k]/scale*y[k]/scale*tanh(u)^2)*scale elseif @function == "Triaxial Tritorus" x[k] = (sin(u)*(1+cos(v)))*scale y[k] = (sin(u+2*#pi/3)*(1+cos(v+2*#pi/3)))*scale z[k] = (sin(u+4*#pi/3)*(1+cos(v+4*#pi/3)))*scale elseif @function == "Saddle Torus" x[k] = ((2+cos(u))*cos(v))*scale y[k] = ((2+cos(u+2*#pi/3))*cos(v+2*#pi/3))*scale z[k] = ((2+(1-cos(u)^2-cos(u+2*#pi/3)^2)/abs(1-cos(u)^2-cos(u+2*#pi/3)^2)* \ sqrt(abs(1-cos(u)^2-cos(u+2*#pi/3)^2)))* \ (1-cos(v)^2-cos(v+2*#pi/3)^2)/abs(1-cos(v)^2-cos(v+2*#pi/3)^2)* \ sqrt(abs(1-cos(v)^2-cos(v+2*#pi/3)^2)))*scale elseif @function == "Limpet Torus" x[k] = (cos(u)/(sqrt(2)+sin(v)))*scale y[k] = (sin(u)/(sqrt(2)+sin(v)))*scale z[k] = (1/(sqrt(2)+cos(v)))*scale elseif @function == "Bow Tie" x[k] = (sin(u)/(sqrt(2)+sin(v)))*scale y[k] = (sin(u)/(sqrt(2)+cos(v)))*scale z[k] = (cos(u)/(sqrt(2)+1))*scale elseif @function == "Cross Cap" x[k] = (cos(u)*sin(2*v))*scale y[k] = (sin(u)*sin(2*v))*scale z[k] = (cos(v)*cos(v)-cos(u)*cos(u)*sin(v)*sin(v))*scale elseif @function == "Whitney Umbrella" x[k] = (0.5*sin(u)^2*cos(2*v))*scale y[k] = (0.5*sin(u)^2*sin(2*v))*scale z[k] = (sin(u)*sin(v))*scale elseif @function == "Triaxial Hexatorus" x[k] = (sin(u)/(sqrt(2)+cos(v)))*scale y[k] = (sin(u+2*#pi/3)/(sqrt(2)+cos(v+2*#pi/3)))*scale z[k] = (cos(u-2*#pi/3)/(sqrt(2)+cos(v-2*#pi/3)))*scale elseif @function == "Fish Surface" x[k] = ((cos(u)-cos(2*u))*cos(v)/4)*scale y[k] = ((sin(u)-sin(2*u))*sin(v)/4)*scale z[k] = (cos(u))*scale elseif @function == "Twisted Pipe" x[k] = (cos(v)*(2+cos(u))/sqrt(1+sin(v)^2))*scale y[k] = (sin(v+2*#pi/3)*(2+cos(u+2*#pi/3))/sqrt(1+sin(v)^2))*scale z[k] = (sin(v-2*#pi/3)*(2+cos(u-2*#pi/3))/sqrt(1+sin(v)^2))*scale elseif @function == "Steiner Surface" x[k] = cos(v)^2*sin(2*u)*scale y[k] = sin(u)*sin(2*v)*scale z[k] = cos(u)*sin(2*v)*scale elseif @function == "Pseudocatenoid" x[k] = cos(u)*(2+cos(v))*scale y[k] = sin(u)*(2+cos(v))*scale z[k] = ((x[k]/scale)^2-(y[k]/scale)^2+2*x[k]/scale*y[k]/scale* \ tan(v)^2)*scale elseif @function == "Cross Hole" kr = cos(u)^2*cos(v)^2 + sin(v)^2 x[k] = cos(u)/(kr*tan(v))*scale y[k] = cos(2*u)/kr*scale z[k] = sin(2*u)/kr*scale elseif @function == "Elliptic Torus" x[k] = (@ec+cos(v))*cos(u)*scale y[k] = (@ec+cos(v))*sin(u)*scale z[k] = (sin(v)+cos(v))*scale elseif @function == "Ghost Plane" x[k] = (cos(u)*sinh(v)/(cosh(v)-cos(u)))*scale y[k] = (cos(u)*sin(u)/(cosh(v)-cos(u)))*scale z[k] = sin(u)*scale elseif @function == "Folium" x[k] = (cos(u)*(2*v/#pi-tanh(v)))*scale y[k] = (cos(u+2*#pi/3)/cosh(v))*scale z[k] = (cos(u-2*#pi/3)/cosh(v))*scale endif ; ; Y axis rotation ; temp = x[k] + flip(z[k]) temp = temp*yrot x[k] = real(temp) z[k] = imag(temp) ; ; X axis rotation ; temp = y[k] + flip(z[k]) temp = temp*xrot y[k] = real(temp) z[k] = imag(temp) if z[k] < zmin zmin = z[k] endif if z[k] > zmax zmax = z[k] endif k = k + 1 j = j + 1 endwhile i = i + 1 j = 0 endwhile l = l + 1 i = 0 j = 0 endwhile init: complex t[600000] float r[600000] float rt = 0 float rtmax = -1e100 complex pt2 = 0 complex pt1 = 0 int ii = 0 float xx = 0 float yy = 0 loop: final: ; ; Determine if the pixel is on a line ; ii = 0 repeat if use[ii] pt1 = x[ii] + flip(y[ii]) pt2 = x[ii+1] + flip(y[ii+1]) t[ii]=(#z-pt1)/(pt2-pt1) xx=real(t[ii]) yy=imag(t[ii]) if(xx<0.0) r[ii]=sqr(xx)+sqr(yy) elseif(xx>1.0) r[ii]=sqr(xx-1.0)+sqr(yy) else r[ii]=sqr(yy) endif r[ii]=sqrt(r[ii])*cabs(pt2-pt1) if @colormode == "By side" t[ii] = (ii+1)/(k+1) elseif @colormode == "By z value" t[ii] = (z[ii]-zmin)/(zmax-zmin) endif else t[ii] = 0 r[ii] = 0 endif ii = ii + 1 until ii == k ii = 0 ; ; Load rt with color values ; repeat if r[ii] < @thick && r[ii] != 0 rt = cabs(t[ii]) endif if rt > rtmax rtmax = rt endif ii = ii + 1 until ii == k rt = rtmax ; ; Color the lines ; if rt != 0 if @colormode != "Solid" #index = rt else #index = @gradval endif else #solid = true endif default: title = "Line Art" heading caption = "Line Art" endheading $ifdef VER40 heading text = "Creates mesh grids for a variety of 3D surfaces." endheading $endif param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param function caption = "Function" default = 0 enum = "Astroidal Ellipsoid" "Banchoff Klein Bottle" "Bent Horns" \ "Bohemian Dome" "Bow Tie" "Boy Surface" "Catalan's Surface" \ "Corkscrew" "Cresent" "Cross Cap" "Cross Hole" "Dini's Surface" \ "Elliptic Torus" "Enneper's Surface" "Fano Planes" "Figure 8 Torus" \ "Fish Surface" "Folium" "Ghost Plane" "Hennenberg's Surface" \ "Hyperbolic Helicoid" "Klein Bottle" "Kuen's Surface" "Lemniscape" \ "Limpet Torus" "Maeder's Owl" "Mandala" "Mobius Band" \ "Pisot Triaxial" "Pseudocatenoid" "Saddle Torus" "Seashell" \ "Sine Surface" "Slippers Surface" "Spherical Harmonics" \ "Steiner Surface" "Stiletto Surface" "SuperShape" "Swallowtail" \ "Tractrix" "Triangular Trefoil" "Triaxial Hexatorus" \ "Triaxial Teardrop" "Triaxial Tritorus" "Twisted Fano" \ "Twisted Heart" "Twisted Pipe" "Twisted Triaxial" \ "Verrill Surface" "Whitney Umbrella" "Wiwianka" endparam float param xang caption = "X rotation" default = -20 endparam float param yang caption = "Y rotation" default = 30 endparam float param m0fscale caption = "Scale" default = 0.1 visible = @function == "Mandala" endparam float param m0xmax caption = "Max X" default = 16 visible = @function == "Mandala" endparam float param m0xmin caption = "Min X" default = -8 visible = @function == "Mandala" endparam float param m0ymax caption = "Max Y" default = 12.56 visible = @function == "Mandala" endparam float param m0ymin caption = "Min Y" default = 0 visible = @function == "Mandala" endparam float param m0xstep caption = "X increment" default = 0.2 visible = @function == "Mandala" endparam float param m0ystep caption = "Y increment" default = 0.1 visible = @function == "Mandala" endparam float param m1fscale caption = "Scale" default = 1.5 visible = @function == "Wiwianka" endparam float param m1xmax caption = "Max X" default = 1.0 visible = @function == "Wiwianka" endparam float param m1xmin caption = "Min X" default = 0.0 visible = @function == "Wiwianka" endparam float param m1ymax caption = "Max Y" default = 2.0 visible = @function == "Wiwianka" endparam float param m1ymin caption = "Min Y" default = 0.0 visible = @function == "Wiwianka" endparam float param m1xstep caption = "X increment" default = 0.025 visible = @function == "Wiwianka" endparam float param m1ystep caption = "Y increment" default = 0.05 visible = @function == "Wiwianka" endparam float param m2fscale caption = "Scale" default = 0.75 visible = @function == "Banchoff Klein Bottle" endparam float param m2xmax caption = "Max X" default = 9.56 visible = @function == "Banchoff Klein Bottle" endparam float param m2xmin caption = "Min X" default = 0.0 visible = @function == "Banchoff Klein Bottle" endparam float param m2ymax caption = "Max Y" default = 6.28 visible = @function == "Banchoff Klein Bottle" endparam float param m2ymin caption = "Min Y" default = 0.0 visible = @function == "Banchoff Klein Bottle" endparam float param m2xstep caption = "X increment" default = 0.15 visible = @function == "Banchoff Klein Bottle" endparam float param m2ystep caption = "Y increment" default = 0.1 visible = @function == "Banchoff Klein Bottle" endparam float param bana caption = "Parameter a" default = 1.414213 visible = @function == "Banchoff Klein Bottle" endparam float param banb caption = "Parameter b" default = 2.0 visible = @function == "Banchoff Klein Bottle" endparam float param banc caption = "Parameter c" default = 1.0 visible = @function == "Banchoff Klein Bottle" endparam float param m3fscale caption = "Scale" default = 3.0 visible = @function == "Seashell" endparam float param m3xmax caption = "Max X" default = 6.28 visible = @function == "Seashell" endparam float param m3xmin caption = "Min X" default = 0.0 visible = @function == "Seashell" endparam float param m3ymax caption = "Max Y" default = 6.28 visible = @function == "Seashell" endparam float param m3ymin caption = "Min Y" default = 0.0 visible = @function == "Seashell" endparam float param m3xstep caption = "X increment" default = 0.1 visible = @function == "Seashell" endparam float param m3ystep caption = "Y increment" default = 0.1 visible = @function == "Seashell" endparam float param seaa caption = "param a" default = 0.2 visible = @function == "Seashell" endparam float param seab caption = "param b" default = 1.0 visible = @function == "Seashell" endparam float param seac caption = "param c" default = 0.1 visible = @function == "Seashell" endparam float param sean caption = "param n" default = 2.0 visible = @function == "Seashell" endparam float param m4fscale caption = "Scale" default = 1.5 visible = @function == "Mobius Band" endparam float param m4xmax caption = "Max X" default = 6.28 visible = @function == "Mobius Band" endparam float param m4xmin caption = "Min X" default = 0.0 visible = @function == "Mobius Band" endparam float param m4ymax caption = "Max Y" default = 0.3 visible = @function == "Mobius Band" endparam float param m4ymin caption = "Min Y" default = -0.3 visible = @function == "Mobius Band" endparam float param m4xstep caption = "X increment" default = 0.02 visible = @function == "Mobius Band" endparam float param m4ystep caption = "Y increment" default = 0.02 visible = @function == "Mobius Band" endparam float param m5fscale caption = "Scale" default = 1.8 visible = @function == "Astroidal Ellipsoid" endparam float param m5xmax caption = "Max X" default = 3.14 visible = @function == "Astroidal Ellipsoid" endparam float param m5xmin caption = "Min X" default = -3.14 visible = @function == "Astroidal Ellipsoid" endparam float param m5ymax caption = "Max Y" default = 3.14 visible = @function == "Astroidal Ellipsoid" endparam float param m5ymin caption = "Min Y" default = -3.14 visible = @function == "Astroidal Ellipsoid" endparam float param m5xstep caption = "X increment" default = 0.1 visible = @function == "Astroidal Ellipsoid" endparam float param m5ystep caption = "Y increment" default = 0.1 visible = @function == "Astroidal Ellipsoid" endparam float param aa caption = "param a" default = 1.0 visible = @function == "Astroidal Ellipsoid" endparam float param ab caption = "param b" default = 1.0 visible = @function == "Astroidal Ellipsoid" endparam float param ac caption = "param c" default = 1.0 visible = @function == "Astroidal Ellipsoid" endparam float param m6fscale caption = "Scale" default = 1.0 visible = @function == "Bohemian Dome" endparam float param m6xmax caption = "Max X" default = 6.28 visible = @function == "Bohemian Dome" endparam float param m6xmin caption = "Min X" default = 0.0 visible = @function == "Bohemian Dome" endparam float param m6ymax caption = "Max Y" default = 6.28 visible = @function == "Bohemian Dome" endparam float param m6ymin caption = "Min Y" default = 0.0 visible = @function == "Bohemian Dome" endparam float param m6xstep caption = "X increment" default = 0.1 visible = @function == "Bohemian Dome" endparam float param m6ystep caption = "Y increment" default = 0.1 visible = @function == "Bohemian Dome" endparam float param ba caption = "param a" default = 0.5 visible = @function == "Bohemian Dome" endparam float param bb caption = "param b" default = 1.5 visible = @function == "Bohemian Dome" endparam float param bc caption = "param c" default = 1.0 visible = @function == "Bohemian Dome" endparam float param m7fscale caption = "Scale" default = 1.0 visible = @function == "Boy Surface" endparam float param m7xmax caption = "Max X" default = 6.28 visible = @function == "Boy Surface" endparam float param m7xmin caption = "Min X" default = 0.0 visible = @function == "Boy Surface" endparam float param m7ymax caption = "Max Y" default = 6.28 visible = @function == "Boy Surface" endparam float param m7ymin caption = "Min Y" default = 0.0 visible = @function == "Boy Surface" endparam float param m7xstep caption = "X increment" default = 0.05 visible = @function == "Boy Surface" endparam float param m7ystep caption = "Y increment" default = 0.05 visible = @function == "Boy Surface" endparam float param m8fscale caption = "Scale" default = 1.0 visible = @function == "Dini's Surface" endparam float param m8xmax caption = "Max X" default = 12.56 visible = @function == "Dini's Surface" endparam float param m8xmin caption = "Min X" default = 0.0 visible = @function == "Dini's Surface" endparam float param m8ymax caption = "Max Y" default = 2.0 visible = @function == "Dini's Surface" endparam float param m8ymin caption = "Min Y" default = 0.001 visible = @function == "Dini's Surface" endparam float param m8xstep caption = "X increment" default = 0.3 visible = @function == "Dini's Surface" endparam float param m8ystep caption = "Y increment" default = 0.05 visible = @function == "Dini's Surface" endparam float param da caption = "param a" default = 1.0 visible = @function == "Dini's Surface" endparam float param db caption = "param b" default = 0.2 visible = @function == "Dini's Surface" endparam float param m9fscale caption = "Scale" default = 0.25 visible = @function == "Enneper's Surface" endparam float param m9xmax caption = "Max X" default = 2.0 visible = @function == "Enneper's Surface" endparam float param m9xmin caption = "Min X" default = -2.0 visible = @function == "Enneper's Surface" endparam float param m9ymax caption = "Max Y" default = 2.0 visible = @function == "Enneper's Surface" endparam float param m9ymin caption = "Min Y" default = -2.0 visible = @function == "Enneper's Surface" endparam float param m9xstep caption = "X increment" default = 0.05 visible = @function == "Enneper's Surface" endparam float param m9ystep caption = "Y increment" default = 0.05 visible = @function == "Enneper's Surface" endparam float param m10fscale caption = "Scale" default = 1.0 visible = @function == "Kuen's Surface" endparam float param m10xmax caption = "Max X" default = 4.0 visible = @function == "Kuen's Surface" endparam float param m10xmin caption = "Min X" default = -4.0 visible = @function == "Kuen's Surface" endparam float param m10ymax caption = "Max Y" default = 3.09 visible = @function == "Kuen's Surface" endparam float param m10ymin caption = "Min Y" default = 0.05 visible = @function == "Kuen's Surface" endparam float param m10xstep caption = "X increment" default = 0.1 visible = @function == "Kuen's Surface" endparam float param m10ystep caption = "Y increment" default = 0.04 visible = @function == "Kuen's Surface" endparam float param m11fscale caption = "Scale" default = 0.4 visible = @function == "Swallowtail" endparam float param m11xmax caption = "Max X" default = 2.0 visible = @function == "Swallowtail" endparam float param m11xmin caption = "Min X" default = -2.0 visible = @function == "Swallowtail" endparam float param m11ymax caption = "Max Y" default = 0.8 visible = @function == "Swallowtail" endparam float param m11ymin caption = "Min Y" default = -0.8 visible = @function == "Swallowtail" endparam float param m11xstep caption = "X increment" default = 0.125 visible = @function == "Swallowtail" endparam float param m11ystep caption = "Y increment" default = 0.05 visible = @function == "Swallowtail" endparam float param m12fscale caption = "Scale" default = 0.1 visible = @function == "Catalan's Surface" endparam float param m12xmax caption = "Max X" default = 6.28 visible = @function == "Catalan's Surface" endparam float param m12xmin caption = "Min X" default = -6.28 visible = @function == "Catalan's Surface" endparam float param m12ymax caption = "Max Y" default = 3.14 visible = @function == "Catalan's Surface" endparam float param m12ymin caption = "Min Y" default = -3.14 visible = @function == "Catalan's Surface" endparam float param m12xstep caption = "X increment" default = 0.15 visible = @function == "Catalan's Surface" endparam float param m12ystep caption = "Y increment" default = 0.075 visible = @function == "Catalan's Surface" endparam float param m13fscale caption = "Scale" default = 0.2 visible = @function == "Hennenberg's Surface" endparam float param m13xmax caption = "Max X" default = 1.0 visible = @function == "Hennenberg's Surface" endparam float param m13xmin caption = "Min X" default = -1.0 visible = @function == "Hennenberg's Surface" endparam float param m13ymax caption = "Max Y" default = 3.0 visible = @function == "Hennenberg's Surface" endparam float param m13ymin caption = "Min Y" default = -3.0 visible = @function == "Hennenberg's Surface" endparam float param m13xstep caption = "X increment" default = 0.02 visible = @function == "Hennenberg's Surface" endparam float param m13ystep caption = "Y increment" default = 0.06 visible = @function == "Hennenberg's Surface" endparam float param m14fscale caption = "Scale" default = 1.0 visible = @function == "Corkscrew" endparam float param m14xmax caption = "Max X" default = 3.14 visible = @function == "Corkscrew" endparam float param m14xmin caption = "Min X" default = -3.14 visible = @function == "Corkscrew" endparam float param m14ymax caption = "Max Y" default = 3.14 visible = @function == "Corkscrew" endparam float param m14ymin caption = "Min Y" default = -3.14 visible = @function == "Corkscrew" endparam float param m14xstep caption = "X increment" default = 0.1 visible = @function == "Corkscrew" endparam float param m14ystep caption = "Y increment" default = 0.1 visible = @function == "Corkscrew" endparam float param ta caption = "param a" default = 1.0 visible = @function == "Corkscrew" endparam float param tb caption = "param b" default = 0.5 visible = @function == "Corkscrew" endparam float param m15fscale caption = "Scale" default = 1.7 visible = @function == "Hyperbolic Helicoid" endparam float param m15xmax caption = "Max X" default = 6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15xmin caption = "Min X" default = -6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15ymax caption = "Max Y" default = 6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15ymin caption = "Min Y" default = -6.28 visible = @function == "Hyperbolic Helicoid" endparam float param m15xstep caption = "X increment" default = 0.05 visible = @function == "Hyperbolic Helicoid" endparam float param m15ystep caption = "Y increment" default = 0.2 visible = @function == "Hyperbolic Helicoid" endparam float param tau caption = "torsion" default = 6.0 visible = @function == "Hyperbolic Helicoid" endparam float param m16fscale caption = "Function scale" default = 1 visible = @function == "Sine Surface" endparam float param m16xmax caption = "Max X" default = 3.14 visible = @function == "Sine Surface" endparam float param m16xmin caption = "Min X" default = -3.14 visible = @function == "Sine Surface" endparam float param m16ymax caption = "Max Y" default = 3.14 visible = @function == "Sine Surface" endparam float param m16ymin caption = "Min Y" default = -3.14 visible = @function == "Sine Surface" endparam float param m16xstep caption = "X increment" default = 0.1 visible = @function == "Sine Surface" endparam float param m16ystep caption = "Y increment" default = 0.1 visible = @function == "Sine Surface" endparam float param sa caption = "parameter a" default = 1.0 visible = @function == "Sine Surface" endparam float param m20fscale caption = "Scale" default = 0.1 visible = @function == "Klein Bottle" endparam float param m20xmax caption = "Max X" default = 6.28 visible = @function == "Klein Bottle" endparam float param m20xmin caption = "Min X" default = 0 visible = @function == "Klein Bottle" endparam float param m20ymax caption = "Max Y" default = 6.28 visible = @function == "Klein Bottle" endparam float param m20ymin caption = "Min Y" default = 0 visible = @function == "Klein Bottle" endparam float param m20xstep caption = "X increment" default = 0.1 visible = @function == "Klein Bottle" endparam float param m20ystep caption = "Y increment" default = 0.1 visible = @function == "Klein Bottle" endparam float param m21fscale caption = "Scale" default = 0.4 visible = @function == "Triangular Trefoil" endparam float param m21xmax caption = "Max X" default = 3.14 visible = @function == "Triangular Trefoil" endparam float param m21xmin caption = "Min X" default = -3.14 visible = @function == "Triangular Trefoil" endparam float param m21ymax caption = "Max Y" default = 3.14 visible = @function == "Triangular Trefoil" endparam float param m21ymin caption = "Min Y" default = -3.14 visible = @function == "Triangular Trefoil" endparam float param m21xstep caption = "X increment" default = 0.1 visible = @function == "Triangular Trefoil" endparam float param m21ystep caption = "Y increment" default = 0.1 visible = @function == "Triangular Trefoil" endparam float param m22fscale caption = "Scale" default = 0.25 visible = @function == "Bent Horns" endparam float param m22xmax caption = "Max X" default = 3.14 visible = @function == "Bent Horns" endparam float param m22xmin caption = "Min X" default = -3.14 visible = @function == "Bent Horns" endparam float param m22ymax caption = "Max Y" default = 6.28 visible = @function == "Bent Horns" endparam float param m22ymin caption = "Min Y" default = -6.28 visible = @function == "Bent Horns" endparam float param m22xstep caption = "X increment" default = 0.1 visible = @function == "Bent Horns" endparam float param m22ystep caption = "Y increment" default = 0.2 visible = @function == "Bent Horns" endparam float param m23fscale caption = "Scale" default = 0.75 visible = @function == "Pisot Triaxial" endparam float param m23xmax caption = "Max X" default = 6.28 visible = @function == "Pisot Triaxial" endparam float param m23xmin caption = "Min X" default = 0 visible = @function == "Pisot Triaxial" endparam float param m23ymax caption = "Max Y" default = 6.28 visible = @function == "Pisot Triaxial" endparam float param m23ymin caption = "Min Y" default = 0 visible = @function == "Pisot Triaxial" endparam float param m23xstep caption = "X increment" default = 0.1 visible = @function == "Pisot Triaxial" endparam float param m23ystep caption = "Y increment" default = 0.1 visible = @function == "Pisot Triaxial" endparam float param m24fscale caption = "Scale" default = 0.75 visible = @function == "Spherical Harmonics" endparam float param m24xmax caption = "Max X" default = 3.14 visible = @function == "Spherical Harmonics" endparam float param m24xmin caption = "Min X" default = 0 visible = @function == "Spherical Harmonics" endparam float param m24ymax caption = "Max Y" default = 6.28 visible = @function == "Spherical Harmonics" endparam float param m24ymin caption = "Min Y" default = 0 visible = @function == "Spherical Harmonics" endparam float param m24xstep caption = "X increment" default = 0.05 visible = @function == "Spherical Harmonics" endparam float param m24ystep caption = "Y increment" default = 0.1 visible = @function == "Spherical Harmonics" endparam int param m1 caption = "Harmonic #1" default = 2 visible = @function == "Spherical Harmonics" endparam int param m2 caption = "Harmonic #2" default = 3 visible = @function == "Spherical Harmonics" endparam int param m3 caption = "Harmonic #3" default =3 visible = @function == "Spherical Harmonics" endparam int param m4 caption = "Harmonic #4" default = 4 visible = @function == "Spherical Harmonics" endparam int param m5 caption = "Harmonic #5" default = 4 visible = @function == "Spherical Harmonics" endparam int param m6 caption = "Harmonic #6" default = 2 visible = @function == "Spherical Harmonics" endparam int param m7 caption = "Harmonic #7" default = 5 visible = @function == "Spherical Harmonics" endparam int param m8 caption = "Harmonic #8" default = 3 visible = @function == "Spherical Harmonics" endparam float param m25fscale caption = "Scale" default = 3 visible = @function == "Slippers Surface" endparam float param m25xmax caption = "Max X" default = 6.28 visible = @function == "Slippers Surface" endparam float param m25xmin caption = "Min X" default = 0 visible = @function == "Slippers Surface" endparam float param m25ymax caption = "Max Y" default = 6.28 visible = @function == "Slippers Surface" endparam float param m25ymin caption = "Min Y" default = 0 visible = @function == "Slippers Surface" endparam float param m25xstep caption = "X increment" default = 0.1 visible = @function == "Slippers Surface" endparam float param m25ystep caption = "Y increment" default = 0.1 visible = @function == "Slippers Surface" endparam float param m26fscale caption = "Scale" default = 1.5 visible = @function == "SuperShape" endparam float param m26xmax caption = "Max X" default = 3.14 visible = @function == "SuperShape" endparam float param m26xmin caption = "Min X" default = -3.14 visible = @function == "SuperShape" endparam float param m26ymax caption = "Max Y" default = 6.28 visible = @function == "SuperShape" endparam float param m26ymin caption = "Min Y" default = -6.28 visible = @function == "SuperShape" endparam float param m26xstep caption = "X increment" default = 0.1 visible = @function == "SuperShape" endparam float param m26ystep caption = "Y increment" default = 0.2 visible = @function == "SuperShape" endparam float param ssa caption = "parameter a" default = 1.0 visible = @function == "SuperShape" endparam float param ssb caption = "parameter b" default = 1.0 visible = @function == "SuperShape" endparam float param ssm caption = "parameter m" default = 7.0 visible = @function == "SuperShape" endparam float param ssn1 caption = "parameter n1" default = 0.2 visible = @function == "SuperShape" endparam float param ssn2 caption = "parameter n2" default = 1.7 visible = @function == "SuperShape" endparam float param ssn3 caption = "parameter n3" default = 1.7 visible = @function == "SuperShape" endparam float param m27fscale caption = "Scale" default = 1.5 visible = @function == "Fano Planes" endparam float param m27xmax caption = "Max X" default = 1.0 visible = @function == "Fano Planes" endparam float param m27xmin caption = "Min X" default = 0.0 visible = @function == "Fano Planes" endparam float param m27ymax caption = "Max Y" default = 2.0 visible = @function == "Fano Planes" endparam float param m27ymin caption = "Min Y" default = 0.0 visible = @function == "Fano Planes" endparam float param m27xstep caption = "X increment" default = 0.03 visible = @function == "Fano Planes" endparam float param m27ystep caption = "Y increment" default = 0.06 visible = @function == "Fano Planes" endparam float param m28fscale caption = "Scale" default = 1.5 visible = @function == "Twisted Fano" endparam float param m28xmax caption = "Max X" default = 1.0 visible = @function == "Twisted Fano" endparam float param m28xmin caption = "Min X" default = 0.0 visible = @function == "Twisted Fano" endparam float param m28ymax caption = "Max Y" default = 2.0 visible = @function == "Twisted Fano" endparam float param m28ymin caption = "Min Y" default = 0.0 visible = @function == "Twisted Fano" endparam float param m28xstep caption = "X increment" default = 0.02 visible = @function == "Twisted Fano" endparam float param m28ystep caption = "Y increment" default = 0.04 visible = @function == "Twisted Fano" endparam float param m29fscale caption = "Scale" default = 0.6 visible = @function == "Cresent" endparam float param m29xmax caption = "Max X" default = 1.0 visible = @function == "Cresent" endparam float param m29xmin caption = "Min X" default = 0.0 visible = @function == "Cresent" endparam float param m29ymax caption = "Max Y" default = 1.0 visible = @function == "Cresent" endparam float param m29ymin caption = "Min Y" default = 0.0 visible = @function == "Cresent" endparam float param m29xstep caption = "X increment" default = 0.03 visible = @function == "Cresent" endparam float param m29ystep caption = "Y increment" default = 0.03 visible = @function == "Cresent" endparam float param m30fscale caption = "Scale" default = 1.8 visible = @function == "Twisted Triaxial" endparam float param m30xmax caption = "Max X" default = 3.14 visible = @function == "Twisted Triaxial" endparam float param m30xmin caption = "Min X" default = -3.14 visible = @function == "Twisted Triaxial" endparam float param m30ymax caption = "Max Y" default = 3.14 visible = @function == "Twisted Triaxial" endparam float param m30ymin caption = "Min Y" default = -3.14 visible = @function == "Twisted Triaxial" endparam float param m30xstep caption = "X increment" default = 0.1 visible = @function == "Twisted Triaxial" endparam float param m30ystep caption = "Y increment" default = 0.1 visible = @function == "Twisted Triaxial" endparam float param m31fscale caption = "Scale" default = 1.25 visible = @function == "Maeder's Owl" endparam float param m31xmax caption = "Max X" default = 12.56 visible = @function == "Maeder's Owl" endparam float param m31xmin caption = "Min X" default = 0.0 visible = @function == "Maeder's Owl" endparam float param m31ymax caption = "Max Y" default = 1.0 visible = @function == "Maeder's Owl" endparam float param m31ymin caption = "Min Y" default = 0.0 visible = @function == "Maeder's Owl" endparam float param m31xstep caption = "X increment" default = 0.2 visible = @function == "Maeder's Owl" endparam float param m31ystep caption = "Y increment" default = 0.05 visible = @function == "Maeder's Owl" endparam float param m32fscale caption = "Scale" default = 1.8 visible = @function == "Stiletto Surface" endparam float param m32xmax caption = "Max X" default = 6.28 visible = @function == "Stiletto Surface" endparam float param m32xmin caption = "Min X" default = 0.0 visible = @function == "Stiletto Surface" endparam float param m32ymax caption = "Max Y" default = 6.28 visible = @function == "Stiletto Surface" endparam float param m32ymin caption = "Min Y" default = 0.0 visible = @function == "Stiletto Surface" endparam float param m32xstep caption = "X increment" default = 0.1 visible = @function == "Stiletto Surface" endparam float param m32ystep caption = "Y increment" default = 0.1 visible = @function == "Stiletto Surface" endparam float param m33fscale caption = "Scale" default = 0.5 visible = @function == "Verrill Surface" endparam float param m33xmax caption = "Max X" default = 1.0 visible = @function == "Verrill Surface" endparam float param m33xmin caption = "Min X" default = 0.5 visible = @function == "Verrill Surface" endparam float param m33ymax caption = "Max Y" default = 6.28 visible = @function == "Verrill Surface" endparam float param m33ymin caption = "Min Y" default = 0.0 visible = @function == "Verrill Surface" endparam float param m33xstep caption = "X increment" default = 0.01 visible = @function == "Verrill Surface" endparam float param m33ystep caption = "Y increment" default = 0.1 visible = @function == "Verrill Surface" endparam float param m34fscale caption = "Scale" default = 0.6 visible = @function == "Twisted Heart" endparam float param m34xmax caption = "Max X" default = 3.14 visible = @function == "Twisted Heart" endparam float param m34xmin caption = "Min X" default = 0.0 visible = @function == "Twisted Heart" endparam float param m34ymax caption = "Max Y" default = 3.14 visible = @function == "Twisted Heart" endparam float param m34ymin caption = "Min Y" default = -3.14 visible = @function == "Twisted Heart" endparam float param m34xstep caption = "X increment" default = 0.05 visible = @function == "Twisted Heart" endparam float param m34ystep caption = "Y increment" default = 0.1 visible = @function == "Twisted Heart" endparam float param m35fscale caption = "Scale" default = 0.8 visible = @function == "Figure 8 Torus" endparam float param m35xmax caption = "Max X" default = 3.14 visible = @function == "Figure 8 Torus" endparam float param m35xmin caption = "Min X" default = -3.14 visible = @function == "Figure 8 Torus" endparam float param m35ymax caption = "Max Y" default = 3.14 visible = @function == "Figure 8 Torus" endparam float param m35ymin caption = "Min Y" default = -3.14 visible = @function == "Figure 8 Torus" endparam float param m35xstep caption = "X increment" default = 0.1 visible = @function == "Figure 8 Torus" endparam float param m35ystep caption = "Y increment" default = 0.1 visible = @function == "Figure 8 Torus" endparam float param ftc caption = "parameter c" default = 1.0 visible = @function == "Figure 8 Torus" endparam float param m36fscale caption = "Scale" default = 3.0 visible = @function == "Triaxial Teardrop" endparam float param m36xmax caption = "Max X" default = 3.14 visible = @function == "Triaxial Teardrop" endparam float param m36xmin caption = "Min X" default = 0.0 visible = @function == "Triaxial Teardrop" endparam float param m36ymax caption = "Max Y" default = 6.28 visible = @function == "Triaxial Teardrop" endparam float param m36ymin caption = "Min Y" default = 0.0 visible = @function == "Triaxial Teardrop" endparam float param m36xstep caption = "X increment" default = 0.05 visible = @function == "Triaxial Teardrop" endparam float param m36ystep caption = "Y increment" default = 0.1 visible = @function == "Triaxial Teardrop" endparam float param m37fscale caption = "Scale" default = 2.0 visible = @function == "Lemniscape" endparam float param m37xmax caption = "Max X" default = 3.14 visible = @function == "Lemniscape" endparam float param m37xmin caption = "Min X" default = 0.0 visible = @function == "Lemniscape" endparam float param m37ymax caption = "Max Y" default = 3.14 visible = @function == "Lemniscape" endparam float param m37ymin caption = "Min Y" default = 0.0 visible = @function == "Lemniscape" endparam float param m37xstep caption = "X increment" default = 0.05 visible = @function == "Lemniscape" endparam float param m37ystep caption = "Y increment" default = 0.05 visible = @function == "Lemniscape" endparam ; float param m38radius ; caption = "Sphere radius" ; default = 0.01 ; visible = @function == "Tractrix" ; endparam float param m38fscale caption = "Function scale" default = 1.0 visible = @function == "Tractrix" endparam float param m38xmax caption = "Max X" default = 3.14 visible = @function == "Tractrix" endparam float param m38xmin caption = "Min X" default = -3.14 visible = @function == "Tractrix" endparam float param m38ymax caption = "Max Y" default = 3.14 visible = @function == "Tractrix" endparam float param m38ymin caption = "Min Y" default = -3.14 visible = @function == "Tractrix" endparam float param m38xstep caption = "X increment" default = 0.03 visible = @function == "Tractrix" endparam float param m38ystep caption = "Y increment" default = 0.03 visible = @function == "Tractrix" endparam float param m39fscale caption = "Scale" default = 0.9 visible = @function == "Triaxial Tritorus" endparam float param m39xmax caption = "Max X" default = 3.14 visible = @function == "Triaxial Tritorus" endparam float param m39xmin caption = "Min X" default = -3.14 visible = @function == "Triaxial Tritorus" endparam float param m39ymax caption = "Max Y" default = 3.14 visible = @function == "Triaxial Tritorus" endparam float param m39ymin caption = "Min Y" default = -3.14 visible = @function == "Triaxial Tritorus" endparam float param m39xstep caption = "X increment" default = 0.1 visible = @function == "Triaxial Tritorus" endparam float param m39ystep caption = "Y increment" default = 0.1 visible = @function == "Triaxial Tritorus" endparam float param m40fscale caption = "Scale" default = 0.5 visible = @function == "Saddle Torus" endparam float param m40xmax caption = "Max X" default = 6.28 visible = @function == "Saddle Torus" endparam float param m40xmin caption = "Min X" default = 0.0 visible = @function == "Saddle Torus" endparam float param m40ymax caption = "Max Y" default = 6.28 visible = @function == "Saddle Torus" endparam float param m40ymin caption = "Min Y" default = 0.0 visible = @function == "Saddle Torus" endparam float param m40xstep caption = "X increment" default = 0.1 visible = @function == "Saddle Torus" endparam float param m40ystep caption = "Y increment" default = 0.1 visible = @function == "Saddle Torus" endparam float param m41fscale caption = "Scale" default = 0.75 visible = @function == "Limpet Torus" endparam float param m41xmax caption = "Max X" default = 6.28 visible = @function == "Limpet Torus" endparam float param m41xmin caption = "Min X" default = 0.0 visible = @function == "Limpet Torus" endparam float param m41ymax caption = "Max Y" default = 6.28 visible = @function == "Limpet Torus" endparam float param m41ymin caption = "Min Y" default = 0.0 visible = @function == "Limpet Torus" endparam float param m41xstep caption = "X increment" default = 0.1 visible = @function == "Limpet Torus" endparam float param m41ystep caption = "Y increment" default = 0.1 visible = @function == "Limpet Torus" endparam float param m42fscale caption = "Scale" default = 0.75 visible = @function == "Bow Tie" endparam float param m42xmax caption = "Max X" default = 6.28 visible = @function == "Bow Tie" endparam float param m42xmin caption = "Min X" default = 0.0 visible = @function == "Bow Tie" endparam float param m42ymax caption = "Max Y" default = 6.28 visible = @function == "Bow Tie" endparam float param m42ymin caption = "Min Y" default = 0.0 visible = @function == "Bow Tie" endparam float param m42xstep caption = "X increment" default = 0.1 visible = @function == "Bow Tie" endparam float param m42ystep caption = "Y increment" default = 0.1 visible = @function == "Bow Tie" endparam float param m43fscale caption = "Scale" default = 1.5 visible = @function == "Cross Cap" endparam float param m43xmax caption = "Max X" default = 6.28 visible = @function == "Cross Cap" endparam float param m43xmin caption = "Min X" default = 0.0 visible = @function == "Cross Cap" endparam float param m43ymax caption = "Max Y" default = 1.571 visible = @function == "Cross Cap" endparam float param m43ymin caption = "Min Y" default = 0.0 visible = @function == "Cross Cap" endparam float param m43xstep caption = "X increment" default = 0.1 visible = @function == "Cross Cap" endparam float param m43ystep caption = "Y increment" default = 0.025 visible = @function == "Cross Cap" endparam float param m44fscale caption = "Scale" default = 2.5 visible = @function == "Whitney Umbrella" endparam float param m44xmax caption = "Max X" default = 3.14 visible = @function == "Whitney Umbrella" endparam float param m44xmin caption = "Min X" default = 0.0 visible = @function == "Whitney Umbrella" endparam float param m44ymax caption = "Max Y" default = 6.28 visible = @function == "Whitney Umbrella" endparam float param m44ymin caption = "Min Y" default = 0.0 visible = @function == "Whitney Umbrella" endparam float param m44xstep caption = "X increment" default = 0.05 visible = @function == "Whitney Umbrella" endparam float param m44ystep caption = "Y increment" default = 0.1 visible = @function == "Whitney Umbrella" endparam float param m45fscale caption = "Scale" default = 0.75 visible = @function == "Triaxial Hexatorus" endparam float param m45xmax caption = "Max X" default = 6.28 visible = @function == "Triaxial Hexatorus" endparam float param m45xmin caption = "Min X" default = 0.0 visible = @function == "Triaxial Hexatorus" endparam float param m45ymax caption = "Max Y" default = 6.28 visible = @function == "Triaxial Hexatorus" endparam float param m45ymin caption = "Min Y" default = 0.0 visible = @function == "Triaxial Hexatorus" endparam float param m45xstep caption = "X increment" default = 0.1 visible = @function == "Triaxial Hexatorus" endparam float param m45ystep caption = "Y increment" default = 0.1 visible = @function == "Triaxial Hexatorus" endparam float param m46fscale caption = "Scale" default = 2.5 visible = @function == "Fish Surface" endparam float param m46xmax caption = "Max X" default = 3.14 visible = @function == "Fish Surface" endparam float param m46xmin caption = "Min X" default = 0.0 visible = @function == "Fish Surface" endparam float param m46ymax caption = "Max Y" default = 6.28 visible = @function == "Fish Surface" endparam float param m46ymin caption = "Min Y" default = 0.0 visible = @function == "Fish Surface" endparam float param m46xstep caption = "X increment" default = 0.05 visible = @function == "Fish Surface" endparam float param m46ystep caption = "Y increment" default = 0.1 visible = @function == "Fish Surface" endparam float param m47fscale caption = "Scale" default = 0.6 visible = @function == "Twisted Pipe" endparam float param m47xmax caption = "Max X" default = 6.28 visible = @function == "Twisted Pipe" endparam float param m47xmin caption = "Min X" default = 0.0 visible = @function == "Twisted Pipe" endparam float param m47ymax caption = "Max Y" default = 6.28 visible = @function == "Twisted Pipe" endparam float param m47ymin caption = "Min Y" default = 0.0 visible = @function == "Twisted Pipe" endparam float param m47xstep caption = "X increment" default = 0.1 visible = @function == "Twisted Pipe" endparam float param m47ystep caption = "Y increment" default = 0.1 visible = @function == "Twisted Pipe" endparam float param m48fscale caption = "Scale" default = 1.5 visible = @function == "Steiner Surface" endparam float param m48xmax caption = "Max X" default = 3.14 visible = @function == "Steiner Surface" endparam float param m48xmin caption = "Min X" default = 0.0 visible = @function == "Steiner Surface" endparam float param m48ymax caption = "Max Y" default = 3.14 visible = @function == "Steiner Surface" endparam float param m48ymin caption = "Min Y" default = 0.0 visible = @function == "Steiner Surface" endparam float param m48xstep caption = "X increment" default = 0.05 visible = @function == "Steiner Surface" endparam float param m48ystep caption = "Y increment" default = 0.05 visible = @function == "Steiner Surface" endparam float param m49fscale caption = "Scale" default = 1.0 visible = @function == "Pseudocatenoid" endparam float param m49xmax caption = "Max X" default = 3.14 visible = @function == "Pseudocatenoid" endparam float param m49xmin caption = "Min X" default = -3.14 visible = @function == "Pseudocatenoid" endparam float param m49ymax caption = "Max Y" default = 3.14 visible = @function == "Pseudocatenoid" endparam float param m49ymin caption = "Min Y" default = -3.14 visible = @function == "Pseudocatenoid" endparam float param m49xstep caption = "X increment" default = 0.1 visible = @function == "Pseudocatenoid" endparam float param m49ystep caption = "Y increment" default = 0.1 visible = @function == "Pseudocatenoid" endparam float param m50fscale caption = "Scale" default = 0.3 visible = @function == "Cross Hole" endparam float param m50xmax caption = "Max X" default = 3.14159 visible = @function == "Cross Hole" endparam float param m50xmin caption = "Min X" default = 0 visible = @function == "Cross Hole" endparam float param m50ymax caption = "Max Y" default = 3.1 visible = @function == "Cross Hole" endparam float param m50ymin caption = "Min Y" default = 0.04 visible = @function == "Cross Hole" endparam float param m50xstep caption = "X increment" default = 0.05 visible = @function == "Cross Hole" endparam float param m50ystep caption = "Y increment" default = 0.04 visible = @function == "Cross Hole" endparam float param m51fscale caption = "Scale" default = 1.0 visible = @function == "Elliptic Torus" endparam float param m51xmax caption = "Max X" default = 3.14 visible = @function == "Elliptic Torus" endparam float param m51xmin caption = "Min X" default = -3.14 visible = @function == "Elliptic Torus" endparam float param m51ymax caption = "Max Y" default = 3.14 visible = @function == "Elliptic Torus" endparam float param m51ymin caption = "Min Y" default = -3.14 visible = @function == "Elliptic Torus" endparam float param m51xstep caption = "X increment" default = 0.1 visible = @function == "Elliptic Torus" endparam float param m51ystep caption = "Y increment" default = 0.1 visible = @function == "Elliptic Torus" endparam float param ec caption = "Parameter c" default = 0.5 visible = @function == "Elliptic Torus" endparam float param m52fscale caption = "Scale" default = 1.0 visible = @function == "Ghost Plane" endparam float param m52xmax caption = "Max X" default = 3.14 visible = @function == "Ghost Plane" endparam float param m52xmin caption = "Min X" default = -3.14 visible = @function == "Ghost Plane" endparam float param m52ymax caption = "Max Y" default = 3.14 visible = @function == "Ghost Plane" endparam float param m52ymin caption = "Min Y" default = -3.14 visible = @function == "Ghost Plane" endparam float param m52xstep caption = "X increment" default = 0.1 visible = @function == "Ghost Plane" endparam float param m52ystep caption = "Y increment" default = 0.1 visible = @function == "Ghost Plane" endparam float param m53fscale caption = "Scale" default = 1.75 visible = @function == "Folium" endparam float param m53xmax caption = "Max X" default = 3.14 visible = @function == "Folium" endparam float param m53xmin caption = "Min X" default = -3.14 visible = @function == "Folium" endparam float param m53ymax caption = "Max Y" default = 3.14 visible = @function == "Folium" endparam float param m53ymin caption = "Min Y" default = -3.14 visible = @function == "Folium" endparam float param m53xstep caption = "X increment" default = 0.1 visible = @function == "Folium" endparam float param m53ystep caption = "Y increment" default = 0.1 visible = @function == "Folium" endparam float param thick caption = "Curve width" default = 0.005 endparam param colormode caption = "Color mode" default = 3 enum = "Solid" "Use gradient" "By side" "By z value" endparam float param gradval caption = "Grad val (0-1)" default = 0.5 visible = @colormode == "Solid" endparam } Chip-trap { ; Ron Barnett, November 1999 ; Shamelessly borrowed from Mark Townsend's ; Martin trap method using the Chip function init: trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int chip_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 if @no_of_iters == 0 max_iter = #maxiter - @skip else max_iter = @skip + @no_of_iters endif if @oldscale == 0 scale = 1/scale endif loop: p = @fn1(#z + @start) x = real(p) * scale y = imag(p) * scale ; Iterate the Chip formula chip_iter = 0 while chip_iter < @max_iterations xx = x if x != 0 x = y - x/abs(x)*cos(sqr(log(abs(@b*x-@c)))) \ *atan(sqr(log(abs(@c*x-@b)))) else x = y - cos(sqr(log(abs(@b*x-@c)))) \ *atan(sqr(log(abs(@c*x-@b)))) endif y = @a - xx chip_iter = chip_iter + 1 endwhile p = x + flip(y) f_p = @fn2(p) dist = abs(|#z| - |f_p|) distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= @skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= @skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 final: if (@trap_mode == 1 || @trap_mode == 2) && !trapped #solid = true else if @color_mode == 0 #index = distance + @randomness * real(#random) elseif @color_mode == 1 #index = 0.01 * trap_iter + @randomness * real(#random) elseif @color_mode == 2 #index = cabs(trap_z) + @randomness * real(#random) elseif @color_mode == 3 #index = abs(real(trap_z)) + @randomness * real(#random) elseif @color_mode == 4 #index = abs(imag(trap_z)) + @randomness * real(#random) elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 6 #index = cabs(trap_p) + @randomness * real(#random) elseif @color_mode == 7 #index = abs(real(trap_p)) + @randomness * real(#random) elseif @color_mode == 8 #index = abs(imag(trap_p)) + @randomness * real(#random) elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p) + @randomness*real(#random) elseif @color_mode == 11 #index = 0.01 * exptrap_p + @randomness * real(#random) endif endif default: title = "Chip Orbit Trap" param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 0 endparam param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param width caption = "Trap width" default = 1.0 endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param a caption = "Chip parameter 1" default = -15.0 endparam param b caption = "Chip parameter 2" default = -3.0 endparam param c caption = "Chip parameter 3" default = 1.0 endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param max_iterations caption = "Chip iterations" hint = "This is the number of iterations for the Chip formula." default = 1 endparam param randomness caption = "Randomness" hint = "This adds a random texture the the coloring." default = 0.0 endparam func fn1 caption = "Function" default = atan() endfunc func fn2 caption = "Another function" default = sinh() endfunc } CosMartin-trap { ; Ron Barnett, June 2000 ; Based upon approaches of Mark Townsend init: trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int cos_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = @a float distave = 0 float distsum = 0 float exptrap_p = 0 if @no_of_iters == 0 max_iter = #maxiter - @skip else max_iter = @skip + @no_of_iters endif if @oldscale == 0 scale = 1/scale endif loop: p = @fn1(#z + @start) x = real(p) * scale y = imag(p) * scale ; Iterate the CosMartin formula cos_iter = 0 while cos_iter < @max_iterations xx = x x = y - cos(x) y = @a - xx cos_iter = cos_iter + 1 endwhile p = x + flip(y) f_p = @fn2(p) dist = abs(|#z| - |f_p|) distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= @skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= @skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 final: if (@trap_mode == 1 || @trap_mode == 2) && !trapped #solid = true else if @color_mode == 0 #index = distance + @randomness * real(#random) elseif @color_mode == 1 #index = 0.01 * trap_iter + @randomness * real(#random) elseif @color_mode == 2 #index = cabs(trap_z) + @randomness * real(#random) elseif @color_mode == 3 #index = abs(real(trap_z)) + @randomness * real(#random) elseif @color_mode == 4 #index = abs(imag(trap_z)) + @randomness * real(#random) elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 6 #index = cabs(trap_p) + @randomness * real(#random) elseif @color_mode == 7 #index = abs(real(trap_p)) + @randomness * real(#random) elseif @color_mode == 8 #index = abs(imag(trap_p)) + @randomness * real(#random) elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p) + @randomness*real(#random) elseif @color_mode == 11 #index = 0.01 * exptrap_p + @randomness * real(#random) endif endif default: title = "CosMartin Orbit Trap" param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 0 endparam param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param width caption = "Trap width" default = 1.0 endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param a caption = "CosMartin parameter" default = 1.0 endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param max_iterations caption = "CosMartin iterations" hint = "This is the number of iterations for the CosMartin formula." default = 1 endparam param randomness caption = "Randomness" hint = "This adds a random texture the the coloring." default = 0.0 endparam func fn1 caption = "Function" default = atan() endfunc func fn2 caption = "Another function" default = sinh() endfunc } Henon-trap { ; Ron Barnett, November 1999 ; Shamelessly borrowed from Mark Townsend's ; Martin trap method using the Henon function init: trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int hen_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b) float distave = 0 float distsum = 0 float exptrap_p = 0 if @no_of_iters == 0 max_iter = #maxiter - @skip else max_iter = @skip + @no_of_iters endif if @oldscale == 0 scale = 1/scale endif loop: p = @fn1(#z + @start) x = real(p) * scale y = imag(p) * scale ; Iterate the Henon formula hen_iter = 0 while hen_iter < @max_iterations xx = x x = 1 + y - @a*x*x y = @b*xx hen_iter = hen_iter + 1 endwhile p = x + flip(y) f_p = @fn2(p) dist = abs(|#z| - |f_p|) distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= @skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= @skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 final: if (@trap_mode == 1 || @trap_mode == 2) && !trapped #solid = true else if @color_mode == 0 #index = distance + @randomness * real(#random) elseif @color_mode == 1 #index = 0.01 * trap_iter + @randomness * real(#random) elseif @color_mode == 2 #index = cabs(trap_z) + @randomness * real(#random) elseif @color_mode == 3 #index = abs(real(trap_z)) + @randomness * real(#random) elseif @color_mode == 4 #index = abs(imag(trap_z)) + @randomness * real(#random) elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 6 #index = cabs(trap_p) + @randomness * real(#random) elseif @color_mode == 7 #index = abs(real(trap_p)) + @randomness * real(#random) elseif @color_mode == 8 #index = abs(imag(trap_p)) + @randomness * real(#random) elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p) + @randomness*real(#random) elseif @color_mode == 11 #index = 0.01 * exptrap_p + @randomness * real(#random) endif endif default: title = "Henon Orbit Trap" param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 0 endparam param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param width caption = "Trap width" default = 1.0 endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param a caption = "Henon parameter 1" default = 1.4 endparam param b caption = "Henon parameter 2" default = 0.3 endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param max_iterations caption = "Henon iterations" hint = "This is the number of iterations for the Henon formula." default = 1 endparam param randomness caption = "Randomness" hint = "This adds a random texture the the coloring." default = 0.0 endparam func fn1 caption = "Function" default = atan() endfunc func fn2 caption = "Another function" default = sinh() endfunc } Hopalong-trap { ; Ron Barnett, November 1999 ; Shamelessly borrowed from Mark Townsend's ; Martin trap method using the Hopalong function init: trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int hop_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 if @no_of_iters == 0 max_iter = #maxiter - @skip else max_iter = @skip + @no_of_iters endif if @oldscale == 0 scale = 1/scale endif loop: p = @fn1(#z + @start) x = real(p) * scale y = imag(p) * scale ; Iterate the Hopalong formula hop_iter = 0 while hop_iter < @max_iterations xx = x x = y - x/abs(x)*sqrt(abs(@b*x-@c)) y = @a - xx hop_iter = hop_iter + 1 endwhile p = x + flip(y) f_p = @fn2(p) dist = abs(|#z| - |f_p|) distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= @skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= @skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 final: if (@trap_mode == 1 || @trap_mode == 2) && !trapped #solid = true else if @color_mode == 0 #index = distance + @randomness * real(#random) elseif @color_mode == 1 #index = 0.01 * trap_iter + @randomness * real(#random) elseif @color_mode == 2 #index = cabs(trap_z) + @randomness * real(#random) elseif @color_mode == 3 #index = abs(real(trap_z)) + @randomness * real(#random) elseif @color_mode == 4 #index = abs(imag(trap_z)) + @randomness * real(#random) elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 6 #index = cabs(trap_p) + @randomness * real(#random) elseif @color_mode == 7 #index = abs(real(trap_p)) + @randomness * real(#random) elseif @color_mode == 8 #index = abs(imag(trap_p)) + @randomness * real(#random) elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p) + @randomness*real(#random) elseif @color_mode == 11 #index = 0.01 * exptrap_p + @randomness * real(#random) endif endif default: title = "Hopalong Orbit Trap" param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 0 endparam param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param width caption = "Trap width" default = 1.0 endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param a caption = "Hopalong parameter 1" default = .4 endparam param b caption = "Hopalong parameter 2" default = 1.0 endparam param c caption = "Hopalong parameter 3" default = 0.0 endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param max_iterations caption = "Hopalong iterations" hint = "This is the number of iterations for the Hopalong formula." default = 1 endparam param randomness caption = "Randomness" hint = "This adds a random texture the the coloring." default = 0.0 endparam func fn1 caption = "Function" default = atan() endfunc func fn2 caption = "Another function" default = sinh() endfunc } Liar-trap { ; Ron Barnett, June 2000 ; Based upon approaches of Mark Townsend init: trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int liar_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 if @no_of_iters == 0 max_iter = #maxiter - @skip else max_iter = @skip + @no_of_iters endif if @oldscale == 0 scale = 1/scale endif loop: p = @fn1(#z + @start) x = real(p) * scale y = imag(p) * scale ; Iterate the Liar formula liar_iter = 0 while liar_iter < @max_iterations xx = x if x + flip(p) < @a x = @b - abs(y-x) y = abs(@c - xx - y) endif liar_iter = liar_iter + 1 endwhile p = x + flip(y) f_p = @fn2(p) dist = abs(|#z| - |f_p|) distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= @skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= @skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 final: if (@trap_mode == 1 || @trap_mode == 2) && !trapped #solid = true else if @color_mode == 0 #index = distance + @randomness * real(#random) elseif @color_mode == 1 #index = 0.01 * trap_iter + @randomness * real(#random) elseif @color_mode == 2 #index = cabs(trap_z) + @randomness * real(#random) elseif @color_mode == 3 #index = abs(real(trap_z)) + @randomness * real(#random) elseif @color_mode == 4 #index = abs(imag(trap_z)) + @randomness * real(#random) elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 6 #index = cabs(trap_p) + @randomness * real(#random) elseif @color_mode == 7 #index = abs(real(trap_p)) + @randomness * real(#random) elseif @color_mode == 8 #index = abs(imag(trap_p)) + @randomness * real(#random) elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p) + @randomness*real(#random) elseif @color_mode == 11 #index = 0.01 * exptrap_p + @randomness * real(#random) endif endif default: title = "Liar Orbit Trap" param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 0 endparam param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param width caption = "Trap width" default = 1.0 endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param a caption = "Liar parameter 1" default = 1.0 endparam param b caption = "Liar parameter 2" default = 1.0 endparam param c caption = "Liar parameter 3" default = 1.0 endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param max_iterations caption = "Liar iterations" hint = "This is the number of iterations for the Liar formula." default = 1 endparam param randomness caption = "Randomness" hint = "This adds a random texture the the coloring." default = 0.0 endparam func fn1 caption = "Function" default = atan() endfunc func fn2 caption = "Another function" default = sinh() endfunc } PickMod-trap { ; Ron Barnett, June 2000 ; Based upon approaches of Mark Townsend init: trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int pick_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 float zz = 0 if @no_of_iters == 0 max_iter = #maxiter - @skip else max_iter = @skip + @no_of_iters endif if @oldscale == 0 scale = 1/scale endif loop: p = @fn1(#z + @start) x = real(p) * scale y = imag(p) * scale ; Iterate the PickMod formula pick_iter = 0 while pick_iter < @max_iterations xx = x x = sin(@a*y) - zz*cos(@b*x) y = zz*sin(@c*xx) - cos(-@a*y) zz = sin(xx) pick_iter = pick_iter + 1 endwhile p = x + flip(y) f_p = @fn2(p) dist = abs(|#z| - |f_p|) distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= @skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= @skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 final: if (@trap_mode == 1 || @trap_mode == 2) && !trapped #solid = true else if @color_mode == 0 #index = distance + @randomness * real(#random) elseif @color_mode == 1 #index = 0.01 * trap_iter + @randomness * real(#random) elseif @color_mode == 2 #index = cabs(trap_z) + @randomness * real(#random) elseif @color_mode == 3 #index = abs(real(trap_z)) + @randomness * real(#random) elseif @color_mode == 4 #index = abs(imag(trap_z)) + @randomness * real(#random) elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 6 #index = cabs(trap_p) + @randomness * real(#random) elseif @color_mode == 7 #index = abs(real(trap_p)) + @randomness * real(#random) elseif @color_mode == 8 #index = abs(imag(trap_p)) + @randomness * real(#random) elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p) + @randomness*real(#random) elseif @color_mode == 11 #index = 0.01 * exptrap_p + @randomness * real(#random) endif endif default: title = "Modified Pickover Orbit Trap" param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 0 endparam param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param width caption = "Trap width" default = 1.0 endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param a caption = "PickMod parameter 1" default = 2.34 endparam param b caption = "PickMod parameter 2" default = 0.43 endparam param c caption = "PickMod parameter 3" default = -0.65 endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param max_iterations caption = "PickMod iterations" hint = "This is the number of iterations for the PickMod formula." default = 1 endparam param randomness caption = "Randomness" hint = "This adds a random texture the the coloring." default = 0.0 endparam func fn1 caption = "Function" default = atan() endfunc func fn2 caption = "Another function" default = sinh() endfunc } Quadruptwo-trap { ; Ron Barnett, June 2000 ; Based upon approaches of Mark Townsend init: trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int quad_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 if @no_of_iters == 0 max_iter = #maxiter - @skip else max_iter = @skip + @no_of_iters endif if @oldscale == 0 scale = 1/scale endif loop: p = @fn1(#z + @start) x = real(p) * scale y = imag(p) * scale ; Iterate the Quadruptwo formula quad_iter = 0 while quad_iter < @max_iterations xx = x x = y - x/abs(x)*sin(log(abs(@b*x-@c))) \ *atan(sqr(log(abs(@c*x-@b)))) y = @a - xx quad_iter = quad_iter + 1 endwhile p = x + flip(y) f_p = @fn2(p) dist = abs(|#z| - |f_p|) distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= @skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= @skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 final: if (@trap_mode == 1 || @trap_mode == 2) && !trapped #solid = true else if @color_mode == 0 #index = distance + @randomness * real(#random) elseif @color_mode == 1 #index = 0.01 * trap_iter + @randomness * real(#random) elseif @color_mode == 2 #index = cabs(trap_z) + @randomness * real(#random) elseif @color_mode == 3 #index = abs(real(trap_z)) + @randomness * real(#random) elseif @color_mode == 4 #index = abs(imag(trap_z)) + @randomness * real(#random) elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 6 #index = cabs(trap_p) + @randomness * real(#random) elseif @color_mode == 7 #index = abs(real(trap_p)) + @randomness * real(#random) elseif @color_mode == 8 #index = abs(imag(trap_p)) + @randomness * real(#random) elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p) + @randomness*real(#random) elseif @color_mode == 11 #index = 0.01 * exptrap_p + @randomness * real(#random) endif endif default: title = "Quadruptwo Orbit Trap" param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 0 endparam param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param width caption = "Trap width" default = 1.0 endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param a caption = "Quadruptwo parameter 1" default = 34.0 endparam param b caption = "Quadruptwo parameter 2" default = 1.0 endparam param c caption = "Quadruptwo parameter 3" default = 5.0 endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param max_iterations caption = "Quadruptwo iterations" hint = "This is the number of iterations for the Quadruptwo formula." default = 1 endparam param randomness caption = "Randomness" hint = "This adds a random texture the the coloring." default = 0.0 endparam func fn1 caption = "Function" default = atan() endfunc func fn2 caption = "Another function" default = sinh() endfunc } Threeply-trap { ; Ron Barnett, November 1999 ; Shamelessly borrowed from Mark Townsend's ; Martin trap method using the Threeply function init: trap_z = 0 trap_p = 0 float x = 0 float y = 0 float xx = 0 int iter = 0 float dist = 0 float distance = 0 int thre_iter = 0 int max_iter = 0 int trap_iter = 0 bool trapped = false float min_dist = 1e30 float scale = sqrt(@a*@a + @b*@b + @c*@c) float distave = 0 float distsum = 0 float exptrap_p = 0 if @no_of_iters == 0 max_iter = #maxiter - @skip else max_iter = @skip + @no_of_iters endif if @oldscale == 0 scale = 1/scale endif loop: p = @fn1(#z + @start) x = real(p) * scale y = imag(p) * scale ; Iterate the Threeply formula thre_iter = 0 while thre_iter < @max_iterations xx = x x = y - x/abs(x)*(abs(sin(x)*cos(@b) + @c \ - x*sin(@a + @b + @c))) y = @a - xx thre_iter = thre_iter + 1 endwhile p = x + flip(y) f_p = @fn2(p) dist = abs(|#z| - |f_p|) distsum = dist + distsum distave = distsum/iter if @color_mode == 10 || @color_mode == 11 exptrap_p = exptrap_p + exp(-cabs(f_p)) endif if @trap_mode == 0 if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 1 if (iter >= @skip && iter < max_iter) \ && !trapped && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 2 if (iter >= @skip && iter < max_iter) \ && dist < @width trapped = true distance = dist trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 3 dist = cabs(f_p) if (iter >= @skip && iter < max_iter) \ && dist < min_dist min_dist = dist distance = abs(|#z| - |f_p|) trap_iter = iter trap_z = #z trap_p = f_p endif elseif @trap_mode == 4 if (iter >= @skip && iter < max_iter) \ && distave < min_dist min_dist = distave distance = distave trap_iter = iter trap_z = #z trap_p = f_p endif endif iter = iter + 1 final: if (@trap_mode == 1 || @trap_mode == 2) && !trapped #solid = true else if @color_mode == 0 #index = distance + @randomness * real(#random) elseif @color_mode == 1 #index = 0.01 * trap_iter + @randomness * real(#random) elseif @color_mode == 2 #index = cabs(trap_z) + @randomness * real(#random) elseif @color_mode == 3 #index = abs(real(trap_z)) + @randomness * real(#random) elseif @color_mode == 4 #index = abs(imag(trap_z)) + @randomness * real(#random) elseif @color_mode == 5 float angle = atan2(trap_z) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 6 #index = cabs(trap_p) + @randomness * real(#random) elseif @color_mode == 7 #index = abs(real(trap_p)) + @randomness * real(#random) elseif @color_mode == 8 #index = abs(imag(trap_p)) + @randomness * real(#random) elseif @color_mode == 9 float angle = atan2(trap_p) if angle < 0 angle = angle + 2 * #pi endif angle = 1 / (2 * #pi) * angle #index = angle + @randomness * real(#random) elseif @color_mode == 10 #index = 0.1*exptrap_p*cabs(trap_p) + @randomness*real(#random) elseif @color_mode == 11 #index = 0.01 * exptrap_p + @randomness * real(#random) endif endif default: title = "Threeply Orbit Trap" param oldscale caption = "Scale Type" enum = "Old Scale" "New Scale" default = 0 endparam param trap_mode caption = "Trap mode" enum = "Closest" "First" "Last" "Smallest trap" "Average" endparam param color_mode caption = "Coloring mode" enum = "Distance" "Iteration" "Magnitude" "Real" "Imag" \ "Angle" "Trap magnitude" "Trap real" "Trap imag" \ "Trap angle" "Exp Iter" "Exp Iter 2" endparam param width caption = "Trap width" default = 1.0 endparam param start caption = "Starting offset" default = (0.0,0.0) endparam param a caption = "Threeply parameter 1" default = -55.0 endparam param b caption = "Threeply parameter 2" default = -1.0 endparam param c caption = "Threeply parameter 3" default = 0.8 endparam param skip caption = "Iterations to skip" hint = "This is the number of iterations to skip before watching \ the orbit." default = 0 min = 0 endparam param no_of_iters caption = "No. of iterations" hint = "This is the number of iterations to monitor the orbit." default = 0 min = 0 endparam param max_iterations caption = "Threeply iterations" hint = "This is the number of iterations for the Threeply formula." default = 1 endparam param randomness caption = "Randomness" hint = "This adds a random texture the the coloring." default = 0.0 endparam func fn1 caption = "Function" default = atan() endfunc func fn2 caption = "Another function" default = sinh() endfunc } PWCStyleTraps {; Ron Barnett, June 1999 ; based on Paul Carlson's trap methods init: int count = 0 int rangenum = 0 int col = 0 float test = 0.0 float temp = 0 float index_factor = (@colors-1)/@dist float color_index = 0 float ang = 0 complex f1 = 0 complex f2 = 0 complex function = 0 bool c1 = false bool c2 = false bool c3 = false bool c4 = false float r1 = @dist + @dist*@r float r2 = @dist*@dist float f = 1 - 2*@r - @r*@r float k = @r*@dist + @dist*sqrt(f) float plsqd = 2*r2*f float delta_i = 0 float delta_r = 0 complex prev_w = #z loop: IF (@type == 0) ang = atan(imag(#z)/real(#z)) f1 = fn1(ang)^real(@power) f2 = fn2(ang)^imag(@power) function = @r*(f1 + flip(f2)) test = abs(|#z|-|function|) ELSEIF (@type == 1) temp = (real(#z)-r1)*(real(#z)-r1) + \ imag(#z)*imag(#z) c1 = (temp < r2) temp = (imag(#z)+r1)*(imag(#z)+r1) + \ real(#z)*real(#z) c2 = (temp < r2) temp = (real(#z)+r1)*(real(#z)+r1) + \ imag(#z)*imag(#z) c3 = (temp < r2) temp = (imag(#z)-r1)*(imag(#z)-r1) + \ real(#z)*real(#z) c4 = (temp < r2) IF (c1 && c4) test = (real(#z)-k)*(real(#z)-k) + \ (imag(#z)-k)*(imag(#z)-k) ELSEIF (c1 && c2) test = (real(#z)-k)*(real(#z)-k) + \ (imag(#z)+k)*(imag(#z)+k) ELSEIF (c2 && c3) test = (real(#z)+k)*(real(#z)+k) + \ (imag(#z)+k)*(imag(#z)+k) ELSEIF (c3 && c4) test = (real(#z)+k)*(real(#z)+k) + \ (imag(#z)-k)*(imag(#z)-k) ELSE test = 0 ENDIF ELSEIF (@type == 2) delta_i = imag(#z) - imag(prev_w) delta_r = real(#z) - real(prev_w) ang = abs(atan(delta_i/delta_r)) IF (delta_r < 0) ang = #pi - ang ENDIF prev_w = #z ENDIF count = count + 1 IF (@skip==false) || (count > 1) IF (col == 0) IF (@type == 0) IF (test < @dist ) col = 1 rangenum = count % @range color_index = index_factor*test + \ rangenum*@colors ENDIF ELSEIF (@type == 1) IF (test > 0) col = 1 rangenum = count % @range index_factor = (@colors-1)*test/plsqd color_index = index_factor + \ rangenum*@colors ENDIF ENDIF ENDIF ENDIF final: IF (col == 0) IF (@type != 2) #solid = true ELSE rangenum = count % @range index_factor = (@colors-1)*ang/#pi color_index = index_factor + \ rangenum*@colors #index = ((color_index + 1) % 256) / 256 ENDIF ELSEIF (col == 1) #index = ((color_index + 1) % 256) / 256 ENDIF default: title = "Some PWC Trap Types" param version caption = "Formula Version" default = 1.0 hint = "You should never see this parameter; it's used internally to track \ which version of the formula was used to create your image, so that \ if a bug is found which breaks backwards-compatibility, the formula \ can adapt transparently." visible = false endparam param type caption = "Trap type" default = 0 enum = "General Astroid" "Petals" "Orbit Angle" endparam param dist caption = "Trap distance" default = 0.1 hint = "determines how close to the function \ an orbit has to come to be caught" endparam param r caption = "Function Radius" default = 0.5 endparam param power caption = "Function Power" default = (3,3) endparam param range caption = "# of Color Ranges" default = 8 endparam param colors caption = "Colors in Range" default = 30 endparam param skip caption = "Skip first iteration?" default = true hint = "Check to ignore the first iteration" endparam func fn1 caption = "Real Portion" default = cos() endfunc func fn2 caption = "Imag Portion" default = sin() endfunc }