ImageTraps { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_ImageTrapsColoring f = new @f_class(0) init: f.Init(#pixel, #pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Image Traps" int param v_imagetraps caption = "Version (Image Traps)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_imagetraps < 100 endparam REB_ImageTrapsColoring param f_class caption = "Object" selectable = false endparam } ImageTiles { ; ; global: Image i = new @imageParam final: ; Use #pixel as the complex coordinate inside the image, but scale such that ; the default corner coordinates (-2,1.5)..(2,-1.5) correspond to the entire ; image width. complex c = 0 float width = 0 float height = 0 bool m_empty = i.getEmpty() color pcolor = rgba(0,0,0,0) ; Make sure the ratio of the image is preserved. if @v_imagetiles < 102 if !i.getEmpty() width =i.getWidth() height = i.getHeight() endif complex spix = 0 if @v_imagetiles < 101 spix = #screenpixel*@scale else spix = (#z+(10,10)/#magn)*100*@scale endif c = 1-2*((real(spix-@adjx/width) % (width-@adjx))/width) + \ flip(1-2*((imag(spix-@adjy/height) % (height-@adjy))/height)) #color = i.getColor(c) else if !m_empty complex m_zi = (0,1)^(@iangle/90.0) complex m_zs = (0,1)^(@sangle/90.0) complex pzrs = #z ; offset ; if !@itile pzrs = pzrs+@ioffset ; endif ; aspect ratio pzrs = real(pzrs) + flip(imag(pzrs)*@iaspect) ; rotation pzrs = pzrs*m_zi ; skew pzrs = real(pzrs)*m_zs + flip(imag(pzrs)) width = i.getWidth() height = i.getHeight() if @itile pzrs = (pzrs+500+flip(500))*@scale*500 complex c = @adjw*(@adjx-2*((real(pzrs) % (width-1))/width)) + \ @adjh*(flip(@adjy-2*((imag(pzrs) % (height-1))/height))) pcolor = i.getColor(c) else pcolor = i.getColor(pzrs*@scale) endif endif #color = pcolor endif default: title = "Image Tiles" int param v_imagetiles caption = "Version (Image Tiles)" default = 102 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_imagetiles < 102 endparam Image param imageParam caption = "Image" hint = "The image selected here will fill the entire layer, if combined \ with the Pixel fractal formula and if the location is set to the \ default. To do this, click the Reset button on the Location tab." endparam float param scale caption = "Image scale" default = 1 min = 0 hint = "Changes the scale of the image." endparam float param adjx caption = "Tile adj x" default = 0.99 min = 0.9 max = 1.1 endparam float param adjy caption = "Tile adj y" default = 0.999 min = 0.9 max = 1.1 endparam float param adjw caption = "Tile adj width" default = 1.0 visible = @v_imagetiles >= 102 endparam float param adjh caption = "Tile adj height" default = 1.0 visible = @v_imagetiles >= 102 endparam complex param ioffset caption = "Image offset" default = (0,0) visible = @v_imagetiles >= 102 endparam float param iaspect caption = "Image aspect" default = 1.0 visible = @v_imagetiles >= 102 endparam float param iangle caption = "Image rotation" default = 0 hint = "Rotates the image" visible = @v_imagetiles >= 102 endparam float param sangle caption = "Image skew" default = 0 hint = "Skews the image" visible = @v_imagetiles >= 102 endparam bool param itile caption = "Tile the image" default = false visible = @v_imagetiles >= 102 endparam } TextureLighting { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_LightingDirect f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Lighting with Textures" int param v_lightingwithtextures caption = "Version (Lighting With Textures)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_lightingwithtextures < 100 endparam REB_LightingDirect param f_class caption = "Object" selectable = false endparam } TextureLightingDirect { ; this is a direct coloring method that uses objects and color presets. global: import "common.ulb" import "reb.ulb" REB_TextureLightingDirect f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Lighting Direct with Textures" int param v_lightingdirectwithtextures caption = "Version (Lighting Direct With Textures)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_lightingdirectwithtextures < 100 endparam REB_TextureLightingDirect param f_class caption = "Object" selectable = false endparam } 3DFractalColoringDirect { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_3DFractalColoringDirect f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "3D Fractal Coloring Direct (UF5)" int param v_REB_3DFractalColoringDirect caption = "Version (3D Fractal Coloring Direct (UF5))" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_REB_3DFractalColoringDirect < 100 endparam REB_3DFractalColoringDirect param f_class caption = "Object" selectable = false endparam } 3DFractalColoringDirectProgressive { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_3DFractalColoringDirectProgressive f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "3D Fractal Coloring Direct Progressive" int param v_REB_3DFractalColoringDirectProgressive caption = "Version (3D Fractal Coloring Direct Progressive)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_REB_3DFractalColoringDirectProgressive < 100 endparam REB_3DFractalColoringDirectProgressive param f_class caption = "Object" selectable = false endparam } 3DFractalColoringGradientProgressive { ; this is a gradient coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_3DFractalColoringGradientProgressive f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #index = f.ResultIndex(#z) if (f.IsSolid()) #solid = true endif default: title = "3D Fractal Coloring Gradient Progressive" int param v_REB_3DFractalColoringGradientProgressive caption = "Version (3D Fractal Coloring Gradient Progressive)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_REB_3DFractalColoringGradientProgressive < 100 endparam REB_3DFractalColoringGradientProgressive param f_class caption = "Object" selectable = false endparam } ExponentialSmoothing { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_ExponentialSmoothing f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Exponential Smoothing" int param v_exponentialsmoothing caption = "Version (Exponential Smoothing)" default = 100 hint = "This version parameter is used to detect when a change has \ been made to the formula that is incompatible with the previous version. \ When that happens, this field will reflect the old version number to \ alert you to the fact that an alternate rendering is being used." visible = @v_exponentialsmoothing < 100 endparam REB_ExponentialSmoothing param f_class caption = "Object" selectable = false endparam } EmbossWithTextures { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_Emboss f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Emboss with Textures" int param v_EmbossWithTextures caption = "Version (Emboss With Textures)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_EmbossWithTextures < 100 endparam REB_Emboss param f_class caption = "Object" selectable = false endparam } GaussianIntegerWithTextures { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_GaussianInteger f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Gaussian Integer with Textures" int param v_GaussianIntegerWithTextures caption = "Version (Gaussian Integer With Textures)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_GaussianIntegerWithTextures < 100 endparam REB_GaussianInteger param f_class caption = "Object" selectable = false endparam } GeneralSmoothing { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_GeneralSmoothing f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "General Smoothing" int param v_Generalsmoothing caption = "Version (General Smoothing)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_Generalsmoothing < 100 endparam REB_GeneralSmoothing param f_class caption = "Object" selectable = false endparam } SmoothAlterations { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_SmoothAlterations f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Smooth Alterations" int param v_SmoothAlterations caption = "Version (General Alterations)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_SmoothAlterations < 100 endparam REB_SmoothAlterations param f_class caption = "Object" selectable = false endparam } ImageFilterColoring { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_ImageFilterColoring f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Image Filter Coloring" int param v_ImageFilterColoring caption = "Version (Image Filter Coloring )" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_ImageFilterColoring < 100 endparam REB_ImageFilterColoring param f_class caption = "Object" selectable = false endparam } ExponentialSmoothing_Gradient { ; this is a gradient coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_ExponentialSmoothing_Gradient f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #index = f.ResultIndex(#z) if (f.IsSolid()) #solid = true endif default: title = "Exponential Smoothing Gradient" int param v_exponentialsmoothing caption = "Version (Exponential Smoothing Gradient)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_exponentialsmoothing < 100 endparam REB_ExponentialSmoothing_Gradient param f_class caption = "Object" selectable = false endparam } LineArt_Gradient { ; this is a gradient coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_LineArt_Gradient f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #index = f.ResultIndex(#z) if (f.IsSolid()) #solid = true endif default: title = "Line Art Gradient" int param v_lineart caption = "Version (Line Art Gradient)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_lineart < 100 endparam REB_LineArt_Gradient param f_class caption = "Object" selectable = false endparam } GeneralSmoothing_Gradient { ; this is a gradient coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_GeneralSmoothingGradient f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #index = f.ResultIndex(#z) if (f.IsSolid()) #solid = true endif default: title = "General Smoothing Gradient" int param v_generalsmoothing caption = "Version (General Smoothing Gradient)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_Generalsmoothing < 100 endparam REB_GeneralSmoothingGradient param f_class caption = "Object" selectable = false endparam } DistanceEstimate_Gradient { ; This provides distance estimate coloring for all fractal types
global: import "common.ulb" import "reb.ulb" REB_DistanceEstimateGradient f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #index = f.ResultIndex(#z) if (f.IsSolid()) #solid = true endif default: title = "Distance Estimate Gradient" int param v_distanceestimateg caption = "Version (Distance Estimate Gradient)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_distanceestimateg < 100 endparam REB_DistanceEstimateGradient param f_class caption = "Object" selectable = false endparam } FibersThings { ; this is a direct coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_FibersThings f = new @f_class(0) init: f.Init(#pixel, #pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Fibers and Things" int param v_fibersandthings caption = "Version (Fibers And Things)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_fibersandthings < 100 endparam REB_FibersThings param f_class caption = "Object" selectable = false endparam } FibersThings_Gradient { ; this is a gradient coloring method that uses objects. global: import "common.ulb" import "reb.ulb" REB_FibersThings_Gradient f = new @f_class(0) init: f.Init(#pixel, #pixel) loop: f.Iterate(#z) final: #index = f.ResultIndex(#z) if (f.IsSolid()) #solid = true endif default: title = "Fibers and Things Gradient" int param v_fibersandthingsgrad caption = "Version (Fibers And Things Gradient)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_fibersandthingsgrad < 100 endparam REB_FibersThings_Gradient param f_class caption = "Object" selectable = false endparam } Harkonen_VepstasSmoothing { ; This is a direct coloring method global: import "common.ulb" import "reb.ulb" REB_Harkonen_VepstasSmoothing f = new @f_class(0) init: f.Init(#pixel, #pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Harkonen Vepstas Smoothing" int param v_HarkonenVepstasSmoothing caption = "Version (Harkonen Vepstas Smoothing)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_HarkonenVepstasSmoothing < 100 endparam REB_Harkonen_VepstasSmoothing param f_class caption = "Object" selectable = false endparam } WorleyTextures { ; Implementation of Worley cellular noise with Worley fractal modulation. ; The Euclidian flavor is closely equivalent to Voronoi texturing. ; Jim Blue's random number generator was essential to its development. global: import "jlb.ulb" JLB_Random rndi = new JLB_Random(0) rndi.Init(@seed) rndi.SetNMax(5000) init: loop: final: complex fz[10] complex fzc[10] complex fzz[10] float dst[10] float dst2[10] complex fzc1[10] complex fzc2[10] complex fzc3[10] complex fzc4[10] float dist = 1e20 float dist2 = 1e20 complex cells[12,10] float distance = 0 float test = 0 float sum = 0 float a = 1 complex diff = 0 int rnds[24] float fac[10] float rp[12,10] float ip[12,10] int i = 1 int j = 0 int jmax = 0 rnds[0] = rndi.RandomIntInRange(@seed) while i < 24 rnds[i] = rndi.RandomIntInRange(0) i = i + 1 endwhile i = 0 fac[0] = 1 while i < 10 dst[i] = 1e10 dst2[i] = 1e10 if i > 0 fac[i] = fac[i-1]*(i+1) endif i = i + 1 endwhile complex near = 0 complex fnear[10] if @mode == 0 jmax = 1 else jmax = 5 endif if @type == "Mosaic" jmax = 1 endif while j < jmax if @v_trapshapeworleytextures < 103 complex z = #z/@psize else complex z = (#z+(10,10))/@psize endif if @mode == 1 || @mode == 2 if j == 0 a = @cbl + @ctl + @cbr + @ctr + @cc;/20 elseif j == 1 z = z + @eps*(-1,-1) a = -@cbl elseif j == 2 z = z + @eps*(-1,1) a = -@ctl elseif j == 3 z = z + @eps*(1,-1) a = -@cbr elseif j == 4 z = z + @eps*(1,1) a = -@ctr endif else a = 1 endif j = j + 1 int f = 0 repeat if @nfrac == "2^x" fz[f] = z*2^f elseif @nfrac == "exp(x)" fz[f] = z*exp(f) elseif @nfrac == "cosh(x)" fz[f] = z*cosh(f) elseif @nfrac == "cos(x)" fz[f] = z*cos(f) elseif @nfrac == "sec(x)" fz[f] = z/cos(f) elseif @nfrac == "sech(x)" fz[f] = z/cosh(f) elseif @nfrac == "factorial(x+1)" fz[f] = z*fac[f] endif fzc[f] = round(fz[f]) fzz[f] = fz[f] - fzc[f] ; create the grid fzc1[f] = fzc[f] + (1,1)/2 fzc2[f] = fzc[f] + (1,-1)/2 fzc3[f] = fzc[f] + (-1,1)/2 fzc4[f] = fzc[f] + (-1,-1)/2 ; create the random points ; cell 1 rp[0,f] = ((real(fzc1[f])-rnds[0])^5%rnds[6] - (imag(fzc1[f])+rnds[12])^3%rnds[18])^2 %2 - 1 ip[0,f] = ((real(fzc1[f])-rnds[1])^5%rnds[7] - (imag(fzc1[f])+rnds[13])^3%rnds[19])^2 %2 - 1 rp[1,f] = ((real(fzc1[f])-rnds[2])^5%rnds[8] - (imag(fzc1[f])+rnds[14])^3%rnds[20])^2 %2 - 1 ip[1,f] = ((real(fzc1[f])-rnds[3])^5%rnds[8] - (imag(fzc1[f])+rnds[15])^3%rnds[21])^2 %2 - 1 rp[2,f] = ((real(fzc1[f])-rnds[4])^5%rnds[10] - (imag(fzc1[f])+rnds[16])^3%rnds[22])^2 %2 - 1 ip[2,f] = ((real(fzc1[f])-rnds[5])^5%rnds[11] - (imag(fzc1[f])+rnds[17])^3%rnds[23])^2 %2 - 1 ; cell 2 rp[3,f] = ((real(fzc2[f])-rnds[0])^5%rnds[6] - (imag(fzc2[f])+rnds[12])^3%rnds[18])^2 %2 - 1 ip[3,f] = ((real(fzc2[f])-rnds[1])^5%rnds[7] - (imag(fzc2[f])+rnds[13])^3%rnds[19])^2 %2 - 1 rp[4,f] = ((real(fzc2[f])-rnds[2])^5%rnds[8] - (imag(fzc2[f])+rnds[14])^3%rnds[20])^2 %2 - 1 ip[4,f] = ((real(fzc2[f])-rnds[3])^5%rnds[8] - (imag(fzc2[f])+rnds[15])^3%rnds[21])^2 %2 - 1 rp[5,f] = ((real(fzc2[f])-rnds[4])^5%rnds[10] - (imag(fzc2[f])+rnds[16])^3%rnds[22])^2 %2 - 1 ip[5,f] = ((real(fzc2[f])-rnds[5])^5%rnds[11] - (imag(fzc2[f])+rnds[17])^3%rnds[23])^2 %2 - 1 ; cell 3 rp[6,f] = ((real(fzc3[f])-rnds[0])^5%rnds[6] - (imag(fzc3[f])+rnds[12])^3%rnds[18])^2 %2 - 1 ip[6,f] = ((real(fzc3[f])-rnds[1])^5%rnds[7] - (imag(fzc3[f])+rnds[13])^3%rnds[19])^2 %2 - 1 rp[7,f] = ((real(fzc3[f])-rnds[2])^5%rnds[8] - (imag(fzc3[f])+rnds[14])^3%rnds[20])^2 %2 - 1 ip[7,f] = ((real(fzc3[f])-rnds[3])^5%rnds[8] - (imag(fzc3[f])+rnds[15])^3%rnds[21])^2 %2 - 1 rp[8,f] = ((real(fzc3[f])-rnds[4])^5%rnds[10] - (imag(fzc3[f])+rnds[16])^3%rnds[22])^2 %2 - 1 ip[8,f] = ((real(fzc3[f])-rnds[5])^5%rnds[11] - (imag(fzc3[f])+rnds[17])^3%rnds[23])^2 %2 - 1 ; cell 4 rp[9,f] = ((real(fzc4[f])-rnds[0])^5%rnds[6] - (imag(fzc4[f])+rnds[12])^3%rnds[18])^2 %2 - 1 ip[9,f] = ((real(fzc4[f])-rnds[1])^5%rnds[7] - (imag(fzc4[f])+rnds[13])^3%rnds[19])^2 %2 - 1 rp[10,f] = ((real(fzc4[f])-rnds[2])^5%rnds[8] - (imag(fzc4[f])+rnds[14])^3%rnds[20])^2 %2 - 1 ip[10,f] = ((real(fzc4[f])-rnds[3])^5%rnds[8] - (imag(fzc4[f])+rnds[15])^3%rnds[21])^2 %2 - 1 rp[11,f] = ((real(fzc4[f])-rnds[4])^5%rnds[10] - (imag(fzc4[f])+rnds[16])^3%rnds[22])^2 %2 - 1 ip[11,f] = ((real(fzc4[f])-rnds[5])^5%rnds[11] - (imag(fzc4[f])+rnds[17])^3%rnds[23])^2 %2 - 1 ; put into the grids cells[0,f] = (rp[0,f] + flip(ip[0,f]) + (1,1))/2 cells[1,f] = (rp[1,f] + flip(ip[1,f]) + (1,1))/2 cells[2,f] = (rp[2,f] + flip(ip[2,f]) + (1,1))/2 cells[3,f] = (rp[3,f] + flip(ip[3,f]) + (1,-1))/2 cells[4,f] = (rp[4,f] + flip(ip[4,f]) + (1,-1))/2 cells[5,f] = (rp[5,f] + flip(ip[5,f]) + (1,-1))/2 cells[6,f] = (rp[6,f] + flip(ip[6,f]) + (-1,1))/2 cells[7,f] = (rp[7,f] + flip(ip[7,f]) + (-1,1))/2 cells[8,f] = (rp[8,f] + flip(ip[8,f]) + (-1,1))/2 cells[9,f] = (rp[9,f] + flip(ip[9,f]) + (-1,-1))/2 cells[10,f] = (rp[10,f] + flip(ip[10,f]) + (-1,-1))/2 cells[11,f] = (rp[11,f] + flip(ip[11,f]) + (-1,-1))/2 i = 0 while i < 12 diff = fzz[f] - cells[i,f] if @flavor == "Euclidian" test = cabs(diff) elseif @flavor == "Manhattan" test = (abs(real(diff))^real(@mp) + abs(imag(diff))^imag(@mp)) elseif @flavor == "Chebychev" if abs(real(diff)) > abs(imag(diff)) test = abs(real(diff)) else test = abs(imag(diff)) endif elseif @flavor == "Minkovsky" test = (abs(real(diff))^@ex + abs(imag(diff))^@ex)^(1/@ex) elseif @flavor == "Exp/Log Manhattan" test = log(exp(abs(real(diff))) + exp(abs(imag(diff)))) endif if test < dst[f] dst2[f] = dst[f] dst[f] = test fnear[f] = fzc[f] + cells[i,f] elseif test < dst2[f] dst2[f] = test endif i = i + 1 endwhile i = 0 f = f + 1 until (f-1) == @fmax f = 0 repeat if f == 0 dist = dst[0] dist2 = dst2[0] near = fnear[0] else if @nfrac == "2^x" dist = dist + 2^(-f)*dst[f] dist2 = dist2 + 2^(-f)*dst2[f] near = near + 2^(-f)*fnear[f] elseif @nfrac == "exp(x)" dist = dist + exp(-f)*dst[f] dist2 = dist2 + exp(-f)*dst2[f] near = near + exp(-f)*fnear[f] elseif @nfrac == "cosh(x)" dist = dist + 1/cosh(f)*dst[f] dist2 = dist2 + 1/cosh(f)*dst2[f] near = near + 1/cosh(f)*fnear[f] elseif @nfrac == "cos(x)" dist = dist + 1/cos(f)*dst[f] dist2 = dist2 + 1/cos(f)*dst2[f] near = near + 1/cos(f)*fnear[f] elseif @nfrac == "sec(x)" dist = dist + cos(f)*dst[f] dist2 = dist2 + cos(f)*dst2[f] near = near + cos(f)*fnear[f] elseif @nfrac == "sech(x)" dist = dist + cosh(f)*dst[f] dist2 = dist2 + cosh(f)*dst2[f] near = near + cosh(f)*fnear[f] elseif @nfrac == "factorial(x+1)" dist = dist + 1/fac[f]*dst[f] dist2 = dist2 + 1/fac[f]*dst2[f] near = near + 1/fac[f]*fnear[f] endif endif f = f + 1 until (f-1) == @fmax if @type == "Distance" distance = dist^@thick elseif @type == "2nd Distance" distance = (@smod*dist2-dist)^@thick elseif @type == "2nd Distance variant" distance = dist2^@thick elseif @type == "Mosaic" distance = cabs(1000*near) + 1000*atan(cabs(near)+#pi)%1 endif if @mode != 2 sum = sum + a*distance else sum = sum + a*abs(distance) endif distance = 0 endwhile if @mode == 2 sum = 3*abs(sum) endif if @mode == 1 distance = sum/(10*@eps*(abs(@cbl + @ctl + @cbr + @ctr)+1)) else distance = sum endif if @dmod != 0 distance = distance*@dmod endif if @type != "Mosaic" if !@invert #index = distance else #index = abs(1-distance) endif else #index = distance % 1 endif default: title = "Worley Textures" int param v_trapshapeworleytextures caption = "Version (Trap Shape Worley Textures)" default = 103 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_trapshapeworleytextures < 103 endparam param flavor caption = "Flavor" default = 4 enum = "Euclidian" "Chebychev" "Exp/Log Manhattan" \ "Manhattan" "Minkovsky" endparam float param ex caption = "Minkovsky param" default = 4 visible = @flavor == "Minkovsky" endparam complex param mp caption = "Manhattan pwr" default = (1,1) visible = @flavor == "Manhattan" endparam param type caption = "Worley type" default = 2 enum = "Distance" "2nd Distance" "2nd Distance variant" "Mosaic" endparam float param smod caption = "2nd dist mod" default = 1.0 visible = @type == "2nd Distance" endparam float param psize caption = "Pattern Size" default = .15 endparam float param thick caption = "Thickness" default = 4 endparam float param dmod caption = "Dist modulator" default = 0.0 min = 0.0 endparam int param fmax caption = "Fractal iterations" default = 4 max = 9 endparam param nfrac caption = "Fractal function" default = 0 enum = "2^x" "factorial(x+1)" "cos(x)" "cosh(x)" "exp(x)" "sec(x)" "sech(x)" endparam bool param invert caption = "Invert" default = false visible = @type != "Mosaic" endparam int param seed caption = "Worley seed" default = 123 endparam param mode caption = "Mode" default = 0 enum = "Normal" "Convolution" "Absolute Convolution" visible = @type != "Mosaic" endparam param cc caption = "Center Extra Weight" default = 0.0 visible = @mode != "Normal" && @type != "Mosaic" endparam param cbl caption = "Bottom Left Weight" default = 1.0 visible = @mode != "Normal" && @type != "Mosaic" endparam param ctl caption = "Top Left Weight" default = 0.0 visible = @mode != "Normal" && @type != "Mosaic" endparam param cbr caption = "Bottom Right Weight" default = 0.0 visible = @mode != "Normal" && @type != "Mosaic" endparam param ctr caption = "Top Right Weight" default = 0.0 visible = @mode != "Normal" && @type != "Mosaic" endparam param eps caption = "Epsilon" default = 0.006 visible = @mode != "Normal" && @type != "Mosaic" endparam } REB_Raytrace { global: import "reb.ulb" Raytracesphere rsp = new @rsp(0) init: rsp.ViewPoint() int regress = 0 int i = -1 float dif = 0 float sbr = 0 color scolor = rgba(0,0,0,0) rsp.Intersect(rsp.origin, rsp.view, regress,i,dif,sbr, scolor) loop: final: if rsp.inter[0] #color = rsp.result() else #solid = true endif default: title = "Plane and Sphere Raytracing" int param v_raytrace caption = "Version (Plane and Sphere Raytracing)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_raytrace < 100 endparam RaytraceSphere param rsp caption = "Select Raytracer" default = RayTraceSphere endparam } REB_MeshRaytrace { global: import "reb.ulb" import "common.ulb" raytracegeneric mesh = new @f_mesh(0) init: mesh.ViewPoint() int regress = 0 int i = -1 float dif = 0 float sbr = 0 color scolor = rgba(0,0,0,0) mesh.Intersect(mesh.origin, mesh.view, regress,i,dif,sbr, scolor) loop: final: if !mesh.m_solid #color = mesh.result() else #solid = true endif default: title = "Mesh Raytracing" render = false int param v_raytrace caption = "Version (Plane and Sphere Raytracing)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_raytrace < 100 endparam heading text = "This is a raytracer designed for 3D meshes. A variety of different \ mesh objects are available as plugins. The primary intent of this \ raytracer is to create heightfield fractal images from formulas such \ as Mandelbrot and Julia, but it will work with any properly formatted \ mesh." endheading RaytraceGeneric param f_mesh caption = "Select Raytracer" default = RayTraceMesh endparam } KleinianLimitSets {; 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. ; modified Feb 2010 to allow mapping transforms to work. ; global: import "common.ulb" import "reb.ulb" Circle C = new Circle(0,0) Circle cir[4] Mobius gen[4] MobiusArray word = new MobiusArray(@level) complex cs[4] float rad[4] int tag[] setlength(tag,@level) float magn = #magn float scrsize = #width*#height float epsilon = @epsilon ; this uses a 640x640 screen with magn = 1 as the reference if @screen epsilon = epsilon*409600/scrsize/magn endif 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) int ilev = 0 complex ta = @ta complex tb = @tb complex taj = @taj complex tbj = @tbj if !@expert && @typeb == "Double Cusps" tb = (2,0) if @tb2 == "1 100 Cusp" ta = (1.99901430461837,-3.94468287279129e-005) elseif @tb2 == "1 99 Cusp" ta = (1.99899431720688,-4.06536410107979e-005) elseif @tb2 == "1 98 Cusp" ta = (1.9989737159102,-4.19101798220381e-005) elseif @tb2 == "1 97 Cusp" ta = (1.99895247534081,-4.32190326141746e-005) elseif @tb2 == "1 96 Cusp" ta = (1.99893056878569,-4.45829500728911e-005) elseif @tb2 == "1 95 Cusp" ta = (1.99890796812253,-4.60048582566762e-005) elseif @tb2 == "1 94 Cusp" ta = (1.99888464372953,-4.74878717791897e-005) elseif @tb2 == "1 93 Cusp" ta = (1.99886056438849,-4.90353081361803e-005) elseif @tb2 == "1 92 Cusp" ta = (1.99883569718054, -5.06507032899056e-005 ) elseif @tb2 == "1 91 Cusp" ta = (1.99881000737372, -5.23378286366251e-005 ) elseif @tb2 == "1 90 Cusp" ta = (1.99878345830198, -5.41007094967586e-005 ) elseif @tb2 == "1 89 Cusp" ta = (1.99875601123446, -5.59436452831306e-005 ) elseif @tb2 == "1 88 Cusp" ta = (1.99872762523451, -5.78712315206112e-005 ) elseif @tb2 == "1 87 Cusp" ta = (1.99869825700728, -5.98883839104726e-005 ) elseif @tb2 == "1 86 Cusp" ta = (1.99866786073491, -6.20003646555514e-005 ) elseif @tb2 == "1 85 Cusp" ta = (1.99863638789812, -6.42128112880125e-005 ) elseif @tb2 == "1 84 Cusp" ta = (1.99860378708289, -6.6531768270374e-005 ) elseif @tb2 == "1 83 Cusp" ta = (1.99857000377094, -6.89637216736763e-005 ) elseif @tb2 == "1 82 Cusp" ta = (1.99853498011211, -7.1515637273881e-005 ) elseif @tb2 == "1 81 Cusp" ta = (1.99849865467725, -7.41950024501643e-005 ) elseif @tb2 == "1 80 Cusp" ta = (1.9984609621893, -7.70098723173037e-005 ) elseif @tb2 == "1 79 Cusp" ta = (1.99842183323067, -7.99689205795116e-005 ) elseif @tb2 == "1 78 Cusp" ta = (1.99838119392419, -8.30814956562384e-005 ) elseif @tb2 == "1 77 Cusp" ta = (1.99833896558518, -8.6357682702745e-005 ) elseif @tb2 == "1 76 Cusp" ta = (1.99829506434132, -8.98083722309798e-005 ) elseif @tb2 == "1 75 Cusp" ta = (1.99824940071714, -9.34453361314189e-005 ) elseif @tb2 == "1 74 Cusp" ta = (1.9982018791791, -9.72813120059043e-005 ) elseif @tb2 == "1 73 Cusp" ta = (1.99815239763705, -0.000101330096847397 ) elseif @tb2 == "1 72 Cusp" ta = (1.99810084689722, -0.000105606651248239 ) elseif @tb2 == "1 71 Cusp" ta = (1.99804711006127, -0.00011012721548651 ) elseif @tb2 == "1 70 Cusp" ta = (1.99799106186519, -0.000114909439035311 ) elseif @tb2 == "1 69 Cusp" ta = (1.99793256795121, -0.000119972525265888 ) elseif @tb2 == "1 68 Cusp" ta = (1.99787148406466, -0.000125337393379198 ) elseif @tb2 == "1 67 Cusp" ta = (1.997807655167, -0.000131026859907596 ) elseif @tb2 == "1 66 Cusp" ta = (1.99774091445482, -0.000137065842487068 ) elseif @tb2 == "1 65 Cusp" ta = (1.99767108227317, -0.000143481589021138 ) elseif @tb2 == "1 64 Cusp" ta = (1.99759796491017, -0.000150303935850653 ) elseif @tb2 == "1 63 Cusp" ta = (1.9975213532577, -0.000157565599124571 ) elseif @tb2 == "1 62 Cusp" ta = (1.99744102132112, -0.000165302504251451 ) elseif @tb2 == "1 61 Cusp" ta = (1.99735672455799, -0.000173554159121326 ) elseif @tb2 == "1 60 Cusp" ta = (1.9972681980234, -0.00018236407774757 ) elseif @tb2 == "1 59 Cusp" ta = (1.99717515429532, -0.000191780262119592 ) elseif @tb2 == "1 58 Cusp" ta = (1.99707728115019, -0.000201855751417508 ) elseif @tb2 == "1 57 Cusp" ta = (1.99697423895338, -0.000212649249366021 ) elseif @tb2 == "1 56 Cusp" ta = (1.99686565772422, -0.000224225842454006 ) elseif @tb2 == "1 55 Cusp" ta = (1.99675113382827, -0.000236657824091019 ) elseif @tb2 == "1 54 Cusp" ta = (1.99663022624189, -0.000250025642599258 ) elseif @tb2 == "1 53 Cusp" ta = (1.99650245232486, -0.000264418994362519 ) elseif @tb2 == "1 52 Cusp" ta = (1.99636728302562, -0.000279938087609131 ) elseif @tb2 == "1 51 Cusp" ta = (1.9962241374307, -0.000296695107370017 ) elseif @tb2 == "1 50 Cusp" ta = (1.99607237655389, -0.000314815918345818 ) elseif @tb2 == "2 99 Cusp" ta = (1.99599050389291, -0.000302826761310194 ) elseif @tb2 == "1 49 Cusp" ta = (1.99591129624176, -0.00033444205001897 ) elseif @tb2 == "2 97 Cusp" ta = (1.995824261303, -0.000321908870566882 ) elseif @tb2 == "1 48 Cusp" ta = (1.99574011904931, -0.000355733017713707 ) elseif @tb2 == "2 95 Cusp" ta = (1.99564747936886, -0.000342627590592596 ) elseif @tb2 == "1 47 Cusp" ta = (1.99555798491149, -0.000378869044897214 ) elseif @tb2 == "2 93 Cusp" ta = (1.99545924967856, -0.000365162106570409 ) elseif @tb2 == "1 46 Cusp" ta = (1.99536394040289, -0.000404054266414318 ) elseif @tb2 == "2 91 Cusp" ta = (1.99525856399236, -0.000389715655818072 ) elseif @tb2 == "1 45 Cusp" ta = (1.99515692633652, -0.000431520510316748 ) elseif @tb2 == "2 89 Cusp" ta = (1.99504430081134, -0.000416519377765561 ) elseif @tb2 == "1 44 Cusp" ta = (1.99493576340238, -0.000461531778471287 ) elseif @tb2 == "2 87 Cusp" ta = (1.99481520979447, -0.000445836884145033 ) elseif @tb2 == "1 43 Cusp" ta = (1.99469913548454, -0.000494389574498494 ) elseif @tb2 == "2 85 Cusp" ta = (1.99456989362174, -0.000477969704463252 ) elseif @tb2 == "1 42 Cusp" ta = (1.99444557021904, -0.00053043926349546 ) elseif @tb2 == "2 83 Cusp" ta = (1.99430678681517, -0.000513263799800097 ) elseif @tb2 == "1 41 Cusp" ta = (1.99417341626014, -0.000570077693669288 ) elseif @tb2 == "2 81 Cusp" ta = (1.99402413092154, -0.000552117386425605 ) elseif @tb2 == "1 40 Cusp" ta = (1.99388081660435, -0.000613762368422383 ) elseif @tb2 == "2 79 Cusp" ta = (1.9937199453271, -0.000594990372882691 ) elseif @tb2 == "1 39 Cusp" ta = (1.9935656771742, -0.000662022532560182 ) elseif @tb2 == "2 77 Cusp" ta = (1.99339199280554, -0.000642415794379296 ) elseif @tb2 == "1 38 Cusp" ta = (1.99322562967739, -0.000715472633487284 ) elseif @tb2 == "2 75 Cusp" ta = (1.99303773868825, -0.000695013732434389 ) elseif @tb2 == "1 37 Cusp" ta = (1.99285798752259, -0.000774828744772312 ) elseif @tb2 == "2 73 Cusp" ta = (1.99265430227584, -0.000753508343704843 ) elseif @tb2 == "1 36 Cusp" ta = (1.99245969327414, -0.000840928705201269 ) elseif @tb2 == "2 71 Cusp" ta = (1.99223839876543, -0.000818748800728365 ) elseif @tb2 == "1 35 Cusp" ta = (1.99202725574611, -0.000914756945033699 ) elseif @tb2 == "2 69 Cusp" ta = (1.99178626952661, -0.000891735184075836 ) elseif @tb2 == "1 34 Cusp" ta = (1.99155667434552, -0.000997475261530436 ) elseif @tb2 == "2 67 Cusp" ta = (1.99129359798733, -0.000973650681192954 ) elseif @tb2 == "3 100 Cusp" ta = (1.99118310579765, -0.000982081178197968 ) elseif @tb2 == "1 33 Cusp" ta = (1.99104334763896, -0.00109046119437876 ) elseif @tb2 == "3 98 Cusp" ta = (1.99087039335651, -0.00103510324471653 ) elseif @tb2 == "2 65 Cusp" ta = (1.99075540764957, -0.0010659018716548 ) elseif @tb2 == "3 97 Cusp" ta = (1.99063445664943, -0.00107575915147616 ) elseif @tb2 == "1 32 Cusp" ta = (1.99048196228964, -0.00119535617570751 ) elseif @tb2 == "3 95 Cusp" ta = (1.99029195400625, -0.00113568443648419 ) elseif @tb2 == "2 63 Cusp" ta = (1.99016593778279, -0.00117016945368613 ) elseif @tb2 == "3 94 Cusp" ta = (1.99003317081515, -0.00118172465840652 ) elseif @tb2 == "1 31 Cusp" ta = (1.98986635742763, -0.00131412634209405 ) elseif @tb2 == "3 92 Cusp" ta = (1.9896569881241, -0.00124971242247813 ) elseif @tb2 == "2 61 Cusp" ta = (1.98951849106342, -0.00128847255280414 ) elseif @tb2 == "3 91 Cusp" ta = (1.98937232453485, -0.00130205735036854 ) elseif @tb2 == "1 30 Cusp" ta = (1.98918935808351, -0.00144913987372271 ) elseif @tb2 == "3 89 Cusp" ta = (1.9889579190403, -0.00137950812827617 ) elseif @tb2 == "2 59 Cusp" ta = (1.98880524572891, -0.00142325083739354 ) elseif @tb2 == "3 88 Cusp" ta = (1.988643822958, -0.00143927328785713 ) elseif @tb2 == "1 29 Cusp" ta = (1.98844256941169, -0.00160326607967498 ) elseif @tb2 == "3 86 Cusp" ta = (1.98818586371941, -0.0015278894529628 ) elseif @tb2 == "2 57 Cusp" ta = (1.98801702254084, -0.00157747017524244 ) elseif @tb2 == "3 85 Cusp" ta = (1.98783815556501, -0.00159643544120011 ) elseif @tb2 == "1 28 Cusp" ta = (1.98761612087623, -0.00178000334127618 ) elseif @tb2 == "3 83 Cusp" ta = (1.9873303545438, -0.00169829974910283 ) elseif @tb2 == "2 55 Cusp" ta = (1.98714299378356, -0.0017547596878262 ) elseif @tb2 == "3 82 Cusp" ta = (1.98694409026517, -0.0017772972960991 ) elseif @tb2 == "1 27 Cusp" ta = (1.98669834612303, -0.00198364569977066 ) elseif @tb2 == "3 80 Cusp" ta = (1.98637898994136, -0.00189497562730924 ) elseif @tb2 == "2 53 Cusp" ta = (1.98617031735114, -0.00195959107718921 ) elseif @tb2 == "3 79 Cusp" ta = (1.98594828809198, -0.00198649112750959 ) elseif @tb2 == "1 26 Cusp" ta = (1.98567537956244, -0.00221950169474929 ) elseif @tb2 == "3 77 Cusp" ta = (1.98531699245449, -0.00212316812794516 ) elseif @tb2 == "2 51 Cusp" ta = (1.9850836732455, -0.00219751544070799 ) elseif @tb2 == "3 76 Cusp" ta = (1.9848348142511, -0.00222977716161396 ) elseif @tb2 == "1 25 Cusp" ta = (1.98453064422662, -0.00249418458091967 ) elseif @tb2 == "4 99 Cusp" ta = (1.98427416931522, -0.00237401043014847 ) elseif @tb2 == "3 74 Cusp" ta = (1.98412664540044, -0.00238943708693196 ) elseif @tb2 == "2 49 Cusp" ta = (1.98386467186949, -0.00247547910791375 ) elseif @tb2 == "3 73 Cusp" ta = (1.9835845127117, -0.00251437664397944 ) elseif @tb2 == "4 97 Cusp" ta = (1.98343590736241, -0.00256871904654488 ) elseif @tb2 == "1 24 Cusp" ta = (1.98324419650673, -0.00281600113062354 ) elseif @tb2 == "4 95 Cusp" ta = (1.98295318931335, -0.00268303826059932 ) elseif @tb2 == "3 71 Cusp" ta = (1.9827865688695, -0.00270204703117765 ) elseif @tb2 == "2 47 Cusp" ta = (1.9824910923898, -0.00280224935341235 ) elseif @tb2 == "3 70 Cusp" ta = (1.98217419951602, -0.00284942189026027 ) elseif @tb2 == "4 93 Cusp" ta = (1.98200635855349, -0.00291271120827119 ) elseif @tb2 == "1 23 Cusp" ta = (1.98179188083203, -0.00319547821225485 ) elseif @tb2 == "4 91 Cusp" ta = (1.98145991376578, -0.00304796689921043 ) elseif @tb2 == "3 68 Cusp" ta = (1.9812707811269, -0.00307150562795715 ) elseif @tb2 == "2 45 Cusp" ta = (1.98093589374297, -0.00318899477888921 ) elseif @tb2 == "3 67 Cusp" ta = (1.9805756129501, -0.00324657148960799 ) elseif @tb2 == "4 89 Cusp" ta = (1.98038510486514, -0.00332079504008199 ) elseif @tb2 == "1 22 Cusp" ta = (1.98014422962443, -0.00364608436053273 ) elseif @tb2 == "4 87 Cusp" ta = (1.9797633226525, -0.00348198993256664 ) elseif @tb2 == "3 65 Cusp" ta = (1.97954747054753, -0.00351130491612474 ) elseif @tb2 == "2 43 Cusp" ta = (1.9791659184285, -0.00365008631808848 ) elseif @tb2 == "3 64 Cusp" ta = (1.97875403431576, -0.00372086182800674 ) elseif @tb2 == "4 85 Cusp" ta = (1.9785366375774, -0.00380857094859243 ) elseif @tb2 == "1 21 Cusp" ta = (1.97826501855805, -0.00418523108751827 ) elseif @tb2 == "4 83 Cusp" ta = (1.97782517163056, -0.00400220727808413 ) elseif @tb2 == "3 62 Cusp" ta = (1.97757737302949, -0.00403895507285699 ) elseif @tb2 == "2 41 Cusp" ta = (1.97714017684872, -0.00420421746209821 ) elseif @tb2 == "3 61 Cusp" ta = (1.97666645769743, -0.00429190171358408 ) elseif @tb2 == "4 81 Cusp" ta = (1.97641693596931, -0.00439640948291062 ) elseif @tb2 == "1 20 Cusp" ta = (1.97610935068938, -0.0048356814305054 ) elseif @tb2 == "5 99 Cusp" ta = (1.97577082270036, -0.00463963202167173 ) elseif @tb2 == "4 79 Cusp" ta = (1.97559790529887, -0.00463103796619251 ) elseif @tb2 == "3 59 Cusp" ta = (1.97531160583503, -0.0046774466433349 ) elseif @tb2 == "5 98 Cusp" ta = (1.97506564944039, -0.00467924650240791 ) elseif @tb2 == "2 39 Cusp" ta = (1.97480755268071, -0.00487599353379615 ) elseif @tb2 == "5 97 Cusp" ta = (1.97447829169239, -0.00484864718842347 ) elseif @tb2 == "3 58 Cusp" ta = (1.97425913534544, -0.00498557301812612 ) elseif @tb2 == "4 77 Cusp" ta = (1.97397093622453, -0.00511123563731843 ) elseif @tb2 == "5 96 Cusp" ta = (1.97381480826131, -0.00522438591683935 ) elseif @tb2 == "1 19 Cusp" ta = (1.97362108998276, -0.00562756077647972 ) elseif @tb2 == "5 94 Cusp" ta = (1.97322351235997, -0.00540527878916153 ) elseif @tb2 == "4 75 cusp" ta = (1.97302184562455, -0.00539824525561619 ) elseif @tb2 == "3 56 cusp" ta = (1.97268874395893, -0.00545735070078539 ) elseif @tb2 == "5 93 cusp" ta = (1.97240167058905, -0.00546375788162995 ) elseif @tb2 == "2 37 cusp" ta = (1.97210370000517, -0.00569822174936011 ) elseif @tb2 == "5 92 cusp" ta = (1.97171820464815, -0.00567221133263863 ) elseif @tb2 == "3 55 cusp" ta = (1.9714642486309, -0.00583649040737144 ) elseif @tb2 == "4 73 cusp" ta = (1.97112909571369, -0.00598911426160694 ) elseif @tb2 == "5 91 cusp" ta = (1.97094833024447, -0.00612474301080661 ) elseif @tb2 == "1 18 cusp" ta = (1.97072938694765, -0.0066012737577737 ) elseif @tb2 == "5 89 cusp" ta = (1.97025843018908, -0.00634825468760812 ) elseif @tb2 == "4 71 cusp" ta = (1.97002136051977, -0.00634388761475728 ) elseif @tb2 == "3 53 cusp" ta = (1.96963082851069, -0.00641988586014377 ) elseif @tb2 == "5 88 cusp" ta = (1.96929306899787, -0.00643307021578776 ) elseif @tb2 == "2 35 cusp" ta = (1.96894679890397, -0.00671526740551138 ) elseif @tb2 == "5 87 cusp" ta = (1.96849168781809, -0.00669245005244188 ) elseif @tb2 == "3 52 cusp" ta = (1.96819533980196, -0.0068916210281848 ) elseif @tb2 == "4 69 cusp" ta = (1.96780267452217, -0.00707906217721653 ) elseif @tb2 == "5 86 cusp" ta = (1.96759196498424, -0.00724334470060228 ) elseif @tb2 == "1 17 cusp" ta = (1.96734392417996, -0.00781180971110045 ) elseif @tb2 == "5 84 cusp" ta = (1.96678071619408, -0.00752270698574377 ) elseif @tb2 == "4 67 cusp" ta = (1.96649958052083, -0.00752269663657521 ) elseif @tb2 == "3 50 cusp" ta = (1.96603785123322, -0.00762147927688077 ) elseif @tb2 == "5 83 cusp" ta = (1.96563693113603, -0.0076446475772054 ) elseif @tb2 == "2 33 cusp" ta = (1.96523167972738, -0.00798806419743524 ) elseif @tb2 == "5 82 cusp" ta = (1.96468941330382, -0.00797140772296354 ) elseif @tb2 == "3 49 cusp" ta = (1.96434096651092, -0.00821571269736277 ) elseif @tb2 == "4 65 cusp" ta = (1.96387717657261, -0.00844877714983066 ) elseif @tb2 == "5 81 cusp" ta = (1.96362977494822, -0.00865009844142584 ) elseif @tb2 == "6 97 cusp" ta = (1.96349818685762, -0.00880643092943426 ) elseif @tb2 == "1 16 cusp" ta = (1.96334833922341, -0.00933521928138505 ) elseif @tb2 == "6 95 cusp" ta = (1.96287664052495, -0.0090374092077661 ) elseif @tb2 == "5 79 cusp" ta = (1.96266765778032, -0.00900374884805982 ) elseif @tb2 == "4 63 cusp" ta = (1.96233102429466, -0.00901070030494782 ) elseif @tb2 == "3 47 cusp" ta = (1.96178003882406, -0.00914068527311069 ) elseif @tb2 == "5 78 cusp" ta = (1.96129947605509, -0.00917864500026296 ) elseif @tb2 == "2 31 cusp" ta = (1.96082158913163, -0.00960174651921745 ) elseif @tb2 == "5 77 cusp" ta = (1.96016885240338, -0.00959600338465053 ) elseif @tb2 == "3 46 cusp" ta = (1.95975577769508, -0.009899604186663 ) elseif @tb2 == "4 61 cusp" ta = (1.95920312036672, -0.0101934290193744 ) elseif @tb2 == "5 76 cusp" ta = (1.95891037827547, -0.0104433755651494 ) elseif @tb2 == "6 91 cusp" ta = (1.95875612070914, -0.010635876445882 ) elseif @tb2 == "1 15 cusp" ta = (1.95859103011179, -0.0112785606117653 ) elseif @tb2 == "6 89 cusp" ta = (1.95801242566776, -0.0109322947280686 ) elseif @tb2 == "5 74 cusp" ta = (1.9577586178408, -0.01089748382692 ) elseif @tb2 == "4 59 cusp" ta = (1.95735117907802, -0.0109154603204564 ) elseif @tb2 == "3 44 cusp" ta = (1.95668692498529, -0.0110889108550814 ) elseif @tb2 == "5 73 cusp" ta = (1.95610462181434, -0.0111489911449862 ) elseif @tb2 == "2 29 cusp" ta = (1.95553651105211, -0.0116775360369713 ) elseif @tb2 == "5 72 cusp" ta = (1.95474183499197, -0.0116903757929234 ) elseif @tb2 == "3 43 cusp" ta = (1.9542478083941, -0.0120732395941014 ) elseif @tb2 == "7 100 cusp" ta = (1.95381270140627, -0.0121703546497991 ) elseif @tb2 == "4 57 cusp" ta = (1.95358289644935, -0.012449461789244 ) elseif @tb2 == "5 71 cusp" ta = (1.95323365402707, -0.0127643570234274 ) elseif @tb2 == "6 85 cusp" ta = (1.95305170147358, -0.0130047103975409 ) elseif @tb2 == "7 99 cusp" ta = (1.95295625030634, -0.0131808677449372 ) elseif @tb2 == "1 14 cusp" ta = (1.9528721810022, -0.0137955227468 ) elseif @tb2 == "7 97 cusp" ta = (1.95235226351607, -0.0134428405508166 ) elseif @tb2 == "6 83 cusp" ta = (1.95215277894798, -0.0133911780935627 ) elseif @tb2 == "5 69 cusp" ta = (1.95184067513134, -0.0133568342265842 ) elseif @tb2 == "4 55 cusp" ta = (1.9513416060412, -0.0133922717327689 ) elseif @tb2 == "7 96 cusp" ta = (1.95094931392838, -0.0133580938693502 ) elseif @tb2 == "3 41 cusp" ta = (1.9505316884272, -0.0136274439890693 ) elseif @tb2 == "5 68 cusp" ta = (1.94981754636598, -0.0137210382129816 ) elseif @tb2 == "7 95 cusp" ta = (1.94947586570137, -0.0138579503448613 ) elseif @tb2 == "2 27 cusp" ta = (1.94913641322158, -0.0143917087902926 ) elseif @tb2 == "7 94 cusp" ta = (1.94850460464154, -0.0142752077735279 ) elseif @tb2 == "5 67 cusp" ta = (1.94815661344043, -0.0144356673576448 ) elseif @tb2 == "3 40 cusp" ta = (1.94756018575649, -0.014926563282404 ) elseif @tb2 == "7 93 cusp" ta = (1.94702568970665, -0.0150627551825645 ) elseif @tb2 == "4 53 cusp" ta = (1.94675185021225, -0.0154168136316494 ) elseif @tb2 == "5 66 cusp" ta = (1.94633163959775, -0.015820153138501 ) elseif @tb2 == "6 79 cusp" ta = (1.94611578065359, -0.0161249904019047 ) elseif @tb2 == "7 92 cusp" ta = (1.94600459460402, -0.0163469800730922 ) elseif @tb2 == "1 13 cusp" ta = (1.94592532766745, -0.0171115791894153 ) elseif @tb2 == "7 90 cusp" ta = (1.94526682624295, -0.016694444108924 ) elseif @tb2 == "6 77 cusp" ta = (1.94501713183308, -0.0166379203371813 ) elseif @tb2 == "5 64 cusp" ta = (1.9446279540508, -0.0166071780492544 ) elseif @tb2 == "4 51 cusp" ta = (1.94400843288882, -0.016670466160479 ) elseif @tb2 == "7 89 cusp" ta = (1.94351851479667, -0.0166430542087335 ) elseif @tb2 == "3 38 cusp" ta = (1.94300847511842, -0.0169952047980262 ) elseif @tb2 == "5 63 cusp" ta = (1.94212079754092, -0.0171404275315579 ) elseif @tb2 == "7 88 cusp" ta = (1.94169933327905, -0.0173253128424407 ) elseif @tb2 == "2 25 cusp" ta = (1.94129699312835, -0.0180066769550965 ) elseif @tb2 == "7 87 cusp" ta = (1.94050123038393, -0.0178869566207848 ) elseif @tb2 == "5 62 cusp" ta = (1.94007174253183, -0.0181026045375301 ) elseif @tb2 == "8 99 cusp" ta = (1.93966287708828, -0.0182479584530031 ) elseif @tb2 == "3 37 cusp" ta = (1.93934455154316, -0.0187439961349559 ) elseif @tb2 == "7 86 cusp" ta = (1.9386791851813, -0.0189384412708226 ) elseif @tb2 == "4 49 cusp" ta = (1.93835083660474, -0.019395686513188 ) elseif @tb2 == "5 61 cusp" ta = (1.93784089766301, -0.0199221018161114 ) elseif @tb2 == "6 73 cusp" ta = (1.93758362324773, -0.0203156317724959 ) elseif @tb2 == "7 85 cusp" ta = (1.93745426139719, -0.0206001389227347 ) elseif @tb2 == "8 97 cusp" ta = (1.93738908572758, -0.0208053498842556 ) elseif @tb2 == "1 12 cusp" ta = (1.9373911207239, -0.0215655850383779 ) elseif @tb2 == "8 95 cusp" ta = (1.93675322165046, -0.0211353712469864 ) elseif @tb2 == "7 83 cusp" ta = (1.93654230202652, -0.0210702939619346 ) elseif @tb2 == "6 71 cusp" ta = (1.93622464817652, -0.0210102549690591 ) elseif @tb2 == "5 59 cusp" ta = (1.93573169676979, -0.0209890435444849 ) elseif @tb2 == "4 47 cusp" ta = (1.9349510964118, -0.0210973399299767 ) elseif @tb2 == "7 82 cusp" ta = (1.93432943826556, -0.0210851056700985 ) elseif @tb2 == "3 35 cusp" ta = (1.93369934727682, -0.0215552851721248 ) elseif @tb2 == "8 93 cusp" ta = (1.93301382563378, -0.0215007742402665 ) elseif @tb2 == "5 58 cusp" ta = (1.93257932892831, -0.0217816924365363 ) elseif @tb2 == "7 81 cusp" ta = (1.93205247300195, -0.0220370185378264 ) elseif @tb2 == "2 23 cusp" ta = (1.93157440821611, -0.0229234265874936 ) elseif @tb2 == "7 80 cusp" ta = (1.93055490136873, -0.0228102401432205 ) elseif @tb2 == "5 57 cusp" ta = (1.93001782679443, -0.0231067752520307 ) elseif @tb2 == "8 91 cusp" ta = (1.92950323285392, -0.0233130512797082 ) elseif @tb2 == "3 34 cusp" ta = (1.92912230916361, -0.023963044231454 ) elseif @tb2 == "7 79 cusp" ta = (1.92828186188982, -0.024246590100388 ) elseif @tb2 == "4 45 cusp" ta = (1.92788633323513, -0.024849245620294 ) elseif @tb2 == "5 56 cusp" ta = (1.92726255700907, -0.02555113569098 ) elseif @tb2 == "6 67 cusp" ta = (1.92695525425632, -0.0260694667419334 ) elseif @tb2 == "7 78 cusp" ta = (1.92680579442491, -0.0264411057407155 ) elseif @tb2 == "8 89 cusp" ta = (1.92673409078463, -0.0267075686984875 ) elseif @tb2 == "9 100 cusp" ta = (1.92670106199178, -0.0269013483169394 ) elseif @tb2 == "1 11 cusp" ta = (1.92678032141575, -0.0276805838885113 ) elseif @tb2 == "9 98 cusp" ta = (1.92612757138372, -0.0272320479498679 ) elseif @tb2 == "8 87 cusp" ta = (1.92593856324936, -0.0271639890307688 ) elseif @tb2 == "7 76 cusp" ta = (1.9256641158496, -0.0270918428451959 ) elseif @tb2 == "6 65 cusp" ta = (1.92525253024849, -0.0270318870179135 ) elseif @tb2 == "5 54 cusp" ta = (1.9246170277461, -0.0270313869704484 ) elseif @tb2 == "9 97 cusp" ta = (1.92414761416509, -0.0269460387493586 ) elseif @tb2 == "4 43 cusp" ta = (1.92361697402491, -0.0272137948264786 ) elseif @tb2 == "7 75 cusp" ta = (1.92281389306055, -0.0272323921154164 ) elseif @tb2 == "3 32 cusp" ta = (1.92202618676337, -0.0278754623501848 ) elseif @tb2 == "8 85 cusp" ta = (1.92113606389667, -0.0278438435400911 ) elseif @tb2 == "5 53 cusp" ta = (1.92058937227913, -0.0282327279406578 ) elseif @tb2 == "7 74 cusp" ta = (1.91992125990157, -0.0285945149253678 ) elseif @tb2 == "9 95 cusp" ta = (1.91959725992544, -0.0288983541220475 ) elseif @tb2 == "2 21 cusp" ta = (1.91935427604625, -0.029772816977266 ) elseif @tb2 == "9 94 cusp" ta = (1.91846126715108, -0.0295535586942177 ) elseif @tb2 == "7 73 cusp" ta = (1.91802275117458, -0.0296868724361563 ) elseif @tb2 == "5 52 cusp" ta = (1.91734172629763, -0.030105500476393 ) elseif @tb2 == "8 83 cusp" ta = (1.91668406779043, -0.0304060066166881 ) elseif @tb2 == "3 31 cusp" ta = (1.91622855772046, -0.0312772018077572 ) elseif @tb2 == "7 72 cusp" ta = (1.91515007169004, -0.0317010829671389 ) elseif @tb2 == "4 41 cusp" ta = (1.91467314625424, -0.0325140477509511 ) elseif @tb2 == "9 92 cusp" ta = (1.91408545568083, -0.0329191193895364 ) elseif @tb2 == "5 51 cusp" ta = (1.91390543172248, -0.0334729888941862 ) elseif @tb2 == "6 61 cusp" ta = (1.91353947426664, -0.0341714043772489 ) elseif @tb2 == "7 71 cusp" ta = (1.9133699983799, -0.0346673702661119 ) elseif @tb2 == "8 81 cusp" ta = (1.91329493096972, -0.0350204921206936 ) elseif @tb2 == "9 91 cusp" ta = (1.9132653537227, -0.0352759317547621 ) elseif @tb2 == "1 10 cusp" ta = (1.91342329586682, -0.0362880775225429 ) elseif @tb2 == "10 99 cusp" ta = (1.91271876421738, -0.0358136994216616 ) elseif @tb2 == "9 89 cusp" ta = (1.91253888783014, -0.0357447428548222 ) elseif @tb2 == "8 79 cusp" ta = (1.91228660224688, -0.0356680156287994 ) elseif @tb2 == "7 69 cusp" ta = (1.91192178820683, -0.0355914907114248 ) elseif @tb2 == "6 59 cusp" ta = (1.91137734968583, -0.0355399544759471 ) elseif @tb2 == "5 49 cusp" ta = (1.91054171910022, -0.0355814716456019 ) elseif @tb2 == "9 88 cusp" ta = (1.90991802229178, -0.0355003488262574 ) elseif @tb2 == "4 39 cusp" ta = (1.90923673058936, -0.0358889111146654 ) elseif @tb2 == "7 68 cusp" ta = (1.90817825235847, -0.0359679589908618 ) elseif @tb2 == "10 97 cusp" ta = (1.90767615795673, -0.0361369255595274 ) elseif @tb2 == "3 29 cusp" ta = (1.90718203917849, -0.0368721947361773 ) elseif @tb2 == "8 77 cusp" ta = (1.90600186583369, -0.0368925666195491 ) elseif @tb2 == "5 48 cusp" ta = (1.90530504540594, -0.0374466576014011 ) elseif @tb2 == "7 67 cusp" ta = (1.90444507771354, -0.037974688980099 ) elseif @tb2 == "9 86 cusp" ta = (1.90403741724716, -0.0384016253151082 ) elseif @tb2 == "2 19 cusp" ta = (1.90377999779718, -0.0395799512688805 ) elseif @tb2 == "9 85 cusp" ta = (1.90257695019125, -0.0393543798830375 ) elseif @tb2 == "7 66 cusp" ta = (1.90200306842753, -0.0395644025095871 ) elseif @tb2 == "5 47 cusp" ta = (1.90112726615876, -0.0401735486998562 ) elseif @tb2 == "8 75 cusp" ta = (1.90027319939568, -0.0406247946770403 ) elseif @tb2 == "3 28 cusp" ta = (1.89973370691656, -0.0418229001715517 ) elseif @tb2 == "10 93 cusp" ta = (1.89873780312258, -0.0420143403562595 ) elseif @tb2 == "7 65 cusp" ta = (1.8983266942303, -0.0424752765825259 ) elseif @tb2 == "4 37 cusp" ta = (1.89775559087155, -0.0436012448387847 ) elseif @tb2 == "9 83 cusp" ta = (1.89700320085463, -0.0441920253166174 ) elseif @tb2 == "5 46 cusp" ta = (1.89680919026092, -0.0449481456159277 ) elseif @tb2 == "6 55 cusp" ta = (1.89637945542411, -0.0459136001572401 ) elseif @tb2 == "7 64 cusp" ta = (1.89619567916974, -0.0465914662008438 ) elseif @tb2 == "8 73 cusp" ta = (1.89612596636803, -0.0470700768841686 ) elseif @tb2 == "9 82 cusp" ta = (1.89610863550197, -0.0474140859827971 ) elseif @tb2 == "10 91 cusp" ta = (1.89611493215925, -0.047666788908017 ) elseif @tb2 == "11 100 cusp" ta = (1.89613129766289, -0.0478565247487203 ) elseif @tb2 == "1 9 cusp" ta = (1.89640725094921, -0.0487530128986506 ) elseif @tb2 == "11 98 cusp" ta = (1.89560567337739, -0.048244770576033 ) elseif @tb2 == "10 89 cusp" ta = (1.89542388115857, -0.0481757793652333 ) elseif @tb2 == "9 80 cusp" ta = (1.89517677678378, -0.0480979614851926 ) elseif @tb2 == "8 71 cusp" ta = (1.89483161629589, -0.0480155557533067 ) elseif @tb2 == "7 62 cusp" ta = (1.89433488632879, -0.047942541046493 ) elseif @tb2 == "6 53 cusp" ta = (1.89359783791219, -0.0479178382699303 ) elseif @tb2 == "11 97 cusp" ta = (1.89308048262352, -0.0477940935074996 ) elseif @tb2 == "5 44 cusp" ta = (1.89247472165815, -0.0480428172294 ) elseif @tb2 == "9 79 cusp" ta = (1.89162582595798, -0.0479850474436966 ) elseif @tb2 == "4 35 cusp" ta = (1.89073751673621, -0.0485675747319047 ) elseif @tb2 == "11 96 cusp" ta = (1.88987661019742, -0.0484506914880966 ) elseif @tb2 == "7 61 cusp" ta = (1.88931114119027, -0.0487645431112019 ) elseif @tb2 == "10 87 cusp" ta = (1.88864495579436, -0.049036810154188 ) elseif @tb2 == "3 26 cusp" ta = (1.88803907708934, -0.0500771272778273 ) elseif @tb2 == "11 95 cusp" ta = (1.88699174243581, -0.0499317909002717 ) elseif @tb2 == "8 69 cusp" ta = (1.8864377398414, -0.0502084997302889 ) elseif @tb2 == "5 43 cusp" ta = (1.88553933466929, -0.0510245895241847 ) elseif @tb2 == "7 60 cusp" ta = (1.88441643963478, -0.0518219132266666 ) elseif @tb2 == "9 77 cusp" ta = (1.88390059240823, -0.0524413131987423 ) elseif @tb2 == "11 94 cusp" ta = (1.88367607810398, -0.0528832825135888 ) elseif @tb2 == "2 17 cusp" ta = (1.88366045983545, -0.0540703334793939 ) elseif @tb2 == "11 93 cusp" ta = (1.88249608935311, -0.0537742441808599 ) elseif @tb2 == "9 76 cusp" ta = (1.88199732734835, -0.0538743772499902 ) elseif @tb2 == "7 59 cusp" ta = (1.88123215708411, -0.0542155547570711 ) elseif @tb2 == "5 42 cusp" ta = (1.88009150695206, -0.0551332341544406 ) elseif @tb2 == "8 67 cusp" ta = (1.87896506142427, -0.0558348758638846 ) elseif @tb2 == "11 92 cusp" ta = (1.87849998994536, -0.0563449277937909 ) elseif @tb2 == "3 25 cusp" ta = (1.87834485431619, -0.0575309898973968 ) elseif @tb2 == "10 83 cusp" ta = (1.8769971505803, -0.0578940951250403 ) elseif @tb2 == "7 58 cusp" ta = (1.8764795993726, -0.0585694409961552 ) elseif @tb2 == "11 91 cusp" ta = (1.87593975973362, -0.0591267342154963 ) elseif @tb2 == "4 33 cusp" ta = (1.87581251158258, -0.0601756726837626 ) elseif @tb2 == "9 74 cusp" ta = (1.87484126330462, -0.0610673271175074 ) elseif @tb2 == "5 41 cusp" ta = (1.8746560694706, -0.0621270755924516 ) elseif @tb2 == "11 90 cusp" ta = (1.87416579354794, -0.0628097865976399 ) elseif @tb2 == "6 49 cusp" ta = (1.87417084161826, -0.0634998637837737 ) elseif @tb2 == "7 57 cusp" ta = (1.87399288179128, -0.064450653197883 ) elseif @tb2 == "8 65 cusp" ta = (1.87394985041755, -0.0651151508340459 ) elseif @tb2 == "9 73 cusp" ta = (1.87396391875132, -0.0655890358759368 ) elseif @tb2 == "10 81 cusp" ta = (1.87400033258257, -0.0659349865373073 ) elseif @tb2 == "11 89 cusp" ta = (1.87404360580274, -0.0661934269918711 ) elseif @tb2 == "12 97 cusp" ta = (1.87408694272075, -0.0663906549889775 ) elseif @tb2 == "1 8 cusp" ta = (1.87451962698359, -0.0673930328926062 ) elseif @tb2 == "12 95 cusp" ta = (1.87355817497501, -0.0668451657252361 ) elseif @tb2 == "11 87 cusp" ta = (1.87336309615488, -0.0667771547291129 ) elseif @tb2 == "10 79 cusp" ta = (1.8731051965421, -0.0667008079138318 ) elseif @tb2 == "9 71 cusp" ta = (1.87275606596467, -0.0666189541867531 ) elseif @tb2 == "8 63 cusp" ta = (1.87227069763942, -0.0665408089408798 ) elseif @tb2 == "7 55 cusp" ta = (1.87157612038775, -0.066491268270132 ) elseif @tb2 == "6 47 cusp" ta = (1.87055265046852, -0.0665336967351747 ) elseif @tb2 == "11 86 cusp" ta = (1.86982211648336, -0.0664159901415145 ) elseif @tb2 == "5 39 cusp" ta = (1.86900710542377, -0.0668250383729424 ) elseif @tb2 == "9 70 cusp" ta = (1.86782059873834, -0.0668345170916304 ) elseif @tb2 == "4 31 cusp" ta = (1.86664635975843, -0.0677409677842814 ) elseif @tb2 == "11 85 cusp" ta = (1.86543331240562, -0.0676710420763519 ) elseif @tb2 == "7 54 cusp" ta = (1.86467817331636, -0.0681709472064193 ) elseif @tb2 == "10 77 cusp" ta = (1.86377753804844, -0.068624917565518 ) elseif @tb2 == "13 100 cusp" ta = (1.86334160940679, -0.0690194155885486 ) elseif @tb2 == "3 23 cusp" ta = (1.8630476959746, -0.0701465711766082 ) elseif @tb2 == "11 84 cusp" ta = (1.8615655961875, -0.0700608475966184 ) elseif @tb2 == "8 61 cusp" ta = (1.8608205294934, -0.0705115730221201 ) elseif @tb2 == "13 99 cusp" ta = (1.86011631062815, -0.0708331262476992 ) elseif @tb2 == "5 38 cusp" ta = (1.85965478618854, -0.0717597420702572 ) elseif @tb2 == "12 91 cusp" ta = (1.85860044335397, -0.0722031325954568 ) elseif @tb2 == "7 53 cusp" ta = (1.85817243453313, -0.0730111258613834 ) elseif @tb2 == "9 68 cusp" ta = (1.85752224982363, -0.0739427204089398 ) elseif @tb2 == "11 83 cusp" ta = (1.85726044509909, -0.0745903894622501 ) elseif @tb2 == "13 98 cusp" ta = (1.85716848578304, -0.0750278533971943 ) elseif @tb2 == "2 15 cusp" ta = (1.85738240046052, -0.0762580599328674 ) elseif @tb2 == "13 97 cusp" ta = (1.85616304414439, -0.0759310225672191 ) elseif @tb2 == "11 82 cusp" ta = (1.85570892429373, -0.0759809291624284 ) elseif @tb2 == "9 67 cusp" ta = (1.85501787724157, -0.076182167457066 ) elseif @tb2 == "7 52 cusp" ta = (1.85397980937003, -0.076756829271311 ) elseif @tb2 == "12 89 cusp" ta = (1.85307873584057, -0.0771165226722825 ) elseif @tb2 == "5 37 cusp" ta = (1.85248302354361, -0.07819462927621 ) elseif @tb2 == "13 96 cusp" ta = (1.85141865541294, -0.0785896638203433 ) elseif @tb2 == "8 59 cusp" ta = (1.85097953981012, -0.0793295108451894 ) elseif @tb2 == "11 81 cusp" ta = (1.85038752880177, -0.0801109067675672 ) elseif @tb2 == "3 22 cusp" ta = (1.85032264225412, -0.0818077605205478 ) elseif @tb2 == "13 95 cusp" ta = (1.84897721880425, -0.0820286235437304 ) elseif @tb2 == "10 73 cusp" ta = (1.84846217005494, -0.0824987408786229 ) elseif @tb2 == "7 51 cusp" ta = (1.84781913460095, -0.08352489330677 ) elseif @tb2 == "11 80 cusp" ta = (1.8471296214148, -0.0843876185592347 ) elseif @tb2 == "4 29 cusp" ta = (1.84709274377345, -0.0858904565354053 ) elseif @tb2 == "13 94 cusp" ta = (1.84607050053571, -0.0865797177881615 ) elseif @tb2 == "9 65 cusp" ta = (1.84584025745467, -0.0872877328081956 ) elseif @tb2 == "5 36 cusp" ta = (1.84572651797044, -0.0888139574501881 ) elseif @tb2 == "11 79 cusp" ta = (1.84512896079595, -0.0898493190920572 ) elseif @tb2 == "6 43 cusp" ta = (1.84523392084407, -0.0908246371232834 ) elseif @tb2 == "13 93 cusp" ta = (1.84495729108316, -0.0915607163795441 ) elseif @tb2 == "7 50 cusp" ta = (1.84511737459788, -0.0921939755717682 ) elseif @tb2 == "8 57 cusp" ta = (1.84515099096538, -0.0931389041539312 ) elseif @tb2 == "9 64 cusp" ta = (1.84523808263885, -0.0938061726021773 ) elseif @tb2 == "10 71 cusp" ta = (1.84533845937004, -0.0942894913482455 ) elseif @tb2 == "11 78 cusp" ta = (1.84543603798153, -0.0946482448934033 ) elseif @tb2 == "12 85 cusp" ta = (1.84552499401374, -0.0949205663361466 ) elseif @tb2 == "13 92 cusp" ta = (1.8456038394862, -0.0951314648664407 ) elseif @tb2 == "14 99 cusp" ta = (1.84567285965768, -0.0952977292740966 ) elseif @tb2 == "1 7 cusp" ta = (1.84627561290206, -0.0962758122368499 ) elseif @tb2 == "14 97 cusp" ta = (1.84523506881722, -0.095748853262834 ) elseif @tb2 == "13 90 cusp" ta = (1.84505972862274, -0.0956914884440994 ) elseif @tb2 == "12 83 cusp" ta = (1.84483755887964, -0.0956270863032094 ) elseif @tb2 == "11 76 cusp" ta = (1.84455094422229, -0.0955562845024648 ) elseif @tb2 == "10 69 cusp" ta = (1.84417357093428, -0.095481897277575 ) elseif @tb2 == "9 62 cusp" ta = (1.84366511062987, -0.0954117199413409 ) elseif @tb2 == "8 55 cusp" ta = (1.84296218317871, -0.0953649252520779 ) elseif @tb2 == "7 48 cusp" ta = (1.84196311649471, -0.0953870295963921 ) elseif @tb2 == "13 89 cusp" ta = (1.84127997172063, -0.0952511053029289 ) elseif @tb2 == "6 41 cusp" ta = (1.8405037302681, -0.0955855650766833 ) elseif @tb2 == "11 75 cusp" ta = (1.83944013371387, -0.0955156272299053 ) elseif @tb2 == "5 34 cusp" ta = (1.83832578527907, -0.0962144292148506 ) elseif @tb2 == "14 95 cusp" ta = (1.83730343644964, -0.0960501953247546 ) elseif @tb2 == "9 61 cusp" ta = (1.83662052422222, -0.0963917499519532 ) elseif @tb2 == "13 88 cusp" ta = (1.83582270830697, -0.0966708778165143 ) elseif @tb2 == "4 27 cusp" ta = (1.83505650616894, -0.097862245865743 ) elseif @tb2 == "11 74 cusp" ta = (1.8332962971152, -0.097933159003267 ) elseif @tb2 == "7 47 cusp" ta = (1.83227694363957, -0.0987638195800324 ) elseif @tb2 == "10 67 cusp" ta = (1.83104066010037, -0.0995511554054869 ) elseif @tb2 == "13 87 cusp" ta = (1.83046815128165, -0.10018588140347 ) elseif @tb2 == "3 20 cusp" ta = (1.83021021440445, -0.10185887267659 ) elseif @tb2 == "14 93 cusp" ta = (1.82872612070248, -0.101675590664183 ) elseif @tb2 == "11 73 cusp" ta = (1.82805047627059, -0.101954032212316 ) elseif @tb2 == "8 53 cusp" ta = (1.82703689132417, -0.102719870956154 ) elseif @tb2 == "13 86 cusp" ta = (1.82606308150087, -0.103293587693828 ) elseif @tb2 == "5 33 cusp" ta = (1.82553510616429, -0.104709827262791 ) elseif @tb2 == "12 79 cusp" ta = (1.82407175611348, -0.105517459515487 ) elseif @tb2 == "7 46 cusp" ta = (1.82357663815839, -0.106758917953997 ) elseif @tb2 == "9 59 cusp" ta = (1.82277983812044, -0.108215601575123 ) elseif @tb2 == "11 72 cusp" ta = (1.82250325239713, -0.109198007551969 ) elseif @tb2 == "13 85 cusp" ta = (1.82243992217112, -0.109847735144526 ) elseif @tb2 == "15 98 cusp" ta = (1.82245637832107, -0.110282577864946 ) elseif @tb2 == "2 13 cusp" ta = (1.82294689253225, -0.111598343659103 ) elseif @tb2 == "15 97 cusp" ta = (1.82156332090421, -0.111276938441123 ) elseif @tb2 == "13 84 cusp" ta = (1.82112056729973, -0.111314603470589 ) elseif @tb2 == "11 71 cusp" ta = (1.82046603666562, -0.111459358541527 ) elseif @tb2 == "9 58 cusp" ta = (1.81948919549376, -0.111863571817427 ) elseif @tb2 == "7 45 cusp" ta = (1.81806519555775, -0.112871553043134 ) elseif @tb2 == "12 77 cusp" ta = (1.81680615771943, -0.113545683766123 ) elseif @tb2 == "5 32 cusp" ta = (1.81611426087257, -0.115221943275803 ) elseif @tb2 == "13 83 cusp" ta = (1.81462258473868, -0.115979256034775 ) elseif @tb2 == "8 51 cusp" ta = (1.81410572702231, -0.117137356511255 ) elseif @tb2 == "11 70 cusp" ta = (1.81337361240984, -0.118383027287444 ) elseif @tb2 == "14 89 cusp" ta = (1.81314732717581, -0.119191930684109 ) elseif @tb2 == "3 19 cusp" ta = (1.81357276772763, -0.120875557627042 ) elseif @tb2 == "13 82 cusp" ta = (1.8116402456344, -0.121432962284917 ) elseif @tb2 == "10 63 cusp" ta = (1.81096795383609, -0.122213186898316 ) elseif @tb2 == "7 44 cusp" ta = (1.81020859337726, -0.123832006956557 ) elseif @tb2 == "11 69 cusp" ta = (1.80935409760514, -0.125220472906732 ) elseif @tb2 == "15 94 cusp" ta = (1.80912410375749, -0.126030518732932 ) elseif @tb2 == "4 25 cusp" ta = (1.80957334589935, -0.127426571565319 ) elseif @tb2 == "13 81 cusp" ta = (1.80820298758126, -0.128622782241505 ) elseif @tb2 == "9 56 cusp" ta = (1.80799708788826, -0.12970140375316 ) elseif @tb2 == "14 87 cusp" ta = (1.8076895307975, -0.130653457532592 ) elseif @tb2 == "5 31 cusp" ta = (1.80811412055767, -0.131953255264945 ) elseif @tb2 == "16 99 cusp" ta = (1.80742263164956, -0.132883479745142 ) elseif @tb2 == "11 68 cusp" ta = (1.80743434085666, -0.133576921170615 ) elseif @tb2 == "6 37 cusp" ta = (1.80776971076504, -0.134980422358694 ) elseif @tb2 == "13 80 cusp" ta = (1.80750377012526, -0.1361056115518 ) elseif @tb2 == "7 43 cusp" ta = (1.80785523999043, -0.136998687907137 ) elseif @tb2 == "15 92 cusp" ta = (1.80777205511225, -0.137781667671712 ) elseif @tb2 == "8 49 cusp" ta = (1.80807995822611, -0.138369068002849 ) elseif @tb2 == "9 55 cusp" ta = (1.80833036461162, -0.139324630006563 ) elseif @tb2 == "10 61 cusp" ta = (1.80856563679847, -0.140009786621165 ) elseif @tb2 == "11 67 cusp" ta = (1.8087735925666, -0.140514132108766 ) elseif @tb2 == "12 73 cusp" ta = (1.80895294401306, -0.140894291537265 ) elseif @tb2 == "13 79 cusp" ta = (1.80910621991662, -0.141186941782731 ) elseif @tb2 == "14 85 cusp" ta = (1.8092369721068, -0.141416456109999 ) elseif @tb2 == "15 91 cusp" ta = (1.80934871354027, -0.141599436930533 ) elseif @tb2 == "16 97 cusp" ta = (1.80944455874156, -0.141747456707637 ) elseif @tb2 == "1 6 cusp" ta = (1.81029132002829, -0.142733444925318 ) elseif @tb2 == "16 95 cusp" ta = (1.80906386334143, -0.142236901567087 ) elseif @tb2 == "15 89 cusp" ta = (1.80888807230739, -0.142191326252368 ) elseif @tb2 == "14 83 cusp" ta = (1.80867250462308, -0.142141258215753 ) elseif @tb2 == "13 77 cusp" ta = (1.80840451103435, -0.142087224227006 ) elseif @tb2 == "12 71 cusp" ta = (1.80806615181089, -0.142030888830811 ) elseif @tb2 == "11 65 cusp" ta = (1.80763142224127, -0.14197623581431 ) elseif @tb2 == "10 59 cusp" ta = (1.80706173656673, -0.141931992967521 ) elseif @tb2 == "9 53 cusp" ta = (1.80629844926297, -0.141916756225988 ) elseif @tb2 == "17 100 cusp" ta = (1.80581254460949, -0.141787724303355 ) elseif @tb2 == "8 47 cusp" ta = (1.80525039067976, -0.141970186947447 ) elseif @tb2 == "15 88 cusp" ta = (1.80455212371881, -0.141843185506092 ) elseif @tb2 == "7 41 cusp" ta = (1.80377352523193, -0.142178310501599 ) elseif @tb2 == "13 76 cusp" ta = (1.80273524859402, -0.142096921379265 ) elseif @tb2 == "6 35 cusp" ta = (1.80164071916243, -0.142732051122858 ) elseif @tb2 == "17 99 cusp" ta = (1.80069190614699, -0.142539605060564 ) elseif @tb2 == "11 64 cusp" ta = (1.8000445550629, -0.142818141040941 ) elseif @tb2 == "16 93 cusp" ta = (1.79929717186839, -0.143022579247556 ) elseif @tb2 == "5 29 cusp" ta = (1.79850964617938, -0.144062023160085 ) elseif @tb2 == "14 81 cusp" ta = (1.79695287362901, -0.144003197398202 ) elseif @tb2 == "9 52 cusp" ta = (1.79599452618321, -0.144639640191879 ) elseif @tb2 == "13 75 cusp" ta = (1.794852482574, -0.145205565766824 ) elseif @tb2 == "17 98 cusp" ta = (1.79429353773451, -0.145700409162379 ) elseif @tb2 == "4 23 cusp" ta = (1.79393008768792, -0.147132350494924 ) elseif @tb2 == "15 86 cusp" ta = (1.79217810440682, -0.147051652886296 ) elseif @tb2 == "11 63 cusp" ta = (1.79130480627258, -0.147571893015163 ) elseif @tb2 == "7 40 cusp" ta = (1.78993436350313, -0.149015027966258 ) elseif @tb2 == "17 97 cusp" ta = (1.7887263538103, -0.149514193100619 ) elseif @tb2 == "10 57 cusp" ta = (1.78823110838097, -0.150438948638344 ) elseif @tb2 == "13 74 cusp" ta = (1.78749664464147, -0.151505480338873 ) elseif @tb2 == "16 91 cusp" ta = (1.78721641381534, -0.152247425037632 ) elseif @tb2 == "3 17 cusp" ta = (1.78744187436821, -0.154066969364829 ) elseif @tb2 == "17 96 cusp" ta = (1.78581711457686, -0.153878328948209 ) elseif @tb2 == "14 79 cusp" ta = (1.78517345254414, -0.154084783705449 ) elseif @tb2 == "11 62 cusp" ta = (1.78421096286674, -0.154639375636283 ) elseif @tb2 == "8 45 cusp" ta = (1.7828378667358, -0.155998850379847 ) elseif @tb2 == "13 73 cusp" ta = (1.78148665502691, -0.157063445538214 ) elseif @tb2 == "5 28 cusp" ta = (1.78098395261455, -0.159307456918162 ) elseif @tb2 == "17 95 cusp" ta = (1.77944880843282, -0.159950931667656 ) elseif @tb2 == "12 67 cusp" ta = (1.77894572327211, -0.160831593525229 ) elseif @tb2 == "7 39 cusp" ta = (1.77846243019594, -0.1628082551631 ) elseif @tb2 == "16 89 cusp" ta = (1.77755312191098, -0.163981201746292 ) elseif @tb2 == "9 50 cusp" ta = (1.77757361506481, -0.165173012213514 ) elseif @tb2 == "11 61 cusp" ta = (1.77736867066809, -0.166710838663364 ) elseif @tb2 == "13 72 cusp" ta = (1.77741321786888, -0.167701434800559 ) elseif @tb2 == "15 83 cusp" ta = (1.77753136069617, -0.168351459855582 ) elseif @tb2 == "17 94 cusp" ta = (1.77765925930578, -0.168791158755143 ) elseif @tb2 == "2 11 cusp" ta = (1.77854914941365, -0.170224122466064 ) elseif @tb2 == "17 93 cusp" ta = (1.77685784957041, -0.169973476676073 ) elseif @tb2 == "15 82 cusp" ta = (1.7763927013909, -0.170030407300252 ) elseif @tb2 == "13 71 cusp" ta = (1.77573060978838, -0.170181202689923 ) elseif @tb2 == "11 60 cusp" ta = (1.77476998398844, -0.170539999961422 ) elseif @tb2 == "9 49 cusp" ta = (1.77337590459871, -0.171363278682409 ) elseif @tb2 == "16 87 cusp" ta = (1.77220991520304, -0.171830796799846 ) elseif @tb2 == "7 38 cusp" ta = (1.77143586884097, -0.173204388908866 ) elseif @tb2 == "12 65 cusp" ta = (1.76967412584958, -0.174507839960097 ) elseif @tb2 == "17 92 cusp" ta = (1.76900126444301, -0.175382139004753 ) elseif @tb2 == "5 27 cusp" ta = (1.76900206023526, -0.177207162959598 ) elseif @tb2 == "18 97 cusp" ta = (1.76743675531028, -0.177845888068262 ) elseif @tb2 == "13 70 cusp" ta = (1.76690999765792, -0.178696492460657 ) elseif @tb2 == "8 43 cusp" ta = (1.76639291543126, -0.180573190713563 ) elseif @tb2 == "11 59 cusp" ta = (1.7655727044524, -0.182632211496732 ) elseif @tb2 == "14 75 cusp" ta = (1.76541921840255, -0.183910300443676 ) elseif @tb2 == "17 91 cusp" ta = (1.76549347182947, -0.184694644240585 ) elseif @tb2 == "3 16 cusp" ta = (1.76645545364796, -0.186358238152767 ) elseif @tb2 == "16 85 cusp" ta = (1.76434380651902, -0.186984625069138 ) elseif @tb2 == "13 69 cusp" ta = (1.76365405217512, -0.187656197091117 ) elseif @tb2 == "10 53 cusp" ta = (1.76281929705926, -0.189000705242159 ) elseif @tb2 == "17 90 cusp" ta = (1.76202037304563, -0.190016836374072 ) elseif @tb2 == "7 37 cusp" ta = (1.7620573247087, -0.191637793149971 ) elseif @tb2 == "18 95 cusp" ta = (1.76109911310379, -0.192811507785387 ) elseif @tb2 == "11 58 cusp" ta = (1.76110028058891, -0.193947853111387 ) elseif @tb2 == "15 79 cusp" ta = (1.76095012416674, -0.195229175337521 ) elseif @tb2 == "19 100 cusp" ta = (1.7610480394798, -0.195968392137124 ) elseif @tb2 == "4 21 cusp" ta = (1.76196842823642, -0.197228929939358 ) elseif @tb2 == "17 89 cusp" ta = (1.76047218374786, -0.198435905150768 ) elseif @tb2 == "13 68 cusp" ta = (1.7601893656044, -0.199372313990665 ) elseif @tb2 == "9 47 cusp" ta = (1.76014459587792, -0.20105152878761 ) elseif @tb2 == "14 73 cusp" ta = (1.75991590357837, -0.202563259433427 ) elseif @tb2 == "19 99 cusp" ta = (1.7600046279206, -0.203343678600793 ) elseif @tb2 == "5 26 cusp" ta = (1.76087541233397, -0.204416599993894 ) elseif @tb2 == "16 83 cusp" ta = (1.76006297887547, -0.20598793876429 ) elseif @tb2 == "11 57 cusp" ta = (1.76025169636595, -0.207028329338012 ) elseif @tb2 == "17 88 cusp" ta = (1.76029211767796, -0.207994006876287 ) elseif @tb2 == "6 31 cusp" ta = (1.76110044330909, -0.209055722178167 ) elseif @tb2 == "19 98 cusp" ta = (1.76074875687274, -0.210159085129304 ) elseif @tb2 == "13 67 cusp" ta = (1.76097619863739, -0.21081120213848 ) elseif @tb2 == "7 36 cusp" ta = (1.76172129236454, -0.21206620506909 ) elseif @tb2 == "15 77 cusp" ta = (1.76178635400292, -0.213261484500017 ) elseif @tb2 == "8 41 cusp" ta = (1.76239009038073, -0.21406838115635 ) elseif @tb2 == "17 87 cusp" ta = (1.76251695632996, -0.214902619996356 ) elseif @tb2 == "9 46 cusp" ta = (1.76299514955381, -0.215441882798852 ) elseif @tb2 == "19 97 cusp" ta = (1.76313333853677, -0.216040278586443 ) elseif @tb2 == "10 51 cusp" ta = (1.76351147306576, -0.216413726972258 ) elseif @tb2 == "11 56 cusp" ta = (1.76394306422325, -0.217121222399002 ) elseif @tb2 == "12 61 cusp" ta = (1.76430192512675, -0.217649493900283 ) elseif @tb2 == "13 66 cusp" ta = (1.7646007883315, -0.218052840793156 ) elseif @tb2 == "14 71 cusp" ta = (1.76485087356374, -0.21836689600137 ) elseif @tb2 == "15 76 cusp" ta = (1.76506143628699, -0.218615675070891 ) elseif @tb2 == "16 81 cusp" ta = (1.76523991104181, -0.218815764839854 ) elseif @tb2 == "17 86 cusp" ta = (1.76539221131829, -0.218978878826269 ) elseif @tb2 == "18 91 cusp" ta = (1.76552303273186, -0.219113457025474 ) elseif @tb2 == "19 96 cusp" ta = (1.76563611305413, -0.219225692294611 ) elseif @tb2 == "1 5 cusp" ta = (1.76674170432658, -0.220105204574977 ) elseif @tb2 == "20 99 cusp" ta = (1.76548855951591, -0.219738230122881 ) elseif @tb2 == "19 94 cusp" ta = (1.76534975085296, -0.219712515662795 ) elseif @tb2 == "18 89 cusp" ta = (1.76518682847384, -0.219684982645059 ) elseif @tb2 == "17 84 cusp" ta = (1.76499394579734, -0.219655864644713 ) elseif @tb2 == "16 79 cusp" ta = (1.7647634005146, -0.219625701994085 ) elseif @tb2 == "15 74 cusp" ta = (1.76448489490173, -0.219595569114727 ) elseif @tb2 == "14 69 cusp" ta = (1.76414443726054, -0.21956747311933 ) elseif @tb2 == "13 64 cusp" ta = (1.76372267847299, -0.219545067113264 ) elseif @tb2 == "12 59 cusp" ta = (1.76319234234275, -0.219534958460378 ) elseif @tb2 == "11 54 cusp" ta = (1.76251417701215, -0.219549178565093 ) elseif @tb2 == "10 49 cusp" ta = (1.7616304639165, -0.219610002186472 ) elseif @tb2 == "19 93 cusp" ta = (1.76106819632103, -0.21950943910636 ) elseif @tb2 == "9 44 cusp" ta = (1.76045449693792, -0.219759703993622 ) elseif @tb2 == "17 83 cusp" ta = (1.75967764309855, -0.219671697249804 ) elseif @tb2 == "8 39 cusp" ta = (1.75885362816344, -0.22008109587392 ) elseif @tb2 == "15 73 cusp" ta = (1.75774786051599, -0.220045330881864 ) elseif @tb2 == "7 34 cusp" ta = (1.75662324504199, -0.220742390930122 ) elseif @tb2 == "20 97 cusp" ta = (1.75564878340304, -0.220568667231449 ) elseif @tb2 == "13 63 cusp" ta = (1.75499900419582, -0.220857570059641 ) elseif @tb2 == "19 92 cusp" ta = (1.75425130254311, -0.221063729867211 ) elseif @tb2 == "6 29 cusp" ta = (1.75345340553262, -0.222097733233433 ) elseif @tb2 == "17 82 cusp" ta = (1.75193672752183, -0.222023124321944 ) elseif @tb2 == "11 53 cusp" ta = (1.75099783635921, -0.222609369563902 ) elseif @tb2 == "16 77 cusp" ta = (1.74988555638529, -0.223105849188 ) elseif @tb2 == "5 24 cusp" ta = (1.74891327800394, -0.224911048597954 ) elseif @tb2 == "19 91 cusp" ta = (1.74729866572093, -0.224770050710587 ) elseif @tb2 == "14 67 cusp" ta = (1.74647639730615, -0.225197731263141 ) elseif @tb2 == "9 43 cusp" ta = (1.74513959843186, -0.226425188303561 ) elseif @tb2 == "13 62 cusp" ta = (1.74349982708392, -0.227591546834859 ) elseif @tb2 == "17 81 cusp" ta = (1.74275268821334, -0.228503475657126 ) elseif @tb2 == "21 100 cusp" ta = (1.74244320951609, -0.229160584120396 ) elseif @tb2 == "4 19 cusp" ta = (1.74254791810937, -0.230825283421887 ) elseif @tb2 == "19 90 cusp" ta = (1.74062607539675, -0.23073779916334 ) elseif @tb2 == "15 71 cusp" ta = (1.73979306048411, -0.231141499525125 ) elseif @tb2 == "11 52 cusp" ta = (1.7385608885416, -0.232177884832983 ) elseif @tb2 == "18 85 cusp" ta = (1.73736689384847, -0.23296100972984 ) elseif @tb2 == "7 33 cusp" ta = (1.73679265213482, -0.234788012042594 ) elseif @tb2 == "17 80 cusp" ta = (1.73503466335675, -0.235884617773696 ) elseif @tb2 == "10 47 cusp" ta = (1.73450515464661, -0.237460726299526 ) elseif @tb2 == "13 61 cusp" ta = (1.73364204427536, -0.239321404722989 ) elseif @tb2 == "16 75 cusp" ta = (1.73340311156437, -0.240553493507428 ) elseif @tb2 == "19 89 cusp" ta = (1.73340357306314, -0.241349849826709 ) elseif @tb2 == "3 14 cusp" ta = (1.73423827367021, -0.243328421334702 ) elseif @tb2 == "20 93 cusp" ta = (1.73229935830763, -0.243250699452175 ) elseif @tb2 == "17 79 cusp" ta = (1.73164792033727, -0.243462688326187 ) elseif @tb2 == "14 65 cusp" ta = (1.73069446623664, -0.243957815564223 ) elseif @tb2 == "11 51 cusp" ta = (1.729335053799, -0.245086146581924 ) elseif @tb2 == "19 88 cusp" ta = (1.72812068060541, -0.24585434061419 ) elseif @tb2 == "8 37 cusp" ta = (1.7275538282176, -0.247590986313918 ) elseif @tb2 == "21 97 cusp" ta = (1.72614730942829, -0.248451680561016 ) elseif @tb2 == "13 60 cusp" ta = (1.72573062886707, -0.249632091447769 ) elseif @tb2 == "18 83 cusp" ta = (1.72512206459767, -0.250912868579709 ) elseif @tb2 == "5 23 cusp" ta = (1.72556920744689, -0.253282755116165 ) elseif @tb2 == "17 78 cusp" ta = (1.72334617439435, -0.254720162501915 ) elseif @tb2 == "12 55 cusp" ta = (1.72280838563188, -0.256240869260302 ) elseif @tb2 == "19 87 cusp" ta = (1.72218225278174, -0.257558213329381 ) elseif @tb2 == "7 32 cusp" ta = (1.72261573014288, -0.259466711912858 ) elseif @tb2 == "16 73 cusp" ta = (1.72153183190744, -0.261557461924477 ) elseif @tb2 == "9 41 cusp" ta = (1.72190537365922, -0.263409027528556 ) elseif @tb2 == "20 91 cusp" ta = (1.72156710230354, -0.264801151403334 ) elseif @tb2 == "11 50 cusp" ta = (1.7220262935699, -0.265861623163536 ) elseif @tb2 == "13 59 cusp" ta = (1.72237801548068, -0.26738931029511 ) elseif @tb2 == "15 68 cusp" ta = (1.72274622858479, -0.268366040729514 ) elseif @tb2 == "17 77 cusp" ta = (1.72306938918372, -0.269013112653788 ) elseif @tb2 == "19 86 cusp" ta = (1.72333779275285, -0.269457486979248 ) elseif @tb2 == "21 95 cusp" ta = (1.72355699662326, -0.269772882796486 ) elseif @tb2 == "2 9 cusp" ta = (1.72485495735555, -0.27099190389265 ) elseif @tb2 == "21 94 cusp" ta = (1.72304816257843, -0.270893608853655 ) elseif @tb2 == "19 85 cusp" ta = (1.72265866082191, -0.27095406756003 ) elseif @tb2 == "17 76 cusp" ta = (1.72213688915882, -0.271069655730963 ) elseif @tb2 == "15 67 cusp" ta = (1.72142240289079, -0.27128932718986 ) elseif @tb2 == "13 58 cusp" ta = (1.72042427837101, -0.271712782608907 ) elseif @tb2 == "11 49 cusp" ta = (1.71901503956843, -0.272550015837396 ) elseif @tb2 == "20 89 cusp" ta = (1.71787376304954, -0.27297114733385 ) elseif @tb2 == "9 40 cusp" ta = (1.71705738459089, -0.274246953107883 ) elseif @tb2 == "16 71 cusp" ta = (1.71535700368959, -0.275322839618316 ) elseif @tb2 == "7 31 cusp" ta = (1.71454297265289, -0.277712680596702 ) elseif @tb2 == "19 84 cusp" ta = (1.71272352452065, -0.278802899017668 ) elseif @tb2 == "12 53 cusp" ta = (1.71215881916226, -0.280287968509162 ) elseif @tb2 == "17 75 cusp" ta = (1.71136420230592, -0.281865087878882 ) elseif @tb2 == "22 97 cusp" ta = (1.71117308811121, -0.282866842256989 ) elseif @tb2 == "5 22 cusp" ta = (1.71191558779492, -0.284729097893586 ) elseif @tb2 == "18 79 cusp" ta = (1.70964963786123, -0.286206028849635 ) elseif @tb2 == "13 57 cusp" ta = (1.70908256379265, -0.287702912274516 ) elseif @tb2 == "21 92 cusp" ta = (1.70844487962831, -0.288970969301275 ) elseif @tb2 == "8 35 cusp" ta = (1.70884831950898, -0.290803879483171 ) elseif @tb2 == "19 83 cusp" ta = (1.70786491579806, -0.292656348811133 ) elseif @tb2 == "11 48 cusp" ta = (1.70819987272582, -0.294278943139205 ) elseif @tb2 == "14 61 cusp" ta = (1.70835485784907, -0.296322475740502 ) elseif @tb2 == "17 74 cusp" ta = (1.70871224601707, -0.297523219476899 ) elseif @tb2 == "20 87 cusp" ta = (1.70906349426663, -0.298244058796919 ) elseif @tb2 == "23 100 cusp" ta = (1.70935658708739, -0.298693491877104 ) elseif @tb2 == "3 13 cusp" ta = (1.71072043940675, -0.299824237926385 ) elseif @tb2 == "22 95 cusp" ta = (1.70881863341321, -0.300396809478196 ) elseif @tb2 == "19 82 cusp" ta = (1.70829988054511, -0.30077245862337 ) elseif @tb2 == "16 69 cusp" ta = (1.7076043029568, -0.301452259836918 ) elseif @tb2 == "13 56 cusp" ta = (1.7067320565013, -0.302719449340283 ) elseif @tb2 == "23 99 cusp" ta = (1.70592670253896, -0.303602378252191 ) elseif @tb2 == "10 43 cusp" ta = (1.70584691778441, -0.30508589636367 ) 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) elseif @tb2 == "99 100 Cusp" ta = (1.99901430461837,-1.99996055317127) endif endif complex gens[4,4] complex gtab = 0 complex gz0 = 0 complex gz = 0 complex gQ = 0 complex gR = 0 ; float theta = 0 complex im = (0,1) ; 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 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 lev[round(#width*(1+@percentInc*0.01)),round(#height*(1+@percentInc*0.01))] ; ; initial circles if (@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) 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) 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" && !@expert 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) gtab = (taj*tbj-((taj*tbj)^2-4*(taj^2+tbj^2))^0.5)/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-tbj/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) cs[0] = (0,0) ;a cs[1] = (0,0) ;b cs[2] = (0,0) ;A cs[3] = (0,0) ;B rad[0] = 1 rad[1] = 1 rad[2] = 1 rad[3] = 1 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) 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] ; initialize screen arrays ; while(h < #width+wd) while(w < #height+ht) lev[w,h] = 0 w = w + 1 endwhile w = 0 h = h + 1 endwhile ;------------------------------------------------- ; ; Depth first algorithm ; ;------------------------------------------------- ; Initialize Base Circles and Mobius transforms int i = 0 while i < 4 cir[i] = new Circle(cs[i],rad[i]) gen[i] = new Mobius(gens[i,0],gens[i,1],gens[i,2],gens[i,3]) i = i + 1 endwhile complex cen = 0 float rxx = 0 float ryy = 0 float fz = 0 bool behind = false float backcolor = 0 bool turn = false bool terminate = false bool func BranchTermination(Mobius Wd, Circle C) C.fcen = cir[tag[ilev-1]].fcen C.frad = cir[tag[ilev-1]].frad Wd.MobOnCirc(C) if (ilev == @level) || (abs(C.frad) < epsilon) return true else return false endif endfunc func ScreenArray() fx = real(cen) fy = imag(cen) ; ; Riemann code ; 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 else behind = false 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 if @bcolor backcolor = 1e-10 else backcolor = fz endif if px > 0 && py > 0 && px < #width+wd && py < #height+ht lev[px,py] = ilev-1 if behind lev[px,py] = backcolor endif endif endfunc func GoForward() ; don't increment if a turn was just made if !turn if ilev < @level ilev = ilev + 1 endif tag[ilev-1] = (tag[ilev-2]+1) % 4 endif turn = false word.m_T[ilev-1] = new Mobius(0,0,0,0) word.m_T[ilev-2].Mult(gen[tag[ilev-1]],word.m_T[ilev-1]) endfunc bool func BackupAndTurn() ilev = ilev-1 if ilev == 0 return true else if (tag[ilev]+3)%4 == (tag[ilev-1]+2)%4 return false else return true endif endif endfunc func TurnAndGoForward() tag[ilev] = (tag[ilev] +3) % 4 if ilev == 0 ; finished last branch word.m_T[0] = new Mobius(gen[tag[0]].m_a,gen[tag[0]].m_b,gen[tag[0]].m_c,gen[tag[0]].m_d) if checktag == 0 && tag[0] == 0 terminate = true endif else turn = true word.m_T[ilev] = new Mobius(0,0,0,0) word.m_T[ilev-1].Mult(gen[tag[ilev]],word.m_T[ilev]) endif if ilev < @level ilev = ilev + 1 endif ; ready to start last main branch and set flag for final termination if tag[0] == 3 checktag = 0 endif endfunc ilev = 1 tag[0] = 0 ; initialize first word word.m_T[0] = new Mobius(gen[0].m_a,gen[0].m_b,gen[0].m_c,gen[0].m_d) while (tag[0] != 1 || !terminate) repeat GoForward() until BranchTermination(word.m_T[ilev-1],C) cen = C.fcen if abs(C.frad) < epsilon ScreenArray() endif repeat until BackupAndTurn() TurnAndGoForward() endwhile ; init: loop: final: 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 if @filter > 0 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 endif float nlev = 0 color ncolor = rgba(0,0,0,0) float rd = 0 float g = 0 float b = 0 ; complex pz = #screenpixel ; complex center = (#width+wd)/2 + flip((#height+ht)/2) ; pz = abs(real(pz)/cos(@yang/180*#pi) + flip(imag(pz)/cos(@xang/180*#pi))) ; complex cent = abs(real(center)/cos(@yang/180*#pi) + flip(imag(center)/cos(@xang/180*#pi))) ; int x = round(real(pz-cent+center))+wd2 ; int y = round(imag(pz-cent+center))+ht2 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); int x = round((transx + (dxx*cosan + dyy*sinan))) int y = round((transy + (dxx*sinan - dyy*cosan))) if @filter > 0 ; apply the Gaussian filter nlev = 0 gx = -@filter gy = -@filter while gy <= @filter while gx <= @filter nlev = lev[x+gx,y+gy] if nlev != 0 ncolor = gradient(0.05*@scale + ((nlev/log(1/epsilon))%@ncolor)/(@ncolor)) else ncolor = @background endif rd = rd + gauss[gx+@filter,gy+@filter]*red(ncolor) g = g + gauss[gx+@filter,gy+@filter]*green(ncolor) b = b + gauss[gx+@filter,gy+@filter]*blue(ncolor) gx = gx + 1 endwhile gx = -@filter gy = gy + 1 endwhile rd = rd/gweight g = g/gweight b = b/gweight ncolor = rgb(rd,g,b) endif if @filter == 0 if lev[x,y] != 0 nlev=lev[x,y] ncolor = gradient(0.05*@scale + ((nlev/log(1/epsilon))%@ncolor)/(@ncolor)) else #solid=true endif else if nlev == 0 #solid = true endif endif ; special color effects float br = (0.5-@p_bright)*2 int sign = 0 if br < 0 sign = -1 else sign = 1 endif br = br^2*sign float cr = (@p_contrast-0.5)*2 if cr < 0 sign = -1 else sign = 1 endif cr = cr^2*sign+1 float st = (0.5-@p_sat)*2 if st < 0 sign = -1 else sign = 1 endif st = st^2*sign*2 float hu = @p_hue*6 float rd = red(ncolor)-br float gre = green(ncolor)-br float bl = blue(ncolor)-br if rd > 1 rd = 1 endif if gre > 1 gre = 1 endif if bl > 1 bl = 1 endif if rd < 0 rd = 0 endif if gre < 0 gre = 0 endif if bl < 0 bl = 0 endif ncolor = rgba(rd,gre,bl,alpha(ncolor)) rd = red(ncolor)^cr gre = green(ncolor)^cr bl = blue(ncolor)^cr ncolor = rgba(rd,gre,bl,alpha(ncolor)) float satval = sat(ncolor)-st if satval > 1 satval = 1 endif if satval < 0 satval = 0 endif ncolor = hsla(hue(ncolor), satval, lum(ncolor), alpha(ncolor)) float hueval = (hue(ncolor)+hu) % 6 ncolor = hsla(hueval, sat(ncolor), lum(ncolor), alpha(ncolor)) if @p_poster float rd = floor(red(ncolor)*@p_chan)/@p_chan + 0.5/@p_chan float gre = floor(green(ncolor)*@p_chan)/@p_chan + 0.5/@p_chan float bl = floor(blue(ncolor)*@p_chan)/@p_chan + 0.5/@p_chan ncolor = rgba(rd,gre,bl,alpha(ncolor)) endif if @p_gray float gry = 0.3 * red(ncolor)+ 0.59 * green(ncolor) + 0.11 * blue(ncolor) ncolor = rgba(gry,gry,gry,alpha(ncolor)) endif if @p_solar float rd = red(ncolor) float gre = green(ncolor) float bl = blue(ncolor) if rd > @p_thresh rd = 1-rd endif if gre > @p_thresh gre = 1-gre endif if bl > @p_thresh bl = 1-bl endif ncolor = rgba(rd,gre,bl,alpha(ncolor)) endif if @p_bw float gry = 0.3 * red(ncolor)+ 0.59 * green(ncolor) + 0.11 * blue(ncolor) if gry < @p_bwt ncolor = rgba(0,0,0,alpha(ncolor)) else ncolor = rgba(1,1,1,alpha(ncolor)) endif endif #color = ncolor default: int param v_kleinianlimit caption = "Version (Kleinian Limit Sets)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_kleinianlimit < 100 endparam 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 render=false title="Kleinian Limit Sets" heading text = "Oversize the screen to help minimize border effects when the filter \ width > 0." visible = @filter > 0 endheading param percentInc caption = "Oversize by (%)" default = 5.0 visible = @filter > 0 endparam color param background caption = "background color" default = rgba(0.5,0.5,0.5,1) visible = @filter > 0 endparam heading text = "This application of 'Gaussian filter width' usually enhances edge \ detail while blending solid color areas." endheading param filter caption = "Gaussian filter width" default = 0 min = 0 endparam 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." endparam 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 endheading heading text = "Four new branches are created at each search point. The search on \ a given branch ends when the maximum branch depth is reached or the \ circle size is less than epsilon." endheading int param level caption = "Max branch depth" default = 100 min = 2 max = 10000000 endparam heading text = "Epsilon determines the circle size for branch termination (similar to \ bailout for standard fractals). See the book Indra's Pearls for details." endheading float param epsilon caption = "Epsilon" default = 0.001 endparam heading text = "Scale epsilon to screen size to maintain constant dot density per \ unit area." endheading bool param screen caption = "Scale epsilon" default = false endparam ; float param xang ; caption = "X axis rotation" ; default = 0 ; endparam ; float param yang ; caption = "Y axis rotation" ; default = 0 ; endparam param type caption = "Type" default = 0 enum = "Grandma's Special" "Grandma's Special #2" "Jorgensen" \ "Riley" "Maskit" visible = @expert endparam param typeb caption = "Type" default = 1 enum = "Apollonian Gasket" "Double Cusps" visible = !@expert endparam param tb2 caption = "View" default = 319 enum = "1 100 Cusp" "1 99 Cusp" "1 98 Cusp" "1 97 Cusp" "1 96 Cusp" \ "1 95 Cusp" "1 94 Cusp" "1 93 Cusp" "1 92 Cusp" "1 91 Cusp" "1 90 Cusp"\ "1 89 Cusp" "1 88 Cusp" "1 87 Cusp" "1 86 Cusp" "1 85 Cusp" "1 84 Cusp"\ "1 83 Cusp" "1 82 Cusp" "1 81 Cusp" "1 80 Cusp" "1 79 Cusp" "1 78 Cusp"\ "1 77 Cusp" "1 76 Cusp" "1 75 Cusp" "1 74 Cusp" "1 73 Cusp" "1 72 Cusp"\ "1 71 Cusp" "1 70 Cusp" "1 69 Cusp" "1 68 Cusp" "1 67 Cusp" "1 66 Cusp"\ "1 65 Cusp" "1 64 Cusp" "1 63 Cusp" "1 62 Cusp" "1 61 Cusp" "1 60 Cusp"\ "1 59 Cusp" "1 58 Cusp" "1 57 Cusp" "1 56 Cusp" "1 55 Cusp" "1 54 Cusp"\ "1 53 Cusp" "1 52 Cusp" "1 51 Cusp" "1 50 Cusp" "2 99 Cusp" "1 49 Cusp"\ "2 97 Cusp" "1 48 Cusp" "2 95 Cusp" "1 47 Cusp" "2 93 Cusp" "1 46 Cusp"\ "2 91 Cusp" "1 45 Cusp" "2 89 Cusp" "1 44 Cusp" "2 87 Cusp" "1 43 Cusp"\ "2 85 Cusp" "1 42 Cusp" "2 83 Cusp" "1 41 Cusp" "2 81 Cusp" "1 40 Cusp"\ "2 79 Cusp" "1 39 Cusp" "2 77 Cusp" "1 38 Cusp" "2 75 Cusp" "1 37 Cusp"\ "2 73 Cusp" "1 36 Cusp" "2 71 Cusp" "1 35 Cusp" "2 69 Cusp" "1 34 Cusp"\ "2 67 Cusp" "3 100 Cusp" "1 33 Cusp" "3 98 Cusp" "2 65 Cusp" "3 97 Cusp"\ "1 32 Cusp" "3 95 Cusp" "2 63 Cusp" "3 94 Cusp" "1 31 Cusp" "3 92 Cusp"\ "2 61 Cusp" "3 91 Cusp" "1 30 Cusp" "3 89 Cusp" "2 59 Cusp" "3 88 Cusp"\ "1 29 Cusp" "3 86 Cusp" "2 57 Cusp" "3 85 Cusp" "1 28 Cusp" "3 83 Cusp"\ "2 55 Cusp" "3 82 Cusp" "1 27 Cusp" "3 80 Cusp" "2 53 Cusp" "3 79 Cusp" \ "1 26 Cusp" "3 77 Cusp" "2 51 Cusp" "3 76 Cusp" "1 25 Cusp" "4 99 Cusp" \ "3 74 Cusp" "2 49 Cusp" "3 73 Cusp" "4 97 Cusp" "1 24 Cusp" "4 95 Cusp" \ "3 71 Cusp" "2 47 Cusp" "3 70 Cusp" "4 93 Cusp" "1 23 Cusp" "4 91 Cusp" \ "3 68 Cusp" "2 45 Cusp" "3 67 Cusp" "4 89 Cusp" "1 22 Cusp" "4 87 Cusp" \ "3 65 Cusp" "2 43 Cusp" "3 64 Cusp" "4 85 Cusp" "1 21 Cusp" "4 83 Cusp" \ "3 62 Cusp" "2 41 Cusp" "3 61 Cusp" "4 81 Cusp" "1 20 Cusp" "5 99 Cusp" \ "4 79 Cusp" "3 59 Cusp" "5 98 Cusp" "2 39 Cusp" "5 97 Cusp" "3 58 Cusp" \ "4 77 Cusp" "5 96 Cusp" "1 19 Cusp" "5 94 Cusp" "4 75 cusp" "3 56 cusp" \ "5 93 cusp" "2 37 cusp" "5 92 cusp" "3 55 cusp" "4 73 cusp" "5 91 cusp"\ "1 18 cusp" "5 89 cusp" "4 71 cusp" "3 53 cusp" "5 88 cusp" "2 35 cusp"\ "5 87 cusp" "3 52 cusp" "4 69 cusp" "5 86 cusp" "1 17 cusp" "5 84 cusp"\ "4 67 cusp" "3 50 cusp" "5 83 cusp" "2 33 cusp" "5 82 cusp" "3 49 cusp"\ "4 65 cusp" "5 81 cusp" "6 97 cusp" "1 16 cusp" "6 95 cusp" "5 79 cusp"\ "4 63 cusp" "3 47 cusp" "5 78 cusp" "2 31 cusp" "5 77 cusp" "3 46 cusp"\ "4 61 cusp" "5 76 cusp" "6 91 cusp" "1 15 cusp" "6 89 cusp" "5 74 cusp"\ "4 59 cusp" "3 44 cusp" "5 73 cusp" "2 29 cusp" "5 72 cusp" "3 43 cusp"\ "7 100 cusp" "4 57 cusp" "5 71 cusp" "6 85 cusp" "7 99 cusp" "1 14 cusp"\ "7 97 cusp" "6 83 cusp" "5 69 cusp" "4 55 cusp" "7 96 cusp" "3 41 cusp"\ "5 68 cusp" "7 95 cusp" "2 27 cusp" "7 94 cusp" "5 67 cusp" "3 40 cusp"\ "7 93 cusp" "4 53 cusp" "5 66 cusp" "6 79 cusp" "7 92 cusp" "1 13 cusp"\ "7 90 cusp" "6 77 cusp" "5 64 cusp" "4 51 cusp" "7 89 cusp" "3 38 cusp"\ "5 63 cusp" "7 88 cusp" "2 25 cusp" "7 87 cusp" "5 62 cusp" "8 99 cusp"\ "3 37 cusp" "7 86 cusp" "4 49 cusp" "5 61 cusp" "6 73 cusp" "7 85 cusp"\ "8 97 cusp" "1 12 cusp" "8 95 cusp" "7 83 cusp" "6 71 cusp" "5 59 cusp"\ "4 47 cusp" "7 82 cusp" "3 35 cusp" "8 93 cusp" "5 58 cusp" "7 81 cusp"\ "2 23 cusp" "7 80 cusp" "5 57 cusp" "8 91 cusp" "3 34 cusp" "7 79 cusp"\ "4 45 cusp" "5 56 cusp" "6 67 cusp" "7 78 cusp" "8 89 cusp" "9 100 cusp"\ "1 11 cusp" "9 98 cusp" "8 87 cusp" "7 76 cusp" "6 65 cusp" "5 54 cusp"\ "9 97 cusp" "4 43 cusp" "7 75 cusp" "3 32 cusp" "8 85 cusp" "5 53 cusp"\ "7 74 cusp" "9 95 cusp" "2 21 cusp" "9 94 cusp" "7 73 cusp" "5 52 cusp"\ "8 83 cusp" "3 31 cusp" "7 72 cusp" "4 41 cusp" "9 92 cusp" "5 51 cusp"\ "6 61 cusp" "7 71 cusp" "8 81 cusp" "9 91 cusp" "1 10 cusp" "10 99 cusp"\ "9 89 cusp" "8 79 cusp" "7 69 cusp" "6 59 cusp" "5 49 cusp" "9 88 cusp"\ "4 39 cusp" "7 68 cusp" "10 97 cusp" "3 29 cusp" "8 77 cusp" "5 48 cusp"\ "7 67 cusp" "9 86 cusp" "2 19 cusp" "9 85 cusp" "7 66 cusp" "5 47 cusp"\ "8 75 cusp" "3 28 cusp" "10 93 cusp" "7 65 cusp" "4 37 cusp" "9 83 cusp"\ "5 46 cusp" "6 55 cusp" "7 64 cusp" "8 73 cusp" "9 82 cusp" "10 91 cusp"\ "11 100 cusp" "1 9 cusp" "11 98 cusp" "10 89 cusp" "9 80 cusp" "8 71 cusp"\ "7 62 cusp" "6 53 cusp" "11 97 cusp" "5 44 cusp" "9 79 cusp" "4 35 cusp"\ "11 96 cusp" "7 61 cusp" "10 87 cusp" "3 26 cusp" "11 95 cusp" "8 69 cusp"\ "5 43 cusp" "7 60 cusp" "9 77 cusp" "11 94 cusp" "2 17 cusp" "11 93 cusp"\ "9 76 cusp" "7 59 cusp" "5 42 cusp" "8 67 cusp" "11 92 cusp" "3 25 cusp"\ "10 83 cusp" "7 58 cusp" "11 91 cusp" "4 33 cusp" "9 74 cusp" "5 41 cusp"\ "11 90 cusp" "6 49 cusp" "7 57 cusp" "8 65 cusp" "9 73 cusp" "10 81 cusp"\ "11 89 cusp" "12 97 cusp" "1 8 cusp" "12 95 cusp" "11 87 cusp" "10 79 cusp"\ "9 71 cusp" "8 63 cusp" "7 55 cusp" "6 47 cusp" "11 86 cusp" "5 39 cusp"\ "9 70 cusp" "4 31 cusp" "11 85 cusp" "7 54 cusp" "10 77 cusp" "13 100 cusp"\ "3 23 cusp" "11 84 cusp" "8 61 cusp" "13 99 cusp" "5 38 cusp" "12 91 cusp"\ "7 53 cusp" "9 68 cusp" "11 83 cusp" "13 98 cusp" "2 15 cusp" "13 97 cusp"\ "11 82 cusp" "9 67 cusp" "7 52 cusp" "12 89 cusp" "5 37 cusp" "13 96 cusp"\ "8 59 cusp" "11 81 cusp" "3 22 cusp" "13 95 cusp" "10 73 cusp" "7 51 cusp"\ "11 80 cusp" "4 29 cusp" "13 94 cusp" "9 65 cusp" "5 36 cusp" "11 79 cusp"\ "6 43 cusp" "13 93 cusp" "7 50 cusp" "8 57 cusp" "9 64 cusp" "10 71 cusp"\ "11 78 cusp" "12 85 cusp" "13 92 cusp" "14 99 cusp" "1 7 cusp" "14 97 cusp"\ "13 90 cusp" "12 83 cusp" "11 76 cusp" "10 69 cusp" "9 62 cusp" "8 55 cusp"\ "7 48 cusp" "13 89 cusp" "6 41 cusp" "11 75 cusp" "5 34 cusp" "14 95 cusp"\ "9 61 cusp" "13 88 cusp" "4 27 cusp" "11 74 cusp" "7 47 cusp" "10 67 cusp"\ "13 87 cusp" "3 20 cusp" "14 93 cusp" "11 73 cusp" "8 53 cusp" "13 86 cusp"\ "5 33 cusp" "12 79 cusp" "7 46 cusp" "9 59 cusp" "11 72 cusp" "13 85 cusp"\ "15 98 cusp" "2 13 cusp" "15 97 cusp" "13 84 cusp" "11 71 cusp" "9 58 cusp"\ "7 45 cusp" "12 77 cusp" "5 32 cusp" "13 83 cusp" "8 51 cusp" "11 70 cusp"\ "14 89 cusp" "3 19 cusp" "13 82 cusp" "10 63 cusp" "7 44 cusp" "11 69 cusp"\ "15 94 cusp" "4 25 cusp" "13 81 cusp" "9 56 cusp" "14 87 cusp" "5 31 cusp"\ "16 99 cusp" "11 68 cusp" "6 37 cusp" "13 80 cusp" "7 43 cusp" "15 92 cusp"\ "8 49 cusp" "9 55 cusp" "10 61 cusp" "11 67 cusp" "12 73 cusp" "13 79 cusp"\ "14 85 cusp" "15 91 cusp" "16 97 cusp" "1 6 cusp" "16 95 cusp" "15 89 cusp"\ "14 83 cusp" "13 77 cusp" "12 71 cusp" "11 65 cusp" "10 59 cusp" "9 53 cusp"\ "17 100 cusp" "8 47 cusp" "15 88 cusp" "7 41 cusp" "13 76 cusp" "6 35 cusp"\ "17 99 cusp" "11 64 cusp" "16 93 cusp" "5 29 cusp" "14 81 cusp" "9 52 cusp"\ "13 75 cusp" "17 98 cusp" "4 23 cusp" "15 86 cusp" "11 63 cusp" "7 40 cusp"\ "17 97 cusp" "10 57 cusp" "13 74 cusp" "16 91 cusp" "3 17 cusp" "17 96 cusp"\ "14 79 cusp" "11 62 cusp" "8 45 cusp" "13 73 cusp" "5 28 cusp" "17 95 cusp"\ "12 67 cusp" "7 39 cusp" "16 89 cusp" "9 50 cusp" "11 61 cusp" "13 72 cusp"\ "15 83 cusp" "17 94 cusp" "2 11 cusp" "17 93 cusp" "15 82 cusp" "13 71 cusp"\ "11 60 cusp" "9 49 cusp" "16 87 cusp" "7 38 cusp" "12 65 cusp" "17 92 cusp"\ "5 27 cusp" "18 97 cusp" "13 70 cusp" "8 43 cusp" "11 59 cusp" "14 75 cusp"\ "17 91 cusp" "3 16 cusp" "16 85 cusp" "13 69 cusp" "10 53 cusp" "17 90 cusp"\ "7 37 cusp" "18 95 cusp" "11 58 cusp" "15 79 cusp" "19 100 cusp" "4 21 cusp"\ "17 89 cusp" "13 68 cusp" "9 47 cusp" "14 73 cusp" "19 99 cusp" "5 26 cusp"\ "16 83 cusp" "11 57 cusp" "17 88 cusp" "6 31 cusp" "19 98 cusp" "13 67 cusp"\ "7 36 cusp" "15 77 cusp" "8 41 cusp" "17 87 cusp" "9 46 cusp" "19 97 cusp"\ "10 51 cusp" "11 56 cusp" "12 61 cusp" "13 66 cusp" "14 71 cusp" "15 76 cusp"\ "16 81 cusp" "17 86 cusp" "18 91 cusp" "19 96 cusp" "1 5 cusp" "20 99 cusp"\ "19 94 cusp" "18 89 cusp" "17 84 cusp" "16 79 cusp" "15 74 cusp" "14 69 cusp"\ "13 64 cusp" "12 59 cusp" "11 54 cusp" "10 49 cusp" "19 93 cusp" "9 44 cusp"\ "17 83 cusp" "8 39 cusp" "15 73 cusp" "7 34 cusp" "20 97 cusp" "13 63 cusp"\ "19 92 cusp" "6 29 cusp" "17 82 cusp" "11 53 cusp" "16 77 cusp" "5 24 cusp"\ "19 91 cusp" "14 67 cusp" "9 43 cusp" "13 62 cusp" "17 81 cusp" "21 100 cusp"\ "4 19 cusp" "19 90 cusp" "15 71 cusp" "11 52 cusp" "18 85 cusp" "7 33 cusp"\ "17 80 cusp" "10 47 cusp" "13 61 cusp" "16 75 cusp" "19 89 cusp" "3 14 cusp"\ "20 93 cusp" "17 79 cusp" "14 65 cusp" "11 51 cusp" "19 88 cusp" "8 37 cusp"\ "21 97 cusp" "13 60 cusp" "18 83 cusp" "5 23 cusp" "17 78 cusp" "12 55 cusp"\ "19 87 cusp" "7 32 cusp" "16 73 cusp" "9 41 cusp" "20 91 cusp" "11 50 cusp"\ "13 59 cusp" "15 68 cusp" "17 77 cusp" "19 86 cusp" "21 95 cusp" "2 9 cusp"\ "21 94 cusp" "19 85 cusp" "17 76 cusp" "15 67 cusp" "13 58 cusp" "11 49 cusp"\ "20 89 cusp" "9 40 cusp" "16 71 cusp" "7 31 cusp" "19 84 cusp" "12 53 cusp"\ "17 75 cusp" "22 97 cusp" "5 22 cusp" "18 79 cusp" "13 57 cusp" "21 92 cusp"\ "8 35 cusp" "19 83 cusp" "11 48 cusp" "14 61 cusp" "17 74 cusp" "20 87 cusp"\ "23 100 cusp" "3 13 cusp" "22 95 cusp" "19 82 cusp" "16 69 cusp" "13 56 cusp"\ "23 99 cusp" "10 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" "99 100 Cusp" visible = @typeb == "Double Cusps" && !@expert endparam param exam caption ="Examples" default = 0 enum = "1" "2" visible=@typeb=="Apollonian Gasket" && !@expert endparam complex param rc caption = "Riley param" default = (0.05,0.93) visible=@type=="Riley" && (@expert) endparam complex param m caption = "Maskit param" default = (0,2) visible=@type=="Maskit" && (@expert) endparam complex param taj caption = "Trace a" default = (1.8,-0.028) visible = @type == "Jorgensen" && (@expert) endparam complex param tbj caption = "Trace b" default = (2,0) visible = @type == "Jorgensen" && (@expert) endparam complex param ta caption = "Trace a" default = (1.64213876,-0.76658841) visible = (@type == "Grandma's Special" || @type == "Grandma's Special #2" \ ) && (@expert) endparam complex param tb caption = "Trace b" default = (2,0) visible = (@type == "Grandma's Special" || @type == "Grandma's Special #2" \ ) && (@expert) endparam complex param tabab caption = "Trace abAB" default = (-2,0) visible = @type == "Grandma's Special #2" && (@expert) endparam float param radinit caption = "Generator rad" default = -1.0 visible = (@type == "Grandma's Special" || @type == "Grandma's Special #2" \ ||@type == "Jorgensen") && (@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 offset" default = 0.0 endparam int param ncolor caption = "color modulator" default = 2 min = 1 endparam heading caption = "Special Coloring Effects" endheading heading text = "The 'Special Coloring Effects' mimic a number of coloring adjustments \ found in Photoshop and related programs." endheading float param p_bright caption = "Brightness" default = 0.5 min = 0 max = 1 endparam float param p_contrast caption = "Contrast" default = 0.5 min = 0 max = 1 endparam float param p_sat caption = "Saturation" default = 0.5 min = 0 max = 1 endparam float param p_hue caption = "Hue" default = 0.0 min = 0 max = 1 endparam bool param p_gray caption = "Grayscale" default = false endparam bool param p_solar caption = "Solarize" default = false endparam float param p_thresh caption = "Threshold" default = 0.5 endparam bool param p_poster caption = "Posterize" default = false endparam int param p_chan caption = "Colors per channel" default = 4 min = 2 visible = @p_poster endparam bool param p_bw caption = "Black and White" default = false endparam float param p_bwt caption = "Threshold" default = 0.5 min = 0 max = 1 endparam } FractalFormulaTrap { ; this is a direct coloring method that uses objects. ; modified and extended from code of Kerry Mitchell global: import "common.ulb" import "reb.ulb" REB_FractalFunctionTraps f = new @f_class(0) init: f.Init(#pixel,#pixel) loop: f.Iterate(#z) final: #color = f.Result(#z) if (f.IsSolid()) #solid = true endif default: title = "Fractal Formula Trap" int param v_FractalFormulaTrap caption = "Version (Fractal Formula Trap)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_FractalFormulaTrap < 100 endparam heading text = "The algorithm is a generalization of Kerry Mitchell's code for \ Mandelbrot/Julia Trap." endheading REB_FractalFunctionTraps param f_class caption = "Object" selectable = false endparam } DirectColorHeightfields { ; Ron Barnett, December 2010 ; This ucl is intended for use with the heightfield formula $define debug 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 color color2 = rgba(0,0,0,1) color color3 = rgba(0,0,0,1) loop: final: if @ctype == "Diffuse lighting" float l = real(#z) float shad = imag(#z) l = l+1 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) luminance = luminance*(1-shad) color3 = hsl(hue(color3),sat(color3),luminance) if luminance < @ambient color2 = hsl(hue(@ambcolor),sat(@ambcolor),@ambient) #color = blend(color3,color2,0.5) else #color = color3 endif else #color = gradient(0.05*(4+real(#z))) endif if cabs(#z) == 0 && @usesolid #solid = true endif default: title = "Direct Color Heightfields" ; render = false 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 heading text = "'Direct Color Heightfields' is a direct coloring formua designed \ for use with '3D Heightfield Raytrace' to provide specular and \ diffuse lighting when 'Diffuse lighting' is selected in the ufm. \ It can also be used for Distance and Z value coloring." endheading heading caption = "Color Settings" endheading bool param usesolid caption = "Use solid color" default = false endparam param ctype caption = "Color type" default = 0 enum = "Diffuse lighting" "Z value" endparam 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." visible = @ctype == "Diffuse lighting" 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")&& @ctype == "Diffuse lighting" 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")&& @ctype == "Diffuse lighting" 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 = 64 visible = @colorPreset == "Preset" && @ctype == "Diffuse lighting" endparam ;-------------------------------------------------------------------- ; Color Presets ;-------------------------------------------------------------------- heading caption = " Preset Color Settings" visible = (@colorPreset == "Preset") && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" endparam heading caption = "Specular Parameters" visible = @colorPreset != "Gradient" && @ctype == "Diffuse lighting" endheading color param hcolor caption = "Highlight color" default = rgba(255/255,255/255,255/255,1) visible = @colorPreset != "Gradient" && @highlight_type != "none" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" endparam param highlight caption = "Highlight Value" default = 5.0 hint = "Use to generate a 'shiny' hightlight." visible = @colorPreset != "Gradient" && @highlight_type != "none" && @ctype == "Diffuse lighting" 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" && @ctype == "Diffuse lighting" endparam float param hblend caption = "Highlight power" default = 2.0 visible = @colorPreset != "Gradient" && @highlight_type != "none" && @ctype == "Diffuse lighting" endparam float param scale caption = "color scale adj" default = 1.0 visible = @ctype == "Diffuse lighting" endparam bool param reverse caption = "Reverse Colors" default = false visible = @ctype == "Diffuse lighting" endparam float param cblend caption = "color blend power" default = 1.0 visible = @colorPreset != "Gradient" && @ctype == "Diffuse lighting" endparam float param ambient caption = "Ambient light" default = 0.05 visible = @ctype == "Diffuse lighting" endparam color param ambcolor caption = "Ambient color" default = rgba(192/255,192/255,192/255,1) visible = @ctype == "Diffuse lighting" endparam } reb_3d-ifs { ; Modified from Mark Townsend to support 3D IFS $define debug global: import "common.ulb" import "reb.ulb" 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 float cy = imag(#center) float cx = real(#center) float txmax = 4.0/#magn float tymax = txmax float tzmax = sqrt(txmax^2+tymax^2) float xmin = cx - txmax/2 float ymin = cy - tymax/2 Vector rotvec = New Vector(0,0,0,0) float clr = 0 float cxx = 0 float max = 0 float cmax = 0 func Rotate(float &x, float &y, float &z, float angle, Vector a) ROT.Rotate(x, y, z, angle, a) endfunc func RotateX(float &x, float &y, float &z, float angle) ROT.RotateX(x, y, z, angle) endfunc func RotateY(float &x, float &y, float &z, float angle) ROT.RotateY(x, y, z, angle) endfunc func RotateZ(float &x, float &y, float &z, float angle) ROT.RotateZ(x, y, z, angle) endfunc func SkewX(float &x, float &y, float &z, float angle) complex sk = (0,1)^(angle/90.0) complex xy = x*sk + flip(y) x = real(xy) y = imag(xy) endfunc func SkewY(float &x, float &y, float &z, float angle) complex sk = (0,1)^(angle/90.0) complex xy = y*sk + flip(x) x = imag(xy) y = real(xy) endfunc func SkewZ(float &x, float &y, float &z, float angle) complex sk = (0,1)^(angle/90.0) complex yz = z*sk + flip(y) y = imag(yz) z = real(yz) endfunc vector light = new vector(@xlight,@ylight,@zlight,0) light.normalize(light) 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 ; create the filter array and weight ; gx = -@filter gy = -@filter float a = 0 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 int pspread = @resol+1 int xi = 0 int yi = 0 float Inc = @percentInc*0.01 float wd = Inc*#width+5+@resol+@filter float ht = Inc*#height+5+@resol+@filter int wd2 = round(wd*0.5) int ht2 = round(ht*0.5) int seed = 1234567 ; Seed for random numbers int f = 0 ; Map number int i = 0, int j = 0 ; Loop counters int x = 0, int y = 0 ; Loop counters & integer coords int z = 0 ; Z coordinate float pix[round(#width*(1+@percentInc*0.01)+5+@resol+@filter),round(#height*(1+@percentInc*0.01)+5+@resol+@filter)] int hits[round(#width*(1+@percentInc*0.01)+5+@resol+@filter),round(#height*(1+@percentInc*0.01)+5+@resol+@filter)] int map[round(#width*(1+@percentInc*0.01)+5+@resol+@filter),round(#height*(1+@percentInc*0.01)+5+@resol+@filter)] int maps = 0 float ifs[] float ifsclr[] if @randmap maps = @nummaps setlength(ifs,(@nummaps)*13) ; 3D Parameter array setlength(ifsclr,@nummaps) ; color array else maps = @maps setlength(ifs,(@maps)*13) setlength(ifsclr,@maps) ; color array endif float max = 0 ; Maximum color value float xx = 0, float yy = 0, float zz = 0 ; Iterates from previous iteration float xnew = 0, float ynew = 0, float znew = 0 ; Iterates float randparam = 0 float sm = 0 ; Adjust scaling for aspect ratio ; Initialize screen array while x < #width+wd y = 0 while y < #height+ht pix[x,y] = 0 hits[x,y] = 0 map[x,y] = 0 y = y + 1 endwhile y = 0 x = x + 1 endwhile sm = 0 int m = 0 if @randmap seed = random(@seed) while m < maps seed = random(seed), randparam = seed/#randomrange, ifs[idx(maps,m,0)] = abs(randparam) seed = random(seed), randparam = seed/#randomrange, ifs[idx(maps,m,3)] = randparam seed = random(seed), randparam = seed/#randomrange, ifs[idx(maps,m,5)] = abs(randparam) seed = random(seed), randparam = seed/#randomrange, ifs[idx(maps,m,7)] = randparam seed = random(seed), randparam = seed/#randomrange, ifs[idx(maps,m,10)] = abs(randparam) seed = random(seed), randparam = seed/#randomrange, ifs[idx(maps,m,11)] = randparam seed = random(seed), randparam = seed/#randomrange, ifs[idx(maps,m,12)] = abs(randparam) sm = sm + ifs[idx(maps,m,12)] m = m + 1 endwhile m = 0 while m < maps ifs[idx(maps,m,12)] = ifs[idx(maps,m,12)]/sm m = m + 1 endwhile else float m1xx = @m1xx, float m1xy = @m1xy, float m1xz = @m1xz float m1yx = @m1yx, float m1yy = @m1yy, float m1yz = @m1yz float m1zx = @m1zx, float m1zy = @m1zy, float m1zz = @m1zz float m2xx = @m2xx, float m2xy = @m2xy, float m2xz = @m2xz float m2yx = @m2yx, float m2yy = @m2yy, float m2yz = @m2yz float m2zx = @m2zx, float m2zy = @m2zy, float m2zz = @m2zz float m3xx = @m3xx, float m3xy = @m3xy, float m3xz = @m3xz float m3yx = @m3yx, float m3yy = @m3yy, float m3yz = @m3yz float m3zx = @m3zx, float m3zy = @m3zy, float m3zz = @m3zz float m4xx = @m4xx, float m4xy = @m4xy, float m4xz = @m4xz float m4yx = @m4yx, float m4yy = @m4yy, float m4yz = @m4yz float m4zx = @m4zx, float m4zy = @m4zy, float m4zz = @m4zz float m5xx = @m5xx, float m5xy = @m5xy, float m5xz = @m5xz float m5yx = @m5yx, float m5yy = @m5yy, float m5yz = @m5yz float m5zx = @m5zx, float m5zy = @m5zy, float m5zz = @m5zz float m6xx = @m6xx, float m6xy = @m6xy, float m6xz = @m6xz float m6yx = @m6yx, float m6yy = @m6yy, float m6yz = @m6yz float m6zx = @m6zx, float m6zy = @m6zy, float m6zz = @m6zz float m7xx = @m7xx, float m7xy = @m7xy, float m7xz = @m7xz float m7yx = @m7yx, float m7yy = @m7yy, float m7yz = @m7yz float m7zx = @m7zx, float m7zy = @m7zy, float m7zz = @m7zz float m8xx = @m8xx, float m8xy = @m8xy, float m8xz = @m8xz float m8yx = @m8yx, float m8yy = @m8yy, float m8yz = @m8yz float m8zx = @m8zx, float m8zy = @m8zy, float m8zz = @m8zz float m9xx = @m9xx, float m9xy = @m9xy, float m9xz = @m9xz float m9yx = @m9yx, float m9yy = @m9yy, float m9yz = @m9yz float m9zx = @m9zx, float m9zy = @m9zy, float m9zz = @m9zz float m10xx = @m10xx, float m10xy = @m10xy, float m10xz = @m10xz float m10yx = @m10yx, float m10yy = @m10yy, float m10yz = @m10yz float m10zx = @m10zx, float m10zy = @m10zy, float m10zz = @m10zz float m11xx = @m11xx, float m11xy = @m11xy, float m11xz = @m11xz float m11yx = @m11yx, float m11yy = @m11yy, float m11yz = @m11yz float m11zx = @m11zx, float m11zy = @m11zy, float m11zz = @m11zz float m12xx = @m12xx, float m12xy = @m12xy, float m12xz = @m12xz float m12yx = @m12yx, float m12yy = @m12yy, float m12yz = @m12yz float m12zx = @m12zx, float m12zy = @m12zy, float m12zz = @m12zz float m13xx = @m13xx, float m13xy = @m13xy, float m13xz = @m13xz float m13yx = @m13yx, float m13yy = @m13yy, float m13yz = @m13yz float m13zx = @m13zx, float m13zy = @m13zy, float m13zz = @m13zz float m14xx = @m14xx, float m14xy = @m14xy, float m14xz = @m14xz float m14yx = @m14yx, float m14yy = @m14yy, float m14yz = @m14yz float m14zx = @m14zx, float m14zy = @m14zy, float m14zz = @m14zz float m15xx = @m15xx, float m15xy = @m15xy, float m15xz = @m15xz float m15yx = @m15yx, float m15yy = @m15yy, float m15yz = @m15yz float m15zx = @m15zx, float m15zy = @m15zy, float m15zz = @m15zz float m16xx = @m16xx, float m16xy = @m16xy, float m16xz = @m16xz float m16yx = @m16yx, float m16yy = @m16yy, float m16yz = @m16yz float m16zx = @m16zx, float m16zy = @m16zy, float m16zz = @m16zz float m17xx = @m17xx, float m17xy = @m17xy, float m17xz = @m17xz float m17yx = @m17yx, float m17yy = @m17yy, float m17yz = @m17yz float m17zx = @m17zx, float m17zy = @m17zy, float m17zz = @m17zz float m18xx = @m18xx, float m18xy = @m18xy, float m18xz = @m18xz float m18yx = @m18yx, float m18yy = @m18yy, float m18yz = @m18yz float m18zx = @m18zx, float m18zy = @m18zy, float m18zz = @m18zz float m19xx = @m19xx, float m19xy = @m19xy, float m19xz = @m19xz float m19yx = @m19yx, float m19yy = @m19yy, float m19yz = @m19yz float m19zx = @m19zx, float m19zy = @m19zy, float m19zz = @m19zz float m20xx = @m20xx, float m20xy = @m20xy, float m20xz = @m20xz float m20yx = @m20yx, float m20yy = @m20yy, float m20yz = @m20yz float m20zx = @m20zx, float m20zy = @m20zy, float m20zz = @m20zz ; Fill parameter arrays with parameters ; rotate the transform RotateX(m1xx,m1xy,m1xz,@m1ax), RotateX(m1yx,m1yy,m1yz,@m1ax), RotateX(m1zx,m1zy,m1zz,@m1ax) RotateY(m1xx,m1xy,m1xz,@m1ay), RotateY(m1yx,m1yy,m1yz,@m1ay), RotateY(m1zx,m1zy,m1zz,@m1ay) RotateZ(m1xx,m1xy,m1xz,@m1az), RotateZ(m1yx,m1yy,m1yz,@m1az), RotateZ(m1zx,m1zy,m1zz,@m1az) rotvec.init(@m1vx,@m1vy,@m1vz,0) rotvec.Normalize(rotvec) Rotate(m1xx,m1xy,m1xz,@m1av,rotvec), Rotate(m1yx,m1yy,m1yz,@m1av,rotvec), Rotate(m1zx,m1zy,m1zz,@m1av,rotvec) SkewX(m1xx,m1xy,m1xz,@m1sx), SkewX(m1yx,m1yy,m1yz,@m1sx), SkewX(m1zx,m1zy,m1zz,@m1sx) SkewY(m1xx,m1xy,m1xz,@m1sy), SkewY(m1yx,m1yy,m1yz,@m1sy), SkewY(m1zx,m1zy,m1zz,@m1sy) SkewZ(m1xx,m1xy,m1xz,@m1sz), SkewZ(m1yx,m1yy,m1yz,@m1sz), SkewZ(m1zx,m1zy,m1zz,@m1sz) ifs[idx(maps,0,0)] = m1xx, ifs[idx(maps,0,1)] = m1xy, ifs[idx(maps,0,2)] = m1xz, ifs[idx(maps,0,3)] = @m1xc ifs[idx(maps,0,4)] = m1yx, ifs[idx(maps,0,5)] = m1yy, ifs[idx(maps,0,6)] = m1yz, ifs[idx(maps,0,7)] = @m1yc ifs[idx(maps,0,8)] = m1zx, ifs[idx(maps,0,9)] = m1zy, ifs[idx(maps,0,10)] = m1zz, ifs[idx(maps,0,11)] = @m1zc ifs[idx(maps,0,12)] = @m1p RotateX(m2xx,m2xy,m2xz,@m2ax), RotateX(m2yx,m2yy,m2yz,@m2ax), RotateX(m2zx,m2zy,m2zz,@m2ax) RotateY(m2xx,m2xy,m2xz,@m2ay), RotateY(m2yx,m2yy,m2yz,@m2ay), RotateY(m2zx,m2zy,m2zz,@m2ay) RotateZ(m2xx,m2xy,m2xz,@m2az), RotateZ(m2yx,m2yy,m2yz,@m2az), RotateZ(m2zx,m2zy,m2zz,@m2az) rotvec.init(@m2vx,@m2vy,@m2vz,0) rotvec.Normalize(rotvec) Rotate(m2xx,m2xy,m2xz,@m2av,rotvec), Rotate(m2yx,m2yy,m2yz,@m2av,rotvec), Rotate(m2zx,m2zy,m2zz,@m2av,rotvec) SkewX(m2xx,m2xy,m2xz,@m2sx), SkewX(m2yx,m2yy,m2yz,@m2sx), SkewX(m2zx,m2zy,m2zz,@m2sx) SkewY(m2xx,m2xy,m2xz,@m2sy), SkewY(m2yx,m2yy,m2yz,@m2sy), SkewY(m2zx,m2zy,m2zz,@m2sy) SkewZ(m2xx,m2xy,m2xz,@m2sz), SkewZ(m2yx,m2yy,m2yz,@m2sz), SkewZ(m2zx,m2zy,m2zz,@m2sz) ifs[idx(maps,1,0)] = m2xx, ifs[idx(maps,1,1)] = m2xy, ifs[idx(maps,1,2)] = m2xz, ifs[idx(maps,1,3)] = @m2xc ifs[idx(maps,1,4)] = m2yx, ifs[idx(maps,1,5)] = m2yy, ifs[idx(maps,1,6)] = m2yz, ifs[idx(maps,1,7)] = @m2yc ifs[idx(maps,1,8)] = m2zx, ifs[idx(maps,1,9)] = m2zy, ifs[idx(maps,1,10)] = m2zz, ifs[idx(maps,1,11)] = @m2zc ifs[idx(maps,1,12)] = @m2p if maps >= 3 RotateX(m3xx,m3xy,m3xz,@m3ax), RotateX(m3yx,m3yy,m3yz,@m3ax), RotateX(m3zx,m3zy,m3zz,@m3ax) RotateY(m3xx,m3xy,m3xz,@m3ay), RotateY(m3yx,m3yy,m3yz,@m3ay), RotateY(m3zx,m3zy,m3zz,@m3ay) RotateZ(m3xx,m3xy,m3xz,@m3az), RotateZ(m3yx,m3yy,m3yz,@m3az), RotateZ(m3zx,m3zy,m3zz,@m3az) rotvec.init(@m3vx,@m3vy,@m3vz,0) rotvec.Normalize(rotvec) Rotate(m3xx,m3xy,m3xz,@m3av,rotvec), Rotate(m3yx,m3yy,m3yz,@m3av,rotvec), Rotate(m3zx,m3zy,m3zz,@m3av,rotvec) SkewX(m3xx,m3xy,m3xz,@m3sx), SkewX(m3yx,m3yy,m3yz,@m3sx), SkewX(m3zx,m3zy,m3zz,@m3sx) SkewY(m3xx,m3xy,m3xz,@m3sy), SkewY(m3yx,m3yy,m3yz,@m3sy), SkewY(m3zx,m3zy,m3zz,@m3sy) SkewZ(m3xx,m3xy,m3xz,@m3sz), SkewZ(m3yx,m3yy,m3yz,@m3sz), SkewZ(m3zx,m3zy,m3zz,@m3sz) ifs[idx(maps,2,0)] = m3xx, ifs[idx(maps,2,1)] = m3xy, ifs[idx(maps,2,2)] = m3xz, ifs[idx(maps,2,3)] = @m3xc ifs[idx(maps,2,4)] = m3yx, ifs[idx(maps,2,5)] = m3yy, ifs[idx(maps,2,6)] = m3yz, ifs[idx(maps,2,7)] = @m3yc ifs[idx(maps,2,8)] = m3zx, ifs[idx(maps,2,9)] = m3zy, ifs[idx(maps,2,10)] = m3zz, ifs[idx(maps,2,11)] = @m3zc ifs[idx(maps,2,12)] = @m3p endif if maps >= 4 RotateX(m4xx,m4xy,m4xz,@m4ax), RotateX(m4yx,m4yy,m4yz,@m4ax), RotateX(m4zx,m4zy,m4zz,@m4ax) RotateY(m4xx,m4xy,m4xz,@m4ay), RotateY(m4yx,m4yy,m4yz,@m4ay), RotateY(m4zx,m4zy,m4zz,@m4ay) RotateZ(m4xx,m4xy,m4xz,@m4az), RotateZ(m4yx,m4yy,m4yz,@m4az), RotateZ(m4zx,m4zy,m4zz,@m4az) rotvec.init(@m4vx,@m4vy,@m4vz,0) rotvec.Normalize(rotvec) Rotate(m4xx,m4xy,m4xz,@m4av,rotvec), Rotate(m4yx,m4yy,m4yz,@m4av,rotvec), Rotate(m4zx,m4zy,m4zz,@m4av,rotvec) SkewX(m4xx,m4xy,m4xz,@m4sx), SkewX(m4yx,m4yy,m4yz,@m4sx), SkewX(m4zx,m4zy,m4zz,@m4sx) SkewY(m4xx,m4xy,m4xz,@m4sy), SkewY(m4yx,m4yy,m4yz,@m4sy), SkewY(m4zx,m4zy,m4zz,@m4sy) SkewZ(m4xx,m4xy,m4xz,@m4sz), SkewZ(m4yx,m4yy,m4yz,@m4sz), SkewZ(m4zx,m4zy,m4zz,@m4sz) ifs[idx(maps,3,0)] = m4xx, ifs[idx(maps,3,1)] = m4xy, ifs[idx(maps,3,2)] = m4xz, ifs[idx(maps,3,3)] = @m4xc ifs[idx(maps,3,4)] = m4yx, ifs[idx(maps,3,5)] = m4yy, ifs[idx(maps,3,6)] = m4yz, ifs[idx(maps,3,7)] = @m4yc ifs[idx(maps,3,8)] = m4zx, ifs[idx(maps,3,9)] = m4zy, ifs[idx(maps,3,10)] = m4zz, ifs[idx(maps,3,11)] = @m4zc ifs[idx(maps,3,12)] = @m4p endif if maps >= 5 RotateX(m5xx,m5xy,m5xz,@m5ax), RotateX(m5yx,m5yy,m5yz,@m5ax), RotateX(m5zx,m5zy,m5zz,@m5ax) RotateY(m5xx,m5xy,m5xz,@m5ay), RotateY(m5yx,m5yy,m5yz,@m5ay), RotateY(m5zx,m5zy,m5zz,@m5ay) RotateZ(m5xx,m5xy,m5xz,@m5az), RotateZ(m5yx,m5yy,m5yz,@m5az), RotateZ(m5zx,m5zy,m5zz,@m5az) rotvec.init(@m5vx,@m5vy,@m5vz,0) rotvec.Normalize(rotvec) Rotate(m5xx,m5xy,m5xz,@m5av,rotvec), Rotate(m5yx,m5yy,m5yz,@m5av,rotvec), Rotate(m5zx,m5zy,m5zz,@m5av,rotvec) SkewX(m5xx,m5xy,m5xz,@m5sx), SkewX(m5yx,m5yy,m5yz,@m5sx), SkewX(m5zx,m5zy,m5zz,@m5sx) SkewY(m5xx,m5xy,m5xz,@m5sy), SkewY(m5yx,m5yy,m5yz,@m5sy), SkewY(m5zx,m5zy,m5zz,@m5sy) SkewZ(m5xx,m5xy,m5xz,@m5sz), SkewZ(m5yx,m5yy,m5yz,@m5sz), SkewZ(m5zx,m5zy,m5zz,@m5sz) ifs[idx(maps,4,0)] = m5xx, ifs[idx(maps,4,1)] = m5xy, ifs[idx(maps,4,2)] = m5xz, ifs[idx(maps,4,3)] = @m5xc ifs[idx(maps,4,4)] = m5yx, ifs[idx(maps,4,5)] = m5yy, ifs[idx(maps,4,6)] = m5yz, ifs[idx(maps,4,7)] = @m5yc ifs[idx(maps,4,8)] = m5zx, ifs[idx(maps,4,9)] = m5zy, ifs[idx(maps,4,10)] = m5zz, ifs[idx(maps,4,11)] = @m5zc ifs[idx(maps,4,12)] = @m5p endif if maps >= 6 RotateX(m6xx,m6xy,m6xz,@m6ax), RotateX(m6yx,m6yy,m6yz,@m6ax), RotateX(m6zx,m6zy,m6zz,@m6ax) RotateY(m6xx,m6xy,m6xz,@m6ay), RotateY(m6yx,m6yy,m6yz,@m6ay), RotateY(m6zx,m6zy,m6zz,@m6ay) RotateZ(m6xx,m6xy,m6xz,@m6az), RotateZ(m6yx,m6yy,m6yz,@m6az), RotateZ(m6zx,m6zy,m6zz,@m6az) rotvec.init(@m6vx,@m6vy,@m6vz,0) rotvec.Normalize(rotvec) Rotate(m6xx,m6xy,m6xz,@m6av,rotvec), Rotate(m6yx,m6yy,m6yz,@m6av,rotvec), Rotate(m6zx,m6zy,m6zz,@m6av,rotvec) SkewX(m6xx,m6xy,m6xz,@m6sx), SkewX(m6yx,m6yy,m6yz,@m6sx), SkewX(m6zx,m6zy,m6zz,@m6sx) SkewY(m6xx,m6xy,m6xz,@m6sy), SkewY(m6yx,m6yy,m6yz,@m6sy), SkewY(m6zx,m6zy,m6zz,@m6sy) SkewZ(m6xx,m6xy,m6xz,@m6sz), SkewZ(m6yx,m6yy,m6yz,@m6sz), SkewZ(m6zx,m6zy,m6zz,@m6sz) ifs[idx(maps,5,0)] = m6xx, ifs[idx(maps,5,1)] = m6xy, ifs[idx(maps,5,2)] = m6xz, ifs[idx(maps,5,3)] = @m6xc ifs[idx(maps,5,4)] = m6yx, ifs[idx(maps,5,5)] = m6yy, ifs[idx(maps,5,6)] = m6yz, ifs[idx(maps,5,7)] = @m6yc ifs[idx(maps,5,8)] = m6zx, ifs[idx(maps,5,9)] = m6zy, ifs[idx(maps,5,10)] = m6zz, ifs[idx(maps,5,11)] = @m6zc ifs[idx(maps,5,12)] = @m6p endif if maps >= 7 RotateX(m7xx,m7xy,m7xz,@m7ax), RotateX(m7yx,m7yy,m7yz,@m7ax), RotateX(m7zx,m7zy,m7zz,@m7ax) RotateY(m7xx,m7xy,m7xz,@m7ay), RotateY(m7yx,m7yy,m7yz,@m7ay), RotateY(m7zx,m7zy,m7zz,@m7ay) RotateZ(m7xx,m7xy,m7xz,@m7az), RotateZ(m7yx,m7yy,m7yz,@m7az), RotateZ(m7zx,m7zy,m7zz,@m7az) rotvec.init(@m7vx,@m7vy,@m7vz,0) rotvec.Normalize(rotvec) Rotate(m7xx,m7xy,m7xz,@m7av,rotvec), Rotate(m7yx,m7yy,m7yz,@m7av,rotvec), Rotate(m7zx,m7zy,m7zz,@m7av,rotvec) SkewX(m7xx,m7xy,m7xz,@m7sx), SkewX(m7yx,m7yy,m7yz,@m7sx), SkewX(m7zx,m7zy,m7zz,@m7sx) SkewY(m7xx,m7xy,m7xz,@m7sy), SkewY(m7yx,m7yy,m7yz,@m7sy), SkewY(m7zx,m7zy,m7zz,@m7sy) SkewZ(m7xx,m7xy,m7xz,@m7sz), SkewZ(m7yx,m7yy,m7yz,@m7sz), SkewZ(m7zx,m7zy,m7zz,@m7sz) ifs[idx(maps,6,0)] = m7xx, ifs[idx(maps,6,1)] = m7xy, ifs[idx(maps,6,2)] = m7xz, ifs[idx(maps,6,3)] = @m7xc ifs[idx(maps,6,4)] = m7yx, ifs[idx(maps,6,5)] = m7yy, ifs[idx(maps,6,6)] = m7yz, ifs[idx(maps,6,7)] = @m7yc ifs[idx(maps,6,8)] = m7zx, ifs[idx(maps,6,9)] = m7zy, ifs[idx(maps,6,10)] = m7zz, ifs[idx(maps,6,11)] = @m7zc ifs[idx(maps,6,12)] = @m7p endif if maps >= 8 RotateX(m8xx,m8xy,m8xz,@m8ax), RotateX(m8yx,m8yy,m8yz,@m8ax), RotateX(m8zx,m8zy,m8zz,@m8ax) RotateY(m8xx,m8xy,m8xz,@m8ay), RotateY(m8yx,m8yy,m8yz,@m8ay), RotateY(m8zx,m8zy,m8zz,@m8ay) RotateZ(m8xx,m8xy,m8xz,@m8az), RotateZ(m8yx,m8yy,m8yz,@m8az), RotateZ(m8zx,m8zy,m8zz,@m8az) rotvec.init(@m8vx,@m8vy,@m8vz,0) rotvec.Normalize(rotvec) Rotate(m8xx,m8xy,m8xz,@m8av,rotvec), Rotate(m8yx,m8yy,m8yz,@m8av,rotvec), Rotate(m8zx,m8zy,m8zz,@m8av,rotvec) SkewX(m8xx,m8xy,m8xz,@m8sx), SkewX(m8yx,m8yy,m8yz,@m8sx), SkewX(m8zx,m8zy,m8zz,@m8sx) SkewY(m8xx,m8xy,m8xz,@m8sy), SkewY(m8yx,m8yy,m8yz,@m8sy), SkewY(m8zx,m8zy,m8zz,@m8sy) SkewZ(m8xx,m8xy,m8xz,@m8sz), SkewZ(m8yx,m8yy,m8yz,@m8sz), SkewZ(m8zx,m8zy,m8zz,@m8sz) ifs[idx(maps,7,0)] = m8xx, ifs[idx(maps,7,1)] = m8xy, ifs[idx(maps,7,2)] = m8xz, ifs[idx(maps,7,3)] = @m8xc ifs[idx(maps,7,4)] = m8yx, ifs[idx(maps,7,5)] = m8yy, ifs[idx(maps,7,6)] = m8yz, ifs[idx(maps,7,7)] = @m8yc ifs[idx(maps,7,8)] = m8zx, ifs[idx(maps,7,9)] = m8zy, ifs[idx(maps,7,10)] = m8zz, ifs[idx(maps,7,11)] = @m8zc ifs[idx(maps,7,12)] = @m8p endif if maps >= 9 RotateX(m9xx,m9xy,m9xz,@m9ax), RotateX(m9yx,m9yy,m9yz,@m9ax), RotateX(m9zx,m9zy,m9zz,@m9ax) RotateY(m9xx,m9xy,m9xz,@m9ay), RotateY(m9yx,m9yy,m9yz,@m9ay), RotateY(m9zx,m9zy,m9zz,@m9ay) RotateZ(m9xx,m9xy,m9xz,@m9az), RotateZ(m9yx,m9yy,m9yz,@m9az), RotateZ(m9zx,m9zy,m9zz,@m9az) rotvec.init(@m9vx,@m9vy,@m9vz,0) rotvec.Normalize(rotvec) Rotate(m9xx,m9xy,m9xz,@m9av,rotvec), Rotate(m9yx,m9yy,m9yz,@m9av,rotvec), Rotate(m9zx,m9zy,m9zz,@m9av,rotvec) SkewX(m9xx,m9xy,m9xz,@m9sx), SkewX(m9yx,m9yy,m9yz,@m9sx), SkewX(m9zx,m9zy,m9zz,@m9sx) SkewY(m9xx,m9xy,m9xz,@m9sy), SkewY(m9yx,m9yy,m9yz,@m9sy), SkewY(m9zx,m9zy,m9zz,@m9sy) SkewZ(m9xx,m9xy,m9xz,@m9sz), SkewZ(m9yx,m9yy,m9yz,@m9sz), SkewZ(m9zx,m9zy,m9zz,@m9sz) ifs[idx(maps,8,0)] = m9xx, ifs[idx(maps,8,1)] = m9xy, ifs[idx(maps,8,2)] = m9xz, ifs[idx(maps,8,3)] = @m9xc ifs[idx(maps,8,4)] = m9yx, ifs[idx(maps,8,5)] = m9yy, ifs[idx(maps,8,6)] = m9yz, ifs[idx(maps,8,7)] = @m9yc ifs[idx(maps,8,8)] = m9zx, ifs[idx(maps,8,9)] = m9zy, ifs[idx(maps,8,10)] = m9zz, ifs[idx(maps,8,11)] = @m9zc ifs[idx(maps,8,12)] = @m9p endif if maps >= 10 RotateX(m10xx,m10xy,m10xz,@m10ax), RotateX(m10yx,m10yy,m10yz,@m10ax), RotateX(m10zx,m10zy,m10zz,@m10ax) RotateY(m10xx,m10xy,m10xz,@m10ay), RotateY(m10yx,m10yy,m10yz,@m10ay), RotateY(m10zx,m10zy,m10zz,@m10ay) RotateZ(m10xx,m10xy,m10xz,@m10az), RotateZ(m10yx,m10yy,m10yz,@m10az), RotateZ(m10zx,m10zy,m10zz,@m10az) rotvec.init(@m10vx,@m10vy,@m10vz,0) rotvec.Normalize(rotvec) Rotate(m10xx,m10xy,m10xz,@m10av,rotvec), Rotate(m10yx,m10yy,m10yz,@m10av,rotvec), Rotate(m10zx,m10zy,m10zz,@m10av,rotvec) SkewX(m10xx,m10xy,m10xz,@m10sx), SkewX(m10yx,m10yy,m10yz,@m10sx), SkewX(m10zx,m10zy,m10zz,@m10sx) SkewY(m10xx,m10xy,m10xz,@m10sy), SkewY(m10yx,m10yy,m10yz,@m10sy), SkewY(m10zx,m10zy,m10zz,@m10sy) SkewZ(m10xx,m10xy,m10xz,@m10sz), SkewZ(m10yx,m10yy,m10yz,@m10sz), SkewZ(m10zx,m10zy,m10zz,@m10sz) ifs[idx(maps,9,0)] = m10xx, ifs[idx(maps,9,1)] = m10xy, ifs[idx(maps,9,2)] = m10xz, ifs[idx(maps,9,3)] = @m10xc ifs[idx(maps,9,4)] = m10yx, ifs[idx(maps,9,5)] = m10yy, ifs[idx(maps,9,6)] = m10yz, ifs[idx(maps,9,7)] = @m10yc ifs[idx(maps,9,8)] = m10zx, ifs[idx(maps,9,9)] = m10zy, ifs[idx(maps,9,10)] = m10zz, ifs[idx(maps,9,11)] = @m10zc ifs[idx(maps,9,12)] = @m10p endif if maps >= 11 RotateX(m11xx,m11xy,m11xz,@m11ax), RotateX(m11yx,m11yy,m11yz,@m11ax), RotateX(m11zx,m11zy,m11zz,@m11ax) RotateY(m11xx,m11xy,m11xz,@m11ay), RotateY(m11yx,m11yy,m11yz,@m11ay), RotateY(m11zx,m11zy,m11zz,@m11ay) RotateZ(m11xx,m11xy,m11xz,@m11az), RotateZ(m11yx,m11yy,m11yz,@m11az), RotateZ(m11zx,m11zy,m11zz,@m11az) rotvec.init(@m11vx,@m11vy,@m11vz,0) rotvec.Normalize(rotvec) Rotate(m11xx,m11xy,m11xz,@m11av,rotvec), Rotate(m11yx,m11yy,m11yz,@m11av,rotvec), Rotate(m11zx,m11zy,m11zz,@m11av,rotvec) SkewX(m11xx,m11xy,m11xz,@m11sx), SkewX(m11yx,m11yy,m11yz,@m11sx), SkewX(m11zx,m11zy,m11zz,@m11sx) SkewY(m11xx,m11xy,m11xz,@m11sy), SkewY(m11yx,m11yy,m11yz,@m11sy), SkewY(m11zx,m11zy,m11zz,@m11sy) SkewZ(m11xx,m11xy,m11xz,@m11sz), SkewZ(m11yx,m11yy,m11yz,@m11sz), SkewZ(m11zx,m11zy,m11zz,@m11sz) ifs[idx(maps,10,0)] = m11xx, ifs[idx(maps,10,1)] = m11xy, ifs[idx(maps,10,2)] = m11xz, ifs[idx(maps,10,3)] = @m11xc ifs[idx(maps,10,4)] = m11yx, ifs[idx(maps,10,5)] = m11yy, ifs[idx(maps,10,6)] = m11yz, ifs[idx(maps,10,7)] = @m11yc ifs[idx(maps,10,8)] = m11zx, ifs[idx(maps,10,9)] = m11zy, ifs[idx(maps,10,10)] = m11zz, ifs[idx(maps,10,11)] = @m11zc ifs[idx(maps,10,12)] = @m11p endif if maps >= 12 RotateX(m12xx,m12xy,m12xz,@m12ax), RotateX(m12yx,m12yy,m12yz,@m12ax), RotateX(m12zx,m12zy,m12zz,@m12ax) RotateY(m12xx,m12xy,m12xz,@m12ay), RotateY(m12yx,m12yy,m12yz,@m12ay), RotateY(m12zx,m12zy,m12zz,@m12ay) RotateZ(m12xx,m12xy,m12xz,@m12az), RotateZ(m12yx,m12yy,m12yz,@m12az), RotateZ(m12zx,m12zy,m12zz,@m12az) rotvec.init(@m12vx,@m12vy,@m12vz,0) rotvec.Normalize(rotvec) Rotate(m12xx,m12xy,m12xz,@m12av,rotvec), Rotate(m12yx,m12yy,m12yz,@m12av,rotvec), Rotate(m12zx,m12zy,m12zz,@m12av,rotvec) SkewX(m12xx,m12xy,m12xz,@m12sx), SkewX(m12yx,m12yy,m12yz,@m12sx), SkewX(m12zx,m12zy,m12zz,@m12sx) SkewY(m12xx,m12xy,m12xz,@m12sy), SkewY(m12yx,m12yy,m12yz,@m12sy), SkewY(m12zx,m12zy,m12zz,@m12sy) SkewZ(m12xx,m12xy,m12xz,@m12sz), SkewZ(m12yx,m12yy,m12yz,@m12sz), SkewZ(m12zx,m12zy,m12zz,@m12sz) ifs[idx(maps,11,0)] = m12xx, ifs[idx(maps,11,1)] = m12xy, ifs[idx(maps,11,2)] = m12xz, ifs[idx(maps,11,3)] = @m12xc ifs[idx(maps,11,4)] = m12yx, ifs[idx(maps,11,5)] = m12yy, ifs[idx(maps,11,6)] = m12yz, ifs[idx(maps,11,7)] = @m12yc ifs[idx(maps,11,8)] = m12zx, ifs[idx(maps,11,9)] = m12zy, ifs[idx(maps,11,10)] = m12zz, ifs[idx(maps,11,11)] = @m12zc ifs[idx(maps,11,12)] = @m12p endif if maps >= 13 RotateX(m13xx,m13xy,m13xz,@m13ax), RotateX(m13yx,m13yy,m13yz,@m13ax), RotateX(m13zx,m13zy,m13zz,@m13ax) RotateY(m13xx,m13xy,m13xz,@m13ay), RotateY(m13yx,m13yy,m13yz,@m13ay), RotateY(m13zx,m13zy,m13zz,@m13ay) RotateZ(m13xx,m13xy,m13xz,@m13az), RotateZ(m13yx,m13yy,m13yz,@m13az), RotateZ(m13zx,m13zy,m13zz,@m13az) rotvec.init(@m13vx,@m13vy,@m13vz,0) rotvec.Normalize(rotvec) Rotate(m13xx,m13xy,m13xz,@m13av,rotvec), Rotate(m13yx,m13yy,m13yz,@m13av,rotvec), Rotate(m13zx,m13zy,m13zz,@m13av,rotvec) SkewX(m13xx,m13xy,m13xz,@m13sx), SkewX(m13yx,m13yy,m13yz,@m13sx), SkewX(m13zx,m13zy,m13zz,@m13sx) SkewY(m13xx,m13xy,m13xz,@m13sy), SkewY(m13yx,m13yy,m13yz,@m13sy), SkewY(m13zx,m13zy,m13zz,@m13sy) SkewZ(m13xx,m13xy,m13xz,@m13sz), SkewZ(m13yx,m13yy,m13yz,@m13sz), SkewZ(m13zx,m13zy,m13zz,@m13sz) ifs[idx(maps,12,0)] = m13xx, ifs[idx(maps,12,1)] = m13xy, ifs[idx(maps,12,2)] = m13xz, ifs[idx(maps,12,3)] = @m13xc ifs[idx(maps,12,4)] = m13yx, ifs[idx(maps,12,5)] = m13yy, ifs[idx(maps,12,6)] = m13yz, ifs[idx(maps,12,7)] = @m13yc ifs[idx(maps,12,8)] = m13zx, ifs[idx(maps,12,9)] = m13zy, ifs[idx(maps,12,10)] = m13zz, ifs[idx(maps,12,11)] = @m13zc ifs[idx(maps,12,12)] = @m13p endif if maps >= 14 RotateX(m14xx,m14xy,m14xz,@m14ax), RotateX(m14yx,m14yy,m14yz,@m14ax), RotateX(m14zx,m14zy,m14zz,@m14ax) RotateY(m14xx,m14xy,m14xz,@m14ay), RotateY(m14yx,m14yy,m14yz,@m14ay), RotateY(m14zx,m14zy,m14zz,@m14ay) RotateZ(m14xx,m14xy,m14xz,@m14az), RotateZ(m14yx,m14yy,m14yz,@m14az), RotateZ(m14zx,m14zy,m14zz,@m14az) rotvec.init(@m14vx,@m14vy,@m14vz,0) rotvec.Normalize(rotvec) Rotate(m14xx,m14xy,m14xz,@m14av,rotvec), Rotate(m14yx,m14yy,m14yz,@m14av,rotvec), Rotate(m14zx,m14zy,m14zz,@m14av,rotvec) SkewX(m14xx,m14xy,m14xz,@m14sx), SkewX(m14yx,m14yy,m14yz,@m14sx), SkewX(m14zx,m14zy,m14zz,@m14sx) SkewY(m14xx,m14xy,m14xz,@m14sy), SkewY(m14yx,m14yy,m14yz,@m14sy), SkewY(m14zx,m14zy,m14zz,@m14sy) SkewZ(m14xx,m14xy,m14xz,@m14sz), SkewZ(m14yx,m14yy,m14yz,@m14sz), SkewZ(m14zx,m14zy,m14zz,@m14sz) ifs[idx(maps,13,0)] = m14xx, ifs[idx(maps,13,1)] = m14xy, ifs[idx(maps,13,2)] = m14xz, ifs[idx(maps,13,3)] = @m14xc ifs[idx(maps,13,4)] = m14yx, ifs[idx(maps,13,5)] = m14yy, ifs[idx(maps,13,6)] = m14yz, ifs[idx(maps,13,7)] = @m14yc ifs[idx(maps,13,8)] = m14zx, ifs[idx(maps,13,9)] = m14zy, ifs[idx(maps,13,10)] = m14zz, ifs[idx(maps,13,11)] = @m14zc ifs[idx(maps,13,12)] = @m14p endif if maps >= 15 RotateX(m15xx,m15xy,m15xz,@m15ax), RotateX(m15yx,m15yy,m15yz,@m15ax), RotateX(m15zx,m15zy,m15zz,@m15ax) RotateY(m15xx,m15xy,m15xz,@m15ay), RotateY(m15yx,m15yy,m15yz,@m15ay), RotateY(m15zx,m15zy,m15zz,@m15ay) RotateZ(m15xx,m15xy,m15xz,@m15az), RotateZ(m15yx,m15yy,m15yz,@m15az), RotateZ(m15zx,m15zy,m15zz,@m15az) rotvec.init(@m15vx,@m15vy,@m15vz,0) rotvec.Normalize(rotvec) Rotate(m15xx,m15xy,m15xz,@m15av,rotvec), Rotate(m15yx,m15yy,m15yz,@m15av,rotvec), Rotate(m15zx,m15zy,m15zz,@m15av,rotvec) SkewX(m15xx,m15xy,m15xz,@m15sx), SkewX(m15yx,m15yy,m15yz,@m15sx), SkewX(m15zx,m15zy,m15zz,@m15sx) SkewY(m15xx,m15xy,m15xz,@m15sy), SkewY(m15yx,m15yy,m15yz,@m15sy), SkewY(m15zx,m15zy,m15zz,@m15sy) SkewZ(m15xx,m15xy,m15xz,@m15sz), SkewZ(m15yx,m15yy,m15yz,@m15sz), SkewZ(m15zx,m15zy,m15zz,@m15sz) ifs[idx(maps,14,0)] = m15xx, ifs[idx(maps,14,1)] = m15xy, ifs[idx(maps,14,2)] = m15xz, ifs[idx(maps,14,3)] = @m15xc ifs[idx(maps,14,4)] = m15yx, ifs[idx(maps,14,5)] = m15yy, ifs[idx(maps,14,6)] = m15yz, ifs[idx(maps,14,7)] = @m15yc ifs[idx(maps,14,8)] = m15zx, ifs[idx(maps,14,9)] = m15zy, ifs[idx(maps,14,10)] = m15zz, ifs[idx(maps,14,11)] = @m15zc ifs[idx(maps,14,12)] = @m15p endif if maps >= 16 RotateX(m16xx,m16xy,m16xz,@m16ax), RotateX(m16yx,m16yy,m16yz,@m16ax), RotateX(m16zx,m16zy,m16zz,@m16ax) RotateY(m16xx,m16xy,m16xz,@m16ay), RotateY(m16yx,m16yy,m16yz,@m16ay), RotateY(m16zx,m16zy,m16zz,@m16ay) RotateZ(m16xx,m16xy,m16xz,@m16az), RotateZ(m16yx,m16yy,m16yz,@m16az), RotateZ(m16zx,m16zy,m16zz,@m16az) rotvec.init(@m16vx,@m16vy,@m16vz,0) rotvec.Normalize(rotvec) Rotate(m16xx,m16xy,m16xz,@m16av,rotvec), Rotate(m16yx,m16yy,m16yz,@m16av,rotvec), Rotate(m16zx,m16zy,m16zz,@m16av,rotvec) SkewX(m16xx,m16xy,m16xz,@m16sx), SkewX(m16yx,m16yy,m16yz,@m16sx), SkewX(m16zx,m16zy,m16zz,@m16sx) SkewY(m16xx,m16xy,m16xz,@m16sy), SkewY(m16yx,m16yy,m16yz,@m16sy), SkewY(m16zx,m16zy,m16zz,@m16sy) SkewZ(m16xx,m16xy,m16xz,@m16sz), SkewZ(m16yx,m16yy,m16yz,@m16sz), SkewZ(m16zx,m16zy,m16zz,@m16sz) ifs[idx(maps,15,0)] = m16xx, ifs[idx(maps,15,1)] = m16xy, ifs[idx(maps,15,2)] = m16xz, ifs[idx(maps,15,3)] = @m16xc ifs[idx(maps,15,4)] = m16yx, ifs[idx(maps,15,5)] = m16yy, ifs[idx(maps,15,6)] = m16yz, ifs[idx(maps,15,7)] = @m16yc ifs[idx(maps,15,8)] = m16zx, ifs[idx(maps,15,9)] = m16zy, ifs[idx(maps,15,10)] = m16zz, ifs[idx(maps,15,11)] = @m16zc ifs[idx(maps,15,12)] = @m16p endif if maps >= 17 RotateX(m17xx,m17xy,m17xz,@m17ax), RotateX(m17yx,m17yy,m17yz,@m17ax), RotateX(m17zx,m17zy,m17zz,@m17ax) RotateY(m17xx,m17xy,m17xz,@m17ay), RotateY(m17yx,m17yy,m17yz,@m17ay), RotateY(m17zx,m17zy,m17zz,@m17ay) RotateZ(m17xx,m17xy,m17xz,@m17az), RotateZ(m17yx,m17yy,m17yz,@m17az), RotateZ(m17zx,m17zy,m17zz,@m17az) rotvec.init(@m17vx,@m17vy,@m17vz,0) rotvec.Normalize(rotvec) Rotate(m17xx,m17xy,m17xz,@m17av,rotvec), Rotate(m17yx,m17yy,m17yz,@m17av,rotvec), Rotate(m17zx,m17zy,m17zz,@m17av,rotvec) SkewX(m17xx,m17xy,m17xz,@m17sx), SkewX(m17yx,m17yy,m17yz,@m17sx), SkewX(m17zx,m17zy,m17zz,@m17sx) SkewY(m17xx,m17xy,m17xz,@m17sy), SkewY(m17yx,m17yy,m17yz,@m17sy), SkewY(m17zx,m17zy,m17zz,@m17sy) SkewZ(m17xx,m17xy,m17xz,@m17sz), SkewZ(m17yx,m17yy,m17yz,@m17sz), SkewZ(m17zx,m17zy,m17zz,@m17sz) ifs[idx(maps,16,0)] = m17xx, ifs[idx(maps,16,1)] = m17xy, ifs[idx(maps,16,2)] = m17xz, ifs[idx(maps,16,3)] = @m17xc ifs[idx(maps,16,4)] = m17yx, ifs[idx(maps,16,5)] = m17yy, ifs[idx(maps,16,6)] = m17yz, ifs[idx(maps,16,7)] = @m17yc ifs[idx(maps,16,8)] = m17zx, ifs[idx(maps,16,9)] = m17zy, ifs[idx(maps,16,10)] = m17zz, ifs[idx(maps,16,11)] = @m17zc ifs[idx(maps,16,12)] = @m17p endif if maps >= 18 RotateX(m18xx,m18xy,m18xz,@m18ax), RotateX(m18yx,m18yy,m18yz,@m18ax), RotateX(m18zx,m18zy,m18zz,@m18ax) RotateY(m18xx,m18xy,m18xz,@m18ay), RotateY(m18yx,m18yy,m18yz,@m18ay), RotateY(m18zx,m18zy,m18zz,@m18ay) RotateZ(m18xx,m18xy,m18xz,@m18az), RotateZ(m18yx,m18yy,m18yz,@m18az), RotateZ(m18zx,m18zy,m18zz,@m18az) rotvec.init(@m18vx,@m18vy,@m18vz,0) rotvec.Normalize(rotvec) Rotate(m18xx,m18xy,m18xz,@m18av,rotvec), Rotate(m18yx,m18yy,m18yz,@m18av,rotvec), Rotate(m18zx,m18zy,m18zz,@m18av,rotvec) SkewX(m18xx,m18xy,m18xz,@m18sx), SkewX(m18yx,m18yy,m18yz,@m18sx), SkewX(m18zx,m18zy,m18zz,@m18sx) SkewY(m18xx,m18xy,m18xz,@m18sy), SkewY(m18yx,m18yy,m18yz,@m18sy), SkewY(m18zx,m18zy,m18zz,@m18sy) SkewZ(m18xx,m18xy,m18xz,@m18sz), SkewZ(m18yx,m18yy,m18yz,@m18sz), SkewZ(m18zx,m18zy,m18zz,@m18sz) ifs[idx(maps,17,0)] = m18xx, ifs[idx(maps,17,1)] = m18xy, ifs[idx(maps,17,2)] = m18xz, ifs[idx(maps,17,3)] = @m18xc ifs[idx(maps,17,4)] = m18yx, ifs[idx(maps,17,5)] = m18yy, ifs[idx(maps,17,6)] = m18yz, ifs[idx(maps,17,7)] = @m18yc ifs[idx(maps,17,8)] = m18zx, ifs[idx(maps,17,9)] = m18zy, ifs[idx(maps,17,10)] = m18zz, ifs[idx(maps,17,11)] = @m18zc ifs[idx(maps,17,12)] = @m18p endif if maps >= 19 RotateX(m19xx,m19xy,m19xz,@m19ax), RotateX(m19yx,m19yy,m19yz,@m19ax), RotateX(m19zx,m19zy,m19zz,@m19ax) RotateY(m19xx,m19xy,m19xz,@m19ay), RotateY(m19yx,m19yy,m19yz,@m19ay), RotateY(m19zx,m19zy,m19zz,@m19ay) RotateZ(m19xx,m19xy,m19xz,@m19az), RotateZ(m19yx,m19yy,m19yz,@m19az), RotateZ(m19zx,m19zy,m19zz,@m19az) rotvec.init(@m19vx,@m19vy,@m19vz,0) rotvec.Normalize(rotvec) Rotate(m19xx,m19xy,m19xz,@m19av,rotvec), Rotate(m19yx,m19yy,m19yz,@m19av,rotvec), Rotate(m19zx,m19zy,m19zz,@m19av,rotvec) SkewX(m19xx,m19xy,m19xz,@m19sx), SkewX(m19yx,m19yy,m19yz,@m19sx), SkewX(m19zx,m19zy,m19zz,@m19sx) SkewY(m19xx,m19xy,m19xz,@m19sy), SkewY(m19yx,m19yy,m19yz,@m19sy), SkewY(m19zx,m19zy,m19zz,@m19sy) SkewZ(m19xx,m19xy,m19xz,@m19sz), SkewZ(m19yx,m19yy,m19yz,@m19sz), SkewZ(m19zx,m19zy,m19zz,@m19sz) ifs[idx(maps,18,0)] = m19xx, ifs[idx(maps,18,1)] = m19xy, ifs[idx(maps,18,2)] = m19xz, ifs[idx(maps,18,3)] = @m19xc ifs[idx(maps,18,4)] = m19yx, ifs[idx(maps,18,5)] = m19yy, ifs[idx(maps,18,6)] = m19yz, ifs[idx(maps,18,7)] = @m19yc ifs[idx(maps,18,8)] = m19zx, ifs[idx(maps,18,9)] = m19zy, ifs[idx(maps,18,10)] = m19zz, ifs[idx(maps,18,11)] = @m19zc ifs[idx(maps,18,12)] = @m19p endif if maps >= 20 RotateX(m20xx,m20xy,m20xz,@m20ax), RotateX(m20yx,m20yy,m20yz,@m20ax), RotateX(m20zx,m20zy,m20zz,@m20ax) RotateY(m20xx,m20xy,m20xz,@m20ay), RotateY(m20yx,m20yy,m20yz,@m20ay), RotateY(m20zx,m20zy,m20zz,@m20ay) RotateZ(m20xx,m20xy,m20xz,@m20az), RotateZ(m20yx,m20yy,m20yz,@m20az), RotateZ(m20zx,m20zy,m20zz,@m20az) rotvec.init(@m20vx,@m20vy,@m20vz,0) rotvec.Normalize(rotvec) Rotate(m20xx,m20xy,m20xz,@m20av,rotvec), Rotate(m20yx,m20yy,m20yz,@m20av,rotvec), Rotate(m20zx,m20zy,m20zz,@m20av,rotvec) SkewX(m20xx,m20xy,m20xz,@m20sx), SkewX(m20yx,m20yy,m20yz,@m20sx), SkewX(m20zx,m20zy,m20zz,@m20sx) SkewY(m20xx,m20xy,m20xz,@m20sy), SkewY(m20yx,m20yy,m20yz,@m20sy), SkewY(m20zx,m20zy,m20zz,@m20sy) SkewZ(m20xx,m20xy,m20xz,@m20sz), SkewZ(m20yx,m20yy,m20yz,@m20sz), SkewZ(m20zx,m20zy,m20zz,@m20sz) ifs[idx(maps,19,0)] = m20xx, ifs[idx(maps,19,1)] = m20xy, ifs[idx(maps,19,2)] = m20xz, ifs[idx(maps,19,3)] = @m20xc ifs[idx(maps,19,4)] = m20yx, ifs[idx(maps,19,5)] = m20yy, ifs[idx(maps,19,6)] = m20yz, ifs[idx(maps,19,7)] = @m20yc ifs[idx(maps,19,8)] = m20zx, ifs[idx(maps,19,9)] = m20zy, ifs[idx(maps,19,10)] = m20zz, ifs[idx(maps,19,11)] = @m20zc ifs[idx(maps,19,12)] = @m20p endif endif sm = 0 m = 0 while m < maps sm = sm + ifs[idx(maps,m,12)] m = m + 1 endwhile m = 0 while m < maps ifs[idx(maps,m,12)] = ifs[idx(maps,m,12)]/sm m = m + 1 endwhile ; Initialize color array ; if @colorby == "Color Orbit" ; if maps <= 20 ; ifsclr[0] = 1 ; i = 1 ; while i < maps ; ifsclr[i] = 0 ; i = i + 1 ; endwhile ; else ; i = 0 ; while i < maps ; ifsclr[i] = ifs[idx(maps,i,12)] ; i = i + 1 ; endwhile ; endif ; endif i = 0 ; Main iteration loop float nsamples = #width * #height * @max float zmax = 1e-100 float zmin = 1e100 float fi = 0 while fi < nsamples j = 0 seed = random(seed) float r = abs(seed / #randomrange) repeat ; Find map to use r = r - ifs[idx(maps, j, 12)] f = j, j = j + 1 until (r < 0) || (j == maps) ; if @colorby == "Color Orbit" ; clr = (clr + ifsclr[f]) / 2 ; cxx = round(clr * 1000) ; if cxx > cmax ; cmax = cxx ; endif ; endif ; Calculate orbit xnew = ifs[idx(maps, f, 0)] * xx + ifs[idx(maps, f, 1)] * yy + ifs[idx(maps, f, 2)] * zz + ifs[idx(maps, f, 3)] ynew = ifs[idx(maps, f, 4)] * xx + ifs[idx(maps, f, 5)] * yy + ifs[idx(maps, f, 6)] * zz + ifs[idx(maps, f, 7)] znew = ifs[idx(maps, f, 8)] * xx + ifs[idx(maps, f, 9)] * yy + ifs[idx(maps, f, 10)] * zz + ifs[idx(maps, f, 11)] xx = xnew yy = ynew zz = znew if @colorby == "Color Orbit" clr = (clr + abs(zz)*ifs[idx(maps,i,12)]) / 2 cxx = round(clr * 1000) if cxx > cmax cmax = cxx endif endif ; ; translate values to pixels ; ffx = xx - xmin ffy = yy - ymin ffy = tymax - ffy ffx = ffx/txmax ffy = ffy/tymax ffz = zz/tzmax fx = ffx ; ; rotation around the z axis ; fx = 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) + \ (fx - 0.5 - @rotoffx/txmax)*sin(#angle) ; ; rotation around the y axis ; fx = ffx ffx = (0.5 + (ffz - 0.5 - @rotoffz/txmax)*sin(-@zangle*pi/180) + \ (ffx - 0.5 - @rotoffx/txmax)*cos(-@zangle*pi/180)) ffz = (0.5 + (ffz - 0.5 - @rotoffz/tzmax)*cos(-@zangle*pi/180) - \ (fx - 0.5 - @rotoffx/txmax)*sin(-@zangle*pi/180)) ; ; rotation around the x axis ; fy = ffy ffy = (0.5 + (ffy - 0.5 - @rotoffy/tymax)*cos(@xangle*pi/180) - \ (ffz - 0.5 - @rotoffz/tzmax)*sin(@xangle*pi/180)) ffz = (0.5 + (fy - 0.5 - @rotoffy/tymax)*sin(@xangle*pi/180) + \ (ffz - 0.5 - @rotoffz/tzmax)*cos(@xangle*pi/180)) ; ; final translation ; ffx = (ffx - @transx)*#width ffy = (ffy - @transy)*#width ffz = (ffz - @transz)*#width x = round(ffx) + wd2 y = round(ffy) + ht2 z = round(ffz) if z > zmax zmax = z endif if z < zmin zmin = z endif ; Plot the point only if inside array and if it is the foward facing surface if x-pspread+1 > 0 && x < #width+wd&& y-pspread+1 > 1 && y < #height+ht if pix[x,y] == 0 xi = -pspread+1 while xi < pspread yi = -pspread+1 while yi < pspread pix[x+xi, y+yi] = z if @colorby == "Color Orbit" pix[x+xi, y+yi] = cxx endif hits[x+xi, y+yi] = 1 map[x+xi, y+yi] = f + 1 yi = yi + 1 endwhile yi = -pspread xi = xi + 1 endwhile elseif z > pix[x,y] xi = -pspread+1 while xi < pspread yi = -pspread+1 while yi < pspread pix[x+xi, y+yi] = z if @colorby == "Color Orbit" pix[x+xi, y+yi] = cxx endif hits[x+xi, y+yi] = 1 map[x+xi, y+yi] = f + 1 yi = yi + 1 endwhile yi = -pspread+1 xi = xi + 1 endwhile elseif z >= pix[x,y]-2 xi = -pspread+1 while xi < pspread yi = -pspread while yi < pspread hits[x+xi, y+yi] = hits[x+xi, y+yi] + 1 if hits[x+xi,y+yi] > max max = hits[x+xi,y+yi] endif map[x+xi, y+yi] = f + 1 yi = yi + 1 endwhile yi = -pspread+1 xi = xi + 1 endwhile endif endif fi = fi + 1 endwhile final: ; configure for use of transforms int xcrd = #x int ycrd = #y bool inside = true if @mapping ; ; 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))) if (xcrd-1+wd2<0 || xcrd>=#width+wd2-1 || ycrd-1+ht2<0 || ycrd>=#height+ht2-1) inside = false endif endif if inside float rr = 0 float ri = 0 float rj = 0 float ir = 0 float ii = 0 float ij = 0 float n = 0 float nr = 0 float ni = 0 float nj = 0 float lvalue = 0 float count = 0 float pm = 0 float pz = 0 float pzr1p = 0 float pzi1p = 0 float pzr1m = 0 float pzi1m = 0 if @filter == 0 pz=pix[xcrd,ycrd] pzr1p = pix[xcrd+1,ycrd] if xcrd > 0 pzr1m = pix[xcrd-1,ycrd] endif pzi1p = pix[xcrd,ycrd+1] if ycrd > 0 pzi1m = pix[xcrd,ycrd-1] endif count=hits[xcrd,ycrd] pm=map[xcrd,ycrd] else ; apply the Gaussian filter pz = 0 pm=0 count=0 int gxx = -@filter int gyy = -@filter while gyy <= @filter while gxx <= @filter if xcrd+gxx >= 0 && ycrd+gyy>= 0 pz = pz + gauss[gxx+@filter,gyy+@filter]*pix[xcrd+gxx,ycrd+gyy] pm = pm + gauss[gxx+@filter,gyy+@filter]*map[xcrd+gxx,ycrd+gyy] count = count + gauss[gxx+@filter,gyy+@filter]*hits[xcrd+gxx,ycrd+gyy] endif gxx = gxx + 1 endwhile gxx = -@filter gyy = gyy + 1 endwhile pz = pz/gweight pm = round(pm/gweight) count = round(count/gweight) endif float ldist = 0 float lv = 0 if @colorby == "lighting" if @filter > 0 pzr1p = 0 gxx = -@filter gyy = -@filter while gyy <= @filter while gxx <= @filter if xcrd+gxx >= 0 && ycrd+gyy>= 0 pzr1p = pzr1p + gauss[gxx+@filter,gyy+@filter]*pix[xcrd+1+gxx,ycrd+gyy] endif gxx = gxx + 1 endwhile gxx = -@filter gyy = gyy + 1 endwhile pzr1p = pzr1p/gweight pzr1m = 0 gxx = -@filter gyy = -@filter while gyy <= @filter while gxx <= @filter if xcrd+gxx-1 >= 0 && ycrd+gyy>= 0 pzr1m = pzr1m + gauss[gxx+@filter,gyy+@filter]*pix[xcrd-1+gxx,ycrd+gyy] endif gxx = gxx + 1 endwhile gxx = -@filter gyy = gyy + 1 endwhile pzr1m = pzr1m/gweight pzi1p = 0 gxx = -@filter gyy = -@filter while gyy <= @filter while gxx <= @filter if xcrd+gxx >= 0 && ycrd+gyy>= 0 pzi1p = pzi1p + gauss[gxx+@filter,gyy+@filter]*pix[xcrd+gxx,ycrd+1+gyy] endif gxx = gxx + 1 endwhile gxx = -@filter gyy = gyy + 1 endwhile pzi1p = pzi1p/gweight pzi1m = 0 gxx = -@filter gyy = -@filter while gyy <= @filter while gxx <= @filter if xcrd+gxx >= 0 && ycrd-1+gyy>= 0 pzi1m = pzi1m + gauss[gxx+@filter,gyy+@filter]*pix[xcrd+gxx,ycrd-1+gyy] endif gxx = gxx + 1 endwhile gxx = -@filter gyy = gyy + 1 endwhile pzi1m = pzi1m/gweight endif ;calculate normals ; if pz != 0 && pzr1p != 0 && pzi1p != 0 \ ; && pzr1m != 0 && pzi1m != 0 rr = 1 ri = 0 rj = pzr1p- pz n = sqrt(rr^2+ri^2+rj^2) rr = rr/n ri = ri/n rj = rj/n ir = 0 ii = 1 ij = pzi1p- pz n = sqrt(ir^2+ii^2+ij^2) ir = ir/n ii = ii/n ij = ij/n nr = ri*ij - rj*ii ni = rj*ir - rr*ij nj = rr*ii - ri*ir rr = -1 ri = 0 rj = pzr1m- pz n = sqrt(rr^2+ri^2+rj^2) rr = rr/n ri = ri/n rj = rj/n ir = 0 ii = -1 ij = pzi1m- pz n = sqrt(ir^2+ii^2+ij^2) ir = ir/n ii = ii/n ij = ij/n nr = (nr+ri*ij - rj*ii)/2 ni = (ni+rj*ir - rr*ij)/2 nj = (nj+rr*ii - ri*ir)/2 vector normal = new vector(nr,-ni,nj,0) normal.normalize(normal) lvalue = light.dot(normal) if lvalue < 0 lvalue = 0 endif ; else ; lvalue = 0 ; endif ldist = ((xcrd-@xlight*#width)^2 + (ycrd-@ylight*#width)^2 + (pz-@zlight*#width)^2) lv = (@xlight*#width)^2 + (@ylight*#width)^2 + (@zlight*#width)^2 endif if @colorby == "Hit Frequency" #index = log(count) / log(max) elseif @colorby == "Distance" #index = (zmax-pz)/(zmax-zmin) elseif @colorby == "Z Value" #index = abs(pz)/#width elseif @colorby == "Lighting" #index = lvalue*lv/ldist*@brightness elseif @colorby == "Color Orbit" #index = pix[xcrd,ycrd]/cmax else ; Map Number #index = pm / (maps + 1) endif if @solid if pix[xcrd, ycrd] == 0 #solid = true endif endif endif ; This provides an index into a 2-dimensional dynamic array int func idx(int maps, int i, int j) int k = i + j*maps return k endfunc default: title = "3D Iterated Function Systems" render = false bool param mapping caption = "Apply Mapping" default = false endparam float param percentInc caption = "Oversize by (%)" default = 0 visible = @mapping endparam heading caption = "Lighting" visible = @colorby == "Lighting" endheading float param xlight caption = "Light X" default = -1.5 visible = @colorby == "Lighting" endparam float param ylight caption = "Light Y" default = .3 visible = @colorby == "Lighting" endparam float param zlight caption = "Light Z" default = 2.0 visible = @colorby == "Lighting" endparam heading text = "The 'Specular correction' assumes the use of a special 'Phong gradient' \ designed to give specular lighting effects. The correction provides a \ shift in the position of the specular lighting." visible = @colorby == "Lighting" endheading float param brightness caption = "Specular correction" default = 1 visible = @colorby == "Lighting" endparam heading caption = "IFS Parameters" endheading param resol caption = "Resolution" default = 0 enum = "1" "0.5" "0.333" "0.25" endparam int param filter caption = "Filter width" default = 0 endparam float param max caption = "Sample Density" default = 50 min = 1 endparam int param colorby caption = "Color By" enum = "Hit Frequency" "Map Number" "Distance" "Z Value" "Lighting" "Color Orbit" endparam float param clrscale caption = "Color Z scale" default = 1 visible = @colorby == "Distance" endparam bool param solid caption = "Solid Background" default = false endparam int param maps caption = "Number of Maps" default = 5 min = 2 max = 20 visible = !@randmap endparam heading caption = "Rotations and Translations" endheading heading text = "Use the location tab for rotation around the Z Axis." endheading 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 = "Rot Center X Offset" default = 0.0 endparam param rotoffy caption = "Rot Center Y Offset" default = 0.0 endparam param rotoffz caption = "Rot 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 bool param randmap caption = "Use Random Maps" default = false endparam int param seed caption = "Random Seed" default = 12345 visible = @randmap endparam int param nummaps caption = "No. of Random Maps" default = 2 visible = @randmap endparam bool param showmaps caption = "Show Maps" default = false visible = !@randmap endparam heading caption = "Map 1" visible = (@showmaps == true)&& !@randmap endheading heading text = "X Transform" visible = (@showmaps == true)&& !@randmap endheading float param m1xx caption = "x" default = 0.5 visible = (@showmaps == true)&& !@randmap endparam float param m1xy caption = "y" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1xz caption = "z" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1xc caption = "constant" default = 0 visible = (@showmaps == true)&& !@randmap endparam heading text = "Y Transform" visible = (@showmaps == true)&& !@randmap endheading float param m1yx caption = "x" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1yy caption = "y" default = 0.5 visible = (@showmaps == true)&& !@randmap endparam float param m1yz caption = "z" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1yc caption = "constant" default = 0 visible = (@showmaps == true)&& !@randmap endparam heading text = "Z Transform" visible = (@showmaps == true)&& !@randmap endheading float param m1zx caption = "x" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1zy caption = "y" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1zz caption = "z" default = 0.5 visible = (@showmaps == true)&& !@randmap endparam float param m1zc caption = "constant" default = 0 visible = (@showmaps == true)&& !@randmap endparam heading text = "Rotation about X, Y and Z" visible = (@showmaps == true)&& !@randmap endheading float param m1ax caption = "X axis angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1ay caption = "Y axis angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1az caption = "Z axis angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@showmaps == true)&& !@randmap endheading float param m1av caption = "Rotation angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1vx default = 1 caption = "Vector X" visible = (@showmaps == true)&& !@randmap && @m1av != 0 endparam float param m1vy default = 1 caption = "Vector Y" visible = (@showmaps == true)&& !@randmap && @m1av != 0 endparam float param m1vz default = 1 caption = "Vector Z" visible = (@showmaps == true)&& !@randmap && @m1av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@showmaps == true)&& !@randmap endheading float param m1sx caption = "X skew angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1sy caption = "Y skew angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m1sz caption = "Z skew angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@showmaps == true)&& !@randmap endheading float param m1p caption = "probability" default = 1 visible = (@showmaps == true)&& !@randmap endparam heading caption = "Map 2" visible = (@showmaps == true)&& !@randmap endheading heading text = "X Transform" visible = (@showmaps == true)&& !@randmap endheading float param m2xx caption = "x" default = 0.5 visible = (@showmaps == true)&& !@randmap endparam float param m2xy caption = "y" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2xz caption = "z" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2xc caption = "constant" default = 0.5 visible = (@showmaps == true)&& !@randmap endparam heading text = "Y Transform" visible = (@showmaps == true)&& !@randmap endheading float param m2yx caption = "x" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2yy caption = "y" default = 0.5 visible = (@showmaps == true) && !@randmap endparam float param m2yz caption = "z" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2yc caption = "constant" default = 0 visible = (@showmaps == true)&& !@randmap endparam heading text = "Z Transform" visible = (@showmaps == true)&& !@randmap endheading float param m2zx caption = "x" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2zy caption = "y" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2zz caption = "z" default = 0.5 visible = (@showmaps == true)&& !@randmap endparam float param m2zc caption = "constant" default = 0 visible = (@showmaps == true)&& !@randmap endparam heading text = "Rotation about X, Y and Z" visible = (@showmaps == true)&& !@randmap endheading float param m2ax caption = "X axis angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2ay caption = "Y axis angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2az caption = "Z axis angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@showmaps == true)&& !@randmap endheading float param m2av caption = "Rotation angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2vx default = 1 caption = "Vector X" visible = (@showmaps == true)&& !@randmap && @m2av != 0 endparam float param m2vy default = 1 caption = "Vector Y" visible = (@showmaps == true)&& !@randmap && @m2av != 0 endparam float param m2vz default = 1 caption = "Vector Z" visible = (@showmaps == true)&& !@randmap && @m2av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@showmaps == true)&& !@randmap endheading float param m2sx caption = "X skew angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2sy caption = "Y skew angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam float param m2sz caption = "Z skew angle" default = 0 visible = (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@showmaps == true)&& !@randmap endheading float param m2p caption = "probability" default = 1 visible = (@showmaps == true)&& !@randmap endparam heading caption = "Map 3" visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endheading heading text = "X Transform" visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endheading float param m3xx caption = "x" default = 0.5 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam float param m3xy caption = "y" default = 0 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam float param m3xz caption = "z" default = 0 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam float param m3xc caption = "constant" default = 0.5 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam heading text = "Y Transform" visible = (@maps >= 3) && (@showmaps == true) endheading float param m3yx caption = "x" default = 0 visible = (@maps >= 3) && (@showmaps == true) endparam float param m3yy caption = "y" default = 0.5 visible = (@maps >= 3) && (@showmaps == true) endparam float param m3yz caption = "z" default = 0 visible = (@maps >= 3) && (@showmaps == true) endparam float param m3yc caption = "constant" default = 0 visible = (@maps >= 3) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 3) && (@showmaps == true) endheading float param m3zx caption = "x" default = 0 visible = (@maps >= 3) && (@showmaps == true) endparam float param m3zy caption = "y" default = 0 visible = (@maps >= 3) && (@showmaps == true) endparam float param m3zz caption = "z" default = 0.5 visible = (@maps >= 3) && (@showmaps == true) endparam float param m3zc caption = "constant" default = 0.5 visible = (@maps >= 3) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endheading float param m3ax caption = "X axis angle" default = 0 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam float param m3ay caption = "Y axis angle" default = 0 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam float param m3az caption = "Z axis angle" default = 0 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endheading float param m3av caption = "Rotation angle" default = 0 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam float param m3vx default = 1 caption = "Vector X" visible = (@maps >= 3) && (@showmaps == true)&& !@randmap && @m3av != 0 endparam float param m3vy default = 1 caption = "Vector Y" visible = (@maps >= 3) && (@showmaps == true)&& !@randmap && @m3av != 0 endparam float param m3vz default = 1 caption = "Vector Z" visible = (@maps >= 3) && (@showmaps == true)&& !@randmap && @m3av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endheading float param m3sx caption = "X skew angle" default = 0 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam float param m3sy caption = "Y skew angle" default = 0 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam float param m3sz caption = "Z skew angle" default = 0 visible = (@maps >= 3) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 3) && (@showmaps == true) endheading float param m3p caption = "probability" default = 1 visible = (@maps >= 3) && (@showmaps == true) endparam heading caption = "Map 4" visible = (@maps >= 4) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 4) && (@showmaps == true) endheading float param m4xx caption = "x" default = 0.5 visible = (@maps >= 4) && (@showmaps == true) endparam float param m4xy caption = "y" default = 0 visible = (@maps >= 4) && (@showmaps == true) endparam float param m4xz caption = "z" default = 0 visible = (@maps >= 4) && (@showmaps == true) endparam float param m4xc caption = "constant" default = 0.0 visible = (@maps >= 4) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 4) && (@showmaps == true) endheading float param m4yx caption = "x" default = 0 visible = (@maps >= 4) && (@showmaps == true) endparam float param m4yy caption = "y" default = 0.5 visible = (@maps >= 4) && (@showmaps == true) endparam float param m4yz caption = "z" default = 0 visible = (@maps >= 4) && (@showmaps == true) endparam float param m4yc caption = "constant" default = 0 visible = (@maps >= 4) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 4) && (@showmaps == true) endheading float param m4zx caption = "x" default = 0 visible = (@maps >= 4) && (@showmaps == true) endparam float param m4zy caption = "y" default = 0 visible = (@maps >= 4) && (@showmaps == true) endparam float param m4zz caption = "z" default = 0.5 visible = (@maps >= 4) && (@showmaps == true) endparam float param m4zc caption = "constant" default = 0.5 visible = (@maps >= 4) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endheading float param m4ax caption = "X axis angle" default = 0 visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endparam float param m4ay caption = "Y axis angle" default = 0 visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endparam float param m4az caption = "Z axis angle" default = 0 visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endheading float param m4av caption = "Rotation angle" default = 0 visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endparam float param m4vx default = 1 caption = "Vector X" visible = (@maps >= 4) && (@showmaps == true)&& !@randmap && @m4av != 0 endparam float param m4vy default = 1 caption = "Vector Y" visible = (@maps >= 4) && (@showmaps == true)&& !@randmap && @m4av != 0 endparam float param m4vz default = 1 caption = "Vector Z" visible = (@maps >= 4) && (@showmaps == true)&& !@randmap && @m4av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endheading float param m4sx caption = "X skew angle" default = 0 visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endparam float param m4sy caption = "Y skew angle" default = 0 visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endparam float param m4sz caption = "Z skew angle" default = 0 visible = (@maps >= 4) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 4) && (@showmaps == true) endheading float param m4p caption = "probability" default = 1 visible = (@maps >= 4) && (@showmaps == true) endparam heading caption = "Map 5" visible = (@maps >= 5) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 5) && (@showmaps == true) endheading float param m5xx caption = "x" default = 0.5 visible = (@maps >= 5) && (@showmaps == true) endparam float param m5xy caption = "y" default = 0 visible = (@maps >= 5) && (@showmaps == true) endparam float param m5xz caption = "z" default = 0 visible = (@maps >= 5) && (@showmaps == true) endparam float param m5xc caption = "constant" default = 0.25 visible = (@maps >= 5) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 5) && (@showmaps == true) endheading float param m5yx caption = "x" default = 0 visible = (@maps >= 5) && (@showmaps == true) endparam float param m5yy caption = "y" default = 0.5 visible = (@maps >= 5) && (@showmaps == true) endparam float param m5yz caption = "z" default = 0 visible = (@maps >= 5) && (@showmaps == true) endparam float param m5yc caption = "constant" default = 0.433012702 visible = (@maps >= 5) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 5) && (@showmaps == true) endheading float param m5zx caption = "x" default = 0 visible = (@maps >= 5) && (@showmaps == true) endparam float param m5zy caption = "y" default = 0 visible = (@maps >= 5) && (@showmaps == true) endparam float param m5zz caption = "z" default = 0.5 visible = (@maps >= 5) && (@showmaps == true) endparam float param m5zc caption = "constant" default = 0.25 visible = (@maps >= 5) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endheading float param m5ax caption = "X axis angle" default = 0 visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endparam float param m5ay caption = "Y axis angle" default = 0 visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endparam float param m5az caption = "Z axis angle" default = 0 visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endheading float param m5av caption = "Rotation angle" default = 0 visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endparam float param m5vx default = 1 caption = "Vector X" visible = (@maps >= 5) && (@showmaps == true)&& !@randmap && @m5av != 0 endparam float param m5vy default = 1 caption = "Vector Y" visible = (@maps >= 5) && (@showmaps == true)&& !@randmap && @m5av != 0 endparam float param m5vz default = 1 caption = "Vector Z" visible = (@maps >= 5) && (@showmaps == true)&& !@randmap && @m5av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endheading float param m5sx caption = "X skew angle" default = 0 visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endparam float param m5sy caption = "Y skew angle" default = 0 visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endparam float param m5sz caption = "Z skew angle" default = 0 visible = (@maps >= 5) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 5) && (@showmaps == true) endheading float param m5p caption = "probability" default = 1 visible = (@maps >= 5) && (@showmaps == true) endparam heading caption = "Map 6" visible = (@maps >= 6) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 6) && (@showmaps == true) endheading float param m6xx caption = "x" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam float param m6xy caption = "y" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam float param m6xz caption = "z" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam float param m6xc caption = "constant" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 6) && (@showmaps == true) endheading float param m6yx caption = "x" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam float param m6yy caption = "y" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam float param m6yz caption = "z" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam float param m6yc caption = "constant" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 6) && (@showmaps == true) endheading float param m6zx caption = "x" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam float param m6zy caption = "y" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam float param m6zz caption = "z" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam float param m6zc caption = "constant" default = 0 visible = (@maps >= 6) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endheading float param m6ax caption = "X axis angle" default = 0 visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endparam float param m6ay caption = "Y axis angle" default = 0 visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endparam float param m6az caption = "Z axis angle" default = 0 visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endheading float param m6av caption = "Rotation angle" default = 0 visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endparam float param m6vx default = 1 caption = "Vector X" visible = (@maps >= 6) && (@showmaps == true)&& !@randmap && @m6av != 0 endparam float param m6vy default = 1 caption = "Vector Y" visible = (@maps >= 6) && (@showmaps == true)&& !@randmap && @m6av != 0 endparam float param m6vz default = 1 caption = "Vector Z" visible = (@maps >= 6) && (@showmaps == true)&& !@randmap && @m6av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endheading float param m6sx caption = "X skew angle" default = 0 visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endparam float param m6sy caption = "Y skew angle" default = 0 visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endparam float param m6sz caption = "Z skew angle" default = 0 visible = (@maps >= 6) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 6) && (@showmaps == true) endheading float param m6p caption = "probability" default = 1 visible = (@maps >= 6) && (@showmaps == true) endparam heading caption = "Map 7" visible = (@maps >= 7) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 7) && (@showmaps == true) endheading float param m7xx caption = "x" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam float param m7xy caption = "y" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam float param m7xz caption = "z" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam float param m7xc caption = "constant" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 7) && (@showmaps == true) endheading float param m7yx caption = "x" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam float param m7yy caption = "y" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam float param m7yz caption = "z" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam float param m7yc caption = "constant" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 7) && (@showmaps == true) endheading float param m7zx caption = "x" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam float param m7zy caption = "y" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam float param m7zz caption = "z" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam float param m7zc caption = "constant" default = 0 visible = (@maps >= 7) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endheading float param m7ax caption = "X axis angle" default = 0 visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endparam float param m7ay caption = "Y axis angle" default = 0 visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endparam float param m7az caption = "Z axis angle" default = 0 visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endheading float param m7av caption = "Rotation angle" default = 0 visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endparam float param m7vx default = 1 caption = "Vector X" visible = (@maps >= 7) && (@showmaps == true)&& !@randmap && @m7av != 0 endparam float param m7vy default = 1 caption = "Vector Y" visible = (@maps >= 7) && (@showmaps == true)&& !@randmap && @m7av != 0 endparam float param m7vz default = 1 caption = "Vector Z" visible = (@maps >= 7) && (@showmaps == true)&& !@randmap && @m7av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endheading float param m7sx caption = "X skew angle" default = 0 visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endparam float param m7sy caption = "Y skew angle" default = 0 visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endparam float param m7sz caption = "Z skew angle" default = 0 visible = (@maps >= 7) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 7) && (@showmaps == true) endheading float param m7p caption = "probability" default = 1 visible = (@maps >= 7) && (@showmaps == true) endparam heading caption = "Map 8" visible = (@maps >= 8) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 8) && (@showmaps == true) endheading float param m8xx caption = "x" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam float param m8xy caption = "y" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam float param m8xz caption = "z" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam float param m8xc caption = "constant" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 8) && (@showmaps == true) endheading float param m8yx caption = "x" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam float param m8yy caption = "y" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam float param m8yz caption = "z" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam float param m8yc caption = "constant" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 8) && (@showmaps == true) endheading float param m8zx caption = "x" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam float param m8zy caption = "y" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam float param m8zz caption = "z" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam float param m8zc caption = "constant" default = 0 visible = (@maps >= 8) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endheading float param m8ax caption = "X axis angle" default = 0 visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endparam float param m8ay caption = "Y axis angle" default = 0 visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endparam float param m8az caption = "Z axis angle" default = 0 visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endheading float param m8av caption = "Rotation angle" default = 0 visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endparam float param m8vx default = 1 caption = "Vector X" visible = (@maps >= 8) && (@showmaps == true)&& !@randmap && @m8av != 0 endparam float param m8vy default = 1 caption = "Vector Y" visible = (@maps >= 8) && (@showmaps == true)&& !@randmap && @m8av != 0 endparam float param m8vz default = 1 caption = "Vector Z" visible = (@maps >= 8) && (@showmaps == true)&& !@randmap && @m8av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endheading float param m8sx caption = "X skew angle" default = 0 visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endparam float param m8sy caption = "Y skew angle" default = 0 visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endparam float param m8sz caption = "Z skew angle" default = 0 visible = (@maps >= 8) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 8) && (@showmaps == true) endheading float param m8p caption = "probability" default = 1 visible = (@maps >= 8) && (@showmaps == true) endparam heading caption = "Map 9" visible = (@maps >= 9) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 9) && (@showmaps == true) endheading float param m9xx caption = "x" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam float param m9xy caption = "y" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam float param m9xz caption = "z" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam float param m9xc caption = "constant" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 9) && (@showmaps == true) endheading float param m9yx caption = "x" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam float param m9yy caption = "y" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam float param m9yz caption = "z" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam float param m9yc caption = "constant" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 9) && (@showmaps == true) endheading float param m9zx caption = "x" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam float param m9zy caption = "y" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam float param m9zz caption = "z" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam float param m9zc caption = "constant" default = 0 visible = (@maps >= 9) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endheading float param m9ax caption = "X axis angle" default = 0 visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endparam float param m9ay caption = "Y axis angle" default = 0 visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endparam float param m9az caption = "Z axis angle" default = 0 visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endheading float param m9av caption = "Rotation angle" default = 0 visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endparam float param m9vx default = 1 caption = "Vector X" visible = (@maps >= 9) && (@showmaps == true)&& !@randmap && @m9av != 0 endparam float param m9vy default = 1 caption = "Vector Y" visible = (@maps >= 9) && (@showmaps == true)&& !@randmap && @m9av != 0 endparam float param m9vz default = 1 caption = "Vector Z" visible = (@maps >= 9) && (@showmaps == true)&& !@randmap && @m9av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endheading float param m9sx caption = "X skew angle" default = 0 visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endparam float param m9sy caption = "Y skew angle" default = 0 visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endparam float param m9sz caption = "Z skew angle" default = 0 visible = (@maps >= 9) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 9) && (@showmaps == true) endheading float param m9p caption = "probability" default = 1 visible = (@maps >= 9) && (@showmaps == true) endparam heading caption = "Map 10" visible = (@maps >= 10) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 10) && (@showmaps == true) endheading float param m10xx caption = "x" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam float param m10xy caption = "y" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam float param m10xz caption = "z" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam float param m10xc caption = "constant" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 10) && (@showmaps == true) endheading float param m10yx caption = "x" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam float param m10yy caption = "y" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam float param m10yz caption = "z" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam float param m10yc caption = "constant" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 10) && (@showmaps == true) endheading float param m10zx caption = "x" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam float param m10zy caption = "y" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam float param m10zz caption = "z" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam float param m10zc caption = "constant" default = 0 visible = (@maps >= 10) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endheading float param m10ax caption = "X axis angle" default = 0 visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endparam float param m10ay caption = "Y axis angle" default = 0 visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endparam float param m10az caption = "Z axis angle" default = 0 visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endheading float param m10av caption = "Rotation angle" default = 0 visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endparam float param m10vx default = 1 caption = "Vector X" visible = (@maps >= 10) && (@showmaps == true)&& !@randmap && @m10av != 0 endparam float param m10vy default = 1 caption = "Vector Y" visible = (@maps >= 10) && (@showmaps == true)&& !@randmap && @m10av != 0 endparam float param m10vz default = 1 caption = "Vector Z" visible = (@maps >= 10) && (@showmaps == true)&& !@randmap && @m10av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endheading float param m10sx caption = "X skew angle" default = 0 visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endparam float param m10sy caption = "Y skew angle" default = 0 visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endparam float param m10sz caption = "Z skew angle" default = 0 visible = (@maps >= 10) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 10) && (@showmaps == true) endheading float param m10p caption = "probability" default = 1 visible = (@maps >= 10) && (@showmaps == true) endparam heading caption = "Map 11" visible = (@maps >= 11) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 11) && (@showmaps == true) endheading float param m11xx caption = "x" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam float param m11xy caption = "y" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam float param m11xz caption = "z" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam float param m11xc caption = "constant" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 11) && (@showmaps == true) endheading float param m11yx caption = "x" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam float param m11yy caption = "y" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam float param m11yz caption = "z" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam float param m11yc caption = "constant" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 11) && (@showmaps == true) endheading float param m11zx caption = "x" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam float param m11zy caption = "y" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam float param m11zz caption = "z" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam float param m11zc caption = "constant" default = 0 visible = (@maps >= 11) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endheading float param m11ax caption = "X axis angle" default = 0 visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endparam float param m11ay caption = "Y axis angle" default = 0 visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endparam float param m11az caption = "Z axis angle" default = 0 visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endheading float param m11av caption = "Rotation angle" default = 0 visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endparam float param m11vx default = 1 caption = "Vector X" visible = (@maps >= 11) && (@showmaps == true)&& !@randmap && @m11av != 0 endparam float param m11vy default = 1 caption = "Vector Y" visible = (@maps >= 11) && (@showmaps == true)&& !@randmap && @m11av != 0 endparam float param m11vz default = 1 caption = "Vector Z" visible = (@maps >= 11) && (@showmaps == true)&& !@randmap && @m11av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endheading float param m11sx caption = "X skew angle" default = 0 visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endparam float param m11sy caption = "Y skew angle" default = 0 visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endparam float param m11sz caption = "Z skew angle" default = 0 visible = (@maps >= 11) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 11) && (@showmaps == true) endheading float param m11p caption = "probability" default = 1 visible = (@maps >= 11) && (@showmaps == true) endparam heading caption = "Map 12" visible = (@maps >= 12) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 12) && (@showmaps == true) endheading float param m12xx caption = "x" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam float param m12xy caption = "y" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam float param m12xz caption = "z" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam float param m12xc caption = "constant" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 12) && (@showmaps == true) endheading float param m12yx caption = "x" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam float param m12yy caption = "y" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam float param m12yz caption = "z" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam float param m12yc caption = "constant" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 12) && (@showmaps == true) endheading float param m12zx caption = "x" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam float param m12zy caption = "y" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam float param m12zz caption = "z" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam float param m12zc caption = "constant" default = 0 visible = (@maps >= 12) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endheading float param m12ax caption = "X axis angle" default = 0 visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endparam float param m12ay caption = "Y axis angle" default = 0 visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endparam float param m12az caption = "Z axis angle" default = 0 visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endheading float param m12av caption = "Rotation angle" default = 0 visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endparam float param m12vx default = 1 caption = "Vector X" visible = (@maps >= 12) && (@showmaps == true)&& !@randmap && @m12av != 0 endparam float param m12vy default = 1 caption = "Vector Y" visible = (@maps >= 12) && (@showmaps == true)&& !@randmap && @m12av != 0 endparam float param m12vz default = 1 caption = "Vector Z" visible = (@maps >= 12) && (@showmaps == true)&& !@randmap && @m12av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endheading float param m12sx caption = "X skew angle" default = 0 visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endparam float param m12sy caption = "Y skew angle" default = 0 visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endparam float param m12sz caption = "Z skew angle" default = 0 visible = (@maps >= 12) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 12) && (@showmaps == true) endheading float param m12p caption = "probability" default = 1 visible = (@maps >= 12) && (@showmaps == true) endparam heading caption = "Map 13" visible = (@maps >= 13) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 13) && (@showmaps == true) endheading float param m13xx caption = "x" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam float param m13xy caption = "y" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam float param m13xz caption = "z" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam float param m13xc caption = "constant" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 13) && (@showmaps == true) endheading float param m13yx caption = "x" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam float param m13yy caption = "y" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam float param m13yz caption = "z" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam float param m13yc caption = "constant" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 13) && (@showmaps == true) endheading float param m13zx caption = "x" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam float param m13zy caption = "y" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam float param m13zz caption = "z" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam float param m13zc caption = "constant" default = 0 visible = (@maps >= 13) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endheading float param m13ax caption = "X axis angle" default = 0 visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endparam float param m13ay caption = "Y axis angle" default = 0 visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endparam float param m13az caption = "Z axis angle" default = 0 visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endheading float param m13av caption = "Rotation angle" default = 0 visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endparam float param m13vx default = 1 caption = "Vector X" visible = (@maps >= 13) && (@showmaps == true)&& !@randmap && @m13av != 0 endparam float param m13vy default = 1 caption = "Vector Y" visible = (@maps >= 13) && (@showmaps == true)&& !@randmap && @m13av != 0 endparam float param m13vz default = 1 caption = "Vector Z" visible = (@maps >= 13) && (@showmaps == true)&& !@randmap && @m13av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endheading float param m13sx caption = "X skew angle" default = 0 visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endparam float param m13sy caption = "Y skew angle" default = 0 visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endparam float param m13sz caption = "Z skew angle" default = 0 visible = (@maps >= 13) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 13) && (@showmaps == true) endheading float param m13p caption = "probability" default = 1 visible = (@maps >= 13) && (@showmaps == true) endparam heading caption = "Map 14" visible = (@maps >= 14) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 14) && (@showmaps == true) endheading float param m14xx caption = "x" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam float param m14xy caption = "y" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam float param m14xz caption = "z" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam float param m14xc caption = "constant" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 14) && (@showmaps == true) endheading float param m14yx caption = "x" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam float param m14yy caption = "y" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam float param m14yz caption = "z" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam float param m14yc caption = "constant" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 14) && (@showmaps == true) endheading float param m14zx caption = "x" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam float param m14zy caption = "y" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam float param m14zz caption = "z" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam float param m14zc caption = "constant" default = 0 visible = (@maps >= 14) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endheading float param m14ax caption = "X axis angle" default = 0 visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endparam float param m14ay caption = "Y axis angle" default = 0 visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endparam float param m14az caption = "Z axis angle" default = 0 visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endheading float param m14av caption = "Rotation angle" default = 0 visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endparam float param m14vx default = 1 caption = "Vector X" visible = (@maps >= 14) && (@showmaps == true)&& !@randmap && @m14av != 0 endparam float param m14vy default = 1 caption = "Vector Y" visible = (@maps >= 14) && (@showmaps == true)&& !@randmap && @m14av != 0 endparam float param m14vz default = 1 caption = "Vector Z" visible = (@maps >= 14) && (@showmaps == true)&& !@randmap && @m14av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endheading float param m14sx caption = "X skew angle" default = 0 visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endparam float param m14sy caption = "Y skew angle" default = 0 visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endparam float param m14sz caption = "Z skew angle" default = 0 visible = (@maps >= 14) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 14) && (@showmaps == true) endheading float param m14p caption = "probability" default = 1 visible = (@maps >= 14) && (@showmaps == true) endparam heading caption = "Map 15" visible = (@maps >= 15) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 15) && (@showmaps == true) endheading float param m15xx caption = "x" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam float param m15xy caption = "y" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam float param m15xz caption = "z" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam float param m15xc caption = "constant" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 15) && (@showmaps == true) endheading float param m15yx caption = "x" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam float param m15yy caption = "y" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam float param m15yz caption = "z" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam float param m15yc caption = "constant" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 15) && (@showmaps == true) endheading float param m15zx caption = "x" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam float param m15zy caption = "y" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam float param m15zz caption = "z" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam float param m15zc caption = "constant" default = 0 visible = (@maps >= 15) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endheading float param m15ax caption = "X axis angle" default = 0 visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endparam float param m15ay caption = "Y axis angle" default = 0 visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endparam float param m15az caption = "Z axis angle" default = 0 visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endheading float param m15av caption = "Rotation angle" default = 0 visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endparam float param m15vx default = 1 caption = "Vector X" visible = (@maps >= 15) && (@showmaps == true)&& !@randmap && @m15av != 0 endparam float param m15vy default = 1 caption = "Vector Y" visible = (@maps >= 15) && (@showmaps == true)&& !@randmap && @m15av != 0 endparam float param m15vz default = 1 caption = "Vector Z" visible = (@maps >= 15) && (@showmaps == true)&& !@randmap && @m15av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endheading float param m15sx caption = "X skew angle" default = 0 visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endparam float param m15sy caption = "Y skew angle" default = 0 visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endparam float param m15sz caption = "Z skew angle" default = 0 visible = (@maps >= 15) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 15) && (@showmaps == true) endheading float param m15p caption = "probability" default = 1 visible = (@maps >= 15) && (@showmaps == true) endparam heading caption = "Map 16" visible = (@maps >= 16) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 16) && (@showmaps == true) endheading float param m16xx caption = "x" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam float param m16xy caption = "y" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam float param m16xz caption = "z" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam float param m16xc caption = "constant" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 16) && (@showmaps == true) endheading float param m16yx caption = "x" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam float param m16yy caption = "y" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam float param m16yz caption = "z" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam float param m16yc caption = "constant" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 16) && (@showmaps == true) endheading float param m16zx caption = "x" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam float param m16zy caption = "y" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam float param m16zz caption = "z" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam float param m16zc caption = "constant" default = 0 visible = (@maps >= 16) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endheading float param m16ax caption = "X axis angle" default = 0 visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endparam float param m16ay caption = "Y axis angle" default = 0 visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endparam float param m16az caption = "Z axis angle" default = 0 visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endheading float param m16av caption = "Rotation angle" default = 0 visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endparam float param m16vx default = 1 caption = "Vector X" visible = (@maps >= 16) && (@showmaps == true)&& !@randmap && @m16av != 0 endparam float param m16vy default = 1 caption = "Vector Y" visible = (@maps >= 16) && (@showmaps == true)&& !@randmap && @m16av != 0 endparam float param m16vz default = 1 caption = "Vector Z" visible = (@maps >= 16) && (@showmaps == true)&& !@randmap && @m16av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endheading float param m16sx caption = "X skew angle" default = 0 visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endparam float param m16sy caption = "Y skew angle" default = 0 visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endparam float param m16sz caption = "Z skew angle" default = 0 visible = (@maps >= 16) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 16) && (@showmaps == true) endheading float param m16p caption = "probability" default = 1 visible = (@maps >= 16) && (@showmaps == true) endparam heading caption = "Map 17" visible = (@maps >= 17) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 17) && (@showmaps == true) endheading float param m17xx caption = "x" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam float param m17xy caption = "y" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam float param m17xz caption = "z" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam float param m17xc caption = "constant" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 17) && (@showmaps == true) endheading float param m17yx caption = "x" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam float param m17yy caption = "y" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam float param m17yz caption = "z" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam float param m17yc caption = "constant" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 17) && (@showmaps == true) endheading float param m17zx caption = "x" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam float param m17zy caption = "y" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam float param m17zz caption = "z" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam float param m17zc caption = "constant" default = 0 visible = (@maps >= 17) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endheading float param m17ax caption = "X axis angle" default = 0 visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endparam float param m17ay caption = "Y axis angle" default = 0 visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endparam float param m17az caption = "Z axis angle" default = 0 visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endheading float param m17av caption = "Rotation angle" default = 0 visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endparam float param m17vx default = 1 caption = "Vector X" visible = (@maps >= 17) && (@showmaps == true)&& !@randmap && @m17av != 0 endparam float param m17vy default = 1 caption = "Vector Y" visible = (@maps >= 17) && (@showmaps == true)&& !@randmap && @m17av != 0 endparam float param m17vz default = 1 caption = "Vector Z" visible = (@maps >= 17) && (@showmaps == true)&& !@randmap && @m17av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endheading float param m17sx caption = "X skew angle" default = 0 visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endparam float param m17sy caption = "Y skew angle" default = 0 visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endparam float param m17sz caption = "Z skew angle" default = 0 visible = (@maps >= 17) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 17) && (@showmaps == true) endheading float param m17p caption = "probability" default = 1 visible = (@maps >= 17) && (@showmaps == true) endparam heading caption = "Map 18" visible = (@maps >= 18) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 18) && (@showmaps == true) endheading float param m18xx caption = "x" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam float param m18xy caption = "y" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam float param m18xz caption = "z" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam float param m18xc caption = "constant" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 18) && (@showmaps == true) endheading float param m18yx caption = "x" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam float param m18yy caption = "y" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam float param m18yz caption = "z" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam float param m18yc caption = "constant" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 18) && (@showmaps == true) endheading float param m18zx caption = "x" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam float param m18zy caption = "y" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam float param m18zz caption = "z" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam float param m18zc caption = "constant" default = 0 visible = (@maps >= 18) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endheading float param m18ax caption = "X axis angle" default = 0 visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endparam float param m18ay caption = "Y axis angle" default = 0 visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endparam float param m18az caption = "Z axis angle" default = 0 visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endheading float param m18av caption = "Rotation angle" default = 0 visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endparam float param m18vx default = 1 caption = "Vector X" visible = (@maps >= 18) && (@showmaps == true)&& !@randmap && @m18av != 0 endparam float param m18vy default = 1 caption = "Vector Y" visible = (@maps >= 18) && (@showmaps == true)&& !@randmap && @m18av != 0 endparam float param m18vz default = 1 caption = "Vector Z" visible = (@maps >= 18) && (@showmaps == true)&& !@randmap && @m18av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endheading float param m18sx caption = "X skew angle" default = 0 visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endparam float param m18sy caption = "Y skew angle" default = 0 visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endparam float param m18sz caption = "Z skew angle" default = 0 visible = (@maps >= 18) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 18) && (@showmaps == true) endheading float param m18p caption = "probability" default = 1 visible = (@maps >= 18) && (@showmaps == true) endparam heading caption = "Map 19" visible = (@maps >= 19) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 19) && (@showmaps == true) endheading float param m19xx caption = "x" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam float param m19xy caption = "y" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam float param m19xz caption = "z" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam float param m19xc caption = "constant" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 19) && (@showmaps == true) endheading float param m19yx caption = "x" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam float param m19yy caption = "y" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam float param m19yz caption = "z" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam float param m19yc caption = "constant" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 19) && (@showmaps == true) endheading float param m19zx caption = "x" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam float param m19zy caption = "y" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam float param m19zz caption = "z" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam float param m19zc caption = "constant" default = 0 visible = (@maps >= 19) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endheading float param m19ax caption = "X axis angle" default = 0 visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endparam float param m19ay caption = "Y axis angle" default = 0 visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endparam float param m19az caption = "Z axis angle" default = 0 visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endheading float param m19av caption = "Rotation angle" default = 0 visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endparam float param m19vx default = 1 caption = "Vector X" visible = (@maps >= 19) && (@showmaps == true)&& !@randmap && @m19av != 0 endparam float param m19vy default = 1 caption = "Vector Y" visible = (@maps >= 19) && (@showmaps == true)&& !@randmap && @m19av != 0 endparam float param m19vz default = 1 caption = "Vector Z" visible = (@maps >= 19) && (@showmaps == true)&& !@randmap && @m19av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endheading float param m19sx caption = "X skew angle" default = 0 visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endparam float param m19sy caption = "Y skew angle" default = 0 visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endparam float param m19sz caption = "Z skew angle" default = 0 visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 19) && (@showmaps == true) endheading float param m19p caption = "probability" default = 1 visible = (@maps >= 19) && (@showmaps == true) endparam heading caption = "Map 20" visible = (@maps >= 20) && (@showmaps == true) endheading heading text = "X Transform" visible = (@maps >= 20) && (@showmaps == true) endheading float param m20xx caption = "x" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam float param m20xy caption = "y" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam float param m20xz caption = "z" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam float param m20xc caption = "constant" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam heading text = "Y Transform" visible = (@maps >= 20) && (@showmaps == true) endheading float param m20yx caption = "x" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam float param m20yy caption = "y" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam float param m20yz caption = "z" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam float param m20yc caption = "constant" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam heading text = "Z Transform" visible = (@maps >= 20) && (@showmaps == true) endheading float param m20zx caption = "x" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam float param m20zy caption = "y" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam float param m20zz caption = "z" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam float param m20zc caption = "constant" default = 0 visible = (@maps >= 20) && (@showmaps == true) endparam heading text = "Rotation about X, Y and Z" visible = (@maps >= 20) && (@showmaps == true)&& !@randmap endheading float param m20ax caption = "X axis angle" default = 0 visible = (@maps >= 20) && (@showmaps == true)&& !@randmap endparam float param m20ay caption = "Y axis angle" default = 0 visible = (@maps >= 20) && (@showmaps == true)&& !@randmap endparam float param m20az caption = "Z axis angle" default = 0 visible = (@maps >= 20) && (@showmaps == true)&& !@randmap endparam heading text = "Rotation about vector" visible = (@maps >= 20) && (@showmaps == true)&& !@randmap endheading float param m20av caption = "Rotation angle" default = 0 visible = (@maps >= 20) && (@showmaps == true)&& !@randmap endparam float param m20vx default = 1 caption = "Vector X" visible = (@maps >= 20) && (@showmaps == true)&& !@randmap && @m20av != 0 endparam float param m20vy default = 1 caption = "Vector Y" visible = (@maps >= 20) && (@showmaps == true)&& !@randmap && @m20av != 0 endparam float param m20vz default = 1 caption = "Vector Z" visible = (@maps >= 20) && (@showmaps == true)&& !@randmap && @m20av != 0 endparam heading text = "Skew about X, Y and Z" visible = (@maps >= 20) && (@showmaps == true)&& !@randmap endheading float param m20sx caption = "X skew angle" default = 0 visible = (@maps >= 20) && (@showmaps == true)&& !@randmap endparam float param m20sy caption = "Y skew angle" default = 0 visible = (@maps >= 20) && (@showmaps == true)&& !@randmap endparam float param m20sz caption = "Z skew angle" default = 0 visible = (@maps >= 19) && (@showmaps == true)&& !@randmap endparam heading text = "------------" visible = (@maps >= 20) && (@showmaps == true) endheading float param m20p caption = "probability" default = 1 visible = (@maps >= 20) && (@showmaps == true) endparam } LSystems_new { ; February 12, 2012 $define debug global: import "reb.ulb" import "common.ulb" LineArray la = new LineArray(@asize) LineArray leaf11 = new LineArray(4) LineArray leaf12 = new LineArray(4) LineArray leaf21 = new LineArray(4) LineArray leaf22 = new LineArray(4) LineArray leaf31 = new LineArray(@needles1) LineArray leaf32 = new LineArray(@needles2) LineArray leaf41 = new LineArray(10) LineArray leaf42 = new LineArray(10) LineArray flower11 = new LineArray(12) LineArray flower12 = new LineArray(12) LineArray flower21 = new LineArray(12) LineArray flower22 = new LineArray(12) LineArray flower31 = new LineArray(12) LineArray flower32 = new LineArray(12) LineArray temp line lne = new line(0,0,0,0,0,0) float colorjump[] int i = 0 int j = 0 int k = 0 int axiom[] int repro1[] int repro2[] int repro3[] int repro4[] int repro5[] int repro6[] int repro7[] int repro8[] int main[] int newmain[] int dep[] float stackxcorr[] float stackycorr[] float stackzcorr[] line stacklne[] float stacktheta[] int stackoldk[] int stackdepth[] float stackfsize[] float stackgsize[] color objectcolor1[] color objectcolor2[] PointArray Images = new PointArray(@stacksize) PointArray Images2 = new PointArray(@stacksize) int imagek[] int imagek2[] int stacklast[] int stackidx = 0 float popx = 0 float popy = 0 float popz = 0 setLength(axiom, @alen) setLength(repro1, @rlen1) setLength(repro2, @rlen2) setLength(repro3, @rlen3) setLength(repro4, @rlen4) setLength(repro5, @rlen5) setLength(repro6, @rlen6) setLength(repro7, @rlen7) setLength(repro8, @rlen8) setLength(main, @asize) setLength(newmain, @asize) setLength(dep, 2*@asize) setLength(colorjump, @asize) setLength(imagek, @asize) setLength(imagek2, @asize) setlength(stacklne,@stacksize) setlength(stackxcorr,@stacksize) setlength(stackycorr,@stacksize) setlength(stackzcorr,@stacksize) setlength(stacktheta,@stacksize) setlength(stacklast,@stacksize) setlength(stackoldk,@stacksize) setlength(stackdepth,@stacksize) setlength(stackfsize,@stacksize) setlength(stackgsize,@stacksize) while i < @stacksize images.pt[i] = new Point(-1,-1,-1) images2.pt[i] = new Point(-1,-1,-1) i = i + 1 endwhile i = 0 while i < @asize colorjump[i] = 0 i = i + 1 endwhile i = 0 setlength(objectcolor1,12) objectcolor1[0] = @color11 objectcolor1[1] = @color21 objectcolor1[2] = @color31 objectcolor1[3] = @color41 objectcolor1[4] = @color51 objectcolor1[5] = @color61 objectcolor1[6] = @color71 objectcolor1[7] = @color81 objectcolor1[8] = @color91 objectcolor1[9] = @color101 objectcolor1[10] = @color111 objectcolor1[11] = @color121 setlength(objectcolor2,12) objectcolor2[0] = @color12 objectcolor2[1] = @color22 objectcolor2[2] = @color32 objectcolor2[3] = @color42 objectcolor2[4] = @color52 objectcolor2[5] = @color62 objectcolor2[6] = @color72 objectcolor2[7] = @color82 objectcolor2[8] = @color92 objectcolor2[9] = @color102 objectcolor2[10] = @color112 objectcolor2[11] = @color122 bool didpop = false float zmin = 1e100 float zmax = -1e100 int seed = @seed ; initial value seed = random(seed) float fseed = seed/#randomrange func rvalue(float &val, float range) seed = random(seed) fseed = seed/#randomrange*range val = val+val*fseed endfunc int seed3 = @seed3 ; initial value seed3 = random(seed3) float fseed3 = seed3/#randomrange func rvalue3(float &val, float range) seed3 = random(seed3) fseed3 = seed3/#randomrange*range val = val+val*fseed3 endfunc ;set the axiom array while i < @alen if i == 0 axiom[i] = @ax1 elseif i == 1 axiom[i] = @ax2 elseif i == 2 axiom[i] = @ax3 elseif i == 3 axiom[i] = @ax4 elseif i == 4 axiom[i] = @ax5 elseif i == 5 axiom[i] = @ax6 elseif i == 6 axiom[i] = @ax7 elseif i == 7 axiom[i] = @ax8 elseif i == 8 axiom[i] = @ax9 elseif i == 9 axiom[i] = @ax10 elseif i == 10 axiom[i] = @ax11 elseif i == 11 axiom[i] = @ax12 elseif i == 12 axiom[i] = @ax13 elseif i == 13 axiom[i] = @ax14 elseif i == 14 axiom[i] = @ax15 elseif i == 15 axiom[i] = @ax16 elseif i == 16 axiom[i] = @ax17 elseif i == 17 axiom[i] = @ax18 elseif i == 18 axiom[i] = @ax19 elseif i == 19 axiom[i] = @ax20 elseif i == 20 axiom[i] = @ax21 elseif i == 21 axiom[i] = @ax22 elseif i == 22 axiom[i] = @ax23 elseif i == 23 axiom[i] = @ax24 elseif i == 24 axiom[i] = @ax25 elseif i == 25 axiom[i] = @ax26 elseif i == 26 axiom[i] = @ax27 elseif i == 27 axiom[i] = @ax28 elseif i == 28 axiom[i] = @ax29 elseif i == 29 axiom[i] = @ax30 elseif i == 30 axiom[i] = @ax31 elseif i == 31 axiom[i] = @ax32 elseif i == 32 axiom[i] = @ax33 elseif i == 33 axiom[i] = @ax34 elseif i == 34 axiom[i] = @ax35 elseif i == 35 axiom[i] = @ax36 elseif i == 36 axiom[i] = @ax37 elseif i == 37 axiom[i] = @ax38 elseif i == 38 axiom[i] = @ax39 elseif i == 39 axiom[i] = @ax40 endif i = i+1 endwhile i = 0 while i < @alen if axiom[i] == 1 axiom[i] = 16 elseif axiom[i] == 2 axiom[i] = 17 elseif axiom[i] == 3 axiom[i] = 24 elseif axiom[i] == 4 axiom[i] = 22 elseif axiom[i] == 5 axiom[i] = 23 elseif axiom[i] == 6 axiom[i] = 25 elseif axiom[i] == 7 axiom[i] = 4 elseif axiom[i] == 8 axiom[i] = 5 elseif axiom[i] == 9 axiom[i] = 6 elseif axiom[i] == 10 axiom[i] = 7 elseif axiom[i] == 11 axiom[i] = 8 elseif axiom[i] == 12 axiom[i] = 9 elseif axiom[i] == 13 axiom[i] = 10 elseif axiom[i] == 14 axiom[i] = 11 elseif axiom[i] == 15 axiom[i] = 12 elseif axiom[i] == 16 axiom[i] = 13 endif i = i + 1 endwhile i = 0 while i < @alen main[i] = axiom[i] i = i + 1 endwhile int mainl = @alen ; set reproduction array #1 i = 0 while i < @rlen1 if i == 0 repro1[i] = @rule11 elseif i == 1 repro1[i] = @rule21 elseif i == 2 repro1[i] = @rule31 elseif i == 3 repro1[i] = @rule41 elseif i == 4 repro1[i] = @rule51 elseif i == 5 repro1[i] = @rule61 elseif i == 6 repro1[i] = @rule71 elseif i == 7 repro1[i] = @rule81 elseif i == 8 repro1[i] = @rule91 elseif i == 9 repro1[i] = @rule101 elseif i == 10 repro1[i] = @rule111 elseif i == 11 repro1[i] = @rule121 elseif i == 12 repro1[i] = @rule131 elseif i == 13 repro1[i] = @rule141 elseif i == 14 repro1[i] = @rule151 elseif i == 15 repro1[i] = @rule161 elseif i == 16 repro1[i] = @rule171 elseif i == 17 repro1[i] = @rule181 elseif i == 18 repro1[i] = @rule191 elseif i == 19 repro1[i] = @rule201 elseif i == 20 repro1[i] = @rule211 elseif i == 21 repro1[i] = @rule221 elseif i == 22 repro1[i] = @rule231 elseif i == 23 repro1[i] = @rule241 elseif i == 24 repro1[i] = @rule251 elseif i == 25 repro1[i] = @rule261 elseif i == 26 repro1[i] = @rule271 elseif i == 27 repro1[i] = @rule281 elseif i == 28 repro1[i] = @rule291 elseif i == 29 repro1[i] = @rule301 elseif i == 30 repro1[i] = @rule311 elseif i == 31 repro1[i] = @rule321 elseif i == 32 repro1[i] = @rule331 elseif i == 33 repro1[i] = @rule341 elseif i == 34 repro1[i] = @rule351 elseif i == 35 repro1[i] = @rule361 elseif i == 36 repro1[i] = @rule371 elseif i == 37 repro1[i] = @rule381 elseif i == 38 repro1[i] = @rule391 elseif i == 39 repro1[i] = @rule401 elseif i == 40 repro1[i] = @rule411 elseif i == 41 repro1[i] = @rule421 elseif i == 42 repro1[i] = @rule431 elseif i == 43 repro1[i] = @rule441 elseif i == 44 repro1[i] = @rule451 elseif i == 45 repro1[i] = @rule461 elseif i == 46 repro1[i] = @rule471 elseif i == 47 repro1[i] = @rule481 elseif i == 48 repro1[i] = @rule491 elseif i == 49 repro1[i] = @rule501 endif i = i + 1 endwhile ; set reproduction array #2 i = 0 while i < @rlen2 if i == 0 repro2[i] = @rule12 elseif i == 1 repro2[i] = @rule22 elseif i == 2 repro2[i] = @rule32 elseif i == 3 repro2[i] = @rule42 elseif i == 4 repro2[i] = @rule52 elseif i == 5 repro2[i] = @rule62 elseif i == 6 repro2[i] = @rule72 elseif i == 7 repro2[i] = @rule82 elseif i == 8 repro2[i] = @rule92 elseif i == 9 repro2[i] = @rule102 elseif i == 10 repro2[i] = @rule112 elseif i == 11 repro2[i] = @rule122 elseif i == 12 repro2[i] = @rule132 elseif i == 13 repro2[i] = @rule142 elseif i == 14 repro2[i] = @rule152 elseif i == 15 repro2[i] = @rule162 elseif i == 16 repro2[i] = @rule172 elseif i == 17 repro2[i] = @rule182 elseif i == 18 repro2[i] = @rule192 elseif i == 19 repro2[i] = @rule202 elseif i == 20 repro2[i] = @rule212 elseif i == 21 repro2[i] = @rule222 elseif i == 22 repro2[i] = @rule232 elseif i == 23 repro2[i] = @rule242 elseif i == 24 repro2[i] = @rule252 elseif i == 25 repro2[i] = @rule262 elseif i == 26 repro2[i] = @rule272 elseif i == 27 repro2[i] = @rule282 elseif i == 28 repro2[i] = @rule292 elseif i == 29 repro2[i] = @rule302 elseif i == 30 repro2[i] = @rule312 elseif i == 31 repro2[i] = @rule322 elseif i == 32 repro2[i] = @rule332 elseif i == 33 repro2[i] = @rule342 elseif i == 34 repro2[i] = @rule352 elseif i == 35 repro2[i] = @rule362 elseif i == 36 repro2[i] = @rule372 elseif i == 37 repro2[i] = @rule382 elseif i == 38 repro2[i] = @rule392 elseif i == 39 repro2[i] = @rule402 elseif i == 40 repro2[i] = @rule412 elseif i == 41 repro2[i] = @rule422 elseif i == 42 repro2[i] = @rule432 elseif i == 43 repro2[i] = @rule442 elseif i == 44 repro2[i] = @rule452 elseif i == 45 repro2[i] = @rule462 elseif i == 46 repro2[i] = @rule472 elseif i == 47 repro2[i] = @rule482 elseif i == 48 repro2[i] = @rule492 elseif i == 49 repro2[i] = @rule502 endif i = i + 1 endwhile ; set reproduction array #3 i = 0 while i < @rlen3 if i == 0 repro3[i] = @rule13 elseif i == 1 repro3[i] = @rule23 elseif i == 2 repro3[i] = @rule33 elseif i == 3 repro3[i] = @rule43 elseif i == 4 repro3[i] = @rule53 elseif i == 5 repro3[i] = @rule63 elseif i == 6 repro3[i] = @rule73 elseif i == 7 repro3[i] = @rule83 elseif i == 8 repro3[i] = @rule93 elseif i == 9 repro3[i] = @rule103 elseif i == 10 repro3[i] = @rule113 elseif i == 11 repro3[i] = @rule123 elseif i == 12 repro3[i] = @rule133 elseif i == 13 repro3[i] = @rule143 elseif i == 14 repro3[i] = @rule153 elseif i == 15 repro3[i] = @rule163 elseif i == 16 repro3[i] = @rule173 elseif i == 17 repro3[i] = @rule183 elseif i == 18 repro3[i] = @rule193 elseif i == 19 repro3[i] = @rule203 elseif i == 20 repro3[i] = @rule213 elseif i == 21 repro3[i] = @rule223 elseif i == 22 repro3[i] = @rule233 elseif i == 23 repro3[i] = @rule243 elseif i == 24 repro3[i] = @rule253 elseif i == 25 repro3[i] = @rule263 elseif i == 26 repro3[i] = @rule273 elseif i == 27 repro3[i] = @rule283 elseif i == 28 repro3[i] = @rule293 elseif i == 29 repro3[i] = @rule303 elseif i == 30 repro3[i] = @rule313 elseif i == 31 repro3[i] = @rule323 elseif i == 32 repro3[i] = @rule333 elseif i == 33 repro3[i] = @rule343 elseif i == 34 repro3[i] = @rule353 elseif i == 35 repro3[i] = @rule363 elseif i == 36 repro3[i] = @rule373 elseif i == 37 repro3[i] = @rule383 elseif i == 38 repro3[i] = @rule393 elseif i == 39 repro3[i] = @rule403 elseif i == 40 repro3[i] = @rule413 elseif i == 41 repro3[i] = @rule423 elseif i == 42 repro3[i] = @rule433 elseif i == 43 repro3[i] = @rule443 elseif i == 44 repro3[i] = @rule453 elseif i == 45 repro3[i] = @rule463 elseif i == 46 repro3[i] = @rule473 elseif i == 47 repro3[i] = @rule483 elseif i == 48 repro3[i] = @rule493 elseif i == 49 repro3[i] = @rule503 endif i = i + 1 endwhile ; set reproduction array #4 i = 0 while i < @rlen4 if i == 0 repro4[i] = @rule14 elseif i == 1 repro4[i] = @rule24 elseif i == 2 repro4[i] = @rule34 elseif i == 3 repro4[i] = @rule44 elseif i == 4 repro4[i] = @rule54 elseif i == 5 repro4[i] = @rule64 elseif i == 6 repro4[i] = @rule74 elseif i == 7 repro4[i] = @rule84 elseif i == 8 repro4[i] = @rule94 elseif i == 9 repro4[i] = @rule104 elseif i == 10 repro4[i] = @rule114 elseif i == 11 repro4[i] = @rule124 elseif i == 12 repro4[i] = @rule134 elseif i == 13 repro4[i] = @rule144 elseif i == 14 repro4[i] = @rule154 elseif i == 15 repro4[i] = @rule164 elseif i == 16 repro4[i] = @rule174 elseif i == 17 repro4[i] = @rule184 elseif i == 18 repro4[i] = @rule194 elseif i == 19 repro4[i] = @rule204 elseif i == 20 repro4[i] = @rule214 elseif i == 21 repro4[i] = @rule224 elseif i == 22 repro4[i] = @rule234 elseif i == 23 repro4[i] = @rule244 elseif i == 24 repro4[i] = @rule254 elseif i == 25 repro4[i] = @rule264 elseif i == 26 repro4[i] = @rule274 elseif i == 27 repro4[i] = @rule284 elseif i == 28 repro4[i] = @rule294 elseif i == 29 repro4[i] = @rule304 elseif i == 30 repro4[i] = @rule314 elseif i == 31 repro4[i] = @rule324 elseif i == 32 repro4[i] = @rule334 elseif i == 33 repro4[i] = @rule344 elseif i == 34 repro4[i] = @rule354 elseif i == 35 repro4[i] = @rule364 elseif i == 36 repro4[i] = @rule374 elseif i == 37 repro4[i] = @rule384 elseif i == 38 repro4[i] = @rule394 elseif i == 39 repro4[i] = @rule404 elseif i == 40 repro4[i] = @rule414 elseif i == 41 repro4[i] = @rule424 elseif i == 42 repro4[i] = @rule434 elseif i == 43 repro4[i] = @rule444 elseif i == 44 repro4[i] = @rule454 elseif i == 45 repro4[i] = @rule464 elseif i == 46 repro4[i] = @rule474 elseif i == 47 repro4[i] = @rule484 elseif i == 48 repro4[i] = @rule494 elseif i == 49 repro4[i] = @rule504 endif i = i + 1 endwhile ; set reproduction array #5 i = 0 while i < @rlen5 if i == 0 repro5[i] = @rule15 elseif i == 1 repro5[i] = @rule25 elseif i == 2 repro5[i] = @rule35 elseif i == 3 repro5[i] = @rule45 elseif i == 4 repro5[i] = @rule55 elseif i == 5 repro5[i] = @rule65 elseif i == 6 repro5[i] = @rule75 elseif i == 7 repro5[i] = @rule85 elseif i == 8 repro5[i] = @rule95 elseif i == 9 repro5[i] = @rule105 elseif i == 10 repro5[i] = @rule115 elseif i == 11 repro5[i] = @rule125 elseif i == 12 repro5[i] = @rule135 elseif i == 13 repro5[i] = @rule145 elseif i == 14 repro5[i] = @rule155 elseif i == 15 repro5[i] = @rule165 elseif i == 16 repro5[i] = @rule175 elseif i == 17 repro5[i] = @rule185 elseif i == 18 repro5[i] = @rule195 elseif i == 19 repro5[i] = @rule205 elseif i == 20 repro5[i] = @rule215 elseif i == 21 repro5[i] = @rule225 elseif i == 22 repro5[i] = @rule235 elseif i == 23 repro5[i] = @rule245 elseif i == 24 repro5[i] = @rule255 elseif i == 25 repro5[i] = @rule265 elseif i == 26 repro5[i] = @rule275 elseif i == 27 repro5[i] = @rule285 elseif i == 28 repro5[i] = @rule295 elseif i == 29 repro5[i] = @rule305 elseif i == 30 repro5[i] = @rule315 elseif i == 31 repro5[i] = @rule325 elseif i == 32 repro5[i] = @rule335 elseif i == 33 repro5[i] = @rule345 elseif i == 34 repro5[i] = @rule355 elseif i == 35 repro5[i] = @rule365 elseif i == 36 repro5[i] = @rule375 elseif i == 37 repro5[i] = @rule385 elseif i == 38 repro5[i] = @rule395 elseif i == 39 repro5[i] = @rule405 elseif i == 40 repro5[i] = @rule415 elseif i == 41 repro5[i] = @rule425 elseif i == 42 repro5[i] = @rule435 elseif i == 43 repro5[i] = @rule445 elseif i == 44 repro5[i] = @rule455 elseif i == 45 repro5[i] = @rule465 elseif i == 46 repro5[i] = @rule475 elseif i == 47 repro5[i] = @rule485 elseif i == 48 repro5[i] = @rule495 elseif i == 49 repro5[i] = @rule505 endif i = i + 1 endwhile ; set reproduction array #6 i = 0 while i < @rlen6 if i == 0 repro6[i] = @rule16 elseif i == 1 repro6[i] = @rule26 elseif i == 2 repro6[i] = @rule36 elseif i == 3 repro6[i] = @rule46 elseif i == 4 repro6[i] = @rule56 elseif i == 5 repro6[i] = @rule66 elseif i == 6 repro6[i] = @rule76 elseif i == 7 repro6[i] = @rule86 elseif i == 8 repro6[i] = @rule96 elseif i == 9 repro6[i] = @rule106 elseif i == 10 repro6[i] = @rule116 elseif i == 11 repro6[i] = @rule126 elseif i == 12 repro6[i] = @rule136 elseif i == 13 repro6[i] = @rule146 elseif i == 14 repro6[i] = @rule156 elseif i == 15 repro6[i] = @rule166 elseif i == 16 repro6[i] = @rule176 elseif i == 17 repro6[i] = @rule186 elseif i == 18 repro6[i] = @rule196 elseif i == 19 repro6[i] = @rule206 elseif i == 20 repro6[i] = @rule216 elseif i == 21 repro6[i] = @rule226 elseif i == 22 repro6[i] = @rule236 elseif i == 23 repro6[i] = @rule246 elseif i == 24 repro6[i] = @rule256 elseif i == 25 repro6[i] = @rule266 elseif i == 26 repro6[i] = @rule276 elseif i == 27 repro6[i] = @rule286 elseif i == 28 repro6[i] = @rule296 elseif i == 29 repro6[i] = @rule306 elseif i == 30 repro6[i] = @rule316 elseif i == 31 repro6[i] = @rule326 elseif i == 32 repro6[i] = @rule336 elseif i == 33 repro6[i] = @rule346 elseif i == 34 repro6[i] = @rule356 elseif i == 35 repro6[i] = @rule366 elseif i == 36 repro6[i] = @rule376 elseif i == 37 repro6[i] = @rule386 elseif i == 38 repro6[i] = @rule396 elseif i == 39 repro6[i] = @rule406 elseif i == 40 repro6[i] = @rule416 elseif i == 41 repro6[i] = @rule426 elseif i == 42 repro6[i] = @rule436 elseif i == 43 repro6[i] = @rule446 elseif i == 44 repro6[i] = @rule456 elseif i == 45 repro6[i] = @rule466 elseif i == 46 repro6[i] = @rule476 elseif i == 47 repro6[i] = @rule486 elseif i == 48 repro6[i] = @rule496 elseif i == 49 repro6[i] = @rule506 endif i = i + 1 endwhile ; set reproduction array #7 i = 0 while i < @rlen7 if i == 0 repro7[i] = @rule17 elseif i == 1 repro7[i] = @rule27 elseif i == 2 repro7[i] = @rule37 elseif i == 3 repro7[i] = @rule47 elseif i == 4 repro7[i] = @rule57 elseif i == 5 repro7[i] = @rule67 elseif i == 6 repro7[i] = @rule77 elseif i == 7 repro7[i] = @rule87 elseif i == 8 repro7[i] = @rule97 elseif i == 9 repro7[i] = @rule107 elseif i == 10 repro7[i] = @rule117 elseif i == 11 repro7[i] = @rule127 elseif i == 12 repro7[i] = @rule137 elseif i == 13 repro7[i] = @rule147 elseif i == 14 repro7[i] = @rule157 elseif i == 15 repro7[i] = @rule167 elseif i == 16 repro7[i] = @rule177 elseif i == 17 repro7[i] = @rule187 elseif i == 18 repro7[i] = @rule197 elseif i == 19 repro7[i] = @rule207 elseif i == 20 repro7[i] = @rule217 elseif i == 21 repro7[i] = @rule227 elseif i == 22 repro7[i] = @rule237 elseif i == 23 repro7[i] = @rule247 elseif i == 24 repro7[i] = @rule257 elseif i == 25 repro7[i] = @rule267 elseif i == 26 repro7[i] = @rule277 elseif i == 27 repro7[i] = @rule287 elseif i == 28 repro7[i] = @rule297 elseif i == 29 repro7[i] = @rule307 elseif i == 30 repro7[i] = @rule317 elseif i == 31 repro7[i] = @rule327 elseif i == 32 repro7[i] = @rule337 elseif i == 33 repro7[i] = @rule347 elseif i == 34 repro7[i] = @rule357 elseif i == 35 repro7[i] = @rule367 elseif i == 36 repro7[i] = @rule377 elseif i == 37 repro7[i] = @rule387 elseif i == 38 repro7[i] = @rule397 elseif i == 39 repro7[i] = @rule407 elseif i == 40 repro7[i] = @rule417 elseif i == 41 repro7[i] = @rule427 elseif i == 42 repro7[i] = @rule437 elseif i == 43 repro7[i] = @rule447 elseif i == 44 repro7[i] = @rule457 elseif i == 45 repro7[i] = @rule467 elseif i == 46 repro7[i] = @rule477 elseif i == 47 repro7[i] = @rule487 elseif i == 48 repro7[i] = @rule497 elseif i == 49 repro7[i] = @rule507 endif i = i + 1 endwhile ; set reproduction array #8 i = 0 while i < @rlen8 if i == 0 repro8[i] = @rule18 elseif i == 1 repro8[i] = @rule28 elseif i == 2 repro8[i] = @rule38 elseif i == 3 repro8[i] = @rule48 elseif i == 4 repro8[i] = @rule58 elseif i == 5 repro8[i] = @rule68 elseif i == 6 repro8[i] = @rule78 elseif i == 7 repro8[i] = @rule88 elseif i == 8 repro8[i] = @rule98 elseif i == 9 repro8[i] = @rule108 elseif i == 10 repro8[i] = @rule118 elseif i == 11 repro8[i] = @rule128 elseif i == 12 repro8[i] = @rule138 elseif i == 13 repro8[i] = @rule148 elseif i == 14 repro8[i] = @rule158 elseif i == 15 repro8[i] = @rule168 elseif i == 16 repro8[i] = @rule178 elseif i == 17 repro8[i] = @rule188 elseif i == 18 repro8[i] = @rule198 elseif i == 19 repro8[i] = @rule208 elseif i == 20 repro8[i] = @rule218 elseif i == 21 repro8[i] = @rule228 elseif i == 22 repro8[i] = @rule238 elseif i == 23 repro8[i] = @rule248 elseif i == 24 repro8[i] = @rule258 elseif i == 25 repro8[i] = @rule268 elseif i == 26 repro8[i] = @rule278 elseif i == 27 repro8[i] = @rule288 elseif i == 28 repro8[i] = @rule298 elseif i == 29 repro8[i] = @rule308 elseif i == 30 repro8[i] = @rule318 elseif i == 31 repro8[i] = @rule328 elseif i == 32 repro8[i] = @rule338 elseif i == 33 repro8[i] = @rule348 elseif i == 34 repro8[i] = @rule358 elseif i == 35 repro8[i] = @rule368 elseif i == 36 repro8[i] = @rule378 elseif i == 37 repro8[i] = @rule388 elseif i == 38 repro8[i] = @rule398 elseif i == 39 repro8[i] = @rule408 elseif i == 40 repro8[i] = @rule418 elseif i == 41 repro8[i] = @rule428 elseif i == 42 repro8[i] = @rule438 elseif i == 43 repro8[i] = @rule448 elseif i == 44 repro8[i] = @rule458 elseif i == 45 repro8[i] = @rule468 elseif i == 46 repro8[i] = @rule478 elseif i == 47 repro8[i] = @rule488 elseif i == 48 repro8[i] = @rule498 elseif i == 49 repro8[i] = @rule508 endif i = i + 1 endwhile i = 0 int ii = 0 k = 0 j = 0 int kk = 0 ; rewrite into main for the chosen number of iterations ; this may be redone as a recursive function in the future. if @rewrite == "Parallel" while j < @iter ;repro #1 i = 0 while i < mainl if main[i] ==0 && @rlen1 > 0 ii = 0 while ii < @rlen1 newmain[k] = repro1[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] ==1 && @rlen2 > 0 ii = 0 while ii < @rlen2 newmain[k] = repro2[ii] dep[kk] = j ii = ii + 1 kk = kk + 1 k =k + 1 endwhile elseif main[i] > 1 newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 endif i = i + 1 endwhile int newmainl = k ; copy newmain to main ii = 0 while ii < newmainl main[ii] = newmain[ii] ii = ii + 1 endwhile mainl = newmainl newmainl = k j = j + 1 k = 0 endwhile elseif @rewrite == "serial" while j < @iter ;repro #1 i = 0 while i < mainl if main[i] ==0 && @rlen1 > 0 ii = 0 while ii < @rlen1 newmain[k] = repro1[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] > 0 newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 endif i = i + 1 endwhile int newmainl = k ; copy newmain to main ii = 0 while ii < newmainl main[ii] = newmain[ii] ii = ii + 1 endwhile mainl = newmainl newmainl = k i = 0 k = 0 while i < mainl if main[i] ==0 newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 elseif main[i] ==1 && @rlen2 > 0 ii = 0 while ii < @rlen2 newmain[k] = repro2[ii] dep[kk] = j ii = ii + 1 kk = kk + 1 k =k + 1 endwhile elseif main[i] > 1 newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 endif i = i + 1 endwhile newmainl = k ; copy newmain to main ii = 0 while ii < newmainl main[ii] = newmain[ii] ii = ii + 1 endwhile mainl = newmainl newmainl = k j = j + 1 k = 0 endwhile else ; node while j < @iter i = 0 ;repro #1 while i < mainl if main[i] ==16 && @rlen1 > 0 ii = 0 while ii < @rlen1 newmain[k] = repro1[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] ==17 && @rlen2 > 0 ii = 0 ;repro #2 while ii < @rlen2 newmain[k] = repro2[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] ==0 && @rlen3 > 0 ii = 0 ;repro #3 while ii < @rlen3 newmain[k] = repro3[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] == 0 newmain[k] = main[i] k = k + 1 elseif main[i] == 1 && @rlen8 > 0 ii = 0 ; repro #8 while ii < @rlen8 newmain[k] = repro8[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] == 1 newmain[k] = main[i] k = k + 1 elseif main[i] ==22 && @rlen4 > 0 ii = 0 ;repro #4 while ii < @rlen4 newmain[k] = repro4[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] ==23 && @rlen5 > 0 ii = 0 ;repro #5 while ii < @rlen5 newmain[k] = repro5[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] ==24 && @rlen6 > 0 ii = 0 ;repro #6 while ii < @rlen6 newmain[k] = repro6[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] ==25 && @rlen7 > 0 ii = 0 ;repro #7 while ii < @rlen7 newmain[k] = repro7[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile else newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 endif i = i + 1 endwhile int newmainl = k ; copy newmain to main ii = 0 while ii < newmainl main[ii] = newmain[ii] ii = ii + 1 endwhile mainl = newmainl newmainl = k j = j + 1 k = 0 endwhile endif if @diag print("Size of main[]: ",mainl) endif ; create leaf11 array. leaf11.line[0] = new line(0,0,0,1,0,0) leaf11.line[0].Resize(@osize1/sqrt(mainl)) leaf11.line[1] = new line(1,0,0,1,1,0) leaf11.line[1].Resize(@osize1/sqrt(mainl)) leaf11.line[2] = new line(1,1,0,0,1,0) leaf11.line[2].Resize(@osize1/sqrt(mainl)) leaf11.line[3] = new line(0,1,0,0,0,0) leaf11.line[3].Resize(@osize1/sqrt(mainl)) ; create leaf12 array. leaf12.line[0] = new line(0,0,0,1,0,0) leaf12.line[0].Resize(@osize2/sqrt(mainl)) leaf12.line[1] = new line(1,0,0,1,1,0) leaf12.line[1].Resize(@osize2/sqrt(mainl)) leaf12.line[2] = new line(1,1,0,0,1,0) leaf12.line[2].Resize(@osize2/sqrt(mainl)) leaf12.line[3] = new line(0,1,0,0,0,0) leaf12.line[3].Resize(@osize2/sqrt(mainl)) ; create leaf21 array. leaf21.line[0] = new line(0,0,0,1,-0.5,0) leaf21.line[0].Resize(@osize1/sqrt(mainl)) leaf21.line[1] = new line(1,-0.5,0,2,0,0) leaf21.line[1].Resize(@osize1/sqrt(mainl)) leaf21.line[2] = new line(2,0,0,1,0.5,0) leaf21.line[2].Resize(@osize1/sqrt(mainl)) leaf21.line[3] = new line(1,0.5,0,0,0,0) leaf21.line[3].Resize(@osize1/sqrt(mainl)) ; create leaf22 array. leaf22.line[0] = new line(0,0,0,1,-0.5,0) leaf22.line[0].Resize(@osize2/sqrt(mainl)) leaf22.line[1] = new line(1,-0.5,0,2,0,0) leaf22.line[1].Resize(@osize2/sqrt(mainl)) leaf22.line[2] = new line(2,0,0,1,0.5,0) leaf22.line[2].Resize(@osize2/sqrt(mainl)) leaf22.line[3] = new line(1,0.5,0,0,0,0) leaf22.line[3].Resize(@osize2/sqrt(mainl)) ; create leaf31 array. i = 0 while i < @needles1 leaf31.line[i] = new line(0,0,0,1,0,0) leaf31.line[i].Resize(@osize1/sqrt(mainl)) rot.rotatez(leaf31.line[i].fx1,leaf31.line[i].fy1,\ leaf31.line[i].fz1,@close1*i) rot.rotatez(leaf31.line[i].fx2,leaf31.line[i].fy2,\ leaf31.line[i].fz2,@close1*i) i = i + 1 endwhile ; create leaf32 array. i = 0 while i < @needles2 leaf32.line[i] = new line(0,0,0,1,0,0) leaf32.line[i].Resize(@osize2/sqrt(mainl)) rot.rotatez(leaf32.line[i].fx1,leaf32.line[i].fy1,\ leaf32.line[i].fz1,@close2*i) rot.rotatez(leaf32.line[i].fx2,leaf32.line[i].fy2,\ leaf32.line[i].fz2,@close2*i) i = i + 1 endwhile ; create leaf41 array. leaf41.line[0] = new line(0,0,0,0.286,-1,0) leaf41.line[0].Resize(@osize1/sqrt(mainl)) leaf41.line[1] = new line(.286,-1,0,0.428,-.286,0) leaf41.line[1].Resize(@osize1/sqrt(mainl)) leaf41.line[2] = new line(0.428,-.286,0,1.286,-1.143,0) leaf41.line[2].Resize(@osize1/sqrt(mainl)) leaf41.line[3] = new line(1.286,-1.143,0,1.286,-.571,0) leaf41.line[3].Resize(@osize1/sqrt(mainl)) leaf41.line[4] = new line(1.286,-0.571,0,2,0,0) leaf41.line[4].Resize(@osize1/sqrt(mainl)) leaf41.line[5] = new line(2,0,0,1.286,0.571,0) leaf41.line[5].Resize(@osize1/sqrt(mainl)) leaf41.line[6] = new line(1.286,0.571,0,1.286,1.143,0) leaf41.line[6].Resize(@osize1/sqrt(mainl)) leaf41.line[7] = new line(1.286,1.143,0,0.428,0.286,0) leaf41.line[7].Resize(@osize1/sqrt(mainl)) leaf41.line[8] = new line(0.428,0.286,0,.286,1,0) leaf41.line[8].Resize(@osize1/sqrt(mainl)) leaf41.line[9] = new line(.286,1,0,0,0,0) leaf41.line[9].Resize(@osize1/sqrt(mainl)) ; create leaf42 array. leaf42.line[0] = new line(0,0,0,0.286,-1,0) leaf42.line[0].Resize(@osize2/sqrt(mainl)) leaf42.line[1] = new line(.286,-1,0,0.428,-.286,0) leaf42.line[1].Resize(@osize2/sqrt(mainl)) leaf42.line[2] = new line(0.428,-.286,0,1.286,-1.143,0) leaf42.line[2].Resize(@osize2/sqrt(mainl)) leaf42.line[3] = new line(1.286,-1.143,0,1.286,-.571,0) leaf42.line[3].Resize(@osize2/sqrt(mainl)) leaf42.line[4] = new line(1.286,-0.571,0,2,0,0) leaf42.line[4].Resize(@osize2/sqrt(mainl)) leaf42.line[5] = new line(2,0,0,1.286,0.571,0) leaf42.line[5].Resize(@osize2/sqrt(mainl)) leaf42.line[6] = new line(1.286,0.571,0,1.286,1.143,0) leaf42.line[6].Resize(@osize2/sqrt(mainl)) leaf42.line[7] = new line(1.286,1.143,0,0.428,0.286,0) leaf42.line[7].Resize(@osize2/sqrt(mainl)) leaf42.line[8] = new line(0.428,0.286,0,.286,1,0) leaf42.line[8].Resize(@osize2/sqrt(mainl)) leaf42.line[9] = new line(.286,1,0,0,0,0) leaf42.line[9].Resize(@osize2/sqrt(mainl)) ; create flower11 array. flower11.line[0] = new line(0,0,0,1,-0.5,0) flower11.line[0].Resize(@osize1/sqrt(mainl)) flower11.line[1] = new line(1,-0.5,0,2,0,0) flower11.line[1].Resize(@osize1/sqrt(mainl)) flower11.line[2] = new line(2,0,0,1,0.5,0) flower11.line[2].Resize(@osize1/sqrt(mainl)) flower11.line[3] = new line(1,0.5,0,0,0,0) flower11.line[3].Resize(@osize1/sqrt(mainl)) flower11.line[4] = new line(0,0,0,1,-0.5,0) flower11.line[4].Resize(@osize1/sqrt(mainl)) flower11.line[5] = new line(1,-0.5,0,2,0,0) flower11.line[5].Resize(@osize1/sqrt(mainl)) flower11.line[6] = new line(2,0,0,1,0.5,0) flower11.line[6].Resize(@osize1/sqrt(mainl)) flower11.line[7] = new line(1,0.5,0,0,0,0) flower11.line[7].Resize(@osize1/sqrt(mainl)) i = 4 while i < 8 rot.rotatez(flower11.line[i].fx1,flower11.line[i].fy1,\ flower11.line[i].fz1,-60) rot.rotatez(flower11.line[i].fx2,flower11.line[i].fy2,\ flower11.line[i].fz2,-60) i = i + 1 endwhile flower11.line[8] = new line(0,0,0,1,-0.5,0) flower11.line[8].Resize(@osize1/sqrt(mainl)) flower11.line[9] = new line(1,-0.5,0,2,0,0) flower11.line[9].Resize(@osize1/sqrt(mainl)) flower11.line[10] = new line(2,0,0,1,0.5,0) flower11.line[10].Resize(@osize1/sqrt(mainl)) flower11.line[11] = new line(1,0.5,0,0,0,0) flower11.line[11].Resize(@osize1/sqrt(mainl)) i = 8 while i < 12 rot.rotatez(flower11.line[i].fx1,flower11.line[i].fy1,\ flower11.line[i].fz1,60) rot.rotatez(flower11.line[i].fx2,flower11.line[i].fy2,\ flower11.line[i].fz2,60) i = i + 1 endwhile ; create flower12 array. flower12.line[0] = new line(0,0,0,1,-0.5,0) flower12.line[0].Resize(@osize2/sqrt(mainl)) flower12.line[1] = new line(1,-0.5,0,2,0,0) flower12.line[1].Resize(@osize2/sqrt(mainl)) flower12.line[2] = new line(2,0,0,1,0.5,0) flower12.line[2].Resize(@osize2/sqrt(mainl)) flower12.line[3] = new line(1,0.5,0,0,0,0) flower12.line[3].Resize(@osize2/sqrt(mainl)) flower12.line[4] = new line(0,0,0,1,-0.5,0) flower12.line[4].Resize(@osize2/sqrt(mainl)) flower12.line[5] = new line(1,-0.5,0,2,0,0) flower12.line[5].Resize(@osize2/sqrt(mainl)) flower12.line[6] = new line(2,0,0,1,0.5,0) flower12.line[6].Resize(@osize2/sqrt(mainl)) flower12.line[7] = new line(1,0.5,0,0,0,0) flower12.line[7].Resize(@osize2/sqrt(mainl)) i = 4 while i < 8 rot.rotatez(flower12.line[i].fx1,flower12.line[i].fy1,\ flower12.line[i].fz1,-60) rot.rotatez(flower12.line[i].fx2,flower12.line[i].fy2,\ flower12.line[i].fz2,-60) i = i + 1 endwhile flower12.line[8] = new line(0,0,0,1,-0.5,0) flower12.line[8].Resize(@osize2/sqrt(mainl)) flower12.line[9] = new line(1,-0.5,0,2,0,0) flower12.line[9].Resize(@osize2/sqrt(mainl)) flower12.line[10] = new line(2,0,0,1,0.5,0) flower12.line[10].Resize(@osize2/sqrt(mainl)) flower12.line[11] = new line(1,0.5,0,0,0,0) flower12.line[11].Resize(@osize2/sqrt(mainl)) i = 8 while i < 12 rot.rotatez(flower12.line[i].fx1,flower12.line[i].fy1,\ flower12.line[i].fz1,60) rot.rotatez(flower12.line[i].fx2,flower12.line[i].fy2,\ flower12.line[i].fz2,60) i = i + 1 endwhile ; create flower21 array. flower21.line[0] = new line(0,0,0,1,-0.2,0.3) flower21.line[0].Resize(@osize1/sqrt(mainl)) flower21.line[1] = new line(1,-0.2,0.3,2,0,1) flower21.line[1].Resize(@osize1/sqrt(mainl)) flower21.line[2] = new line(2,0,1,1,0.2,0.3) flower21.line[2].Resize(@osize1/sqrt(mainl)) flower21.line[3] = new line(1,0.2,0.3,0,0,0) flower21.line[3].Resize(@osize1/sqrt(mainl)) flower21.line[4] = new line(0,0,0,1,-0.2,0.3) flower21.line[4].Resize(@osize1/sqrt(mainl)) flower21.line[5] = new line(1,-0.2,0.3,2,0,1) flower21.line[5].Resize(@osize1/sqrt(mainl)) flower21.line[6] = new line(2,0,1,1,0.2,0.3) flower21.line[6].Resize(@osize1/sqrt(mainl)) flower21.line[7] = new line(1,0.2,0.3,0,0,0) flower21.line[7].Resize(@osize1/sqrt(mainl)) i = 4 while i < 8 rot.rotatez(flower21.line[i].fx1,flower21.line[i].fy1,\ flower21.line[i].fz1,-120) rot.rotatez(flower21.line[i].fx2,flower21.line[i].fy2,\ flower21.line[i].fz2,-120) i = i + 1 endwhile flower21.line[8] = new line(0,0,0,1,-0.2,0.3) flower21.line[8].Resize(@osize1/sqrt(mainl)) flower21.line[9] = new line(1,-0.2,0.3,2,0,1) flower21.line[9].Resize(@osize1/sqrt(mainl)) flower21.line[10] = new line(2,0,1,1,0.2,0.3) flower21.line[10].Resize(@osize1/sqrt(mainl)) flower21.line[11] = new line(1,0.2,0.3,0,0,0) flower21.line[11].Resize(@osize1/sqrt(mainl)) i = 8 while i < 12 rot.rotatez(flower21.line[i].fx1,flower21.line[i].fy1,\ flower21.line[i].fz1,120) rot.rotatez(flower21.line[i].fx2,flower21.line[i].fy2,\ flower21.line[i].fz2,120) i = i + 1 endwhile i = 0 while i < 12 rot.rotatey(flower21.line[i].fx1,flower21.line[i].fy1,\ flower21.line[i].fz1,60) rot.rotatey(flower21.line[i].fx2,flower21.line[i].fy2,\ flower21.line[i].fz2,60) i = i + 1 endwhile ; create flower22 array. flower22.line[0] = new line(0,0,0,1,-0.2,0.3) flower22.line[0].Resize(@osize2/sqrt(mainl)) flower22.line[1] = new line(1,-0.2,0.3,2,0,1) flower22.line[1].Resize(@osize2/sqrt(mainl)) flower22.line[2] = new line(2,0,1,1,0.2,0.3) flower22.line[2].Resize(@osize2/sqrt(mainl)) flower22.line[3] = new line(1,0.2,0.3,0,0,0) flower22.line[3].Resize(@osize2/sqrt(mainl)) flower22.line[4] = new line(0,0,0,1,-0.2,0.3) flower22.line[4].Resize(@osize2/sqrt(mainl)) flower22.line[5] = new line(1,-0.2,0.3,2,0,1) flower22.line[5].Resize(@osize2/sqrt(mainl)) flower22.line[6] = new line(2,0,1,1,0.2,0.3) flower22.line[6].Resize(@osize2/sqrt(mainl)) flower22.line[7] = new line(1,0.2,0.3,0,0,0) flower22.line[7].Resize(@osize2/sqrt(mainl)) i = 4 while i < 8 rot.rotatez(flower22.line[i].fx1,flower22.line[i].fy1,\ flower22.line[i].fz1,-120) rot.rotatez(flower22.line[i].fx2,flower22.line[i].fy2,\ flower22.line[i].fz2,-120) i = i + 1 endwhile flower22.line[8] = new line(0,0,0,1,-0.2,0.3) flower22.line[8].Resize(@osize2/sqrt(mainl)) flower22.line[9] = new line(1,-0.2,0.3,2,0,1) flower22.line[9].Resize(@osize2/sqrt(mainl)) flower22.line[10] = new line(2,0,1,1,0.2,0.3) flower22.line[10].Resize(@osize2/sqrt(mainl)) flower22.line[11] = new line(1,0.2,0.3,0,0,0) flower22.line[11].Resize(@osize2/sqrt(mainl)) i = 8 while i < 12 rot.rotatez(flower22.line[i].fx1,flower22.line[i].fy1,\ flower22.line[i].fz1,120) rot.rotatez(flower22.line[i].fx2,flower22.line[i].fy2,\ flower22.line[i].fz2,120) i = i + 1 endwhile i = 0 while i < 12 rot.rotatey(flower22.line[i].fx1,flower22.line[i].fy1,\ flower22.line[i].fz1,60) rot.rotatey(flower22.line[i].fx2,flower22.line[i].fy2,\ flower22.line[i].fz2,60) i = i + 1 endwhile ; create flower31 array. i = 0 while i < 12 flower31.line[i] = new line(0,0,0,1,0,1) flower31.line[i].Resize(@osize1/sqrt(mainl)) rot.rotatez(flower31.line[i].fx1,flower31.line[i].fy1,\ flower31.line[i].fz1,30*i) rot.rotatez(flower31.line[i].fx2,flower31.line[i].fy2,\ flower31.line[i].fz2,30*i) i = i + 1 endwhile i = 0 while i < 12 rot.rotatey(flower31.line[i].fx1,flower31.line[i].fy1,\ flower31.line[i].fz1,60) rot.rotatey(flower31.line[i].fx2,flower31.line[i].fy2,\ flower31.line[i].fz2,60) i = i + 1 endwhile ; create flower32 array. i = 0 while i < 12 flower32.line[i] = new line(0,0,0,1,0,1) flower32.line[i].Resize(@osize2/sqrt(mainl)) rot.rotatez(flower32.line[i].fx1,flower32.line[i].fy1,\ flower32.line[i].fz1,30*i) rot.rotatez(flower32.line[i].fx2,flower32.line[i].fy2,\ flower32.line[i].fz2,30*i) i = i + 1 endwhile i = 0 while i < 12 rot.rotatey(flower32.line[i].fx1,flower32.line[i].fy1,\ flower32.line[i].fz1,60) rot.rotatey(flower32.line[i].fx2,flower32.line[i].fy2,\ flower32.line[i].fz2,60) i = i + 1 endwhile ; ; Generate the points for the lines ; ; initial line starting point la.line[0] = new Line(0,0,0,0,0,0) float theta = @tangle float xcorr = 1 float ycorr = 0 float zcorr = 0 k = 0 i = 0 float len = 0 int oldmain = 0 int oldk = 0 float lwidth = la.line[0].lwidth i = 0 int kim = 0 int kim2 = 0 float fsize = @fsize float gsize = @gsize while i < mainl if main[i] == 0 if @lbr len = fsize/(dep[k]+@lfactor)/@lfactor else len = fsize endif if @rlen rvalue(len,@lrange) endif oldmain = main[i] if !didpop la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.2) la.line[k].SetDirectColor(@fcolor) la.line[k].SetWidth(lwidth) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 else la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.2) la.line[k].SetDirectColor(@fcolor) la.line[k].SetWidth(lwidth) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 didpop = false endif endif if main[i] == 1 if @lbr len = gsize/(dep[k]+@lfactor)/@lfactor else len = gsize endif if @rlen rvalue(len,@lrange) endif oldmain = main[i] if !didpop la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.8) la.line[k].SetDirectColor(@gcolor) la.line[k].SetWidth(lwidth) if @hideg || @hideg2 la.line[k].SetVis(false) endif k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 else la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.8) la.line[k].SetDirectColor(@gcolor) la.line[k].SetWidth(lwidth) if @hideg || @hideg2 la.line[k].SetVis(false) endif k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 didpop = false endif endif if main[i] == 2 if @lbr len = fsize/(dep[k]+@lfactor)/@lfactor else len = fsize endif if @rlen rvalue(len,@lrange) endif oldmain = main[i] if !didpop la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.2) la.line[k].SetDirectColor(@fcolor) la.line[k].SetWidth(lwidth) la.line[k].SetVis(false) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 else la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.2) la.line[k].SetDirectColor(@fcolor) la.line[k].SetWidth(lwidth) la.line[k].SetVis(false) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 didpop = false endif endif if main[i] == 3 if @lbr len = gsize/(dep[k]+@lfactor)/@lfactor else len = gsize endif if @rlen rvalue(len,@lrange) endif oldmain = main[i] if !didpop la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.8) la.line[k].SetDirectColor(@gcolor) la.line[k].SetWidth(lwidth) la.line[k].SetVis(false) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 else la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.8) la.line[k].SetDirectColor(@fcolor) la.line[k].SetWidth(lwidth) la.line[k].SetVis(false) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 didpop = false endif endif if main[i] == 4 if @rang rvalue(theta,@arange) endif if !@turtle rot.rotatez(xcorr,ycorr,zcorr,theta) else rot.rotateU(xcorr,ycorr,zcorr,theta) endif endif if main[i] == 5 if @rang rvalue(theta,@arange) endif if !@turtle rot.rotatez(xcorr,ycorr,zcorr,-theta) else rot.rotateU(xcorr,ycorr,zcorr,-theta) endif endif if main[i] == 6 push(la.line[k],xcorr, ycorr, zcorr, theta, oldmain, k, dep[k], fsize, gsize) endif if main[i] == 7 pop(lne,xcorr,ycorr, zcorr, theta, oldmain, oldk,dep[oldk],fsize,gsize) popx = lne.fx1 popy = lne.fy1 popz = lne.fz1 if @stoch coinflip(theta) endif int idxk = oldk if @usebranch if !la.line[k].poly lwidth = la.line[k].lwidth*@branch endif if !la.line[oldk].poly la.line[oldk].SetWidth(lwidth) if lwidth <= @cthresh && (@cjump != 0 || @cjumpd) la.line[idxk].SetDirectColor(@fcolord) la.line[idxk].SetJump(true) endif endif while idxk < k if !la.line[idxk].poly lwidth = la.line[idxk].lwidth*@branch la.line[idxk].SetWidth(lwidth) if lwidth <= @cthresh && (@cjump != 0 || @cjumpd) la.line[idxk].SetDirectColor(@fcolord) la.line[idxk].SetJump(true) endif endif idxk = idxk + 1 endwhile endif didpop = true endif if main[i] == 8 float fze = 0 if oldmain == 0 || oldmain == 2 fze = fsize elseif oldmain == 1 || oldmain == 3 fze = gsize endif if @lbr len = fze/(dep[k]+@lfactor)/@lfactor else len = fze endif if @rlen rvalue(len,@lrange) endif if !didpop la.line[k].fx2 = la.line[k].fx1+xcorr*fsize/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*fsize/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*fsize/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) if oldmain == 0 || oldmain == 2 la.line[k].SetDirectColor(@fcolor) elseif oldmain == 1 || oldmain == 3 la.line[k].SetDirectColor(@gcolor) else la.line[k].SetDirectColor(@fcolor) endif la.line[k].SetWidth(lwidth) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 else la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz la.line[k].fx2 = la.line[k].fx1+xcorr*fsize/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*fsize/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*fsize/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) if oldmain == 0 || oldmain == 2 la.line[k].SetDirectColor(@fcolor) elseif oldmain == 1 || oldmain == 3 la.line[k].SetDirectColor(@gcolor) else la.line[k].SetDirectColor(@fcolor) endif la.line[k].SetWidth(lwidth) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 didpop = false endif endif if main[i] == 9 if @rang rvalue(theta,@arange) endif if !@turtle rot.rotateX(xcorr,ycorr,zcorr,theta) else rot.rotateL(xcorr,ycorr,zcorr,theta) endif endif if main[i] == 10 if @rang rvalue(theta,@arange) endif if !@turtle rot.rotateX(xcorr,ycorr,zcorr,-theta) else rot.rotateL(xcorr,ycorr,zcorr,-theta) endif endif if main[i] == 11 if @rang rvalue(theta,@arange) endif if !@turtle rot.rotatey(xcorr,ycorr,zcorr,theta) else rot.rotateH(xcorr,ycorr,zcorr,theta) endif endif if main[i] == 12 if @rang rvalue(theta,@arange) endif if !@turtle rot.rotatey(xcorr,ycorr,zcorr,-theta) else rot.rotateH(xcorr,ycorr,zcorr,-theta) endif endif if main[i] == 13 if !@turtle rot.rotateZ(xcorr,ycorr,zcorr,180) ; vec.init(xcorr,ycorr,zcorr,0) ; Rot.rotate(xcorr,ycorr,zcorr,180,vec) else rot.rotateU(xcorr,ycorr,zcorr,180) endif endif if main[i] == 14 oldmain = main[i] float x1 = 0 float y1 = 0 float z1 = 0 float oanglez1 = @oanglez1 float oanglex1 = @oanglex1 float oangley1 = @oangley1 if @rango rvalue3(oanglez1,@arangeo) rvalue3(oanglex1,@arangeo) rvalue3(oangley1,@arangeo) endif if @otype1 == "leaf1" int alength = leaf11.GetArraylength() leaf11.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "leaf2" int alength = leaf21.GetArraylength() leaf21.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "leaf3" int alength = leaf31.GetArraylength() leaf31.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "leaf4" int alength = leaf41.GetArraylength() leaf41.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "flower1" int alength = flower11.GetArraylength() flower11.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "flower2" int alength = flower21.GetArraylength() flower21.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "flower3" int alength = flower31.GetArraylength() flower31.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif endif if main[i] == 18 oldmain = main[i] float x1 = 0 float y1 = 0 float z1 = 0 float oanglez2 = @oanglez2 float oanglex2 = @oanglex2 float oangley2 = @oangley2 if @rango rvalue(oanglez2,@arangeo) rvalue(oanglex2,@arangeo) rvalue(oangley2,@arangeo) endif if @otype2 == "leaf1" int alength = leaf12.GetArraylength() leaf12.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "leaf2" int alength = leaf22.GetArraylength() leaf22.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "leaf3" int alength = leaf32.GetArraylength() leaf32.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "leaf4" int alength = leaf41.GetArraylength() leaf41.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "flower1" int alength = flower12.GetArraylength() flower12.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "flower2" int alength = flower22.GetArraylength() flower22.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "flower3" int alength = flower32.GetArraylength() flower32.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif endif if main[i] == 19 oldmain = main[i] theta = -theta endif if main[i] == 20 oldmain = main[i] if images.pt[kim].fx == -1 && images.pt[kim].fy == -1 && images.pt[kim].fz == -1 images.pt[kim].fx = la.line[k].fx1 images.pt[kim].fy = la.line[k].fy1 images.pt[kim].fz = la.line[k].fz1 imagek[k] = kim else imagek[k] = -1 endif kim = kim + 1 endif if main[i] == 21 oldmain = main[i] if images2.pt[kim2].fx == -1 && images2.pt[kim2].fy == -1 && images2.pt[kim2].fz == -1 images2.pt[kim2].fx = la.line[k].fx1 images2.pt[kim2].fy = la.line[k].fy1 images2.pt[kim2].fz = la.line[k].fz1 imagek2[k] = kim2 else imagek2[k] = -1 endif kim2 = kim2 + 1 endif if main[i] == 26 oldmain = main[i] fsize = fsize*@resize gsize = gsize*@resize endif i = i + 1 endwhile i = 0 while i < k ; Rotate the entire structure ; ; Y axis rotation ; rot.rotatey(la.line[i].fx1,la.line[i].fy1,la.line[i].fz1,@xang) rot.rotatey(la.line[i].fx2,la.line[i].fy2,la.line[i].fz2,@xang) if imagek[i] >= 0 float xk = images.pt[imagek[i]].fx float yk = images.pt[imagek[i]].fy float zk = images.pt[imagek[i]].fz rot.rotatey(xk,yk,zk,@xang) images.pt[imagek[i]].fx = xk images.pt[imagek[i]].fy = yk images.pt[imagek[i]].fz = zk endif if imagek2[i] >= 0 float xk2 = images2.pt[imagek2[i]].fx float yk2 = images2.pt[imagek2[i]].fy float zk2 = images2.pt[imagek2[i]].fz rot.rotatey(xk2,yk2,zk2,@xang) images2.pt[imagek2[i]].fx = xk2 images2.pt[imagek2[i]].fy = yk2 images2.pt[imagek2[i]].fz = zk2 endif ; ; X axis rotation ; rot.rotatex(la.line[i].fx1,la.line[i].fy1,la.line[i].fz1,@yang) rot.rotatex(la.line[i].fx2,la.line[i].fy2,la.line[i].fz2,@yang) if imagek[i] >= 0 float xk = images.pt[imagek[i]].fx float yk = images.pt[imagek[i]].fy float zk = images.pt[imagek[i]].fz rot.rotatex(xk,yk,zk,@yang) images.pt[imagek[i]].fx = xk images.pt[imagek[i]].fy = yk images.pt[imagek[i]].fz = zk endif if imagek2[i] >= 0 float xk2 = images2.pt[imagek2[i]].fx float yk2 = images2.pt[imagek2[i]].fy float zk2 = images2.pt[imagek2[i]].fz rot.rotatex(xk2,yk2,zk2,@yang) images2.pt[imagek2[i]].fx = xk2 images2.pt[imagek2[i]].fy = yk2 images2.pt[imagek2[i]].fz = zk2 endif if la.line[i].fz1 < zmin zmin = la.line[i].fz1 endif if la.line[i].fz2 < zmin zmin = la.line[i].fz2 endif if la.line[i].fz1 > zmax zmax = la.line[i].fz1 endif if la.line[i].fz2 > zmax zmax = la.line[i].fz2 endif i = i + 1 endwhile func push(line lne,float xcorr, float ycorr,float zcorr, float theta, int last, \ int oldk, int depth, float fsize, float gsize) stacklne[stackidx] = lne stackxcorr[stackidx] = xcorr stackycorr[stackidx] = ycorr stackzcorr[stackidx] = zcorr stacktheta[stackidx] = theta stacklast[stackidx] = last stackoldk[stackidx] = oldk stackdepth[stackidx] = depth stackfsize[stackidx] = fsize stackgsize[stackidx] = gsize stackidx = stackidx + 1 endfunc func pop(line &lne, float &xcorr, float &ycorr, float &zcorr, float &theta,\ int &last, int &oldk, int &depth, float &fsize, float &gsize) stackidx = stackidx - 1 lne = stacklne[stackidx] xcorr = stackxcorr[stackidx] ycorr = stackycorr[stackidx] zcorr = stackzcorr[stackidx] theta = stacktheta[stackidx] last = stacklast[stackidx] oldk = stackoldk[stackidx] depth = stackdepth[stackidx] fsize = stackfsize[stackidx] gsize = stackgsize[stackidx] didpop = true endfunc func coinflip(float &theta) seed = random(seed) float toss = abs(seed)/#randomrange if toss > 0.5 theta = -theta endif endfunc init: int seed2 = @seed2 ; initial value seed2 = random(seed2) func rvalue2(int &seed2, float &val, float range) seed2 = random(seed2) float fseed = seed2/#randomrange*range float val = val+val*fseed endfunc float rt = 0 float rtave = 0 float rtmax = -1e100 color dtmax = rgba(1,1,1,1) color dtave = @base complex pt2 = 0 complex pt1 = 0 int jj = 0 int kkk = 0 float x = 0 float y = 0 float r[] complex t[] float l[] color dt[] setlength(r,k) setlength(t,k) setlength(l,k) setlength(dt,k) float depth[] setlength(depth,k) int jmax = 0 loop: final: Image im[] Image im2[] color imcolor[] color imcolor2[] setlength(im,@stacksize) setlength(im2,@stacksize) setlength(imcolor,@stacksize) setlength(imcolor2,@stacksize) jj = 0 color func putimage(Point location, image &im, float angle, float size) float width =im.getWidth() float height = im.getHeight() complex m_zi = (0,1)^(angle/90.0) color pcolor = rgba(0,0,0,0) complex pzrs = #z complex loc = location.fx + flip(location.fy) if !@turtle pzrs = pzrs-flip(loc) else pzrs = pzrs-loc endif ; rotation pzrs = pzrs*m_zi ; normalize proportions pzrs = real(pzrs) + flip(imag(pzrs)*width/height) pcolor = im.getColor(pzrs*size) return pcolor endfunc ; ; Determine if the pixel is on a line ; jj = 0 kkk = 0 repeat if la.line[jj].vis if !@turtle pt1 = la.line[jj].fy1 + flip(la.line[jj].fx1) pt2 = la.line[jj].fy2 + flip(la.line[jj].fx2) t[jj]=(#z-pt1)/(pt2-pt1) else pt1 = la.line[jj].fx1 + flip(la.line[jj].fy1) pt2 = la.line[jj].fx2 + flip(la.line[jj].fy2) t[jj]=(#z-pt1)/(pt2-pt1) endif l[jj] = 1-real(t[jj]) x=real(t[jj]) y=imag(t[jj]) if(x<=0-@lj) if @ltype == "Rounded" r[jj]=sqr(x)+sqr(y) elseif @ltype == "Flat" r[jj] = 0 endif elseif(x>=1+@lj) if @ltype == "Rounded" r[jj]=sqr(x-1)+sqr(y) elseif @ltype == "Flat" r[jj] = 0 endif else r[jj]=sqr(y) endif r[jj]=sqrt(r[jj])*cabs(pt2-pt1) if zmax > zmin depth[jj] = ((la.line[jj].fz1+la.line[jj].fz2)/2-zmin)/(zmax-zmin) else depth[jj] = 0 endif if @colormode == "By side" t[jj] = ((jj+1)/(k+1)) if la.line[jj].jump t[jj] = t[jj] + @cjump endif elseif @colormode == "By Length" t[jj] = l[jj] elseif @colormode == "By Transverse" t[jj] = imag(t[jj]) if la.line[jj].jump t[jj] = t[jj] + @cjump endif elseif @colormode == "By Iteration Value" t[jj] = (dep[jj]+1)/(@iter+1) if la.line[jj].jump t[jj] = t[jj] + @cjump endif elseif @colormode == "By line color" if !@usedirect t[jj] = la.line[jj].lcol if la.line[jj].jump t[jj] = t[jj] + @cjump endif else dt[jj] = la.line[jj].dcol endif elseif @colormode == "By z value" t[jj] = depth[jj] + 0.01 if la.line[jj].jump t[jj] = t[jj] + @cjump endif endif endif jj = jj + 1 until jj == k jj = 0 ; ; Load rt with color values ; float thick = 0 repeat if !la.line[jj].poly if @makecone thick = @thick*(1+l[jj]/(@tvar+jj)) else thick = @thick endif else thick = @thick endif if !la.line[jj].poly if @usepos thick = thick*la.line[jj].lwidth/(jj*@pos+1) endif if @vbr && la.line[jj].lwidth == 1 thick = thick/(la.line[jj].depth+@factor)/(@factor) else thick = thick*la.line[jj].lwidth endif else thick = la.line[jj].lwidth endif if r[jj] < thick && r[jj] != 0 rt = depth[jj]+0.01 rtave = rtave + cabs(t[jj]) if @avemode == "Normal" dtave = compose(dtave, blend(dt[jj], mergenormal(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "Multiply" dtave = compose(dtave, blend(dt[jj], mergemultiply(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "Screen" dtave = compose(dtave, blend(dt[jj], mergescreen(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "Overlay" dtave = compose(dtave, blend(dt[jj], mergeoverlay(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "Soft light" dtave = compose(dtave, blend(dt[jj], mergesoftlight(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "Hard light" dtave = compose(dtave, blend(dt[jj], mergehardlight(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "darken" dtave = compose(dtave, blend(dt[jj], mergedarken(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "lighten" dtave = compose(dtave, blend(dt[jj], mergelighten(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "difference" dtave = compose(dtave, blend(dt[jj], mergedifference(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "hue" dtave = compose(dtave, blend(dt[jj], mergehue(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "saturation" dtave = compose(dtave, blend(dt[jj], mergesaturation(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "color" dtave = compose(dtave, blend(dt[jj], mergecolor(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "luminance" dtave = compose(dtave, blend(dt[jj], mergeluminance(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "addition" dtave = compose(dtave, blend(dt[jj], mergeaddition(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "subtraction" dtave = compose(dtave, blend(dt[jj], mergesubtraction(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "hsl addition" dtave = compose(dtave, blend(dt[jj], mergehsladdition(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "red" dtave = compose(dtave, blend(dt[jj], mergered(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "green" dtave = compose(dtave, blend(dt[jj], mergegreen(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "blue" dtave = compose(dtave, blend(dt[jj], mergeblue(dtave, dt[jj]), alpha(dtave)), @aop) endif kkk = kkk + 1 endif if rt > rtmax rtmax = rt jmax = jj dtmax = dt[jj] endif jj = jj + 1 until jj == k if @ctype == "Max value" && rt != 0 if !@gradshade || @colormode != "By line color" rt = cabs(t[jmax]) else rt = (cabs(t[jmax])*r[jmax])^(1/3) endif else rt = rtave/(kkk+1) endif ; ; Color the lines ; ; Trunk/stem textures need to be added ; ; Calculate trunck/stem angle to x axis color timcolor = rgba(0,0,0,1) float sangle = 0 float ix = 0 float iy = 0 float iz = 0 if @addimage3 && (!la.line[jmax].poly || @poly) ; calculate line angle if !@turtle sangle = atan2(la.line[jmax].fx2-la.line[jmax].fx1+\ flip(la.line[jmax].fy2-la.line[jmax].fy1))*180/#pi else sangle = 90-atan2(la.line[jmax].fx2-la.line[jmax].fx1+\ flip(la.line[jmax].fy2-la.line[jmax].fy1))*180/#pi endif Image timage = new @imageParam3 ix = (la.line[jmax].fx2+la.line[jmax].fx1)/2 iy = (la.line[jmax].fy2+la.line[jmax].fy1)/2 iz = (la.line[jmax].fz2+la.line[jmax].fz1)/2 ; randomize image position if @rangi rvalue2(seed2,ix,@prangi) endif if @rangi rvalue2(seed2,iy,@prangi) endif ; center the image on the line Point tloc = new Point(ix, iy, iz) timcolor = putimage(tloc,timage,sangle+@tanglec,@size3) endif ; leaf/flower textures need to be added ; ; Calculate leaf/flower angle to x axis color timcolor2 = rgba(0,0,0,1) float sangle2 = 0 float ix2 = 0 float iy2 = 0 float iz2 = 0 if @addimage4 && la.line[jmax].poly ; calculate line angle if !@turtle sangle2 = atan2(la.line[jmax].fx2-la.line[jmax].fx1+\ flip(la.line[jmax].fy2-la.line[jmax].fy1))*180/#pi else sangle2 = 90-atan2(la.line[jmax].fx2-la.line[jmax].fx1+\ flip(la.line[jmax].fy2-la.line[jmax].fy1))*180/#pi endif Image timage2 = new @imageParam4 ix2 = (la.line[jmax].fx2+la.line[jmax].fx1)/2 iy2 = (la.line[jmax].fy2+la.line[jmax].fy1)/2 iz2 = (la.line[jmax].fz2+la.line[jmax].fz1)/2 ; randomize image position if @rangi4 rvalue2(seed2,ix2,@prangi4) endif if @rangi4 rvalue2(seed2,iy2,@prangi4) endif ; center the image on the line Point tloc2 = new Point(ix2, iy2, iz2) timcolor2 = putimage(tloc2,timage2,sangle2+@tanglec4,@size4) endif color finalcolor = @finalcolor if rt != 0 if @colormode != "Solid" if !@usedirect || @colormode != "By line color" finalcolor = gradient(rt) elseif @usedirect && @colormode == "By line color" float shade = @shade if @ctype == "Max value" if !la.line[jmax].poly if @makecone finalcolor = compose(dtmax,@fshade,(r[jmax]^.5/(thick*(1+l[jmax]/(@tvar+jmax))))/(shade/0.04)) else finalcolor = compose(dtmax,@fshade,(r[jmax]^.5/thick)/(shade/0.04)) endif else finalcolor = dtmax endif else if !la.line[jmax].poly if @makecone finalcolor = compose(dtave,@fshade,(r[jmax]^0.5/(thick*(1+l[jmax]/(@tvar+jmax))))/(shade/0.04)) else finalcolor = compose(dtave,@fshade,(r[jmax]^0.5/thick)/(shade/0.04)) endif else finalcolor = dtave endif endif endif else finalcolor= gradient(@gradval) endif if @addimage3 && (!la.line[jmax].poly || @poly) if @mergemode3 == "Normal" finalcolor = compose(finalcolor,blend(timcolor,mergenormal(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "Multiply" finalcolor = compose(finalcolor,blend(timcolor,mergemultiply(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "Screen" finalcolor = compose(finalcolor,blend(timcolor,mergeScreen(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "Overlay" finalcolor = compose(finalcolor,blend(timcolor,mergeOverlay(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "Soft light" finalcolor = compose(finalcolor,blend(timcolor,mergeSoftlight(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "Hard light" finalcolor = compose(finalcolor,blend(timcolor,mergeHardlight(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "darken" finalcolor = compose(finalcolor,blend(timcolor,mergedarken(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "lighten" finalcolor = compose(finalcolor,blend(timcolor,mergelighten(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "difference" finalcolor = compose(finalcolor,blend(timcolor,mergedifference(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "hue" finalcolor = compose(finalcolor,blend(timcolor,mergehue(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "saturation" finalcolor = compose(finalcolor,blend(timcolor,mergesaturation(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "color" finalcolor = compose(finalcolor,blend(timcolor,mergecolor(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "luminance" finalcolor = compose(finalcolor,blend(timcolor,mergeluminance(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "addition" finalcolor = compose(finalcolor,blend(timcolor,mergeaddition(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "subtraction" finalcolor = compose(finalcolor,blend(timcolor,mergesubtraction(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "hsl addition" finalcolor = compose(finalcolor,blend(timcolor,mergehsladdition(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "red" finalcolor = compose(finalcolor,blend(timcolor,mergered(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "green" finalcolor = compose(finalcolor,blend(timcolor,mergegreen(finalcolor,timcolor),alpha(finalcolor)),@imageop3) elseif @mergemode3 == "blue" finalcolor = compose(finalcolor,blend(timcolor,mergeblue(finalcolor,timcolor),alpha(finalcolor)),@imageop3) endif endif if @addimage4 && la.line[jmax].poly if @mergemode4 == "Normal" finalcolor = compose(finalcolor,blend(timcolor2,mergenormal(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "Multiply" finalcolor = compose(finalcolor,blend(timcolor2,mergemultiply(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "Screen" finalcolor = compose(finalcolor,blend(timcolor2,mergeScreen(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "Overlay" finalcolor = compose(finalcolor,blend(timcolor2,mergeOverlay(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "Soft light" finalcolor = compose(finalcolor,blend(timcolor2,mergeSoftlight(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "Hard light" finalcolor = compose(finalcolor,blend(timcolor2,mergeHardlight(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "darken" finalcolor = compose(finalcolor,blend(timcolor2,mergedarken(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "lighten" finalcolor = compose(finalcolor,blend(timcolor2,mergelighten(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "difference" finalcolor = compose(finalcolor,blend(timcolor2,mergedifference(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "hue" finalcolor = compose(finalcolor,blend(timcolor2,mergehue(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "saturation" finalcolor = compose(finalcolor,blend(timcolor2,mergesaturation(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "color" finalcolor = compose(finalcolor,blend(timcolor2,mergecolor(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "luminance" finalcolor = compose(finalcolor,blend(timcolor2,mergeluminance(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "addition" finalcolor = compose(finalcolor,blend(timcolor2,mergeaddition(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "subtraction" finalcolor = compose(finalcolor,blend(timcolor2,mergesubtraction(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "hsl addition" finalcolor = compose(finalcolor,blend(timcolor2,mergehsladdition(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "red" finalcolor = compose(finalcolor,blend(timcolor2,mergered(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "green" finalcolor = compose(finalcolor,blend(timcolor2,mergegreen(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) elseif @mergemode4 == "blue" finalcolor = compose(finalcolor,blend(timcolor2,mergeblue(finalcolor,timcolor2),alpha(finalcolor)),@imageop4) endif endif if !@addimage && !@addimage2 #color = finalcolor endif elseif !@addimage && !@addimage2 #solid = true endif if @addimage color imcolorf = rgba(0,0,0,0) jj = 1 float iangle = @iangle while jj < kim im[jj] = new @imageParam imcolor[jj] = rgba(0,0,0,0) if @rango rvalue2(seed2,iangle,@arangeo) endif if images.pt[jj].fz*@zfix > rt*@rtfix || rt == 0 imcolor[jj] = putimage(images.pt[jj],im[jj],iangle,@size) if @mergemode == "Normal" imcolorf = compose(imcolorf,blend(imcolor[jj],mergenormal(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "Multiply" imcolorf = compose(imcolorf,blend(imcolor[jj],mergemultiply(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "Screen" imcolorf = compose(imcolorf,blend(imcolor[jj],mergeScreen(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "Overlay" imcolorf = compose(imcolorf,blend(imcolor[jj],mergeOverlay(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "Soft light" imcolorf = compose(imcolorf,blend(imcolor[jj],mergeSoftlight(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "Hard light" imcolorf = compose(imcolorf,blend(imcolor[jj],mergeHardlight(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "darken" imcolorf = compose(imcolorf,blend(imcolor[jj],mergedarken(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "lighten" imcolorf = compose(imcolorf,blend(imcolor[jj],mergelighten(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "difference" imcolorf = compose(imcolorf,blend(imcolor[jj],mergedifference(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "hue" imcolorf = compose(imcolorf,blend(imcolor[jj],mergehue(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "saturation" imcolorf = compose(imcolorf,blend(imcolor[jj],mergesaturation(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "color" imcolorf = compose(imcolorf,blend(imcolor[jj],mergecolor(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "luminance" imcolorf = compose(imcolorf,blend(imcolor[jj],mergeluminance(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "addition" imcolorf = compose(imcolorf,blend(imcolor[jj],mergeaddition(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "subtraction" imcolorf = compose(imcolorf,blend(imcolor[jj],mergesubtraction(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "hsl addition" imcolorf = compose(imcolorf,blend(imcolor[jj],mergehsladdition(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "red" imcolorf = compose(imcolorf,blend(imcolor[jj],mergered(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "green" imcolorf = compose(imcolorf,blend(imcolor[jj],mergegreen(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) elseif @mergemode == "blue" imcolorf = compose(imcolorf,blend(imcolor[jj],mergeblue(imcolorf,imcolor[jj]),alpha(imcolorf)),@imageop) endif if @imagemode == "Normal" finalcolor = compose(finalcolor,blend(imcolorf,mergenormal(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Multiply" finalcolor = compose(finalcolor,blend(imcolorf,mergemultiply(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Screen" finalcolor = compose(finalcolor,blend(imcolorf,mergeScreen(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Overlay" finalcolor = compose(finalcolor,blend(imcolorf,mergeOverlay(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Soft light" finalcolor = compose(finalcolor,blend(imcolorf,mergeSoftlight(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Hard light" finalcolor = compose(finalcolor,blend(imcolorf,mergeHardlight(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "darken" finalcolor = compose(finalcolor,blend(imcolorf,mergedarken(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "lighten" finalcolor = compose(finalcolor,blend(imcolorf,mergelighten(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "difference" finalcolor = compose(finalcolor,blend(imcolorf,mergedifference(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "hue" finalcolor = compose(finalcolor,blend(imcolorf,mergehue(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "saturation" finalcolor = compose(finalcolor,blend(imcolorf,mergesaturation(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "color" finalcolor = compose(finalcolor,blend(imcolorf,mergecolor(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "luminance" finalcolor = compose(finalcolor,blend(imcolorf,mergeluminance(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "addition" finalcolor = compose(finalcolor,blend(imcolorf,mergeaddition(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "subtraction" finalcolor = compose(finalcolor,blend(imcolorf,mergesubtraction(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "hsl addition" finalcolor = compose(finalcolor,blend(imcolorf,mergehsladdition(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "red" finalcolor = compose(finalcolor,blend(imcolorf,mergered(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "green" finalcolor = compose(finalcolor,blend(imcolorf,mergegreen(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "blue" finalcolor = compose(finalcolor,blend(imcolorf,mergeblue(finalcolor,imcolorf),alpha(finalcolor)),@finalop) endif endif if !@addimage2 #color = finalcolor endif jj = jj + 1 endwhile endif if @addimage2 color imcolorf = rgba(0,0,0,0) jj = 1 float iangle2 = @iangle2 while jj < kim2 im2[jj] = new @imageParam2 imcolor2[jj] = rgba(0,0,0,1) if @rango rvalue2(seed2,iangle2,@arangeo) endif if images2.pt[jj].fz*@zfix2 > rt*@rtfix2 || rt == 0 imcolor2[jj] = putimage(images2.pt[jj],im2[jj],iangle2,@size2) if @mergemode2 == "Normal" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergenormal(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "Multiply" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergemultiply(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "Screen" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergeScreen(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "Overlay" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergeOverlay(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "Soft light" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergeSoftlight(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "Hard light" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergeHardlight(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "darken" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergedarken(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "lighten" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergelighten(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "difference" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergedifference(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "hue" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergehue(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "saturation" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergesaturation(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "color" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergecolor(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "luminance" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergeluminance(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "addition" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergeaddition(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "subtraction" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergesubtraction(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "hsl addition" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergehsladdition(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "red" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergered(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "green" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergegreen(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) elseif @mergemode2 == "blue" imcolorf = compose(imcolorf,blend(imcolor2[jj],mergeblue(imcolorf,imcolor2[jj]),alpha(imcolorf)),@imageop2) endif if @imagemode == "Normal" finalcolor = compose(finalcolor,blend(imcolorf,mergenormal(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Multiply" finalcolor = compose(finalcolor,blend(imcolorf,mergemultiply(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Screen" finalcolor = compose(finalcolor,blend(imcolorf,mergeScreen(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Overlay" finalcolor = compose(finalcolor,blend(imcolorf,mergeOverlay(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Soft light" finalcolor = compose(finalcolor,blend(imcolorf,mergeSoftlight(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "Hard light" finalcolor = compose(finalcolor,blend(imcolorf,mergeHardlight(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "darken" finalcolor = compose(finalcolor,blend(imcolorf,mergedarken(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "lighten" finalcolor = compose(finalcolor,blend(imcolorf,mergelighten(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "difference" finalcolor = compose(finalcolor,blend(imcolorf,mergedifference(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "hue" finalcolor = compose(finalcolor,blend(imcolorf,mergehue(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "saturation" finalcolor = compose(finalcolor,blend(imcolorf,mergesaturation(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "color" finalcolor = compose(finalcolor,blend(imcolorf,mergecolor(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "luminance" finalcolor = compose(finalcolor,blend(imcolorf,mergeluminance(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "addition" finalcolor = compose(finalcolor,blend(imcolorf,mergeaddition(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "subtraction" finalcolor = compose(finalcolor,blend(imcolorf,mergesubtraction(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "hsl addition" finalcolor = compose(finalcolor,blend(imcolorf,mergehsladdition(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "red" finalcolor = compose(finalcolor,blend(imcolorf,mergered(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "green" finalcolor = compose(finalcolor,blend(imcolorf,mergegreen(finalcolor,imcolorf),alpha(finalcolor)),@finalop) elseif @imagemode == "blue" finalcolor = compose(finalcolor,blend(imcolorf,mergeblue(finalcolor,imcolorf),alpha(finalcolor)),@finalop) endif endif #color = finalcolor jj = jj + 1 endwhile endif default: heading caption="L-Systems" endheading render = false helpfile = "http://www.hiddendimension.com/L_Systems.pdf" int param v_lsystem caption = "Version (L Systems)" default = 100 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_lsystem < 100 endparam heading text = "When the Abelson 3D Turtle alorithm is used the artist will ususally \ have to rotate the image -90 degrees on the location tab. It is provided \ for compatibility with some of the 3D L Systems code found on the internet. \ It uses Heading (H), Left (L) and Up (U) vectors that satisfy the relationship \ H x L = U." endheading bool param turtle caption = "Use Abelson 3D Turtle" default = false endparam int param asize caption = "Maximum array size" default = 1000000 endparam heading text = "The actual array size will be printed in the Compiler Messages window." visible = @diag endheading bool param diag caption = "Array diagnositic" default = false endparam int param iter caption = "L-Sysem Iterations" default = 1 endparam int param stacksize caption = "stack size" default = 1000 endparam bool param show caption = "Show rules" endparam heading caption = "Rules" visible = @show endheading heading text = "The rule set includes:" visible = @show endheading heading text = " F move forward (a replacement chracter)" visible = @show endheading heading text = " G move forward (a replacement chracter)" visible = @show endheading heading text = " H move forward without drawing" visible = @show endheading heading text = " I move forward without drawing" visible = @show endheading heading text = " d draw forward" visible = @show endheading heading text = " s resize" visible = @show endheading heading text = " c color jump" visible = @show endheading heading text = " + turn left" visible = @show endheading heading text = " - turn right" visible = @show endheading heading text = " & pitch down" visible = @show endheading heading text = " % pitch up" visible = @show endheading heading text = " / roll left" visible = @show endheading heading text = " \ roll right" visible = @show endheading heading text = " | turn around" visible = @show endheading heading text = " ! reverse angle" visible = @show endheading heading text = " [ push stack" visible = @show endheading heading text = " ] pop stack" visible = @show endheading heading text = " @ polygon object #1" visible = @show endheading heading text = " $ polygon object #2" visible = @show endheading heading text = " ^ image object #1" visible = @show endheading heading text = " ~ image object #2" visible = @show endheading heading text = " # null object" visible = @show endheading heading text = "For use with node rewriting only." visible = @show && @rewrite == "node" endheading heading text = " L replacement character ignored by the Turtle" visible = @show && @rewrite == "node" endheading heading text = " R replacement character ignored by the Turtle" visible = @show && @rewrite == "node" endheading heading text = " W replacement character ignored by the Turtle" visible = @show && @rewrite == "node" endheading heading text = " X replacement character ignored by the Turtle" visible = @show && @rewrite == "node" endheading heading text = " Y replacement character ignored by the Turtle" visible = @show && @rewrite == "node" endheading heading text = " Z replacement character ignored by the Turtle" visible = @show && @rewrite == "node" endheading float param tangle caption = "turn angle" default = 90.0 endparam heading text = "If there are multiple strings parallel rewriting is the standard method. \ Serial rewriting gives a longer string and more complex plant structure. \ With node rewriting use L, R and F for the replacement characters. \ F and G will still serve as draw forward characters, while L and R \ are ignored by the Turtle." endheading heading text = "For more details on node rewriting and its uses see the help file." endheading bool param stoch caption = "Stochastic branching" default = false endparam param rewrite caption = "Rewrite method" default = 0 enum = "Parallel" "Serial" "Node" endparam heading caption = "Color mode" endheading heading text = "Color lines using gradients or RGB color parameters. Both methods use direct \ color. RGB color works only for the color mode of 'By line color'." endheading float param cjump caption = "Set Color jump value" default = 0 visible = (!@usedirect || (@usedirect && @colormode != "By line color")) && @usebranch endparam bool param cjumpd caption = "Set Color jump" default = false visible = (@usedirect && @colormode == "By line color") && @usebranch endparam float param cthresh caption = "Jump Threshold" default = 0 visible = @cjump > 0 || @cjumpd endparam heading text = "Color jump is designed to work with 'Thickness by branching' only. It \ is intended to provide color changes on the branch extremities." visible = @usebranch endheading heading caption = "RGB jump line colors" visible = (@usedirect && @colormode == "By line color") && @cjumpd endheading color param fcolord caption = "Jump color" default = rgba(0/255, 198/255, 99/255, 1) visible = (@usedirect && @colormode == "By line color") && @cjumpd endparam bool param usedirect caption = "Use RGB color" default = false visible = @colormode == "By line color" endparam float param shade caption = "Line shader" default = 10 min = .01 visible = @usedirect && @colormode == "By line color" hint = "provides a 3D effect to the lines." endparam bool param gradshade caption = "Line shader" default = false visible = !@usedirect && @colormode == "By line color" hint = "provides a 3D effect to the lines. Special gradients are \ required to produce the effect." endparam color param fshade caption = "Shader color" default = rgba(0,0,0,1) visible = @usedirect && @colormode == "By line color" hint = "RGB color of the shader overlay." endparam heading caption = "RGB line colors" visible = @usedirect && @colormode == "By line color" endheading color param fcolor caption = "Color for F" default = rgba(128/255, 84/255, 33/255, 1) visible = @usedirect && @colormode == "By line color" endparam color param gcolor caption = "Color for G" default = rgba(114/255, 83/255, 46/255, 1) visible = @usedirect && @colormode == "By line color" endparam heading text = "Leaf1 colors" visible = @usedirect && @otype1 == "leaf1" && @colormode == "By line color" endheading heading text = "Leaf2 colors" visible = @usedirect && @otype1 == "leaf2" && @colormode == "By line color" endheading heading text = "Leaf3 colors" visible = @usedirect && @otype1 == "leaf3" && @colormode == "By line color" endheading heading text = "Leaf4 colors" visible = @usedirect && @otype1 == "leaf4" && @colormode == "By line color" endheading heading text = "Flower1 colors" visible = @usedirect && @otype1 == "flower1" && @colormode == "By line color" endheading heading text = "Flower2 colors" visible = @usedirect && @otype1 == "flower2" && @colormode == "By line color" endheading heading text = "Flower3 colors" visible = @usedirect && @otype1 == "flower3" && @colormode == "By line color" endheading heading caption = "Object 1 colors" visible = @usedirect && @otype1 != "none" endheading color param color11 caption = "Object color 1" default = rgba(0, 1, 0, 1) visible = @usedirect && @otype1 != "none" && @colormode == "By line color" endparam color param color21 caption = "Object color 2" default = rgba(64/255, 128/255, 128/255, 1) visible = @usedirect && @otype1 != "none" && @colormode == "By line color" endparam color param color31 caption = "Object color 3" default = rgba(51/255, 163/255, 54/255, 1) visible = @usedirect && @otype1 != "none" && @colormode == "By line color" endparam color param color41 caption = "Object color 4" default = rgba(128/255, 255/255, 0, 1) visible = @usedirect && @otype1 != "none" && @colormode == "By line color" endparam color param color51 caption = "Object color 5" default = rgba(.2, .6, .25, 1) visible = @usedirect && (@otype1 == "leaf3" || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2" ||@otype1 == "flower3") && @colormode == "By line color" endparam color param color61 caption = "Object color 6" default = rgba(.2, .6, .25, 1) visible = @usedirect && (@otype1 == "leaf3" || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color71 caption = "Object color 7" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=7) || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color81 caption = "Object color 8" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=8) || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color91 caption = "Object color 9" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=9) || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color101 caption = "Object color 10" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=10) || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color111 caption = "Object color 11" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=11) \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color121 caption = "Object color 12" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=12) \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam heading caption = "Object 2 colors" visible = @usedirect && @otype2 != "none" endheading heading text = "Leaf1 colors" visible = @usedirect && @otype2 == "leaf1" && @colormode == "By line color" endheading heading text = "Leaf2 colors" visible = @usedirect && @otype2 == "leaf2" && @colormode == "By line color" endheading heading text = "Leaf3 colors" visible = @usedirect && @otype2 == "leaf3" && @colormode == "By line color" endheading heading text = "Leaf4 colors" visible = @usedirect && @otype2 == "leaf4" && @colormode == "By line color" endheading heading text = "Flower1 colors" visible = @usedirect && @otype2 == "flower1" && @colormode == "By line color" endheading heading text = "Flower2 colors" visible = @usedirect && @otype2 == "flower2" && @colormode == "By line color" endheading heading text = "Flower3 colors" visible = @usedirect && @otype2 == "flower3" && @colormode == "By line color" endheading color param color12 caption = "Object color 1" default = rgba(0, 1, 0, 1) visible = @usedirect && @otype2 != "none" && @colormode == "By line color" endparam color param color22 caption = "Object color 2" default = rgba(64/255, 128/255, 128/255, 1) visible = @usedirect && @otype2 != "none" && @colormode == "By line color" endparam color param color32 caption = "Object color 3" default = rgba(51/255, 163/255, 54/255, 1) visible = @usedirect && @otype2 != "none" && @colormode == "By line color" endparam color param color42 caption = "Object color 4" default = rgba(128/255, 255/255, 0, 1) visible = @usedirect && @otype2 != "none" && @colormode == "By line color" endparam color param color52 caption = "Object color 5" default = rgba(.2, .6, .25, 1) visible = @usedirect && (@otype2 == "leaf3" || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2" ||@otype2 == "flower3") && @colormode == "By line color" endparam color param color62 caption = "Object color 6" default = rgba(.2, .6, .25, 1) visible = @usedirect && (@otype2 == "leaf3" || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color72 caption = "Object color 7" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=7) || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color82 caption = "Object color 8" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=8) || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color92 caption = "Object color 9" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=9) || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color102 caption = "Object color 10" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=10) || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color112 caption = "Object color 11" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=11) \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color122 caption = "Object color 12" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=12) \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam heading caption = "Axiom" endheading heading text = "The axiom must contain at least one F. The maximum size is 30." visible = @rewrite == "parallel" || @rewrite == "serial" endheading heading text = "The axiom must contain at least one L and/or R. The maximum size is 40." visible = @rewrite == "node" endheading int param alen caption = "axiom length" default = 1 max = 40 endparam param ax1 caption = "axiom1" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 1 endparam param ax2 caption = "axiom2" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 1 visible = @alen >= 2 endparam param ax3 caption = "axiom3" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 3 endparam param ax4 caption = "axiom4" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 1 visible = @alen >= 4 endparam param ax5 caption = "axiom5" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 5 endparam param ax6 caption = "axiom6" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 1 visible = @alen >= 6 endparam param ax7 caption = "axiom7" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 7 endparam param ax8 caption = "axiom8" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 8 endparam param ax9 caption = "axiom9" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 9 endparam param ax10 caption = "axiom10" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 10 endparam param ax11 caption = "axiom11" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 11 endparam param ax12 caption = "axiom12" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 12 endparam param ax13 caption = "axiom13" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 13 endparam param ax14 caption = "axiom14" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 14 endparam param ax15 caption = "axiom15" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 15 endparam param ax16 caption = "axiom16" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 16 endparam param ax17 caption = "axiom17" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 17 endparam param ax18 caption = "axiom18" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 18 endparam param ax19 caption = "axiom19" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 19 endparam param ax20 caption = "axiom20" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 20 endparam param ax21 caption = "axiom21" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 21 endparam param ax22 caption = "axiom22" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 22 endparam param ax23 caption = "axiom23" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 23 endparam param ax24 caption = "axiom24" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 24 endparam param ax25 caption = "axiom25" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 25 endparam param ax26 caption = "axiom26" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 26 endparam param ax27 caption = "axiom27" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 27 endparam param ax28 caption = "axiom28" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 28 endparam param ax29 caption = "axiom29" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 29 endparam param ax30 caption = "axiom30" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 30 endparam param ax31 caption = "axiom31" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 31 endparam param ax32 caption = "axiom32" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 32 endparam param ax33 caption = "axiom33" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 33 endparam param ax34 caption = "axiom34" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 34 endparam param ax35 caption = "axiom35" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 35 endparam param ax36 caption = "axiom36" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 36 endparam param ax37 caption = "axiom37" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 37 endparam param ax38 caption = "axiom38" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 38 endparam param ax39 caption = "axiom39" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 39 endparam param ax40 caption = "axiom40" enum = "F" "L" "R" "W" "X" "Y" "Z" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 40 endparam heading caption = "Reproduction rules" endheading heading caption = " Reproduction rule 1 (F)" visible = @rewrite == "Parallel" || @rewrite == "Serial" endheading heading caption = " Reproduction rule 1 (L)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." endheading int param rlen1 caption = "rule length" default = 1 max = 50 endparam param rule11 caption = "rule 1" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 0 visible = @rlen1 >= 1 endparam param rule21 caption = "rule 2" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 2 endparam param rule31 caption = "rule 3" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 3 endparam param rule41 caption = "rule 4" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 4 endparam param rule51 caption = "rule 5" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 5 endparam param rule61 caption = "rule 6" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 6 endparam param rule71 caption = "rule 7" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 7 endparam param rule81 caption = "rule 8" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 8 endparam param rule91 caption = "rule 9" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 9 endparam param rule101 caption = "rule 10" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 10 endparam param rule111 caption = "rule 11" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 11 endparam param rule121 caption = "rule 12" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 12 endparam param rule131 caption = "rule 13" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 13 endparam param rule141 caption = "rule 14" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 14 endparam param rule151 caption = "rule 15" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 15 endparam param rule161 caption = "rule 16" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 16 endparam param rule171 caption = "rule 17" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 17 endparam param rule181 caption = "rule 18" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 18 endparam param rule191 caption = "rule 19" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 19 endparam param rule201 caption = "rule 20" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 20 endparam param rule211 caption = "rule 21" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 21 endparam param rule221 caption = "rule 22" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 22 endparam param rule231 caption = "rule 23" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 23 endparam param rule241 caption = "rule 24" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 24 endparam param rule251 caption = "rule 25" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 25 endparam param rule261 caption = "rule 26" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 26 endparam param rule271 caption = "rule 27" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 27 endparam param rule281 caption = "rule 28" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 28 endparam param rule291 caption = "rule 29" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 29 endparam param rule301 caption = "rule 30" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 30 endparam param rule311 caption = "rule 31" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 31 endparam param rule321 caption = "rule 32" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 32 endparam param rule331 caption = "rule 33" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 33 endparam param rule341 caption = "rule 34" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 34 endparam param rule351 caption = "rule 35" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 35 endparam param rule361 caption = "rule 36" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 36 endparam param rule371 caption = "rule 37" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 37 endparam param rule381 caption = "rule 38" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 38 endparam param rule391 caption = "rule 39" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 39 endparam param rule401 caption = "rule 40" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 40 endparam param rule411 caption = "rule 41" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 41 endparam param rule421 caption = "rule 42" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 42 endparam param rule431 caption = "rule 43" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 43 endparam param rule441 caption = "rule 44" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 44 endparam param rule451 caption = "rule 45" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 45 endparam param rule461 caption = "rule 46" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 46 endparam param rule471 caption = "rule 47" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 47 endparam param rule481 caption = "rule 48" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 48 endparam param rule491 caption = "rule 49" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 49 endparam param rule501 caption = "rule 50" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen1 >= 50 endparam heading caption = " Reproduction rule 2 (G)" visible = @rewrite == "Parallel" || @rewrite == "Serial" endheading heading caption = " Reproduction rule 2 (R)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." endheading bool param hideg caption = "Hide lines from G" default = false visible = @rlen2 > 0 && @rewrite != "node" endparam int param rlen2 caption = "rule length" default = 0 max = 50 endparam param rule12 caption = "rule 1" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 1 visible = @rlen2 >= 1 endparam param rule22 caption = "rule 2" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 2 endparam param rule32 caption = "rule 3" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 3 endparam param rule42 caption = "rule 4" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 4 endparam param rule52 caption = "rule 5" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 5 endparam param rule62 caption = "rule 6" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 6 endparam param rule72 caption = "rule 7" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 7 endparam param rule82 caption = "rule 8" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 8 endparam param rule92 caption = "rule 9" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 9 endparam param rule102 caption = "rule 10" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 10 endparam param rule112 caption = "rule 11" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 11 endparam param rule122 caption = "rule 12" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 12 endparam param rule132 caption = "rule 13" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 13 endparam param rule142 caption = "rule 14" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 14 endparam param rule152 caption = "rule 15" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 15 endparam param rule162 caption = "rule 16" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 16 endparam param rule172 caption = "rule 17" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 17 endparam param rule182 caption = "rule 18" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 18 endparam param rule192 caption = "rule 19" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 19 endparam param rule202 caption = "rule 20" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 20 endparam param rule212 caption = "rule 21" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 21 endparam param rule222 caption = "rule 22" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 22 endparam param rule232 caption = "rule 23" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 23 endparam param rule242 caption = "rule 24" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 24 endparam param rule252 caption = "rule 25" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 25 endparam param rule262 caption = "rule 26" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 26 endparam param rule272 caption = "rule 27" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 27 endparam param rule282 caption = "rule 28" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 28 endparam param rule292 caption = "rule 29" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 29 endparam param rule302 caption = "rule 30" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 30 endparam param rule312 caption = "rule 31" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 31 endparam param rule322 caption = "rule 32" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 32 endparam param rule332 caption = "rule 33" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 33 endparam param rule342 caption = "rule 34" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 34 endparam param rule352 caption = "rule 35" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 35 endparam param rule362 caption = "rule 36" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 36 endparam param rule372 caption = "rule 37" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 37 endparam param rule382 caption = "rule 38" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 38 endparam param rule392 caption = "rule 39" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 39 endparam param rule402 caption = "rule 40" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 40 endparam param rule412 caption = "rule 41" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 41 endparam param rule422 caption = "rule 42" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 42 endparam param rule432 caption = "rule 43" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 43 endparam param rule442 caption = "rule 44" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 44 endparam param rule452 caption = "rule 45" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 45 endparam param rule462 caption = "rule 46" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 46 endparam param rule472 caption = "rule 47" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 47 endparam param rule482 caption = "rule 48" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 48 endparam param rule492 caption = "rule 49" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 49 endparam param rule502 caption = "rule 50" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rlen2 >= 50 endparam heading caption = " Reproduction rule 3 (F)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." visible = @rewrite == "node" endheading int param rlen3 caption = "rule length" default = 0 max = 50 visible = @rewrite == "node" endparam param rule13 caption = "rule 1" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 0 visible = @rewrite == "node" && @rlen3 >= 1 endparam param rule23 caption = "rule 2" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 2 endparam param rule33 caption = "rule 3" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 3 endparam param rule43 caption = "rule 4" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 4 endparam param rule53 caption = "rule 5" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 5 endparam param rule63 caption = "rule 6" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 6 endparam param rule73 caption = "rule 7" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 7 endparam param rule83 caption = "rule 8" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 8 endparam param rule93 caption = "rule 9" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 9 endparam param rule103 caption = "rule 10" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 10 endparam param rule113 caption = "rule 11" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 11 endparam param rule123 caption = "rule 12" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 12 endparam param rule133 caption = "rule 13" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 13 endparam param rule143 caption = "rule 14" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 14 endparam param rule153 caption = "rule 15" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 15 endparam param rule163 caption = "rule 16" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 16 endparam param rule173 caption = "rule 17" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 17 endparam param rule183 caption = "rule 18" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 18 endparam param rule193 caption = "rule 19" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 19 endparam param rule203 caption = "rule 20" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 20 endparam param rule213 caption = "rule 21" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 21 endparam param rule223 caption = "rule 22" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 22 endparam param rule233 caption = "rule 23" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 23 endparam param rule243 caption = "rule 24" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 24 endparam param rule253 caption = "rule 25" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 25 endparam param rule263 caption = "rule 26" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 26 endparam param rule273 caption = "rule 27" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 27 endparam param rule283 caption = "rule 28" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 28 endparam param rule293 caption = "rule 29" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 29 endparam param rule303 caption = "rule 30" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 30 endparam param rule313 caption = "rule 31" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 31 endparam param rule323 caption = "rule 32" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 32 endparam param rule333 caption = "rule 33" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 33 endparam param rule343 caption = "rule 34" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 34 endparam param rule353 caption = "rule 35" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 35 endparam param rule363 caption = "rule 36" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 36 endparam param rule373 caption = "rule 37" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 37 endparam param rule383 caption = "rule 38" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 38 endparam param rule393 caption = "rule 39" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 39 endparam param rule403 caption = "rule 40" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 40 endparam param rule413 caption = "rule 41" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 41 endparam param rule423 caption = "rule 42" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 42 endparam param rule433 caption = "rule 43" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 43 endparam param rule443 caption = "rule 44" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 44 endparam param rule453 caption = "rule 45" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 45 endparam param rule463 caption = "rule 46" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 46 endparam param rule473 caption = "rule 47" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 47 endparam param rule483 caption = "rule 48" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 48 endparam param rule493 caption = "rule 49" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen3 >= 49 endparam param rule503 caption = "rule 50" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 0 visible = @rewrite == "node" && @rlen3 >= 50 endparam heading caption = " Reproduction rule 8 (G)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." visible = @rewrite == "node" endheading bool param hideg2 caption = "Hide lines from G" default = false visible = @rlen8 > 0 && @rewrite == "node" endparam int param rlen8 caption = "rule length" default = 0 max = 50 visible = @rewrite == "node" endparam param rule18 caption = "rule 1" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 0 visible = @rewrite == "node" && @rlen8 >= 1 endparam param rule28 caption = "rule 2" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 2 endparam param rule38 caption = "rule 3" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 3 endparam param rule48 caption = "rule 4" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 4 endparam param rule58 caption = "rule 5" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 5 endparam param rule68 caption = "rule 6" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 6 endparam param rule78 caption = "rule 7" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 7 endparam param rule88 caption = "rule 8" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 8 endparam param rule98 caption = "rule 9" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 9 endparam param rule108 caption = "rule 10" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 10 endparam param rule118 caption = "rule 11" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 11 endparam param rule128 caption = "rule 12" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 12 endparam param rule138 caption = "rule 13" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 13 endparam param rule148 caption = "rule 14" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 14 endparam param rule158 caption = "rule 15" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 15 endparam param rule168 caption = "rule 16" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 16 endparam param rule178 caption = "rule 17" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 17 endparam param rule188 caption = "rule 18" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 18 endparam param rule198 caption = "rule 19" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 19 endparam param rule208 caption = "rule 20" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 20 endparam param rule218 caption = "rule 21" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 21 endparam param rule228 caption = "rule 22" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 22 endparam param rule238 caption = "rule 23" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 23 endparam param rule248 caption = "rule 24" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 24 endparam param rule258 caption = "rule 25" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 25 endparam param rule268 caption = "rule 26" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 26 endparam param rule278 caption = "rule 27" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 27 endparam param rule288 caption = "rule 28" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 28 endparam param rule298 caption = "rule 29" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 29 endparam param rule308 caption = "rule 30" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 30 endparam param rule318 caption = "rule 31" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 31 endparam param rule328 caption = "rule 32" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 32 endparam param rule338 caption = "rule 33" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 33 endparam param rule348 caption = "rule 34" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 34 endparam param rule358 caption = "rule 35" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 35 endparam param rule368 caption = "rule 36" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 36 endparam param rule378 caption = "rule 37" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 37 endparam param rule388 caption = "rule 38" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 38 endparam param rule398 caption = "rule 39" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 39 endparam param rule408 caption = "rule 40" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 40 endparam param rule418 caption = "rule 41" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 41 endparam param rule428 caption = "rule 42" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 42 endparam param rule438 caption = "rule 43" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 43 endparam param rule448 caption = "rule 44" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 44 endparam param rule458 caption = "rule 45" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 45 endparam param rule468 caption = "rule 46" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 46 endparam param rule478 caption = "rule 47" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 47 endparam param rule488 caption = "rule 48" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 48 endparam param rule498 caption = "rule 49" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen8 >= 49 endparam param rule508 caption = "rule 50" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 0 visible = @rewrite == "node" && @rlen8 >= 50 endparam heading caption = " Reproduction rule 6 (W)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." visible = @rewrite == "node" endheading int param rlen6 caption = "rule length" default = 0 max = 50 visible = @rewrite == "node" endparam param rule16 caption = "rule 1" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 24 visible = @rewrite == "node" && @rlen6 >= 1 endparam param rule26 caption = "rule 2" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 2 endparam param rule36 caption = "rule 3" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 3 endparam param rule46 caption = "rule 4" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 4 endparam param rule56 caption = "rule 5" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 5 endparam param rule66 caption = "rule 6" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 6 endparam param rule76 caption = "rule 7" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 7 endparam param rule86 caption = "rule 8" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 8 endparam param rule96 caption = "rule 9" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 9 endparam param rule106 caption = "rule 10" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 10 endparam param rule116 caption = "rule 11" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 11 endparam param rule126 caption = "rule 12" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 12 endparam param rule136 caption = "rule 13" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 13 endparam param rule146 caption = "rule 14" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 14 endparam param rule156 caption = "rule 15" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 15 endparam param rule166 caption = "rule 16" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 16 endparam param rule176 caption = "rule 17" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 17 endparam param rule186 caption = "rule 18" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 18 endparam param rule196 caption = "rule 19" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 19 endparam param rule206 caption = "rule 20" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 20 endparam param rule216 caption = "rule 21" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 21 endparam param rule226 caption = "rule 22" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 22 endparam param rule236 caption = "rule 23" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 23 endparam param rule246 caption = "rule 24" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 24 endparam param rule256 caption = "rule 25" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 25 endparam param rule266 caption = "rule 26" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 26 endparam param rule276 caption = "rule 27" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 27 endparam param rule286 caption = "rule 28" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 28 endparam param rule296 caption = "rule 29" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 29 endparam param rule306 caption = "rule 30" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 30 endparam param rule316 caption = "rule 31" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 31 endparam param rule326 caption = "rule 32" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 32 endparam param rule336 caption = "rule 33" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 33 endparam param rule346 caption = "rule 34" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 34 endparam param rule356 caption = "rule 35" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 35 endparam param rule366 caption = "rule 36" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 36 endparam param rule376 caption = "rule 37" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 37 endparam param rule386 caption = "rule 38" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 38 endparam param rule396 caption = "rule 39" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 39 endparam param rule406 caption = "rule 40" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 40 endparam param rule416 caption = "rule 41" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 41 endparam param rule426 caption = "rule 42" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 42 endparam param rule436 caption = "rule 43" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 43 endparam param rule446 caption = "rule 44" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 44 endparam param rule456 caption = "rule 45" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 45 endparam param rule466 caption = "rule 46" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 46 endparam param rule476 caption = "rule 47" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 47 endparam param rule486 caption = "rule 48" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 48 endparam param rule496 caption = "rule 49" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen6 >= 49 endparam param rule506 caption = "rule 50" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 0 visible = @rewrite == "node" && @rlen6 >= 50 endparam heading caption = " Reproduction rule 4 (X)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." visible = @rewrite == "node" endheading int param rlen4 caption = "rule length" default = 0 max = 50 visible = @rewrite == "node" endparam param rule14 caption = "rule 1" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 22 visible = @rewrite == "node" && @rlen4 >= 1 endparam param rule24 caption = "rule 2" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 2 endparam param rule34 caption = "rule 3" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 3 endparam param rule44 caption = "rule 4" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 4 endparam param rule54 caption = "rule 5" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 5 endparam param rule64 caption = "rule 6" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 6 endparam param rule74 caption = "rule 7" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 7 endparam param rule84 caption = "rule 8" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 8 endparam param rule94 caption = "rule 9" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 9 endparam param rule104 caption = "rule 10" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 10 endparam param rule114 caption = "rule 11" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 11 endparam param rule124 caption = "rule 12" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 12 endparam param rule134 caption = "rule 13" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 13 endparam param rule144 caption = "rule 14" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 14 endparam param rule154 caption = "rule 15" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 15 endparam param rule164 caption = "rule 16" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 16 endparam param rule174 caption = "rule 17" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 17 endparam param rule184 caption = "rule 18" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 18 endparam param rule194 caption = "rule 19" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 19 endparam param rule204 caption = "rule 20" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 20 endparam param rule214 caption = "rule 21" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 21 endparam param rule224 caption = "rule 22" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 22 endparam param rule234 caption = "rule 23" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 23 endparam param rule244 caption = "rule 24" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 24 endparam param rule254 caption = "rule 25" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 25 endparam param rule264 caption = "rule 26" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 26 endparam param rule274 caption = "rule 27" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 27 endparam param rule284 caption = "rule 28" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 28 endparam param rule294 caption = "rule 29" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 29 endparam param rule304 caption = "rule 30" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 30 endparam param rule314 caption = "rule 31" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 31 endparam param rule324 caption = "rule 32" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 32 endparam param rule334 caption = "rule 33" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 33 endparam param rule344 caption = "rule 34" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 34 endparam param rule354 caption = "rule 35" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 35 endparam param rule364 caption = "rule 36" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 36 endparam param rule374 caption = "rule 37" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 37 endparam param rule384 caption = "rule 38" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 38 endparam param rule394 caption = "rule 39" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 39 endparam param rule404 caption = "rule 40" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 40 endparam param rule414 caption = "rule 41" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 41 endparam param rule424 caption = "rule 42" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 42 endparam param rule434 caption = "rule 43" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 43 endparam param rule444 caption = "rule 44" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 44 endparam param rule454 caption = "rule 45" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 45 endparam param rule464 caption = "rule 46" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 46 endparam param rule474 caption = "rule 47" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 47 endparam param rule484 caption = "rule 48" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 48 endparam param rule494 caption = "rule 49" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen4 >= 49 endparam param rule504 caption = "rule 50" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 0 visible = @rewrite == "node" && @rlen4 >= 50 endparam heading caption = " Reproduction rule 5 (Y)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." visible = @rewrite == "node" endheading int param rlen5 caption = "rule length" default = 0 max = 50 visible = @rewrite == "node" endparam param rule15 caption = "rule 1" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 23 visible = @rewrite == "node" && @rlen5 >= 1 endparam param rule25 caption = "rule 2" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 2 endparam param rule35 caption = "rule 3" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 3 endparam param rule45 caption = "rule 4" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 4 endparam param rule55 caption = "rule 5" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 5 endparam param rule65 caption = "rule 6" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 6 endparam param rule75 caption = "rule 7" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 7 endparam param rule85 caption = "rule 8" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 8 endparam param rule95 caption = "rule 9" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 9 endparam param rule105 caption = "rule 10" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 10 endparam param rule115 caption = "rule 11" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 11 endparam param rule125 caption = "rule 12" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 12 endparam param rule135 caption = "rule 13" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 13 endparam param rule145 caption = "rule 14" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 14 endparam param rule155 caption = "rule 15" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 15 endparam param rule165 caption = "rule 16" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 16 endparam param rule175 caption = "rule 17" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 17 endparam param rule185 caption = "rule 18" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 18 endparam param rule195 caption = "rule 19" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 19 endparam param rule205 caption = "rule 20" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 20 endparam param rule215 caption = "rule 21" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 21 endparam param rule225 caption = "rule 22" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 22 endparam param rule235 caption = "rule 23" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 23 endparam param rule245 caption = "rule 24" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 24 endparam param rule255 caption = "rule 25" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 25 endparam param rule265 caption = "rule 26" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 26 endparam param rule275 caption = "rule 27" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 27 endparam param rule285 caption = "rule 28" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 28 endparam param rule295 caption = "rule 29" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 29 endparam param rule305 caption = "rule 30" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 30 endparam param rule315 caption = "rule 31" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 31 endparam param rule325 caption = "rule 32" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 32 endparam param rule335 caption = "rule 33" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 33 endparam param rule345 caption = "rule 34" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 34 endparam param rule355 caption = "rule 35" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 35 endparam param rule365 caption = "rule 36" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 36 endparam param rule375 caption = "rule 37" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 37 endparam param rule385 caption = "rule 38" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 38 endparam param rule395 caption = "rule 39" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 39 endparam param rule405 caption = "rule 40" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 40 endparam param rule415 caption = "rule 41" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 41 endparam param rule425 caption = "rule 42" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 42 endparam param rule435 caption = "rule 43" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 43 endparam param rule445 caption = "rule 44" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 44 endparam param rule455 caption = "rule 45" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 45 endparam param rule465 caption = "rule 46" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 46 endparam param rule475 caption = "rule 47" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 47 endparam param rule485 caption = "rule 48" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 48 endparam param rule495 caption = "rule 49" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen5 >= 49 endparam param rule505 caption = "rule 50" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 0 visible = @rewrite == "node" && @rlen5 >= 50 endparam heading caption = " Reproduction rule 7 (Z)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." visible = @rewrite == "node" endheading int param rlen7 caption = "rule length" default = 0 max = 50 visible = @rewrite == "node" endparam param rule17 caption = "rule 1" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 25 visible = @rewrite == "node" && @rlen7 >= 1 endparam param rule27 caption = "rule 2" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 2 endparam param rule37 caption = "rule 3" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 3 endparam param rule47 caption = "rule 4" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 4 endparam param rule57 caption = "rule 5" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 5 endparam param rule67 caption = "rule 6" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 6 endparam param rule77 caption = "rule 7" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 7 endparam param rule87 caption = "rule 8" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 8 endparam param rule97 caption = "rule 9" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 9 endparam param rule107 caption = "rule 10" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 10 endparam param rule117 caption = "rule 11" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 11 endparam param rule127 caption = "rule 12" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 12 endparam param rule137 caption = "rule 13" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 13 endparam param rule147 caption = "rule 14" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 14 endparam param rule157 caption = "rule 15" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 15 endparam param rule167 caption = "rule 16" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 16 endparam param rule177 caption = "rule 17" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 17 endparam param rule187 caption = "rule 18" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 18 endparam param rule197 caption = "rule 19" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 19 endparam param rule207 caption = "rule 20" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 20 endparam param rule217 caption = "rule 21" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 21 endparam param rule227 caption = "rule 22" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 22 endparam param rule237 caption = "rule 23" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 23 endparam param rule247 caption = "rule 24" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 24 endparam param rule257 caption = "rule 25" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 25 endparam param rule267 caption = "rule 26" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 26 endparam param rule277 caption = "rule 27" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 27 endparam param rule287 caption = "rule 28" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 28 endparam param rule297 caption = "rule 29" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 29 endparam param rule307 caption = "rule 30" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 30 endparam param rule317 caption = "rule 31" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 31 endparam param rule327 caption = "rule 32" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 32 endparam param rule337 caption = "rule 33" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 33 endparam param rule347 caption = "rule 34" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 34 endparam param rule357 caption = "rule 35" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 35 endparam param rule367 caption = "rule 36" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 36 endparam param rule377 caption = "rule 37" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 37 endparam param rule387 caption = "rule 38" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 38 endparam param rule397 caption = "rule 39" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 39 endparam param rule407 caption = "rule 40" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 40 endparam param rule417 caption = "rule 41" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 41 endparam param rule427 caption = "rule 42" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 42 endparam param rule437 caption = "rule 43" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 43 endparam param rule447 caption = "rule 44" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 44 endparam param rule457 caption = "rule 45" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 45 endparam param rule467 caption = "rule 46" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 46 endparam param rule477 caption = "rule 47" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 47 endparam param rule487 caption = "rule 48" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 48 endparam param rule497 caption = "rule 49" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 15 visible = @rewrite == "node" && @rlen7 >= 49 endparam param rule507 caption = "rule 50" enum = "F" "G""H" "I" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" "^" "~" "X" "Y" "W" "Z" "s" default = 0 visible = @rewrite == "node" && @rlen7 >= 50 endparam heading caption = "Polygon objects" endheading param otype1 caption = "object type #1" enum = "none" "leaf1" "leaf2" "leaf3" "leaf4" "flower1" "flower2" "flower3" default = 0 visible = (@rule11 == "@" || @rule21 == "@" || @rule31 == "@" || @rule41 == "@" \ || @rule51 == "@" || @rule61 == "@" || @rule71 == "@" || @rule81 == "@" \ || @rule91 == "@" || @rule101 == "@" || @rule111 == "@" || @rule121 == "@" \ || @rule131 == "@" || @rule141 == "@" || @rule151 == "@" || @rule161 == "@" \ || @rule171 == "@" || @rule181 == "@" || @rule191 == "@" || @rule201 == "@" \ || @rule211 == "@" || @rule221 == "@" || @rule231 == "@" || @rule241 == "@" \ || @rule251 == "@"|| @rule261 == "@"|| @rule271 == "@"|| @rule281 == "@"\ || @rule291 == "@"|| @rule301 == "@"|| @rule311 == "@"|| @rule321 == "@"\ || @rule331 == "@"|| @rule341 == "@"|| @rule351 == "@"|| @rule361 == "@"\ || @rule371 == "@"|| @rule381 == "@"|| @rule391 == "@"|| @rule401 == "@"\ || @rule411 == "@"|| @rule421 == "@"|| @rule431 == "@"|| @rule441 == "@"\ || @rule451 == "@"|| @rule461 == "@"|| @rule471 == "@"|| @rule481 == "@"\ || @rule491 == "@"|| @rule501 == "@"\ || @rule12 == "@" || @rule22 == "@" || @rule32 == "@" || @rule42 == "@" \ || @rule52 == "@" || @rule62 == "@" || @rule72 == "@" || @rule82 == "@" \ || @rule92 == "@" || @rule102 == "@" || @rule112 == "@" || @rule122 == "@" \ || @rule132 == "@" || @rule142 == "@" || @rule152 == "@" || @rule162 == "@" \ || @rule171 == "@" || @rule181 == "@" || @rule191 == "@" || @rule201 == "@" \ || @rule212 == "@" || @rule222 == "@" || @rule232 == "@" || @rule242 == "@" \ || @rule252 == "@" || @rule262 == "@" || @rule272 == "@" || @rule282 == "@"\ || @rule292 == "@" || @rule302 == "@" || @rule312 == "@" || @rule322 == "@"\ || @rule332 == "@" || @rule342 == "@" || @rule352 == "@" || @rule362 == "@"\ || @rule372 == "@" || @rule382 == "@" || @rule392 == "@" || @rule402 == "@"\ || @rule412 == "@" || @rule422 == "@" || @rule432 == "@" || @rule442 == "@"\ || @rule452 == "@" || @rule462 == "@" || @rule472 == "@" || @rule482 == "@"\ || @rule492 == "@" || @rule502 == "@"\ || @rule13 == "@" || @rule23 == "@" || @rule33 == "@" || @rule43 == "@" \ || @rule53 == "@" || @rule63 == "@" || @rule73 == "@" || @rule83 == "@" \ || @rule93 == "@" || @rule103 == "@" || @rule113 == "@" || @rule123 == "@" \ || @rule133 == "@" || @rule143 == "@" || @rule153 == "@" || @rule163 == "@" \ || @rule171 == "@" || @rule181 == "@" || @rule191 == "@" || @rule201 == "@" \ || @rule213 == "@" || @rule223 == "@" || @rule233 == "@" || @rule243 == "@" \ || @rule253 == "@" || @rule263 == "@" || @rule273 == "@" || @rule283 == "@"\ || @rule293 == "@" || @rule303 == "@" || @rule313 == "@" || @rule323 == "@"\ || @rule333 == "@" || @rule343 == "@" || @rule353 == "@" || @rule363 == "@"\ || @rule373 == "@" || @rule383 == "@" || @rule393 == "@" || @rule403 == "@"\ || @rule413 == "@" || @rule423 == "@" || @rule433 == "@" || @rule443 == "@"\ || @rule453 == "@" || @rule463 == "@" || @rule473 == "@" || @rule483 == "@"\ || @rule493 == "@" || @rule503 == "@"\ || @rule14 == "@" || @rule24 == "@" || @rule34 == "@" || @rule44 == "@" \ || @rule54 == "@" || @rule64 == "@" || @rule74 == "@" || @rule84 == "@" \ || @rule94 == "@" || @rule104 == "@" || @rule114 == "@" || @rule124 == "@" \ || @rule134 == "@" || @rule144 == "@" || @rule154 == "@" || @rule164 == "@" \ || @rule171 == "@" || @rule181 == "@" || @rule191 == "@" || @rule201 == "@" \ || @rule214 == "@" || @rule224 == "@" || @rule234 == "@" || @rule244 == "@" \ || @rule254 == "@" || @rule264 == "@" || @rule274 == "@" || @rule284 == "@"\ || @rule294 == "@" || @rule304 == "@" || @rule314 == "@" || @rule324 == "@"\ || @rule334 == "@" || @rule344 == "@" || @rule354 == "@" || @rule364 == "@"\ || @rule374 == "@" || @rule384 == "@" || @rule394 == "@" || @rule404 == "@"\ || @rule414 == "@" || @rule424 == "@" || @rule434 == "@" || @rule444 == "@"\ || @rule454 == "@" || @rule464 == "@" || @rule474 == "@" || @rule484 == "@"\ || @rule494 == "@" || @rule504 == "@"\ || @rule15 == "@" || @rule25 == "@" || @rule35 == "@" || @rule45 == "@" \ || @rule55 == "@" || @rule65 == "@" || @rule75 == "@" || @rule85 == "@" \ || @rule95 == "@" || @rule105 == "@" || @rule115 == "@" || @rule125 == "@" \ || @rule135 == "@" || @rule145 == "@" || @rule155 == "@" || @rule165 == "@" \ || @rule171 == "@" || @rule181 == "@" || @rule191 == "@" || @rule201 == "@" \ || @rule215 == "@" || @rule225 == "@" || @rule235 == "@" || @rule245 == "@" \ || @rule255 == "@" || @rule265 == "@" || @rule275 == "@" || @rule285 == "@"\ || @rule295 == "@" || @rule305 == "@" || @rule315 == "@" || @rule325 == "@"\ || @rule335 == "@" || @rule345 == "@" || @rule355 == "@" || @rule365 == "@"\ || @rule375 == "@" || @rule385 == "@" || @rule395 == "@" || @rule405 == "@"\ || @rule415 == "@" || @rule425 == "@" || @rule435 == "@" || @rule445 == "@"\ || @rule455 == "@" || @rule465 == "@" || @rule475 == "@" || @rule485 == "@"\ || @rule495 == "@" || @rule505 == "@"\ || @rule16 == "@" || @rule26 == "@" || @rule36 == "@" || @rule46 == "@" \ || @rule56 == "@" || @rule66 == "@" || @rule76 == "@" || @rule86 == "@" \ || @rule96 == "@" || @rule106 == "@" || @rule116 == "@" || @rule126 == "@" \ || @rule136 == "@" || @rule146 == "@" || @rule156 == "@" || @rule166 == "@" \ || @rule171 == "@" || @rule181 == "@" || @rule191 == "@" || @rule201 == "@" \ || @rule216 == "@" || @rule226 == "@" || @rule236 == "@" || @rule246 == "@" \ || @rule256 == "@" || @rule266 == "@" || @rule276 == "@" || @rule286 == "@"\ || @rule296 == "@" || @rule306 == "@" || @rule316 == "@" || @rule326 == "@"\ || @rule336 == "@" || @rule346 == "@" || @rule356 == "@" || @rule366 == "@"\ || @rule376 == "@" || @rule386 == "@" || @rule396 == "@" || @rule406 == "@"\ || @rule416 == "@" || @rule426 == "@" || @rule436 == "@" || @rule446 == "@"\ || @rule456 == "@" || @rule466 == "@" || @rule476 == "@" || @rule486 == "@"\ || @rule496 == "@" || @rule506 == "@"\ || @rule17 == "@" || @rule27 == "@" || @rule37 == "@" || @rule47 == "@" \ || @rule57 == "@" || @rule67 == "@" || @rule77 == "@" || @rule87 == "@" \ || @rule97 == "@" || @rule107 == "@" || @rule117 == "@" || @rule127 == "@" \ || @rule137 == "@" || @rule147 == "@" || @rule157 == "@" || @rule167 == "@" \ || @rule171 == "@" || @rule181 == "@" || @rule191 == "@" || @rule201 == "@" \ || @rule217 == "@" || @rule227 == "@" || @rule237 == "@" || @rule247 == "@" \ || @rule257 == "@" || @rule267 == "@" || @rule277 == "@" || @rule287 == "@"\ || @rule297 == "@" || @rule307 == "@" || @rule317 == "@" || @rule327 == "@"\ || @rule337 == "@" || @rule347 == "@" || @rule357 == "@" || @rule367 == "@"\ || @rule377 == "@" || @rule387 == "@" || @rule397 == "@" || @rule407 == "@"\ || @rule417 == "@" || @rule427 == "@" || @rule437 == "@" || @rule447 == "@"\ || @rule457 == "@" || @rule467 == "@" || @rule477 == "@" || @rule487 == "@"\ || @rule497 == "@" || @rule507 == "@" ) endparam int param needles1 caption = "Number of needles" default = 6 min = 6 max = 12 visible = @otype1 == "leaf3" endparam float param close1 caption = "Needle closeness" default = 5 visible = @otype1 == "leaf3" endparam float param osize1 caption = "object size" default = 1 visible = @otype1 != "none" endparam float param owidth1 caption = "object line width" default = 0.01 visible = @otype1 != "none" endparam float param oanglez1 caption = "object angle (Z axis)" default = 0 visible = @otype1 != "none" endparam float param oanglex1 caption = "object angle (X axis)" default = 0 visible = @otype1 != "none" endparam float param oangley1 caption = "object angle (Y axis)" default = 0 visible = @otype1 != "none" endparam param otype2 caption = "object type #2" enum = "none" "leaf1" "leaf2" "leaf3" "leaf4" "flower1" "flower2" "flower3" default = 0 visible = (@rule51 == "$" || @rule61 == "$" || @rule71 == "$" || @rule81 == "$" \ || @rule91 == "$" || @rule101 == "$" || @rule111 == "$" || @rule121 == "$" \ || @rule131 == "$" || @rule141 == "$" || @rule151 == "$" || @rule161 == "$" \ || @rule171 == "$" || @rule181 == "$" || @rule191 == "$" || @rule201 == "$" \ || @rule211 == "$" || @rule221 == "$" || @rule231 == "$" || @rule241 == "$" \ || @rule251 == "$"|| @rule261 == "$"|| @rule271 == "$"|| @rule281 == "$"\ || @rule291 == "$"|| @rule301 == "$"|| @rule311 == "$"|| @rule321 == "$"\ || @rule331 == "$"|| @rule341 == "$"|| @rule351 == "$"|| @rule361 == "$"\ || @rule371 == "$"|| @rule381 == "$"|| @rule391 == "$"|| @rule401 == "$"\ || @rule411 == "$"|| @rule421 == "$"|| @rule431 == "$"|| @rule441 == "$"\ || @rule451 == "$"|| @rule461 == "$"|| @rule471 == "$"|| @rule481 == "$"\ || @rule491 == "$"|| @rule501 == "$"\ || @rule12 == "$" || @rule22 == "$" || @rule32 == "$" || @rule42 == "$" \ || @rule52 == "$" || @rule61 == "$" || @rule71 == "$" || @rule81 == "$" \ || @rule92 == "$" || @rule102 == "$" || @rule112 == "$" || @rule122 == "$" \ || @rule132 == "$" || @rule142 == "$" || @rule152 == "$" || @rule162 == "$" \ || @rule172 == "$" || @rule182 == "$" || @rule192 == "$" || @rule202 == "$" \ || @rule212 == "$" || @rule222 == "$" || @rule232 == "$" || @rule242 == "$" \ || @rule252 == "$" || @rule262 == "$" || @rule272 == "$" || @rule282 == "$"\ || @rule292 == "$" || @rule302 == "$" || @rule312 == "$" || @rule322 == "$"\ || @rule332 == "$" || @rule342 == "$" || @rule352 == "$" || @rule362 == "$"\ || @rule372 == "$" || @rule382 == "$" || @rule392 == "$" || @rule402 == "$"\ || @rule412 == "$" || @rule422 == "$" || @rule432 == "$" || @rule442 == "$"\ || @rule452 == "$" || @rule462 == "$" || @rule472 == "$" || @rule482 == "$"\ || @rule492 == "$" || @rule502 == "$"\ || @rule13 == "$" || @rule23 == "$" || @rule33 == "$" || @rule43 == "$" \ || @rule53 == "$" || @rule63 == "$" || @rule73 == "$" || @rule83 == "$" \ || @rule93 == "$" || @rule103 == "$" || @rule113 == "$" || @rule123 == "$" \ || @rule133 == "$" || @rule143 == "$" || @rule153 == "$" || @rule163 == "$" \ || @rule173 == "$" || @rule183 == "$" || @rule193 == "$" || @rule203 == "$" \ || @rule213 == "$" || @rule223 == "$" || @rule233 == "$" || @rule243 == "$" \ || @rule253 == "$" || @rule263 == "$" || @rule273 == "$" || @rule283 == "$"\ || @rule293 == "$" || @rule303 == "$" || @rule313 == "$" || @rule323 == "$"\ || @rule333 == "$" || @rule343 == "$" || @rule353 == "$" || @rule363 == "$"\ || @rule373 == "$" || @rule383 == "$" || @rule393 == "$" || @rule403 == "$"\ || @rule413 == "$" || @rule423 == "$" || @rule433 == "$" || @rule443 == "$"\ || @rule453 == "$" || @rule463 == "$" || @rule473 == "$" || @rule483 == "$"\ || @rule493 == "$" || @rule503 == "$"\ || @rule14 == "$" || @rule24 == "$" || @rule34 == "$" || @rule44 == "$" \ || @rule54 == "$" || @rule64 == "$" || @rule74 == "$" || @rule84 == "$" \ || @rule94 == "$" || @rule104 == "$" || @rule114 == "$" || @rule124 == "$" \ || @rule134 == "$" || @rule144 == "$" || @rule154 == "$" || @rule164 == "$" \ || @rule174 == "$" || @rule184 == "$" || @rule194 == "$" || @rule204 == "$" \ || @rule214 == "$" || @rule224 == "$" || @rule234 == "$" || @rule244 == "$" \ || @rule254 == "$" || @rule264 == "$" || @rule274 == "$" || @rule284 == "$"\ || @rule294 == "$" || @rule304 == "$" || @rule314 == "$" || @rule324 == "$"\ || @rule334 == "$" || @rule344 == "$" || @rule354 == "$" || @rule364 == "$"\ || @rule374 == "$" || @rule384 == "$" || @rule394 == "$" || @rule404 == "$"\ || @rule414 == "$" || @rule424 == "$" || @rule434 == "$" || @rule444 == "$"\ || @rule454 == "$" || @rule464 == "$" || @rule474 == "$" || @rule484 == "$"\ || @rule494 == "$" || @rule504 == "$"\ || @rule15 == "$" || @rule25 == "$" || @rule35 == "$" || @rule45 == "$" \ || @rule55 == "$" || @rule65 == "$" || @rule75 == "$" || @rule85 == "$" \ || @rule95 == "$" || @rule105 == "$" || @rule115 == "$" || @rule125 == "$" \ || @rule135 == "$" || @rule145 == "$" || @rule155 == "$" || @rule165 == "$" \ || @rule175 == "$" || @rule185 == "$" || @rule195 == "$" || @rule205 == "$" \ || @rule215 == "$" || @rule225 == "$" || @rule235 == "$" || @rule245 == "$" \ || @rule255 == "$" || @rule265 == "$" || @rule275 == "$" || @rule285 == "$"\ || @rule295 == "$" || @rule305 == "$" || @rule315 == "$" || @rule325 == "$"\ || @rule335 == "$" || @rule345 == "$" || @rule355 == "$" || @rule365 == "$"\ || @rule375 == "$" || @rule385 == "$" || @rule395 == "$" || @rule405 == "$"\ || @rule415 == "$" || @rule425 == "$" || @rule435 == "$" || @rule445 == "$"\ || @rule455 == "$" || @rule465 == "$" || @rule475 == "$" || @rule485 == "$"\ || @rule495 == "$" || @rule505 == "$"\ || @rule16 == "$" || @rule26 == "$" || @rule36 == "$" || @rule46 == "$" \ || @rule56 == "$" || @rule66 == "$" || @rule76 == "$" || @rule86 == "$" \ || @rule96 == "$" || @rule106 == "$" || @rule116 == "$" || @rule126 == "$" \ || @rule136 == "$" || @rule146 == "$" || @rule156 == "$" || @rule166 == "$" \ || @rule176 == "$" || @rule186 == "$" || @rule196 == "$" || @rule206 == "$" \ || @rule216 == "$" || @rule226 == "$" || @rule236 == "$" || @rule246 == "$" \ || @rule256 == "$" || @rule266 == "$" || @rule276 == "$" || @rule286 == "$"\ || @rule296 == "$" || @rule306 == "$" || @rule316 == "$" || @rule326 == "$"\ || @rule336 == "$" || @rule346 == "$" || @rule356 == "$" || @rule366 == "$"\ || @rule376 == "$" || @rule386 == "$" || @rule396 == "$" || @rule406 == "$"\ || @rule416 == "$" || @rule426 == "$" || @rule436 == "$" || @rule446 == "$"\ || @rule456 == "$" || @rule466 == "$" || @rule476 == "$" || @rule486 == "$"\ || @rule496 == "$" || @rule506 == "$"\ || @rule17 == "$" || @rule27 == "$" || @rule37 == "$" || @rule47 == "$" \ || @rule57 == "$" || @rule67 == "$" || @rule77 == "$" || @rule87 == "$" \ || @rule97 == "$" || @rule107 == "$" || @rule117 == "$" || @rule127 == "$" \ || @rule137 == "$" || @rule147 == "$" || @rule157 == "$" || @rule167 == "$" \ || @rule177 == "$" || @rule187 == "$" || @rule197 == "$" || @rule207 == "$" \ || @rule217 == "$" || @rule227 == "$" || @rule237 == "$" || @rule247 == "$" \ || @rule257 == "$" || @rule267 == "$" || @rule277 == "$" || @rule287 == "$"\ || @rule297 == "$" || @rule307 == "$" || @rule317 == "$" || @rule327 == "$"\ || @rule337 == "$" || @rule347 == "$" || @rule357 == "$" || @rule367 == "$"\ || @rule377 == "$" || @rule387 == "$" || @rule397 == "$" || @rule407 == "$"\ || @rule417 == "$" || @rule427 == "$" || @rule437 == "$" || @rule447 == "$"\ || @rule457 == "$" || @rule467 == "$" || @rule477 == "$" || @rule487 == "$"\ || @rule497 == "$" || @rule507 == "$" ) endparam int param needles2 caption = "Number of needles" default = 6 min = 6 max = 12 visible = @otype2 == "leaf3" endparam float param close2 caption = "Needle closeness" default = 5 visible = @otype2 == "leaf3" endparam float param osize2 caption = "object size" default = 1 visible = @otype2 != "none" endparam float param owidth2 caption = "object line width" default = 0.01 visible = @otype2 != "none" endparam float param oanglez2 caption = "object angle (Z axis)" default = 0 visible = @otype2 != "none" endparam float param oanglex2 caption = "object angle (X axis)" default = 0 visible = @otype2 != "none" endparam float param oangley2 caption = "object angle (Y axis)" default = 0 visible = @otype2 != "none" endparam heading caption = "Image objects" endheading heading text = "Random seed for Image Objects." visible = @addimage || @addimage2 || @addimage3 || @addimage4 endheading int param @seed2 caption = "Image random seed" default = 123456789 visible = (@addimage || @addimage2 || @addimage3 || @addimage4) && (@rango || @rangi|| @rangi4) endparam heading caption = " Image object #1" endheading bool param addimage caption = "Add image" default = false endparam Image param imageParam caption = "Image" visible = @addimage endparam param mergemode caption = "Merge Mode" default = 0 enum = "Normal" "Multiply" "Screen" "Overlay" "Soft light" "Hard light" "Darken" \ "Lighten" "Difference" "Hue" "Saturation" "Color" "Luminance" "Addition" \ "Subtraction" "HSL addition" "Red" "Green" "Blue" visible = @addimage endparam float param imageop caption = "Opacity" default = 1 visible = @addimage endparam float param size caption = "image size" default = 15 visible = @addimage endparam float param zfix caption = "Z correction" default = 15 visible = @addimage endparam float param rtfix caption = "Branch correction" default = 0 visible = @addimage endparam float param iangle caption = "Image rotation" default = 0 hint = "Rotates the image" visible = @addimage endparam heading caption = " Image object #2" endheading bool param addimage2 caption = "Add image" default = false endparam Image param imageParam2 caption = "Image" visible = @addimage2 endparam param mergemode2 caption = "Merge Mode" default = 0 enum = "Normal" "Multiply" "Screen" "Overlay" "Soft light" "Hard light" "Darken" \ "Lighten" "Difference" "Hue" "Saturation" "Color" "Luminance" "Addition" \ "Subtraction" "HSL addition" "Red" "Green" "Blue" visible = @addimage2 endparam float param imageop2 caption = "Opacity" default = 1 visible = @addimage2 endparam float param size2 caption = "image size" default = 15 visible = @addimage2 endparam float param zfix2 caption = "Z correction" default = 15 visible = @addimage2 endparam float param rtfix2 caption = "Branch correction" default = 0 visible = @addimage2 endparam float param iangle2 caption = "Image rotation" default = 0 hint = "Rotates the image" visible = @addimage2 endparam heading caption = " Stem/Bark texture" endheading bool param addimage3 caption = "Add image" default = false endparam Image param imageParam3 caption = "Image" visible = @addimage3 endparam param mergemode3 caption = "Merge Mode" default = 0 enum = "Normal" "Multiply" "Screen" "Overlay" "Soft light" "Hard light" "Darken" \ "Lighten" "Difference" "Hue" "Saturation" "Color" "Luminance" "Addition" \ "Subtraction" "HSL addition" "Red" "Green" "Blue" visible = @addimage3 endparam float param imageop3 caption = "Opacity" default = 1 visible = @addimage3 endparam float param size3 caption = "image size" default = 15 visible = @addimage3 endparam float param tanglec caption = "Z angle rotation" default = 0 visible = @addimage3 endparam bool param rangi caption = "Randomize Image Position" default = false visible = @addimage3 endparam float param prangi caption = "Randomize range" default = 0.01 visible = @addimage3 && @rangi endparam bool param poly caption = "Also apply to polygon objects" default = false visible = @addimage3 endparam heading caption = " Leaf/Flower texture" endheading bool param addimage4 caption = "Add image" default = false endparam Image param imageParam4 caption = "Image" visible = @addimage4 endparam param mergemode4 caption = "Merge Mode" default = 0 enum = "Normal" "Multiply" "Screen" "Overlay" "Soft light" "Hard light" "Darken" \ "Lighten" "Difference" "Hue" "Saturation" "Color" "Luminance" "Addition" \ "Subtraction" "HSL addition" "Red" "Green" "Blue" visible = @addimage4 endparam float param imageop4 caption = "Opacity" default = 1 visible = @addimage4 endparam float param size4 caption = "image size" default = 15 visible = @addimage4 endparam float param tanglec4 caption = "Z angle rotation" default = 0 visible = @addimage4 endparam bool param rangi4 caption = "Randomize Image Position" default = false visible = @addimage4 endparam float param prangi4 caption = "Randomize range" default = 0.01 visible = @addimage4 && @rangi4 endparam heading caption = "Randomize" endheading int param seed caption = "Random seed" default = 123456789 visible = @rlen || @rang || @rango || @stoch endparam bool param rlen caption = "Randomize length" default = false endparam float param lrange caption = "length range" default = 0.01 ; max = 2.0 ; min = 0 visible = @rlen endparam bool param rang caption = "Randomize angle" default = false endparam float param arange caption = "angle range" default = 0.01 visible = @rang endparam int param seed3 caption = "Random seed" default = 123456789 visible = @rango endparam bool param rango caption = "Randomize object attach angle" default = false endparam float param arangeo caption = "angle range" default = 0.01 visible = @rango endparam heading caption = " " endheading float param fsize caption = "F size" default = 1.0 endparam float param gsize caption = "G size" default = 1.0 endparam float param xang caption = "X rotation" default = 0 endparam float param yang caption = "Y rotation" default = 0 endparam param ltype caption = "Line type end" default = 1 enum = "Rounded" "Flat" endparam float param lj caption = "Line join correction" default = 0 endparam float param thick caption = "Line width" default = 0.01 endparam float param resize caption = "Line resize value" default = 1.0 endparam bool param makecone caption = "Make conical branch" default = false endparam float param tvar caption = "Cone degree" default = 1 visible = @makecone endparam bool param usebranch caption = "Thickness by branching" default = false endparam float param branch caption = "Branching ratio" default = 0.8 visible = @usebranch endparam bool param usepos caption = "Thickness by string position" default = false endparam float param pos caption = "Position thickness factor" default = 0.1 visible = @usepos endparam bool param vbr caption = "Thickness by recursion" default = false endparam float param factor caption = "Thickness factor" default = 1 min = 0.1 visible = @vbr endparam bool param lbr caption = "Length by recursion" default = false endparam float param lfactor caption = "Length factor" default = 1 min = 0.1 visible = @lbr endparam heading caption = "Coloring" endheading heading text = "When adding leaves and flowers as images the line coloring base \ will serve as the image background rather than 'Solid Color' on the \ 'Outside' tab." visible = @addimage endheading bool param showbase caption = "Show base" default = false visible = @addimage endparam color param finalcolor caption = "Line coloring base" default = rgba(0,0,0,1) visible = @showbase && @addimage endparam param imagemode caption = "Image Merge" default = 0 enum = "Normal" "Multiply" "Screen" "Overlay" "Soft light" "Hard light" "Darken" \ "Lighten" "Difference" "Hue" "Saturation" "Color" "Luminance" "Addition" \ "Subtraction" "HSL addition" "Red" "Green" "Blue" visible = @showbase && @addimage endparam float param finalop caption = "Merge opacity" default = 1 visible = @showbase && @addimage endparam param ctype caption = "Color type" enum = "Max value" "Overlay" default = 0 endparam param avemode caption = "Overlay mode" default = 0 enum = "Normal" "Multiply" "Screen" "Overlay" "Soft light" "Hard light" "Darken" \ "Lighten" "Difference" "Hue" "Saturation" "Color" "Luminance" "Addition" \ "Subtraction" "HSL addition" "Red" "Green" "Blue" visible = @ctype == "Overlay" && @usedirect && @colormode == "By line color" endparam float param aop caption = "Opacity" default = 1.0 min = 0 max = 1 visible = @ctype == "Overlay" && @usedirect && @colormode == "By line color" endparam color param base caption = "Bottom color" default = rgba(0.5,0.5,0.5,1) visible = @ctype == "Overlay" && @usedirect && @colormode == "By line color" endparam param colormode caption = "Color mode" default = 0 enum = "By Side" "By length" "By transverse" "By Iteration Value" "By Z Value" "By line color" "Solid" endparam float param gradval caption = "Gradient value" default = 0.5 visible = @colormode == 1 endparam } LSystems { ; November 4, 2011 $define debug global: import "reb.ulb" import "common.ulb" LineArray la = new LineArray(@asize) LineArray leaf11 = new LineArray(4) LineArray leaf12 = new LineArray(4) LineArray leaf21 = new LineArray(4) LineArray leaf22 = new LineArray(4) LineArray leaf31 = new LineArray(@needles1) LineArray leaf32 = new LineArray(@needles2) LineArray leaf41 = new LineArray(10) LineArray leaf42 = new LineArray(10) LineArray flower11 = new LineArray(12) LineArray flower12 = new LineArray(12) LineArray flower21 = new LineArray(12) LineArray flower22 = new LineArray(12) LineArray flower31 = new LineArray(12) LineArray flower32 = new LineArray(12) LineArray temp int i = 0 int j = 0 int k = 0 int axiom[] int repro1[] int repro2[] int repro3[] int main[] int newmain[] int dep[] float stackx[] float stacky[] float stackz[] float stacktheta[] float stackxcorr[] float stackycorr[] float stackzcorr[] int stackoldk[] color objectcolor1[] color objectcolor2[] int stacklast[] int stackidx = 0 float popx = 0 float popy = 0 float popz = 0 setLength(axiom, @alen) setLength(repro1, @rlen1) setLength(repro2, @rlen2) setLength(repro3, @rlen3) setLength(main, @asize) setLength(newmain, @asize) setLength(dep, @asize) setlength(stackx,@stacksize) setlength(stacky,@stacksize) setlength(stackz,@stacksize) setlength(stackxcorr,@stacksize) setlength(stackycorr,@stacksize) setlength(stackzcorr,@stacksize) setlength(stacktheta,@stacksize) setlength(stacklast,@stacksize) setlength(stackoldk,@stacksize) setlength(objectcolor1,12) objectcolor1[0] = @color11 objectcolor1[1] = @color21 objectcolor1[2] = @color31 objectcolor1[3] = @color41 objectcolor1[4] = @color51 objectcolor1[5] = @color61 objectcolor1[6] = @color71 objectcolor1[7] = @color81 objectcolor1[8] = @color91 objectcolor1[9] = @color101 objectcolor1[10] = @color111 objectcolor1[11] = @color121 setlength(objectcolor2,12) objectcolor2[0] = @color12 objectcolor2[1] = @color22 objectcolor2[2] = @color32 objectcolor2[3] = @color42 objectcolor2[4] = @color52 objectcolor2[5] = @color62 objectcolor2[6] = @color72 objectcolor2[7] = @color82 objectcolor2[8] = @color92 objectcolor2[9] = @color102 objectcolor2[10] = @color112 objectcolor2[11] = @color122 bool didpop = false float zmin = 1e100 float zmax = -1e100 vector vec = new Vector(0,0,0,0) int seed = @seed ; initial value seed = random(seed) float fseed = seed/#randomrange func rvalue(float &val, float range) seed = random(seed) fseed = seed/#randomrange*range val = val+val*fseed endfunc ;set the axiom array while i < @alen if i == 0 axiom[i] = @ax1 elseif i == 1 axiom[i] = @ax2 elseif i == 2 axiom[i] = @ax3 elseif i == 3 axiom[i] = @ax4 elseif i == 4 axiom[i] = @ax5 elseif i == 5 axiom[i] = @ax6 elseif i == 6 axiom[i] = @ax7 elseif i == 7 axiom[i] = @ax8 elseif i == 8 axiom[i] = @ax9 elseif i == 9 axiom[i] = @ax10 elseif i == 10 axiom[i] = @ax11 elseif i == 11 axiom[i] = @ax12 elseif i == 12 axiom[i] = @ax13 elseif i == 13 axiom[i] = @ax14 elseif i == 14 axiom[i] = @ax15 elseif i == 15 axiom[i] = @ax16 elseif i == 16 axiom[i] = @ax17 elseif i == 17 axiom[i] = @ax18 elseif i == 18 axiom[i] = @ax19 elseif i == 19 axiom[i] = @ax20 elseif i == 20 axiom[i] = @ax21 elseif i == 21 axiom[i] = @ax22 elseif i == 22 axiom[i] = @ax23 elseif i == 23 axiom[i] = @ax24 elseif i == 24 axiom[i] = @ax25 elseif i == 25 axiom[i] = @ax26 elseif i == 26 axiom[i] = @ax27 elseif i == 27 axiom[i] = @ax28 elseif i == 28 axiom[i] = @ax29 elseif i == 29 axiom[i] = @ax30 elseif i == 30 axiom[i] = @ax31 elseif i == 31 axiom[i] = @ax32 elseif i == 32 axiom[i] = @ax33 elseif i == 33 axiom[i] = @ax34 elseif i == 34 axiom[i] = @ax35 elseif i == 35 axiom[i] = @ax36 elseif i == 36 axiom[i] = @ax37 elseif i == 37 axiom[i] = @ax38 elseif i == 38 axiom[i] = @ax39 elseif i == 39 axiom[i] = @ax40 endif i = i+1 endwhile i = 0 while i < @alen if axiom[i] == 1 axiom[i] = 16 elseif axiom[i] == 2 axiom[i] = 17 elseif axiom[i] == 3 axiom[i] = 4 elseif axiom[i] == 4 axiom[i] = 5 elseif axiom[i] == 5 axiom[i] = 6 elseif axiom[i] == 6 axiom[i] = 7 elseif axiom[i] == 7 axiom[i] = 8 elseif axiom[i] == 8 axiom[i] = 9 elseif axiom[i] == 9 axiom[i] = 10 elseif axiom[i] == 10 axiom[i] = 11 elseif axiom[i] == 11 axiom[i] = 12 elseif axiom[i] == 12 axiom[i] = 13 endif i = i + 1 endwhile i = 0 while i < @alen main[i] = axiom[i] i = i + 1 endwhile int mainl = @alen ; set reproduction array #1 i = 0 while i < @rlen1 if i == 0 repro1[i] = @rule11 elseif i == 1 repro1[i] = @rule21 elseif i == 2 repro1[i] = @rule31 elseif i == 3 repro1[i] = @rule41 elseif i == 4 repro1[i] = @rule51 elseif i == 5 repro1[i] = @rule61 elseif i == 6 repro1[i] = @rule71 elseif i == 7 repro1[i] = @rule81 elseif i == 8 repro1[i] = @rule91 elseif i == 9 repro1[i] = @rule101 elseif i == 10 repro1[i] = @rule111 elseif i == 11 repro1[i] = @rule121 elseif i == 12 repro1[i] = @rule131 elseif i == 13 repro1[i] = @rule141 elseif i == 14 repro1[i] = @rule151 elseif i == 15 repro1[i] = @rule161 elseif i == 16 repro1[i] = @rule171 elseif i == 17 repro1[i] = @rule181 elseif i == 18 repro1[i] = @rule191 elseif i == 19 repro1[i] = @rule201 elseif i == 20 repro1[i] = @rule211 elseif i == 21 repro1[i] = @rule221 elseif i == 22 repro1[i] = @rule231 elseif i == 23 repro1[i] = @rule241 elseif i == 24 repro1[i] = @rule251 elseif i == 25 repro1[i] = @rule261 elseif i == 26 repro1[i] = @rule271 elseif i == 27 repro1[i] = @rule281 elseif i == 28 repro1[i] = @rule291 elseif i == 29 repro1[i] = @rule301 elseif i == 30 repro1[i] = @rule311 elseif i == 31 repro1[i] = @rule321 elseif i == 32 repro1[i] = @rule331 elseif i == 33 repro1[i] = @rule341 elseif i == 34 repro1[i] = @rule351 elseif i == 35 repro1[i] = @rule361 elseif i == 36 repro1[i] = @rule371 elseif i == 37 repro1[i] = @rule381 elseif i == 38 repro1[i] = @rule391 elseif i == 39 repro1[i] = @rule401 elseif i == 40 repro1[i] = @rule411 elseif i == 41 repro1[i] = @rule421 elseif i == 42 repro1[i] = @rule431 elseif i == 43 repro1[i] = @rule441 elseif i == 44 repro1[i] = @rule451 elseif i == 45 repro1[i] = @rule461 elseif i == 46 repro1[i] = @rule471 elseif i == 47 repro1[i] = @rule481 elseif i == 48 repro1[i] = @rule491 elseif i == 49 repro1[i] = @rule501 endif i = i + 1 endwhile ; set reproduction array #2 i = 0 while i < @rlen2 if i == 0 repro2[i] = @rule12 elseif i == 1 repro2[i] = @rule22 elseif i == 2 repro2[i] = @rule32 elseif i == 3 repro2[i] = @rule42 elseif i == 4 repro2[i] = @rule52 elseif i == 5 repro2[i] = @rule62 elseif i == 6 repro2[i] = @rule72 elseif i == 7 repro2[i] = @rule82 elseif i == 8 repro2[i] = @rule92 elseif i == 9 repro2[i] = @rule102 elseif i == 10 repro2[i] = @rule112 elseif i == 11 repro2[i] = @rule122 elseif i == 12 repro2[i] = @rule132 elseif i == 13 repro2[i] = @rule142 elseif i == 14 repro2[i] = @rule152 elseif i == 15 repro2[i] = @rule162 elseif i == 16 repro2[i] = @rule172 elseif i == 17 repro2[i] = @rule182 elseif i == 18 repro2[i] = @rule192 elseif i == 19 repro2[i] = @rule202 elseif i == 20 repro2[i] = @rule212 elseif i == 21 repro2[i] = @rule222 elseif i == 22 repro2[i] = @rule232 elseif i == 23 repro2[i] = @rule242 elseif i == 24 repro2[i] = @rule252 elseif i == 25 repro2[i] = @rule262 elseif i == 26 repro2[i] = @rule272 elseif i == 27 repro2[i] = @rule282 elseif i == 28 repro2[i] = @rule292 elseif i == 29 repro2[i] = @rule302 elseif i == 30 repro2[i] = @rule312 elseif i == 31 repro2[i] = @rule322 elseif i == 32 repro2[i] = @rule332 elseif i == 33 repro2[i] = @rule342 elseif i == 34 repro2[i] = @rule352 elseif i == 35 repro2[i] = @rule362 elseif i == 36 repro2[i] = @rule372 elseif i == 37 repro2[i] = @rule382 elseif i == 38 repro2[i] = @rule392 elseif i == 39 repro2[i] = @rule402 elseif i == 40 repro2[i] = @rule412 elseif i == 41 repro2[i] = @rule422 elseif i == 42 repro2[i] = @rule432 elseif i == 43 repro2[i] = @rule442 elseif i == 44 repro2[i] = @rule452 elseif i == 45 repro2[i] = @rule462 elseif i == 46 repro2[i] = @rule472 elseif i == 47 repro2[i] = @rule482 elseif i == 48 repro2[i] = @rule492 elseif i == 49 repro2[i] = @rule502 endif i = i + 1 endwhile ; set reproduction array #3 i = 0 while i < @rlen3 if i == 0 repro3[i] = @rule13 elseif i == 1 repro3[i] = @rule23 elseif i == 2 repro3[i] = @rule33 elseif i == 3 repro3[i] = @rule43 elseif i == 4 repro3[i] = @rule53 elseif i == 5 repro3[i] = @rule63 elseif i == 6 repro3[i] = @rule73 elseif i == 7 repro3[i] = @rule83 elseif i == 8 repro3[i] = @rule93 elseif i == 9 repro3[i] = @rule103 elseif i == 10 repro3[i] = @rule113 elseif i == 11 repro3[i] = @rule123 elseif i == 12 repro3[i] = @rule133 elseif i == 13 repro3[i] = @rule143 elseif i == 14 repro3[i] = @rule153 elseif i == 15 repro3[i] = @rule163 elseif i == 16 repro3[i] = @rule173 elseif i == 17 repro3[i] = @rule183 elseif i == 18 repro3[i] = @rule193 elseif i == 19 repro3[i] = @rule203 elseif i == 20 repro3[i] = @rule213 elseif i == 21 repro3[i] = @rule223 elseif i == 22 repro3[i] = @rule233 elseif i == 23 repro3[i] = @rule243 elseif i == 24 repro3[i] = @rule253 elseif i == 25 repro3[i] = @rule263 elseif i == 26 repro3[i] = @rule273 elseif i == 27 repro3[i] = @rule283 elseif i == 28 repro3[i] = @rule293 elseif i == 29 repro3[i] = @rule303 elseif i == 30 repro3[i] = @rule313 elseif i == 31 repro3[i] = @rule323 elseif i == 32 repro3[i] = @rule333 elseif i == 33 repro3[i] = @rule343 elseif i == 34 repro3[i] = @rule353 elseif i == 35 repro3[i] = @rule363 elseif i == 36 repro3[i] = @rule373 elseif i == 37 repro3[i] = @rule383 elseif i == 38 repro3[i] = @rule393 elseif i == 39 repro3[i] = @rule403 elseif i == 40 repro3[i] = @rule413 elseif i == 41 repro3[i] = @rule423 elseif i == 42 repro3[i] = @rule433 elseif i == 43 repro3[i] = @rule443 elseif i == 44 repro3[i] = @rule453 elseif i == 45 repro3[i] = @rule463 elseif i == 46 repro3[i] = @rule473 elseif i == 47 repro3[i] = @rule483 elseif i == 48 repro3[i] = @rule493 elseif i == 49 repro3[i] = @rule503 endif i = i + 1 endwhile i = 0 int ii = 0 k = 0 j = 0 int kk = 0 ; rewrite into main for the chosen number of iterations ; this may be redone as a recursive function in the future. if @rewrite == "Parallel" while j < @iter ;repro #1 i = 0 while i < mainl if main[i] ==0 && @rlen1 > 0 ii = 0 while ii < @rlen1 newmain[k] = repro1[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] ==1 && @rlen2 > 0 ii = 0 while ii < @rlen2 newmain[k] = repro2[ii] dep[kk] = j ii = ii + 1 kk = kk + 1 k =k + 1 endwhile elseif main[i] > 1 newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 endif i = i + 1 endwhile int newmainl = k ; copy newmain to main ii = 0 while ii < newmainl main[ii] = newmain[ii] ii = ii + 1 endwhile mainl = newmainl newmainl = k j = j + 1 k = 0 endwhile elseif @rewrite == "serial" while j < @iter ;repro #1 i = 0 while i < mainl if main[i] ==0 && @rlen1 > 0 ii = 0 while ii < @rlen1 newmain[k] = repro1[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] > 0 newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 endif i = i + 1 endwhile int newmainl = k ; copy newmain to main ii = 0 while ii < newmainl main[ii] = newmain[ii] ii = ii + 1 endwhile mainl = newmainl newmainl = k i = 0 k = 0 while i < mainl if main[i] ==0 newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 elseif main[i] ==1 && @rlen2 > 0 ii = 0 while ii < @rlen2 newmain[k] = repro2[ii] dep[kk] = j ii = ii + 1 kk = kk + 1 k =k + 1 endwhile elseif main[i] > 1 newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 endif i = i + 1 endwhile newmainl = k ; copy newmain to main ii = 0 while ii < newmainl main[ii] = newmain[ii] ii = ii + 1 endwhile mainl = newmainl newmainl = k j = j + 1 k = 0 endwhile else ; node while j < @iter i = 0 ;repro #1 while i < mainl if main[i] ==16 && @rlen1 > 0 ii = 0 while ii < @rlen1 newmain[k] = repro1[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] ==17 && @rlen2 > 0 ii = 0 ;repro #2 while ii < @rlen2 newmain[k] = repro2[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile elseif main[i] ==0 && @rlen3 > 0 ii = 0 ;repro #3 while ii < @rlen3 newmain[k] = repro3[ii] dep[kk] = j ii = ii + 1 k =k + 1 kk = kk + 1 endwhile else newmain[k] = main[i] dep[kk] = j kk = kk + 1 k = k + 1 endif i = i + 1 endwhile int newmainl = k ; copy newmain to main ii = 0 while ii < newmainl main[ii] = newmain[ii] ii = ii + 1 endwhile mainl = newmainl newmainl = k j = j + 1 k = 0 endwhile endif if @diag print("Size of main[]: ",mainl) endif ; create leaf11 array. leaf11.line[0] = new line(0,0,0,1,0,0) leaf11.line[0].Resize(@osize1/sqrt(mainl)) leaf11.line[1] = new line(1,0,0,1,1,0) leaf11.line[1].Resize(@osize1/sqrt(mainl)) leaf11.line[2] = new line(1,1,0,0,1,0) leaf11.line[2].Resize(@osize1/sqrt(mainl)) leaf11.line[3] = new line(0,1,0,0,0,0) leaf11.line[3].Resize(@osize1/sqrt(mainl)) ; create leaf12 array. leaf12.line[0] = new line(0,0,0,1,0,0) leaf12.line[0].Resize(@osize2/sqrt(mainl)) leaf12.line[1] = new line(1,0,0,1,1,0) leaf12.line[1].Resize(@osize2/sqrt(mainl)) leaf12.line[2] = new line(1,1,0,0,1,0) leaf12.line[2].Resize(@osize2/sqrt(mainl)) leaf12.line[3] = new line(0,1,0,0,0,0) leaf12.line[3].Resize(@osize2/sqrt(mainl)) ; create leaf21 array. leaf21.line[0] = new line(0,0,0,1,-0.5,0) leaf21.line[0].Resize(@osize1/sqrt(mainl)) leaf21.line[1] = new line(1,-0.5,0,2,0,0) leaf21.line[1].Resize(@osize1/sqrt(mainl)) leaf21.line[2] = new line(2,0,0,1,0.5,0) leaf21.line[2].Resize(@osize1/sqrt(mainl)) leaf21.line[3] = new line(1,0.5,0,0,0,0) leaf21.line[3].Resize(@osize1/sqrt(mainl)) ; create leaf22 array. leaf22.line[0] = new line(0,0,0,1,-0.5,0) leaf22.line[0].Resize(@osize2/sqrt(mainl)) leaf22.line[1] = new line(1,-0.5,0,2,0,0) leaf22.line[1].Resize(@osize2/sqrt(mainl)) leaf22.line[2] = new line(2,0,0,1,0.5,0) leaf22.line[2].Resize(@osize2/sqrt(mainl)) leaf22.line[3] = new line(1,0.5,0,0,0,0) leaf22.line[3].Resize(@osize2/sqrt(mainl)) ; create leaf31 array. i = 0 while i < @needles1 leaf31.line[i] = new line(0,0,0,1,0,0) leaf31.line[i].Resize(@osize1/sqrt(mainl)) rot.rotatez(leaf31.line[i].fx1,leaf31.line[i].fy1,\ leaf31.line[i].fz1,@close1*i) rot.rotatez(leaf31.line[i].fx2,leaf31.line[i].fy2,\ leaf31.line[i].fz2,@close1*i) i = i + 1 endwhile ; create leaf32 array. i = 0 while i < @needles2 leaf32.line[i] = new line(0,0,0,1,0,0) leaf32.line[i].Resize(@osize2/sqrt(mainl)) rot.rotatez(leaf32.line[i].fx1,leaf32.line[i].fy1,\ leaf32.line[i].fz1,@close2*i) rot.rotatez(leaf32.line[i].fx2,leaf32.line[i].fy2,\ leaf32.line[i].fz2,@close2*i) i = i + 1 endwhile ; create leaf41 array. leaf41.line[0] = new line(0,0,0,0.286,-1,0) leaf41.line[0].Resize(@osize1/sqrt(mainl)) leaf41.line[1] = new line(.286,-1,0,0.428,-.286,0) leaf41.line[1].Resize(@osize1/sqrt(mainl)) leaf41.line[2] = new line(0.428,-.286,0,1.286,-1.143,0) leaf41.line[2].Resize(@osize1/sqrt(mainl)) leaf41.line[3] = new line(1.286,-1.143,0,1.286,-.571,0) leaf41.line[3].Resize(@osize1/sqrt(mainl)) leaf41.line[4] = new line(1.286,-0.571,0,2,0,0) leaf41.line[4].Resize(@osize1/sqrt(mainl)) leaf41.line[5] = new line(2,0,0,1.286,0.571,0) leaf41.line[5].Resize(@osize1/sqrt(mainl)) leaf41.line[6] = new line(1.286,0.571,0,1.286,1.143,0) leaf41.line[6].Resize(@osize1/sqrt(mainl)) leaf41.line[7] = new line(1.286,1.143,0,0.428,0.286,0) leaf41.line[7].Resize(@osize1/sqrt(mainl)) leaf41.line[8] = new line(0.428,0.286,0,.286,1,0) leaf41.line[8].Resize(@osize1/sqrt(mainl)) leaf41.line[9] = new line(.286,1,0,0,0,0) leaf41.line[9].Resize(@osize1/sqrt(mainl)) ; create leaf42 array. leaf42.line[0] = new line(0,0,0,0.286,-1,0) leaf42.line[0].Resize(@osize2/sqrt(mainl)) leaf42.line[1] = new line(.286,-1,0,0.428,-.286,0) leaf42.line[1].Resize(@osize2/sqrt(mainl)) leaf42.line[2] = new line(0.428,-.286,0,1.286,-1.143,0) leaf42.line[2].Resize(@osize2/sqrt(mainl)) leaf42.line[3] = new line(1.286,-1.143,0,1.286,-.571,0) leaf42.line[3].Resize(@osize2/sqrt(mainl)) leaf42.line[4] = new line(1.286,-0.571,0,2,0,0) leaf42.line[4].Resize(@osize2/sqrt(mainl)) leaf42.line[5] = new line(2,0,0,1.286,0.571,0) leaf42.line[5].Resize(@osize2/sqrt(mainl)) leaf42.line[6] = new line(1.286,0.571,0,1.286,1.143,0) leaf42.line[6].Resize(@osize2/sqrt(mainl)) leaf42.line[7] = new line(1.286,1.143,0,0.428,0.286,0) leaf42.line[7].Resize(@osize2/sqrt(mainl)) leaf42.line[8] = new line(0.428,0.286,0,.286,1,0) leaf42.line[8].Resize(@osize2/sqrt(mainl)) leaf42.line[9] = new line(.286,1,0,0,0,0) leaf42.line[9].Resize(@osize2/sqrt(mainl)) ; create flower11 array. flower11.line[0] = new line(0,0,0,1,-0.5,0) flower11.line[0].Resize(@osize1/sqrt(mainl)) flower11.line[1] = new line(1,-0.5,0,2,0,0) flower11.line[1].Resize(@osize1/sqrt(mainl)) flower11.line[2] = new line(2,0,0,1,0.5,0) flower11.line[2].Resize(@osize1/sqrt(mainl)) flower11.line[3] = new line(1,0.5,0,0,0,0) flower11.line[3].Resize(@osize1/sqrt(mainl)) flower11.line[4] = new line(0,0,0,1,-0.5,0) flower11.line[4].Resize(@osize1/sqrt(mainl)) flower11.line[5] = new line(1,-0.5,0,2,0,0) flower11.line[5].Resize(@osize1/sqrt(mainl)) flower11.line[6] = new line(2,0,0,1,0.5,0) flower11.line[6].Resize(@osize1/sqrt(mainl)) flower11.line[7] = new line(1,0.5,0,0,0,0) flower11.line[7].Resize(@osize1/sqrt(mainl)) i = 4 while i < 8 rot.rotatez(flower11.line[i].fx1,flower11.line[i].fy1,\ flower11.line[i].fz1,-60) rot.rotatez(flower11.line[i].fx2,flower11.line[i].fy2,\ flower11.line[i].fz2,-60) i = i + 1 endwhile flower11.line[8] = new line(0,0,0,1,-0.5,0) flower11.line[8].Resize(@osize1/sqrt(mainl)) flower11.line[9] = new line(1,-0.5,0,2,0,0) flower11.line[9].Resize(@osize1/sqrt(mainl)) flower11.line[10] = new line(2,0,0,1,0.5,0) flower11.line[10].Resize(@osize1/sqrt(mainl)) flower11.line[11] = new line(1,0.5,0,0,0,0) flower11.line[11].Resize(@osize1/sqrt(mainl)) i = 8 while i < 12 rot.rotatez(flower11.line[i].fx1,flower11.line[i].fy1,\ flower11.line[i].fz1,60) rot.rotatez(flower11.line[i].fx2,flower11.line[i].fy2,\ flower11.line[i].fz2,60) i = i + 1 endwhile ; create flower12 array. flower12.line[0] = new line(0,0,0,1,-0.5,0) flower12.line[0].Resize(@osize2/sqrt(mainl)) flower12.line[1] = new line(1,-0.5,0,2,0,0) flower12.line[1].Resize(@osize2/sqrt(mainl)) flower12.line[2] = new line(2,0,0,1,0.5,0) flower12.line[2].Resize(@osize2/sqrt(mainl)) flower12.line[3] = new line(1,0.5,0,0,0,0) flower12.line[3].Resize(@osize2/sqrt(mainl)) flower12.line[4] = new line(0,0,0,1,-0.5,0) flower12.line[4].Resize(@osize2/sqrt(mainl)) flower12.line[5] = new line(1,-0.5,0,2,0,0) flower12.line[5].Resize(@osize2/sqrt(mainl)) flower12.line[6] = new line(2,0,0,1,0.5,0) flower12.line[6].Resize(@osize2/sqrt(mainl)) flower12.line[7] = new line(1,0.5,0,0,0,0) flower12.line[7].Resize(@osize2/sqrt(mainl)) i = 4 while i < 8 rot.rotatez(flower12.line[i].fx1,flower12.line[i].fy1,\ flower12.line[i].fz1,-60) rot.rotatez(flower12.line[i].fx2,flower12.line[i].fy2,\ flower12.line[i].fz2,-60) i = i + 1 endwhile flower12.line[8] = new line(0,0,0,1,-0.5,0) flower12.line[8].Resize(@osize2/sqrt(mainl)) flower12.line[9] = new line(1,-0.5,0,2,0,0) flower12.line[9].Resize(@osize2/sqrt(mainl)) flower12.line[10] = new line(2,0,0,1,0.5,0) flower12.line[10].Resize(@osize2/sqrt(mainl)) flower12.line[11] = new line(1,0.5,0,0,0,0) flower12.line[11].Resize(@osize2/sqrt(mainl)) i = 8 while i < 12 rot.rotatez(flower12.line[i].fx1,flower12.line[i].fy1,\ flower12.line[i].fz1,60) rot.rotatez(flower12.line[i].fx2,flower12.line[i].fy2,\ flower12.line[i].fz2,60) i = i + 1 endwhile ; create flower21 array. flower21.line[0] = new line(0,0,0,1,-0.2,0.3) flower21.line[0].Resize(@osize1/sqrt(mainl)) flower21.line[1] = new line(1,-0.2,0.3,2,0,1) flower21.line[1].Resize(@osize1/sqrt(mainl)) flower21.line[2] = new line(2,0,1,1,0.2,0.3) flower21.line[2].Resize(@osize1/sqrt(mainl)) flower21.line[3] = new line(1,0.2,0.3,0,0,0) flower21.line[3].Resize(@osize1/sqrt(mainl)) flower21.line[4] = new line(0,0,0,1,-0.2,0.3) flower21.line[4].Resize(@osize1/sqrt(mainl)) flower21.line[5] = new line(1,-0.2,0.3,2,0,1) flower21.line[5].Resize(@osize1/sqrt(mainl)) flower21.line[6] = new line(2,0,1,1,0.2,0.3) flower21.line[6].Resize(@osize1/sqrt(mainl)) flower21.line[7] = new line(1,0.2,0.3,0,0,0) flower21.line[7].Resize(@osize1/sqrt(mainl)) i = 4 while i < 8 rot.rotatez(flower21.line[i].fx1,flower21.line[i].fy1,\ flower21.line[i].fz1,-120) rot.rotatez(flower21.line[i].fx2,flower21.line[i].fy2,\ flower21.line[i].fz2,-120) i = i + 1 endwhile flower21.line[8] = new line(0,0,0,1,-0.2,0.3) flower21.line[8].Resize(@osize1/sqrt(mainl)) flower21.line[9] = new line(1,-0.2,0.3,2,0,1) flower21.line[9].Resize(@osize1/sqrt(mainl)) flower21.line[10] = new line(2,0,1,1,0.2,0.3) flower21.line[10].Resize(@osize1/sqrt(mainl)) flower21.line[11] = new line(1,0.2,0.3,0,0,0) flower21.line[11].Resize(@osize1/sqrt(mainl)) i = 8 while i < 12 rot.rotatez(flower21.line[i].fx1,flower21.line[i].fy1,\ flower21.line[i].fz1,120) rot.rotatez(flower21.line[i].fx2,flower21.line[i].fy2,\ flower21.line[i].fz2,120) i = i + 1 endwhile i = 0 while i < 12 rot.rotatey(flower21.line[i].fx1,flower21.line[i].fy1,\ flower21.line[i].fz1,60) rot.rotatey(flower21.line[i].fx2,flower21.line[i].fy2,\ flower21.line[i].fz2,60) i = i + 1 endwhile ; create flower22 array. flower22.line[0] = new line(0,0,0,1,-0.2,0.3) flower22.line[0].Resize(@osize2/sqrt(mainl)) flower22.line[1] = new line(1,-0.2,0.3,2,0,1) flower22.line[1].Resize(@osize2/sqrt(mainl)) flower22.line[2] = new line(2,0,1,1,0.2,0.3) flower22.line[2].Resize(@osize2/sqrt(mainl)) flower22.line[3] = new line(1,0.2,0.3,0,0,0) flower22.line[3].Resize(@osize2/sqrt(mainl)) flower22.line[4] = new line(0,0,0,1,-0.2,0.3) flower22.line[4].Resize(@osize2/sqrt(mainl)) flower22.line[5] = new line(1,-0.2,0.3,2,0,1) flower22.line[5].Resize(@osize2/sqrt(mainl)) flower22.line[6] = new line(2,0,1,1,0.2,0.3) flower22.line[6].Resize(@osize2/sqrt(mainl)) flower22.line[7] = new line(1,0.2,0.3,0,0,0) flower22.line[7].Resize(@osize2/sqrt(mainl)) i = 4 while i < 8 rot.rotatez(flower22.line[i].fx1,flower22.line[i].fy1,\ flower22.line[i].fz1,-120) rot.rotatez(flower22.line[i].fx2,flower22.line[i].fy2,\ flower22.line[i].fz2,-120) i = i + 1 endwhile flower22.line[8] = new line(0,0,0,1,-0.2,0.3) flower22.line[8].Resize(@osize2/sqrt(mainl)) flower22.line[9] = new line(1,-0.2,0.3,2,0,1) flower22.line[9].Resize(@osize2/sqrt(mainl)) flower22.line[10] = new line(2,0,1,1,0.2,0.3) flower22.line[10].Resize(@osize2/sqrt(mainl)) flower22.line[11] = new line(1,0.2,0.3,0,0,0) flower22.line[11].Resize(@osize2/sqrt(mainl)) i = 8 while i < 12 rot.rotatez(flower22.line[i].fx1,flower22.line[i].fy1,\ flower22.line[i].fz1,120) rot.rotatez(flower22.line[i].fx2,flower22.line[i].fy2,\ flower22.line[i].fz2,120) i = i + 1 endwhile i = 0 while i < 12 rot.rotatey(flower22.line[i].fx1,flower22.line[i].fy1,\ flower22.line[i].fz1,60) rot.rotatey(flower22.line[i].fx2,flower22.line[i].fy2,\ flower22.line[i].fz2,60) i = i + 1 endwhile ; create flower31 array. i = 0 while i < 12 flower31.line[i] = new line(0,0,0,1,0,1) flower31.line[i].Resize(@osize1/sqrt(mainl)) rot.rotatez(flower31.line[i].fx1,flower31.line[i].fy1,\ flower31.line[i].fz1,30*i) rot.rotatez(flower31.line[i].fx2,flower31.line[i].fy2,\ flower31.line[i].fz2,30*i) i = i + 1 endwhile i = 0 while i < 12 rot.rotatey(flower31.line[i].fx1,flower31.line[i].fy1,\ flower31.line[i].fz1,60) rot.rotatey(flower31.line[i].fx2,flower31.line[i].fy2,\ flower31.line[i].fz2,60) i = i + 1 endwhile ; create flower32 array. i = 0 while i < 12 flower32.line[i] = new line(0,0,0,1,0,1) flower32.line[i].Resize(@osize2/sqrt(mainl)) rot.rotatez(flower32.line[i].fx1,flower32.line[i].fy1,\ flower32.line[i].fz1,30*i) rot.rotatez(flower32.line[i].fx2,flower32.line[i].fy2,\ flower32.line[i].fz2,30*i) i = i + 1 endwhile i = 0 while i < 12 rot.rotatey(flower32.line[i].fx1,flower32.line[i].fy1,\ flower32.line[i].fz1,60) rot.rotatey(flower32.line[i].fx2,flower32.line[i].fy2,\ flower32.line[i].fz2,60) i = i + 1 endwhile ; ; Generate the points for the lines ; ; initial line starting point la.line[0] = new Line(0,0,0,0,0,0) float theta = @tangle float xcorr = 0 float ycorr = 0 float zcorr = 0 k = 0 i = 0 if @v_lsystem == 100 xcorr = 1 ycorr = 0 zcorr = 0 else xcorr = 1 ycorr = 0 zcorr = 0 endif float len = 0 int oldmain = 0 int oldk = 0 la.line[0].SetWidth(10) float lwidth = la.line[0].lwidth i = 0 while i < mainl if main[i] == 0 if @lbr len = @fsize/(dep[k]+@lfactor)/@lfactor else len = @fsize endif if @rlen rvalue(len,@lrange) endif oldmain = main[i] if !didpop la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.2) la.line[k].SetDirectColor(@fcolor) la.line[k].SetWidth(lwidth) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 else la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.2) la.line[k].SetDirectColor(@fcolor) la.line[k].SetWidth(lwidth) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 didpop = false endif endif if main[i] == 1 if @lbr len = @gsize/(dep[k]+@lfactor)/@lfactor else len = @gsize endif if @rlen rvalue(len,@lrange) endif oldmain = main[i] if !didpop la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.8) la.line[k].SetDirectColor(@gcolor) la.line[k].SetWidth(lwidth) if @hideg la.line[k].SetVis(false) endif k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 else la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.8) la.line[k].SetDirectColor(@fcolor) la.line[k].SetWidth(lwidth) if @hideg la.line[k].SetVis(false) endif k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 didpop = false endif endif if main[i] == 2 if @lbr len = @fsize/(dep[k]+@lfactor)/@lfactor else len = @fsize endif if @rlen rvalue(len,@lrange) endif oldmain = main[i] la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetWidth(lwidth) la.line[k].SetVis(false) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 endif if main[i] == 3 if @lbr len = @gsize/(dep[k]+@lfactor)/@lfactor else len = @gsize endif if @rlen rvalue(len,@lrange) endif oldmain = main[i] la.line[k].fx2 = la.line[k].fx1+xcorr*len/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*len/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*len/sqrt(mainl) la.line[k].SetWidth(lwidth) la.line[k].SetVis(false) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 endif if main[i] == 4 if @rang rvalue(theta,@arange) endif rot.rotatez(xcorr,ycorr,zcorr,theta) endif if main[i] == 5 if @rang rvalue(theta,@arange) endif rot.rotatez(xcorr,ycorr,zcorr,-theta) endif if main[i] == 6 push(la.line[k].fx1,la.line[k].fy1,la.line[k].fz1,xcorr, ycorr, \ zcorr, theta, oldmain, k) endif if main[i] == 7 pop(popx,popy,popz,xcorr,ycorr, zcorr, theta, oldmain, oldk) int idxk = oldk if @usebranch lwidth = la.line[k].lwidth*@branch la.line[oldk].SetWidth(lwidth) while idxk < k lwidth = la.line[idxk].lwidth*@branch la.line[idxk].SetWidth(lwidth) idxk = idxk + 1 endwhile endif didpop = true endif if main[i] == 8 float fze = 0 if oldmain == 0 || oldmain == 2 fze = @fsize elseif oldmain == 1 || oldmain == 3 fze = @gsize endif if @lbr len = fze/(dep[k]+@lfactor)/@lfactor else len = fze endif if @rlen rvalue(len,@lrange) endif if !didpop la.line[k].fx2 = la.line[k].fx1+xcorr*@fsize/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*@fsize/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*@fsize/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) if oldmain == 0 || oldmain == 2 la.line[k].SetDirectColor(@fcolor) elseif oldmain == 1 || oldmain == 3 la.line[k].SetDirectColor(@gcolor) else la.line[k].SetDirectColor(@fcolor) endif la.line[k].SetWidth(lwidth) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 else la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz la.line[k].fx2 = la.line[k].fx1+xcorr*@fsize/sqrt(mainl) la.line[k].fy2 = la.line[k].fy1+ycorr*@fsize/sqrt(mainl) la.line[k].fz2 = la.line[k].fz1+zcorr*@fsize/sqrt(mainl) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) if oldmain == 0 || oldmain == 2 la.line[k].SetDirectColor(@fcolor) elseif oldmain == 1 || oldmain == 3 la.line[k].SetDirectColor(@gcolor) else la.line[k].SetDirectColor(@fcolor) endif la.line[k].SetWidth(lwidth) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) la.line[k].fx1 = la.line[k-1].fx2 la.line[k].fy1 = la.line[k-1].fy2 la.line[k].fz1 = la.line[k-1].fz2 didpop = false endif endif if main[i] == 9 if @rang rvalue(theta,@arange) endif rot.rotateX(xcorr,ycorr,zcorr,theta) endif if main[i] == 10 if @rang rvalue(theta,@arange) endif rot.rotateX(xcorr,ycorr,zcorr,-theta) endif if main[i] == 11 if @rang rvalue(theta,@arange) endif rot.rotatey(xcorr, ycorr,zcorr,theta) endif if main[i] == 12 if @rang rvalue(theta,@arange) endif rot.rotatey(xcorr, ycorr,zcorr,-theta) endif if main[i] == 13 vec.init(xcorr,ycorr,zcorr,0) Rot.rotate(xcorr,ycorr,zcorr,180,vec) endif if main[i] == 14 oldmain = main[i] float x1 = 0 float y1 = 0 float z1 = 0 float oanglez1 = @oanglez1 float oanglex1 = @oanglex1 float oangley1 = @oangley1 if @rango rvalue(oanglez1,@arangeo) rvalue(oanglex1,@arangeo) rvalue(oangley1,@arangeo) endif if @otype1 == "leaf1" int alength = leaf11.GetArraylength() leaf11.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "leaf2" int alength = leaf21.GetArraylength() leaf21.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "leaf3" int alength = leaf31.GetArraylength() leaf31.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "leaf4" int alength = leaf41.GetArraylength() leaf41.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "flower1" int alength = flower11.GetArraylength() flower11.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "flower2" int alength = flower21.GetArraylength() flower21.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype1 == "flower3" int alength = flower31.GetArraylength() flower31.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez1) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez1) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley1) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley1) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex1) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex1) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth1) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor1[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif endif if main[i] == 18 oldmain = main[i] float x1 = 0 float y1 = 0 float z1 = 0 float oanglez2 = @oanglez2 float oanglex2 = @oanglex2 float oangley2 = @oangley2 if @rango rvalue(oanglez2,@arangeo) rvalue(oanglex2,@arangeo) rvalue(oangley2,@arangeo) endif if @otype2 == "leaf1" int alength = leaf12.GetArraylength() leaf12.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "leaf2" int alength = leaf22.GetArraylength() leaf22.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "leaf3" int alength = leaf32.GetArraylength() leaf32.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "leaf4" int alength = leaf41.GetArraylength() leaf41.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "flower1" int alength = flower12.GetArraylength() flower12.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "flower2" int alength = flower22.GetArraylength() flower22.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif if @otype2 == "flower3" int alength = flower32.GetArraylength() flower32.Copy(temp) int rr = 0 while rr < alength rot.rotatez(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglez2) rot.rotatez(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglez2) rot.rotatex(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oangley2) rot.rotatex(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oangley2) rot.rotatey(temp.line[rr].fx1,temp.line[rr].fy1,\ temp.line[rr].fz1,oanglex2) rot.rotatey(temp.line[rr].fx2,temp.line[rr].fy2,\ temp.line[rr].fz2,oanglex2) rr = rr + 1 endwhile if !didpop x1 = la.line[k].fx1 y1 = la.line[k].fy1 z1 = la.line[k].fz1 rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + x1 la.line[k].fx2 = temp.line[k-rr].fx2 + x1 la.line[k].fy1 = temp.line[k-rr].fy1 + y1 la.line[k].fy2 = temp.line[k-rr].fy2 + y1 la.line[k].fz1 = temp.line[k-rr].fz1 + z1 la.line[k].fz2 = temp.line[k-rr].fz2 + z1 la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = x1 la.line[k].fy1 = y1 la.line[k].fz1 = z1 else rr = k while k < rr + alength la.line[k].fx1 = temp.line[k-rr].fx1 + popx la.line[k].fx2 = temp.line[k-rr].fx2 + popx la.line[k].fy1 = temp.line[k-rr].fy1 + popy la.line[k].fy2 = temp.line[k-rr].fy2 + popy la.line[k].fz1 = temp.line[k-rr].fz1 + popz la.line[k].fz2 = temp.line[k-rr].fz2 + popz la.line[k].SetWidth(@owidth2) la.line[k].SetDepth(dep[k]) la.line[k].Setgradcol(0.5) la.line[k].SetDirectColor(objectcolor2[k-rr]) la.line[k].SetPoly(true) k = k + 1 la.line[k] = new Line(0,0,0,0,0,0) endwhile la.line[k].fx1 = popx la.line[k].fy1 = popy la.line[k].fz1 = popz didpop = false endif endif endif if main[i] == 19 oldmain = main[i] theta = -theta endif i = i + 1 endwhile i = 0 while i < k ; Rotate the entire structure ; ; Y axis rotation ; rot.rotatey(la.line[i].fx1,la.line[i].fy1,la.line[i].fz1,@xang) rot.rotatey(la.line[i].fx2,la.line[i].fy2,la.line[i].fz2,@xang) ; ; X axis rotation ; rot.rotatex(la.line[i].fx1,la.line[i].fy1,la.line[i].fz1,@yang) rot.rotatex(la.line[i].fx2,la.line[i].fy2,la.line[i].fz2,@yang) if la.line[i].fz1 < zmin zmin = la.line[i].fz1 endif if la.line[i].fz2 < zmin zmin = la.line[i].fz2 endif if la.line[i].fz1 > zmax zmax = la.line[i].fz1 endif if la.line[i].fz2 > zmax zmax = la.line[i].fz2 endif i = i + 1 endwhile func push(float x, float y, float z, float xcorr, float ycorr, \ float zcorr, float theta, int last, int oldk) stackx[stackidx] = x stacky[stackidx] = y stackz[stackidx] = z stackxcorr[stackidx] = xcorr stackycorr[stackidx] = ycorr stackzcorr[stackidx] = zcorr stacktheta[stackidx] = theta stacklast[stackidx] = last stackoldk[stackidx] = oldk stackidx = stackidx + 1 endfunc func pop(float &x, float &y, float &z, float &xcorr, float &ycorr, \ float &zcorr, float &theta,int &last, int &oldk) stackidx = stackidx - 1 x = stackx[stackidx] y = stacky[stackidx] z = stackz[stackidx] xcorr = stackxcorr[stackidx] ycorr = stackycorr[stackidx] zcorr = stackzcorr[stackidx] theta = stacktheta[stackidx] last = stacklast[stackidx] oldk = stackoldk[stackidx] didpop = true endfunc init: float rt = 0 float rtave = 0 float rtmax = -1e100 color dtmax = rgba(1,1,1,1) color dtave = @base complex pt2 = 0 complex pt1 = 0 int jj = 0 int kkk = 0 float x = 0 float y = 0 float r[] complex t[] color dt[] setlength(r,k) setlength(t,k) setlength(dt,k) float depth[] setlength(depth,k) int jmax = 0 loop: final: ; ; Determine if the pixel is on a line ; jj = 0 kkk = 0 repeat if la.line[jj].vis pt1 = la.line[jj].fy1 + flip(la.line[jj].fx1) pt2 = la.line[jj].fy2 + flip(la.line[jj].fx2) t[jj]=(#z-pt1)/(pt2-pt1) x=real(t[jj]) y=imag(t[jj]) if(x<=0-@lj) if @ltype == "Rounded" r[jj]=sqr(x)+sqr(y) elseif @ltype == "Flat" r[jj] = 0 endif elseif(x>=1+@lj) if @ltype == "Rounded" r[jj]=sqr(x-1)+sqr(y) elseif @ltype == "Flat" r[jj] = 0 endif else r[jj]=sqr(y) endif r[jj]=sqrt(r[jj])*cabs(pt2-pt1) if zmax > zmin depth[jj] = ((la.line[jj].fz1+la.line[jj].fz2)/2-zmin)/(zmax-zmin) else depth[jj] = 0 endif if @colormode == "By side" t[jj] = (jj+1)/(k+1) elseif @colormode == "By depth" t[jj] = (la.line[jj].depth+1)/(@iter+1) elseif @colormode == "By line color" if !@usedirect t[jj] = la.line[jj].lcol else dt[jj] = la.line[jj].dcol endif elseif @colormode == "By z value" t[jj] = depth[jj] + 0.01 endif endif jj = jj + 1 until jj == k jj = 0 ; ; Load rt with color values ; float thick = 0 repeat thick = @thick if !la.line[jj].poly if @usepos thick = thick*la.line[jj].lwidth/(jj*@pos + 1) endif if @vbr && la.line[jj].lwidth == 1 thick = thick/(la.line[jj].depth+@factor)/@factor else thick = thick*la.line[jj].lwidth endif else thick = la.line[jj].lwidth endif if r[jj] < thick && r[jj] != 0 rt = cabs(depth[jj]+0.01) rtave = rtave + cabs(t[jj]) if @avemode == "Normal" dtave = blend(dtave,dt[jj],@aop) elseif @avemode == "Multiply" dtave = compose(dtave, blend(dt[jj], mergemultiply(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "Screen" dtave = compose(dtave, blend(dt[jj], mergescreen(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "Overlay" dtave = compose(dtave, blend(dt[jj], mergeoverlay(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "Soft light" dtave = compose(dtave, blend(dt[jj], mergesoftlight(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "Hard light" dtave = compose(dtave, blend(dt[jj], mergehardlight(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "darken" dtave = compose(dtave, blend(dt[jj], mergedarken(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "lighten" dtave = compose(dtave, blend(dt[jj], mergelighten(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "difference" dtave = compose(dtave, blend(dt[jj], mergedifference(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "hue" dtave = compose(dtave, blend(dt[jj], mergehue(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "saturation" dtave = compose(dtave, blend(dt[jj], mergesaturation(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "color" dtave = compose(dtave, blend(dt[jj], mergecolor(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "luminance" dtave = compose(dtave, blend(dt[jj], mergeluminance(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "addition" dtave = compose(dtave, blend(dt[jj], mergeaddition(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "subtraction" dtave = compose(dtave, blend(dt[jj], mergesubtraction(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "hsl addition" dtave = compose(dtave, blend(dt[jj], mergehsladdition(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "red" dtave = compose(dtave, blend(dt[jj], mergered(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "green" dtave = compose(dtave, blend(dt[jj], mergegreen(dtave, dt[jj]), alpha(dtave)), @aop) elseif @avemode == "blue" dtave = compose(dtave, blend(dt[jj], mergeblue(dtave, dt[jj]), alpha(dtave)), @aop) endif kkk = kkk + 1 endif if rt > rtmax rtmax = rt jmax = jj dtmax = dt[jj] endif jj = jj + 1 until jj == k if @ctype == "Max value" && rt != 0 if !@gradshade || @colormode != "By line color" rt = cabs(t[jmax]) else rt = (cabs(t[jmax])*r[jmax])^(1/3) endif else rt = rtave/(kkk+1) endif ; ; Color the lines ; if rt != 0 if @colormode != "Solid" if !@usedirect || @colormode != "By line color" #color = gradient(rt) elseif @usedirect && @colormode == "By line color" if @ctype == "Max value" if !la.line[jmax].poly #color = compose(dtmax,@fshade,(r[jmax]/thick)/@shade) else #color = dtmax endif else if !la.line[jmax].poly #color = compose(dtave,@fshade,(r[jmax]/thick)/@shade) else #color = dtave endif endif endif else #color= gradient(@gradval) endif else #color = gradient(@gradval) endif default: heading caption="L-Systems" endheading render = false helpfile = "http://www.hiddendimension.com/L_Systems.pdf" int param v_lsystem caption = "Version (L Systems)" default = 101 hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used." visible = @v_lsystem < 101 endparam int param asize caption = "Maximum array size" default = 1000000 endparam heading text = "The actual array size will be printed in the Compiler Messages window." visible = @diag endheading bool param diag caption = "Array diagnositic" default = false endparam int param iter caption = "L-Sysem Iterations" default = 1 endparam int param stacksize caption = "stack size" default = 1000 endparam bool param show caption = "Show rules" endparam heading caption = "Rules" visible = @show endheading heading text = "The rule set includes:" visible = @show endheading heading text = " F draw forward (a replacement chracter)" visible = @show endheading heading text = " G draw forward (a replacement chracter)" visible = @show endheading heading text = " f move forward without drawing" visible = @show endheading heading text = " g move forward without drawing" visible = @show endheading heading text = " d draw forward" visible = @show endheading heading text = " + turn left" visible = @show endheading heading text = " - turn right" visible = @show endheading heading text = " & pitch down" visible = @show endheading heading text = " % pitch up" visible = @show endheading heading text = " / roll left" visible = @show endheading heading text = " \ roll right" visible = @show endheading heading text = " | turn around" visible = @show endheading heading text = " ! reverse angle" visible = @show endheading heading text = " [ push stack" visible = @show endheading heading text = " ] pop stack" visible = @show endheading heading text = " @ polygon object #1" visible = @show endheading heading text = " $ polygon object #2" visible = @show endheading heading text = " # null object" visible = @show endheading heading text = "For use with node rewriting only." visible = @show && @rewrite == "node" endheading heading text = " L replacement character ignored by the Turtle" visible = @show && @rewrite == "node" endheading heading text = " R replacement character ignored by the Turtle" visible = @show && @rewrite == "node" endheading float param tangle caption = "turn angle" default = 90.0 endparam heading text = "If there are multiple strings parallel rewriting is the standard method. \ Serial rewriting gives a longer string and more complex plant structure. \ With node rewriting use L, R and F for the replacement characters. \ F and G will still serve as draw forward characters, while L and R \ are ignored by the Turtle." endheading heading text = "For more details on node rewriting and its uses see the help file." endheading param rewrite caption = "Rewrite method" default = 0 enum = "Parallel" "Serial" "Node" endparam heading caption = "Color mode" endheading heading text = "Color lines using gradients or RGB color parameters. Both methods use direct \ color. RGB color works only for the color mode of 'By line color'." endheading bool param usedirect caption = "Use RGB color" default = false endparam float param shade caption = "Line shader" default = 10 min = .01 visible = @usedirect && @colormode == "By line color" hint = "provides a 3D effect to the lines." endparam bool param gradshade caption = "Line shader" default = false visible = !@usedirect && @colormode == "By line color" hint = "provides a 3D effect to the lines. Special gradients are \ required to produce the effect." endparam color param fshade caption = "Shader color" default = rgba(0,0,0,1) visible = @usedirect && @colormode == "By line color" hint = "RGB color of the shader overlay." endparam heading caption = "RGB line colors" visible = @usedirect && @colormode == "By line color" endheading color param fcolor caption = "Color for F and f" default = rgba(128/255, 84/255, 33/255, 1) visible = @usedirect && @colormode == "By line color" endparam color param gcolor caption = "Color for G and g" default = rgba(114/255, 83/255, 46/255, 1) visible = @usedirect && @colormode == "By line color" endparam heading text = "Leaf1 colors" visible = @usedirect && @otype1 == "leaf1" && @colormode == "By line color" endheading heading text = "Leaf2 colors" visible = @usedirect && @otype1 == "leaf2" && @colormode == "By line color" endheading heading text = "Leaf3 colors" visible = @usedirect && @otype1 == "leaf3" && @colormode == "By line color" endheading heading text = "Leaf4 colors" visible = @usedirect && @otype1 == "leaf4" && @colormode == "By line color" endheading heading text = "Flower1 colors" visible = @usedirect && @otype1 == "flower1" && @colormode == "By line color" endheading heading text = "Flower2 colors" visible = @usedirect && @otype1 == "flower2" && @colormode == "By line color" endheading heading text = "Flower3 colors" visible = @usedirect && @otype1 == "flower3" && @colormode == "By line color" endheading heading caption = "Object 1 colors" visible = @usedirect && @otype1 != "none" endheading color param color11 caption = "Object color 1" default = rgba(0, 1, 0, 1) visible = @usedirect && @otype1 != "none" && @colormode == "By line color" endparam color param color21 caption = "Object color 2" default = rgba(64/255, 128/255, 128/255, 1) visible = @usedirect && @otype1 != "none" && @colormode == "By line color" endparam color param color31 caption = "Object color 3" default = rgba(51/255, 163/255, 54/255, 1) visible = @usedirect && @otype1 != "none" && @colormode == "By line color" endparam color param color41 caption = "Object color 4" default = rgba(128/255, 255/255, 0, 1) visible = @usedirect && @otype1 != "none" && @colormode == "By line color" endparam color param color51 caption = "Object color 5" default = rgba(.2, .6, .25, 1) visible = @usedirect && (@otype1 == "leaf3" || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2" ||@otype1 == "flower3") && @colormode == "By line color" endparam color param color61 caption = "Object color 6" default = rgba(.2, .6, .25, 1) visible = @usedirect && (@otype1 == "leaf3" || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color71 caption = "Object color 7" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=7) || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color81 caption = "Object color 8" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=8) || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color91 caption = "Object color 9" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=9) || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color101 caption = "Object color 10" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=10) || @otype1 == "leaf4" \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color111 caption = "Object color 11" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=11) \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam color param color121 caption = "Object color 12" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype1 == "leaf3"&& @needles1 >=12) \ ||@otype1 == "flower1" ||@otype1 == "flower2"||@otype1 == "flower3") && @colormode == "By line color" endparam heading caption = "Object 2 colors" visible = @usedirect && @otype2 != "none" endheading heading text = "Leaf1 colors" visible = @usedirect && @otype2 == "leaf1" && @colormode == "By line color" endheading heading text = "Leaf2 colors" visible = @usedirect && @otype2 == "leaf2" && @colormode == "By line color" endheading heading text = "Leaf3 colors" visible = @usedirect && @otype2 == "leaf3" && @colormode == "By line color" endheading heading text = "Leaf4 colors" visible = @usedirect && @otype2 == "leaf4" && @colormode == "By line color" endheading heading text = "Flower1 colors" visible = @usedirect && @otype2 == "flower1" && @colormode == "By line color" endheading heading text = "Flower2 colors" visible = @usedirect && @otype2 == "flower2" && @colormode == "By line color" endheading heading text = "Flower3 colors" visible = @usedirect && @otype2 == "flower3" && @colormode == "By line color" endheading color param color12 caption = "Object color 1" default = rgba(0, 1, 0, 1) visible = @usedirect && @otype2 != "none" && @colormode == "By line color" endparam color param color22 caption = "Object color 2" default = rgba(64/255, 128/255, 128/255, 1) visible = @usedirect && @otype2 != "none" && @colormode == "By line color" endparam color param color32 caption = "Object color 3" default = rgba(51/255, 163/255, 54/255, 1) visible = @usedirect && @otype2 != "none" && @colormode == "By line color" endparam color param color42 caption = "Object color 4" default = rgba(128/255, 255/255, 0, 1) visible = @usedirect && @otype2 != "none" && @colormode == "By line color" endparam color param color52 caption = "Object color 5" default = rgba(.2, .6, .25, 1) visible = @usedirect && (@otype2 == "leaf3" || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2" ||@otype2 == "flower3") && @colormode == "By line color" endparam color param color62 caption = "Object color 6" default = rgba(.2, .6, .25, 1) visible = @usedirect && (@otype2 == "leaf3" || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color72 caption = "Object color 7" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=7) || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color82 caption = "Object color 8" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=8) || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color92 caption = "Object color 9" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=9) || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color102 caption = "Object color 10" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=10) || @otype2 == "leaf4" \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color112 caption = "Object color 11" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=11) \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam color param color122 caption = "Object color 12" default = rgba(.2, .6, .25, 1) visible = @usedirect && ((@otype2 == "leaf3"&& @needles1 >=12) \ ||@otype2 == "flower1" ||@otype2 == "flower2"||@otype2 == "flower3") && @colormode == "By line color" endparam heading caption = "Axiom" endheading heading text = "The axiom must contain at least one F. The maximum size is 30." visible = @rewrite == "parallel" || @rewrite == "serial" endheading heading text = "The axiom must contain at least one L and/or R. The maximum size is 40." visible = @rewrite == "node" endheading int param alen caption = "axiom length" default = 1 max = 40 endparam param ax1 caption = "axiom1" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 1 endparam param ax2 caption = "axiom2" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 1 visible = @alen >= 2 endparam param ax3 caption = "axiom3" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 3 endparam param ax4 caption = "axiom4" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 1 visible = @alen >= 4 endparam param ax5 caption = "axiom5" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 5 endparam param ax6 caption = "axiom6" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 1 visible = @alen >= 6 endparam param ax7 caption = "axiom7" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 7 endparam param ax8 caption = "axiom8" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 8 endparam param ax9 caption = "axiom9" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 9 endparam param ax10 caption = "axiom10" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 10 endparam param ax11 caption = "axiom11" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 11 endparam param ax12 caption = "axiom12" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 12 endparam param ax13 caption = "axiom13" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 13 endparam param ax14 caption = "axiom14" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 14 endparam param ax15 caption = "axiom15" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 15 endparam param ax16 caption = "axiom16" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 16 endparam param ax17 caption = "axiom17" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 17 endparam param ax18 caption = "axiom18" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 18 endparam param ax19 caption = "axiom19" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 19 endparam param ax20 caption = "axiom20" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 20 endparam param ax21 caption = "axiom21" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 21 endparam param ax22 caption = "axiom22" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 22 endparam param ax23 caption = "axiom23" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 23 endparam param ax24 caption = "axiom24" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 24 endparam param ax25 caption = "axiom25" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 25 endparam param ax26 caption = "axiom26" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 26 endparam param ax27 caption = "axiom27" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 27 endparam param ax28 caption = "axiom28" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 28 endparam param ax29 caption = "axiom29" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 29 endparam param ax30 caption = "axiom30" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 30 endparam param ax31 caption = "axiom31" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 31 endparam param ax32 caption = "axiom32" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 32 endparam param ax33 caption = "axiom33" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 33 endparam param ax34 caption = "axiom34" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 34 endparam param ax35 caption = "axiom35" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 35 endparam param ax36 caption = "axiom36" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 36 endparam param ax37 caption = "axiom37" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 37 endparam param ax38 caption = "axiom38" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 38 endparam param ax39 caption = "axiom39" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 39 endparam param ax40 caption = "axiom40" enum = "F" "L" "R" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" default = 0 visible = @alen >= 40 endparam heading caption = "Reproduction rules" endheading heading caption = " Reproduction rule 1 (F)" visible = @rewrite == "Parallel" || @rewrite == "Serial" endheading heading caption = " Reproduction rule 1 (L)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." endheading int param rlen1 caption = "rule length" default = 1 max = 50 endparam param rule11 caption = "rule 1" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 1 endparam param rule21 caption = "rule 2" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 4 visible = @rlen1 >= 2 endparam param rule31 caption = "rule 3" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 3 endparam param rule41 caption = "rule 4" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 5 visible = @rlen1 >= 4 endparam param rule51 caption = "rule 5" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 5 endparam param rule61 caption = "rule 6" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 5 visible = @rlen1 >= 6 endparam param rule71 caption = "rule 7" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 7 endparam param rule81 caption = "rule 8" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 8 endparam param rule91 caption = "rule 9" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 4 visible = @rlen1 >= 9 endparam param rule101 caption = "rule 10" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 10 endparam param rule111 caption = "rule 11" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 4 visible = @rlen1 >= 11 endparam param rule121 caption = "rule 12" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 12 endparam param rule131 caption = "rule 13" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 5 visible = @rlen1 >= 13 endparam param rule141 caption = "rule 14" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 14 endparam param rule151 caption = "rule 15" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 15 endparam param rule161 caption = "rule 16" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 16 endparam param rule171 caption = "rule 17" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 17 endparam param rule181 caption = "rule 18" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 18 endparam param rule191 caption = "rule 19" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 19 endparam param rule201 caption = "rule 20" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 20 endparam param rule211 caption = "rule 21" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 21 endparam param rule221 caption = "rule 22" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 22 endparam param rule231 caption = "rule 23" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 23 endparam param rule241 caption = "rule 24" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 24 endparam param rule251 caption = "rule 25" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 25 endparam param rule261 caption = "rule 26" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 26 endparam param rule271 caption = "rule 27" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 27 endparam param rule281 caption = "rule 28" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 28 endparam param rule291 caption = "rule 29" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 29 endparam param rule301 caption = "rule 30" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 30 endparam param rule311 caption = "rule 31" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 31 endparam param rule321 caption = "rule 32" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 32 endparam param rule331 caption = "rule 33" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 33 endparam param rule341 caption = "rule 34" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 34 endparam param rule351 caption = "rule 35" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 35 endparam param rule361 caption = "rule 36" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 36 endparam param rule371 caption = "rule 37" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 37 endparam param rule381 caption = "rule 38" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 38 endparam param rule391 caption = "rule 39" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 39 endparam param rule401 caption = "rule 40" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 40 endparam param rule411 caption = "rule 41" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 41 endparam param rule421 caption = "rule 42" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 42 endparam param rule431 caption = "rule 43" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 43 endparam param rule441 caption = "rule 44" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 44 endparam param rule451 caption = "rule 45" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 45 endparam param rule461 caption = "rule 46" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 46 endparam param rule471 caption = "rule 47" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 47 endparam param rule481 caption = "rule 48" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 48 endparam param rule491 caption = "rule 49" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 49 endparam param rule501 caption = "rule 50" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rlen1 >= 50 endparam heading caption = " Reproduction rule 2 (G)" visible = @rewrite == "Parallel" || @rewrite == "Serial" endheading heading caption = " Reproduction rule 2 (R)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." endheading bool param hideg caption = "Hide lines from G" default = false visible = @rlen2 > 0 endparam int param rlen2 caption = "rule length" default = 0 max = 50 endparam param rule12 caption = "rule 1" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 1 endparam param rule22 caption = "rule 2" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 2 endparam param rule32 caption = "rule 3" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 3 endparam param rule42 caption = "rule 4" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 4 endparam param rule52 caption = "rule 5" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 5 endparam param rule62 caption = "rule 6" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 6 endparam param rule72 caption = "rule 7" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 7 endparam param rule82 caption = "rule 8" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 8 endparam param rule92 caption = "rule 9" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 9 endparam param rule102 caption = "rule 10" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 10 endparam param rule112 caption = "rule 11" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 11 endparam param rule122 caption = "rule 12" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 12 endparam param rule132 caption = "rule 13" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 13 endparam param rule142 caption = "rule 14" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 14 endparam param rule152 caption = "rule 15" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 15 endparam param rule162 caption = "rule 16" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 16 endparam param rule172 caption = "rule 17" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 17 endparam param rule182 caption = "rule 18" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 18 endparam param rule192 caption = "rule 19" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 19 endparam param rule202 caption = "rule 20" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 20 endparam param rule212 caption = "rule 21" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 21 endparam param rule222 caption = "rule 22" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 22 endparam param rule232 caption = "rule 23" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 23 endparam param rule242 caption = "rule 24" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 24 endparam param rule252 caption = "rule 25" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 25 endparam param rule262 caption = "rule 26" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 26 endparam param rule272 caption = "rule 27" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 27 endparam param rule282 caption = "rule 28" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 28 endparam param rule292 caption = "rule 29" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 29 endparam param rule302 caption = "rule 30" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 30 endparam param rule312 caption = "rule 31" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 31 endparam param rule322 caption = "rule 32" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 32 endparam param rule332 caption = "rule 33" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 33 endparam param rule342 caption = "rule 34" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 34 endparam param rule352 caption = "rule 35" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 35 endparam param rule362 caption = "rule 36" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 36 endparam param rule372 caption = "rule 37" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 37 endparam param rule382 caption = "rule 38" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 38 endparam param rule392 caption = "rule 39" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 39 endparam param rule402 caption = "rule 40" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 40 endparam param rule412 caption = "rule 41" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 41 endparam param rule422 caption = "rule 42" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 42 endparam param rule432 caption = "rule 43" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 43 endparam param rule442 caption = "rule 44" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 44 endparam param rule452 caption = "rule 45" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 45 endparam param rule462 caption = "rule 46" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 46 endparam param rule472 caption = "rule 47" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 47 endparam param rule482 caption = "rule 48" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 48 endparam param rule492 caption = "rule 49" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 49 endparam param rule502 caption = "rule 50" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 1 visible = @rlen2 >= 50 endparam heading caption = " Reproduction rule 3 (F)" visible = @rewrite == "node" endheading heading text = "The maximum size of the rule is 50." visible = @rewrite == "node" endheading int param rlen3 caption = "rule length" default = 0 max = 50 visible = @rewrite == "node" endparam param rule13 caption = "rule 1" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 1 endparam param rule23 caption = "rule 2" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 2 endparam param rule33 caption = "rule 3" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 3 endparam param rule43 caption = "rule 4" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 4 endparam param rule53 caption = "rule 5" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 5 endparam param rule63 caption = "rule 6" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 6 endparam param rule73 caption = "rule 7" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 7 endparam param rule83 caption = "rule 8" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 8 endparam param rule93 caption = "rule 9" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 9 endparam param rule103 caption = "rule 10" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 10 endparam param rule113 caption = "rule 11" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 11 endparam param rule123 caption = "rule 12" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 12 endparam param rule133 caption = "rule 13" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 13 endparam param rule143 caption = "rule 14" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 14 endparam param rule153 caption = "rule 15" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 15 endparam param rule163 caption = "rule 16" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 16 endparam param rule173 caption = "rule 17" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 17 endparam param rule183 caption = "rule 18" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 18 endparam param rule193 caption = "rule 19" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 19 endparam param rule203 caption = "rule 20" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 20 endparam param rule213 caption = "rule 21" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 21 endparam param rule223 caption = "rule 22" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 22 endparam param rule233 caption = "rule 23" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 23 endparam param rule243 caption = "rule 24" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 24 endparam param rule253 caption = "rule 25" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 25 endparam param rule263 caption = "rule 26" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 26 endparam param rule273 caption = "rule 27" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 27 endparam param rule283 caption = "rule 28" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 28 endparam param rule293 caption = "rule 29" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 29 endparam param rule303 caption = "rule 30" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 30 endparam param rule313 caption = "rule 31" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 31 endparam param rule323 caption = "rule 32" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 32 endparam param rule333 caption = "rule 33" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 33 endparam param rule343 caption = "rule 34" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 34 endparam param rule353 caption = "rule 35" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 35 endparam param rule363 caption = "rule 36" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 36 endparam param rule373 caption = "rule 37" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 37 endparam param rule383 caption = "rule 38" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 38 endparam param rule393 caption = "rule 39" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 39 endparam param rule403 caption = "rule 40" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 40 endparam param rule413 caption = "rule 41" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 41 endparam param rule423 caption = "rule 42" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 42 endparam param rule433 caption = "rule 43" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 43 endparam param rule443 caption = "rule 44" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 44 endparam param rule453 caption = "rule 45" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 45 endparam param rule463 caption = "rule 46" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 46 endparam param rule473 caption = "rule 47" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 47 endparam param rule483 caption = "rule 48" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 48 endparam param rule493 caption = "rule 49" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 49 endparam param rule503 caption = "rule 50" enum = "F" "G""f" "g" "+" "-" "[" "]" "d" "&" "%" "/" "\" "|" "@" "#" "L" "R" "$" "!" default = 0 visible = @rewrite == "node" && @rlen3 >= 50 endparam heading caption = "Polygon objects" endheading param otype1 caption = "object type #1" enum = "none" "leaf1" "leaf2" "leaf3" "leaf4" "flower1" "flower2" "flower3" default = 0 visible = (@rule11 == "@" || @rule21 == "@" || @rule31 == "@" || @rule41 == "@" \ || @rule51 == "@" || @rule61 == "@" || @rule71 == "@" || @rule81 == "@" \ || @rule91 == "@" || @rule101 == "@" || @rule111 == "@" || @rule121 == "@" \ || @rule131 == "@" || @rule141 == "@" || @rule151 == "@" || @rule161 == "@" \ || @rule171 == "@" || @rule181 == "@" || @rule191 == "@" || @rule201 == "@" \ || @rule211 == "@" || @rule221 == "@" || @rule231 == "@" || @rule241 == "@" \ || @rule251 == "@"|| @rule261 == "@"|| @rule271 == "@"|| @rule281 == "@"\ || @rule291 == "@"|| @rule301 == "@"|| @rule311 == "@"|| @rule321 == "@"\ || @rule331 == "@"|| @rule341 == "@"|| @rule351 == "@"|| @rule361 == "@"\ || @rule371 == "@"|| @rule381 == "@"|| @rule391 == "@"|| @rule401 == "@"\ || @rule411 == "@"|| @rule421 == "@"|| @rule431 == "@"|| @rule441 == "@"\ || @rule451 == "@"|| @rule461 == "@"|| @rule471 == "@"|| @rule481 == "@"\ || @rule491 == "@"|| @rule501 == "@"\ || @rule12 == "@" || @rule22 == "@" || @rule32 == "@" || @rule42 == "@" \ || @rule52 == "@" || @rule62 == "@" || @rule72 == "@" || @rule82 == "@" \ || @rule92 == "@" || @rule102 == "@" || @rule112 == "@" || @rule122 == "@" \ || @rule132 == "@" || @rule142 == "@" || @rule152 == "@" || @rule162 == "@" \ || @rule171 == "@" || @rule181 == "@" || @rule191 == "@" || @rule201 == "@" \ || @rule212 == "@" || @rule222 == "@" || @rule232 == "@" || @rule242 == "@" \ || @rule252 == "@" || @rule262 == "@" || @rule272 == "@" || @rule282 == "@"\ || @rule292 == "@" || @rule302 == "@" || @rule312 == "@" || @rule322 == "@"\ || @rule332 == "@" || @rule342 == "@" || @rule352 == "@" || @rule362 == "@"\ || @rule372 == "@" || @rule382 == "@" || @rule392 == "@" || @rule402 == "@"\ || @rule412 == "@" || @rule422 == "@" || @rule432 == "@" || @rule442 == "@"\ || @rule452 == "@" || @rule462 == "@" || @rule472 == "@" || @rule482 == "@"\ || @rule492 == "@" || @rule502 == "@") endparam int param needles1 caption = "Number of needles" default = 6 min = 6 max = 12 visible = @otype1 == "leaf3" endparam float param close1 caption = "Needle closeness" default = 5 visible = @otype1 == "leaf3" endparam float param osize1 caption = "object size" default = 1 visible = @otype1 != "none" endparam float param owidth1 caption = "object line width" default = 0.01 visible = @otype1 != "none" endparam float param oanglez1 caption = "object angle (Z axis)" default = 0 visible = @otype1 != "none" endparam float param oanglex1 caption = "object angle (X axis)" default = 0 visible = @otype1 != "none" endparam float param oangley1 caption = "object angle (Y axis)" default = 0 visible = @otype1 != "none" endparam param otype2 caption = "object type #2" enum = "none" "leaf1" "leaf2" "leaf3" "leaf4" "flower1" "flower2" "flower3" default = 0 visible = (@rule51 == "$" || @rule61 == "$" || @rule71 == "$" || @rule81 == "$" \ || @rule91 == "$" || @rule101 == "$" || @rule111 == "$" || @rule121 == "$" \ || @rule131 == "$" || @rule141 == "$" || @rule151 == "$" || @rule161 == "$" \ || @rule171 == "$" || @rule181 == "$" || @rule191 == "$" || @rule201 == "$" \ || @rule211 == "$" || @rule221 == "$" || @rule231 == "$" || @rule241 == "$" \ || @rule251 == "$"|| @rule261 == "$"|| @rule271 == "$"|| @rule281 == "$"\ || @rule291 == "$"|| @rule301 == "$"|| @rule311 == "$"|| @rule321 == "$"\ || @rule331 == "$"|| @rule341 == "$"|| @rule351 == "$"|| @rule361 == "$"\ || @rule371 == "$"|| @rule381 == "$"|| @rule391 == "$"|| @rule401 == "$"\ || @rule411 == "$"|| @rule421 == "$"|| @rule431 == "$"|| @rule441 == "$"\ || @rule451 == "$"|| @rule461 == "$"|| @rule471 == "$"|| @rule481 == "$"\ || @rule491 == "$"|| @rule501 == "$"\ || @rule12 == "$" || @rule22 == "$" || @rule32 == "$" || @rule42 == "$" \ || @rule52 == "$" || @rule62 == "$" || @rule72 == "$" || @rule82 == "$" \ || @rule92 == "$" || @rule102 == "$" || @rule112 == "$" || @rule122 == "$" \ || @rule132 == "$" || @rule142 == "$" || @rule152 == "$" || @rule162 == "$" \ || @rule171 == "$" || @rule181 == "$" || @rule191 == "$" || @rule201 == "$" \ || @rule212 == "$" || @rule222 == "$" || @rule232 == "$" || @rule242 == "$" \ || @rule252 == "$" || @rule262 == "$" || @rule272 == "$" || @rule282 == "$"\ || @rule292 == "$" || @rule302 == "$" || @rule312 == "$" || @rule322 == "$"\ || @rule332 == "$" || @rule342 == "$" || @rule352 == "$" || @rule362 == "$"\ || @rule372 == "$" || @rule382 == "$" || @rule392 == "$" || @rule402 == "$"\ || @rule412 == "$" || @rule422 == "$" || @rule432 == "$" || @rule442 == "$"\ || @rule452 == "$" || @rule462 == "$" || @rule472 == "$" || @rule482 == "$"\ || @rule492 == "$" || @rule502 == "$") endparam int param needles2 caption = "Number of needles" default = 6 min = 6 max = 12 visible = @otype2 == "leaf3" endparam float param close2 caption = "Needle closeness" default = 5 visible = @otype2 == "leaf3" endparam float param osize2 caption = "object size" default = 1 visible = @otype2 != "none" endparam float param owidth2 caption = "object line width" default = 0.01 visible = @otype2 != "none" endparam float param oanglez2 caption = "object angle (Z axis)" default = 0 visible = @otype2 != "none" endparam float param oanglex2 caption = "object angle (X axis)" default = 0 visible = @otype2 != "none" endparam float param oangley2 caption = "object angle (Y axis)" default = 0 visible = @otype2 != "none" endparam heading caption = "Randomize" endheading int param seed caption = "Random seed" default = 123456789 visible = @rlen || @rang || @rango endparam bool param rlen caption = "Randomize length" default = false endparam float param lrange caption = "length range" default = 0.01 ; max = 2.0 ; min = 0 visible = @rlen endparam bool param rang caption = "Randomize angle" default = false endparam float param arange caption = "angle range" default = 0.01 ; max = 1.0 ; min = 0.01 visible = @rang endparam bool param rango caption = "Randomize object attach angle" default = false endparam float param arangeo caption = "angle range" default = 0.01 ; max = 1.0 ; min = 0.01 visible = @rango endparam heading caption = " " endheading float param fsize caption = "F size" default = 1.0 endparam float param gsize caption = "G size" default = 1.0 endparam float param xang caption = "X rotation" default = 0 endparam float param yang caption = "Y rotation" default = 0 endparam param ltype caption = "Line type end" default = 1 enum = "Rounded" "Flat" endparam float param lj caption = "Line join correction" default = 0 endparam float param thick caption = "Line width" default = 0.01 endparam bool param usebranch caption = "Thickness by branching" default = false endparam float param branch caption = "Branching ratio" default = 0.8 visible = @usebranch endparam bool param usepos caption = "Thickness by string position" default = false endparam float param pos caption = "Position thickness factor" default = 0.1 visible = @usepos endparam bool param vbr caption = "Thickness by recursion" default = false endparam float param factor caption = "Thickness factor" default = 1 min = 0.1 visible = @vbr endparam bool param lbr caption = "Length by recursion" default = false endparam float param lfactor caption = "Length factor" default = 1 min = 0.1 visible = @lbr endparam param ctype caption = "Color type" enum = "Max value" "Overlay" default = 0 endparam param avemode caption = "Overlay mode" default = 0 enum = "Normal" "Multiply" "Screen" "Overlay" "Soft light" "Hard light" "Darken" \ "Lighten" "Difference" "Hue" "Saturation" "Color" "Luminance" "Addition" \ "Subtraction" "HSL addition" "Red" "Green" "Blue" visible = @ctype == "Overlay" && @usedirect && @colormode == "By line color" endparam float param aop caption = "Opacity" default = 1.0 min = 0 max = 1 visible = @ctype == "Overlay" && @usedirect && @colormode == "By line color" endparam color param base caption = "Bottom color" default = rgba(0.5,0.5,0.5,1) visible = @ctype == "Overlay" && @usedirect && @colormode == "By line color" endparam param colormode caption = "Color mode" default = 0 enum = "By Side" "By depth" "By Z Value" "By line color" "Solid" endparam float param gradval caption = "Gradient value" default = 0.5 visible = @colormode == 1 endparam }