comment { MMF4 formulae V2.5 (8th December 2007) These formulas are written for UF4 and later. (8th December 2007) Updated the 3D IFS formula. Changed the bailout radius so that automatic calculation can be turned off, this was necessary so it's possible to have transforms of larger scales. Added fading to light from point sources based on distance^2 and/or distance. Improved the ambient light so there are now two types, the original sourced ambient where each light contributes and a new "base" ambient that is unsourced. Note that the sourced ambient fades based on distance from source (for point sources) whereas the unsourced ambient is uniform. Re-enabled some parameters that were mistakenly disabled when switching to coloured lighting mode. (27th November 2007) Updated the 3D IFS formula. Added the "Pixel offset" option which allows you to change the pixel offset of the four adjacent rays cast for getting the lighting normal. Also added the optional initial translation on the transforms. (22nd November 2007) Changed the name "shear" to the correct descriptor "skew" in both the 2D and 3D IFS formulas. This has no effect on parameters, just the descriptions. Also added a Xenodream compatibility option to the 3D IFS formula so users of Xenodream can import holons correctly provided they are purely affine - i.e. provided they don't use any metamorphs. N.B. the Xenodream translation values should be divided by 100 and holons with large scale values (any >94%) will not convert very well. (14th November 2007) Added the depth restriction option to the 2D and 3D IFS formulas. (7th November 2007) Added the 3D escape-time IFS formula. (22nd October 2007) Added the 2D escape-time IFS formula. Added an extra inversion option to the attractor formula. © David Makin (Makin' Magic Fractals) http://website.lineone.net/~dave_makin/ http://makinmagic.deviantart.com/ http://www.renderosity.com/mod/gallery/browse.php?username=MakinMagic Please send any comments/suggestions about these formulae to: makinmagic@tiscali.co.uk } MMF4C3DIFS { ; ; RIFS 3D formula ; © David Makin 2007 ; ; This formula uses the following to calculate the fractal dimension: ; log(Pi)/log(Si)=D for all Pi and Si (assume the i's are subscripts) ; ie. for all the transforms in the fractal: ; log of probability/log of scale = constant ; (the constant above is Determinant/2 for a 2D system or /3 for 3D ; and is correct provided all scales are <1) ; ; The proof of the above can be found in: ; "A Multifractal Analysis of IFSP Invariant Measures With Application to ; Fractal Image Generation" ; by J.M.Gutiérrez, A.Iglesias and M.A. Rodríguez. ; The document was available on the web as fractals96.pdf ; ; Given this and the fact the the sum of all Pi is 1.0 we can find all Pi. ; ; Using the fact that log(Pi)/log(Si)=D ; ; log(P0)/log(S0)=log(Pi)/log(Si) ; ; log(Pi)=log(Si)*log(P0)/log(S0) ; ; log(Pi)=log(P0^(log(Si)/log(S0))) ; ; Pi=P0^(log(Si)/log(S0)) ; ; Given the sum of all Pi is 1.0 we have: ; ; P0+P0^(log(S1)/log(S0))+P0^(log(S2)/log(S0))+....+P0^(log(Sn)/log(S0))=1.0 ; ; If we take transform 0 as the one with the largest scale (S0) then we can ; perform a simple binary search to solve the above. ; ; ; |x,y,0,1||m2r0c0*m1r0c0+m2r0c1*m1r1c0+m2r0c2*m1r2c0 ; m2r0c0*m1r0c1+m2r0c1*m1r1c1+m2r0c2*m1r2c1 ; m2r0c0*m1r0c2+m2r0c1*m1r1c2+m2r0c2*m1r2c2 | ; |m2r1c0*m1r0c0+m2r1c1*m1r1c0+m2r1c2*m1r2c0 ; m2r1c0*m1r0c1+m2r1c1*m1r1c1+m2r1c2*m1r2c1 ; m2r1c0*m1r0c2+m2r1c1*m1r1c2+m2r1c2*m1r2c2 | ; |m2r2c0*m1r0c0+m2r2c1*m1r1c0+m2r2c2*m1r2c0 (0) ; m2r2c0*m1r0c1+m2r2c1*m1r1c1+m2r2c2*m1r2c1 (0) ; m2r2c0*m1r0c2+m2r2c1*m1r1c2+m2r2c2*m1r2c2 (0) | ; |-camdist*m1r2c0 + tx ; -camdist*m1r2c1 + ty ; -camdist*m1r2c2 + tz | ; ; |x,y,0,1|| m1r0c0 m1r0c1 0 0 || m0r0c0 m0r0c1 m0r0c2 0 | ; | m1r1c0 m1r1c1 0 0 || m0r1c0 m0r1c1 m0r1c2 0 | ; | 0 0 0 0 || m0r2c0 m0r2c1 m0r2c2 0 | ; | realc imagc 0 1 || m0r3c0 m0r3c1 m0r3c2 1 | ; ; |x,y,0,1|| m1r0c0*m0r0c0 + m1r0c1*m0r1c0 ; m1r0c0*m0r0c1 + m1r0c1*m0r1c1 ; m1r0c0*m0r0c2 + m1r0c1*m0r1c2 | ; | m1r1c0*m0r0c0 + m1r1c1*m0r1c0 ; m1r1c0*m0r0c1 + m1r1c1*m0r1c1 ; m1r1c0*m0r0c2 + m1r1c1*m0r1c2 | ; | 0 0 0 | ; | realc*m0r0c0+imagc*m0r1c0+m0r3c0 ; realc*m0r0c1+imagc*m0r1c1+m0r3c1 ; realc*m0r0c2+imagc*m0r1c2+m0r3c2 | ; global: if @showinfo $define DEBUG endif float crad = #pi/180.0 ; for conversion to rads float ltx[6] float lty[6] float ltz[6] float ld[6] float le[6] float ls[6] float lsr[6] float lsg[6] float lsb[6] float lsh[6] float gx float gy float gz int lt[6] int la[6] int gi int gj if @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 lt[0] = @light1 ls[0] = @l1str lsr[0] = @l1strr lsg[0] = @l1strg lsb[0] = @l1strb la[0] = @l1meth ltx[0] = real(@l1xy) lty[0] = imag(@l1xy) ltz[0] = @l1z if @l1cam ld[0] = real(@l1rot) + real(@crot) le[0] = imag(@l1rot) + imag(@crot) else ld[0] = real(@l1rot) le[0] = imag(@l1rot) endif lsh[0] = 1.0 - @lsh1 lt[1] = @light2 ls[1] = @l2str lsr[1] = @l2strr lsg[1] = @l2strg lsb[1] = @l2strb la[1] = @l2meth ltx[1] = real(@l2xy) lty[1] = imag(@l2xy) ltz[1] = @l2z if @l2cam ld[1] = real(@l2rot) + real(@crot) le[1] = imag(@l2rot) + imag(@crot) else ld[1] = real(@l2rot) le[1] = imag(@l2rot) endif lsh[1] = 1.0 - @lsh2 lt[2] = @light3 ls[2] = @l3str lsr[2] = @l3strr lsg[2] = @l3strg lsb[2] = @l3strb la[2] = @l3meth ltx[2] = real(@l3xy) lty[2] = imag(@l3xy) ltz[2] = @l3z if @l3cam ld[2] = real(@l3rot) + real(@crot) le[2] = imag(@l3rot) + imag(@crot) else ld[2] = real(@l3rot) le[2] = imag(@l3rot) endif lsh[2] = 1.0 - @lsh3 lt[3] = @light4 ls[3] = @l4str lsr[3] = @l4strr lsg[3] = @l4strg lsb[3] = @l4strb la[3] = @l4meth ltx[3] = real(@l4xy) lty[3] = imag(@l4xy) ltz[3] = @l4z if @l4cam ld[3] = real(@l4rot) + real(@crot) le[3] = imag(@l4rot) + imag(@crot) else ld[3] = real(@l4rot) le[3] = imag(@l4rot) endif lsh[3] = 1.0 - @lsh4 lt[4] = @light5 ls[4] = @l5str lsr[4] = @l5strr lsg[4] = @l5strg lsb[4] = @l5strb la[4] = @l5meth ltx[4] = real(@l5xy) lty[4] = imag(@l5xy) ltz[4] = @l5z if @l5cam ld[4] = real(@l5rot) + real(@crot) le[4] = imag(@l5rot) + imag(@crot) else ld[4] = real(@l5rot) le[4] = imag(@l5rot) endif lsh[4] = 1.0 - @lsh5 lt[5] = @light6 ls[5] = @l6str lsr[5] = @l6strr lsg[5] = @l6strg lsb[5] = @l6strb la[5] = @l6meth ltx[5] = real(@l6xy) lty[5] = imag(@l6xy) ltz[5] = @l6z if @l6cam ld[5] = real(@l6rot) + real(@crot) le[5] = imag(@l6rot) + imag(@crot) else ld[5] = real(@l6rot) le[5] = imag(@l6rot) endif lsh[5] = 1.0 - @lsh6 endif float ca = imag(@crot)*crad ; camera elevation around target float sa = sin(ca) ca = cos(ca) float cb = -real(@crot)*crad ; camera direction around target float sb = sin(cb) cb = cos(cb) ; Get matrix to rotate around target ; and translate to coords relative to camera ; "lens" coords are x,y,-@camdist float m1r0c0 = cb float m1r0c1 = 0.0 float m1r0c2 = -sb float m1r1c0 = sa*sb float m1r1c1 = ca float m1r1c2 = sa*cb float m1r2c0 = ca*sb float m1r2c1 = -sa float m1r2c2 = ca*cb ; Get matrix to rotate camera away from target ca = -imag(@trot)*crad ; camera elevation away from target sa = sin(ca) ca = cos(ca) cb = real(@trot)*crad ; camera direction away from target sb = sin(cb) cb = cos(cb) ; Get matrix to rotate the target around the camera ; i.e. rotating the camera direction away from the original target float m2r0c0 = cb float m2r0c1 = 0.0 float m2r0c2 = -sb float m2r1c0 = sa*sb float m2r1c1 = ca float m2r1c2 = sa*cb float m2r2c0 = ca*sb float m2r2c1 = -sa float m2r2c2 = ca*cb float m0r0c0 = m2r0c0*m1r0c0 + m2r0c1*m1r1c0 + m2r0c2*m1r2c0 float m0r0c1 = m2r0c0*m1r0c1 + m2r0c1*m1r1c1 + m2r0c2*m1r2c1 float m0r0c2 = m2r0c0*m1r0c2 + m2r0c1*m1r1c2 + m2r0c2*m1r2c2 float m0r1c0 = m2r1c0*m1r0c0 + m2r1c1*m1r1c0 + m2r1c2*m1r2c0 float m0r1c1 = m2r1c0*m1r0c1 + m2r1c1*m1r1c1 + m2r1c2*m1r2c1 float m0r1c2 = m2r1c0*m1r0c2 + m2r1c1*m1r1c2 + m2r1c2*m1r2c2 float sx = m2r2c0*m1r0c0 + m2r2c1*m1r1c0 + m2r2c2*m1r2c0 float sy = m2r2c0*m1r0c1 + m2r2c1*m1r1c1 + m2r2c2*m1r2c1 float sz = m2r2c0*m1r0c2 + m2r2c1*m1r1c2 + m2r2c2*m1r2c2 float m0r3c0 = real(@txy)-@camdist*m1r2c0 float m0r3c1 = imag(@txy)-@camdist*m1r2c1 float m0r3c2 = @tzw-@camdist*m1r2c2 float cx = 0.0 float cy = 0.0 float cz = 0.0 if @camlight==1 cz = -@campoint cx = cz*sx + m0r3c0 cy = cz*sy + m0r3c1 cz = cz*sz + m0r3c2 endif float tl = @amb + @ambl + @diff + @spec int nl = 1 if @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 if @lighting==2 || @lighting==4 tl = @camstr nl = 2 + @numlights else tl = 0.0 nl = 1 + @numlights endif gi = @numlights repeat tl = tl + ls[gi] if la[gi]==0 gx = ltx[gi] - real(@txy) gy = lty[gi] - imag(@txy) gz = ltz[gi] - @tzw else gx = ltx[gi] gy = lty[gi] gz = ltz[gi] endif ca = le[gi]*crad ; camera elevation away from target sa = sin(ca) ca = cos(ca) cb = -ld[gi]*crad ; camera direction away from target sb = sin(cb) cb = cos(cb) m2r0c0 = cb m2r0c1 = 0.0 m2r0c2 = -sb m2r1c0 = sa*sb m2r1c1 = ca m2r1c2 = sa*cb m2r2c0 = ca*sb m2r2c1 = -sa m2r2c2 = ca*cb ltx[gi] = gx*m2r0c0 + gy*m2r1c0 + gz*m2r2c0 lty[gi] = gx*m2r0c1 + gy*m2r1c1 + gz*m2r2c1 ltz[gi] = gx*m2r0c2 + gy*m2r1c2 + gz*m2r2c2 if lt[gi]==0 gx = -1.0/sqrt(ltx[gi]*ltx[gi] + lty[gi]*lty[gi] + ltz[gi]*ltz[gi]) ltx[gi] = gx*ltx[gi] lty[gi] = gx*lty[gi] ltz[gi] = gx*ltz[gi] else ltx[gi] = real(@txy) + ltx[gi] lty[gi] = imag(@txy) + lty[gi] ltz[gi] = @tzw + ltz[gi] endif until (gi=gi-1)<0 if @version==0 tl = tl*(@amb + @diff + @spec) else tl = @amb + tl*(@ambl + @diff + @spec) endif endif ; For perspective rendering get the viewpoint float vx = sx float vy = sy float vz = sz if @render==1 vz = -@ip else vz = -1e10 endif vx = vz*sx + m0r3c0 vy = vz*sy + m0r3c1 vz = vz*sz + m0r3c2 ; Get Ultrafractal Location transformation ; and combine with viewing matrix ca = cos(#angle) sa = sin(#angle) cb = tan(-#skew) if (4.0*#height<3.0*#width) sb=3.0/(#magn*#height) else sb=4.0/(#magn*#width) endif m1r1c1 = 1.0/#stretch ca = ca*sb sa = sa*sb m1r0c0 = ca*m1r1c1 m1r0c1 = sa*m1r1c1 m1r1c0 = ca*cb*m1r1c1 - sa m1r1c1 = ca + cb*sa*m1r1c1 m2r0c0 = m1r0c0*m0r0c0 + m1r0c1*m0r1c0 m2r0c1 = m1r0c0*m0r0c1 + m1r0c1*m0r1c1 m2r0c2 = m1r0c0*m0r0c2 + m1r0c1*m0r1c2 m2r1c0 = m1r1c0*m0r0c0 + m1r1c1*m0r1c0 m2r1c1 = m1r1c0*m0r0c1 + m1r1c1*m0r1c1 m2r1c2 = m1r1c0*m0r0c2 + m1r1c1*m0r1c2 m2r2c0 = real(#center)*m0r0c0+imag(#center)*m0r1c0+m0r3c0 m2r2c1 = real(#center)*m0r0c1+imag(#center)*m0r1c1+m0r3c1 m2r2c2 = real(#center)*m0r0c2+imag(#center)*m0r1c2+m0r3c2 if @render==1 m2r2c0 = m2r2c0 - vx m2r2c1 = m2r2c1 - vy m2r2c2 = m2r2c2 - vz endif float xc1 = 0.0 float yc1 = 0.0 float zc1 = 0.0 float xc2 = 0.0 float yc2 = 0.0 float zc2 = 0.0 float c1r0c0 = 0.0 float c1r0c1 = 0.0 float c1r0c2 = 0.0 float c1r1c0 = 0.0 float c1r1c1 = 0.0 float c1r1c2 = 0.0 float c1r2c0 = 0.0 float c1r2c1 = 0.0 float c1r2c2 = 0.0 float cliprad = @clip4radius*@clip4radius if @clip4 xc2 = real(@clip4xy) yc2 = imag(@clip4xy) zc2 = @clip4z if @clip4type==0 xc2 = xc2 - real(@txy) yc2 = yc2 - imag(@txy) zc2 = zc2 - @tzw endif ca = imag(@clip4rot)*crad sa = sin(ca) ca = cos(ca) cb = -real(@clip4rot)*crad sb = sin(cb) cb = cos(cb) c1r0c0 = cb c1r0c1 = 0.0 c1r0c2 = -sb c1r1c0 = sa*sb c1r1c1 = ca c1r1c2 = sa*cb c1r2c0 = ca*sb c1r2c1 = -sa c1r2c2 = ca*cb ca = xc2*c1r0c0 + yc2*c1r1c0 + zc2*c1r2c0 + real(@txy) sa = xc2*c1r0c1 + yc2*c1r1c1 + zc2*c1r2c1 + imag(@txy) zc2 = xc2*c1r0c2 + yc2*c1r1c2 + zc2*c1r2c2 + @tzw xc2 = ca yc2 = sa endif if @clip1 || @clip2 || @clip3 xc1 = real(@clip1xy) yc1 = imag(@clip1xy) zc1 = @clip1z if @clip1type==0 xc1 = xc1 - real(@txy) yc1 = yc1 - imag(@txy) zc1 = zc1 - @tzw endif ca = imag(@clip1rot)*crad sa = sin(ca) ca = cos(ca) cb = -real(@clip1rot)*crad sb = sin(cb) cb = cos(cb) c1r0c0 = cb c1r0c1 = 0.0 c1r0c2 = -sb c1r1c0 = sa*sb c1r1c1 = ca c1r1c2 = sa*cb c1r2c0 = ca*sb c1r2c1 = -sa c1r2c2 = ca*cb ca = xc1*c1r0c0 + yc1*c1r1c0 + zc1*c1r2c0 + real(@txy) sa = xc1*c1r0c1 + yc1*c1r1c1 + zc1*c1r2c1 + imag(@txy) zc1 = xc1*c1r0c2 + yc1*c1r1c2 + zc1*c1r2c2 + @tzw xc1 = ca yc1 = sa ca = imag(@clip1orient)*crad sa = sin(ca) ca = cos(ca) cb = -real(@clip1orient)*crad sb = sin(cb) cb = cos(cb) c1r0c0 = cb c1r0c1 = sa*sb c1r0c2 = ca*sb c1r1c0 = 0 c1r1c1 = ca c1r1c2 = -sa c1r2c0 = -sb c1r2c1 = sa*cb c1r2c2 = ca*cb endif ; Set up the Transformations bool gf[31,31] ; flags for RIFS bool gg = false ; flag for "any forbidden combinations" bool gh = false ; spare flag int gv[32,4] ; priority, RIFS code, colour, Transformation number (one extra) int gp[10] ; transform priorities int gn[31,31] ; "next transformation" values float gt[31,13] ; Transformations, scale float gtt[12] ; Overall Transformation float gtemp[12] ; temp transformation float gs[31,31] ; For second level scales if any forbidden combinations float gtc[31] ; for the genetics transform colours float gdx[31] ; for auto-priority mode float gus[31] ; for user scales bool df[31,217] ; depth flags int gcount[31] ; iteration counts (consecutive) int gcount1[31] ; iteration counts (total) float gd = 0.0 ; the fractal dimension float gu = 1.0 float gw gx = 1.0 float gtempx[31,31] float gtempy[31,31] float gtempz[31,31] float gtestx = real(@coordxy) float gtesty = imag(@coordxy) float gtestz = @coordz float gdist = @minval*@minval float minscale = @dscale*1e-4 float gax[31] float gay[31] float gaz[31] float sep = @separation ; Extra scan distance for lighting and tracing float onepix = @onepix ; Solid separation for lighting purposes float lpwr1 = 0.02*@lpwr1*@lpwr/#pi int gnt = 0 ; number of active transformations int gntm1 = 0 ; last active transformation int gft = 0 ; the first transform at depth 0 int gk = 0 int gl if @fixall || @fixsep || @fixdist || @fixpix gy = 1.0/(#magn*sqrt(3.2552083333333333333333333333333e-6*#width*#height)) if @fixall || @fixsep sep = gy*sep endif if @fixall || @fixdist minscale = gy*minscale endif if @fixall || @fixpix onepix = gy*onepix endif endif gi = 30 repeat gj = 200 repeat df[gi,gj] = true until (gj=gj-1)<0 until (gi=gi-1)<0 if @use1 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==1) if @useskips gj = 1073741824 gi = 30 gk = @skip1mask1 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip1mask2 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip1mask3 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip1mask4 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip1mask5 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip1mask6 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip1mask7 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[0,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp1 ; Transformation priority gv[gnt,1] = @tf1 ; RIFS code if @showtrans==0 || @showtrans==1 gv[gnt,2] = 10 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 0 ; Transformation number if @sp gtc[gnt] = log(@tc1) else gtc[gnt] = @tc1 endif ; transform priorities gp[0] = @sx1p gp[1] = @sy1p gp[2] = @sz1p gp[3] = @rx1p gp[4] = @ry1p gp[5] = @rz1p gp[6] = @shx1p gp[7] = @shy1p gp[8] = @shz1p gp[9] = @m1p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx1 + @tx32 gt[gnt,10] = @ty1 + @ty32 gt[gnt,11] = @tz1 + @tz32 else gt[gnt,9] = @tx1 gt[gnt,10] = @ty1 gt[gnt,11] = @tz1 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem1 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx1+@sx32) else gx = 0.01*@sx1 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy1+@sy32) else gx = 0.01*@sy1 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz1+@sz32) else gx = 0.01*@sz1 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx1+@rx32)*crad else ca = -@rx1*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry1+@ry32)*crad else ca = -@ry1*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz1+@rz32)*crad else ca = @rz1*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx1+@shx32)*crad else ca = -@shx1*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy1+@shy32)*crad else ca = -@shy1*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz1+@shz32)*crad else ca = @shz1*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t1r0c0 + gtemp[1]*@t1r1c0 + gtemp[2]*@t1r2c0 gt[gnt,1] = gtemp[0]*@t1r0c1 + gtemp[1]*@t1r1c1 + gtemp[2]*@t1r2c1 gt[gnt,2] = gtemp[0]*@t1r0c2 + gtemp[1]*@t1r1c2 + gtemp[2]*@t1r2c2 gt[gnt,3] = gtemp[3]*@t1r0c0 + gtemp[4]*@t1r1c0 + gtemp[5]*@t1r2c0 gt[gnt,4] = gtemp[3]*@t1r0c1 + gtemp[4]*@t1r1c1 + gtemp[5]*@t1r2c1 gt[gnt,5] = gtemp[3]*@t1r0c2 + gtemp[4]*@t1r1c2 + gtemp[5]*@t1r2c2 gt[gnt,6] = gtemp[6]*@t1r0c0 + gtemp[7]*@t1r1c0 + gtemp[8]*@t1r2c0 gt[gnt,7] = gtemp[6]*@t1r0c1 + gtemp[7]*@t1r1c1 + gtemp[8]*@t1r2c1 gt[gnt,8] = gtemp[6]*@t1r0c2 + gtemp[7]*@t1r1c2 + gtemp[8]*@t1r2c2 endif endif until gj>=100 if @it1 gt[gnt,9] = gt[gnt,9] +@itx1*gt[gnt,0]+@ity1*gt[gnt,3]+@itz1*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx1*gt[gnt,1]+@ity1*gt[gnt,4]+@itz1*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx1*gt[gnt,2]+@ity1*gt[gnt,5]+@itz1*gt[gnt,8] endif if @usecount1 gcount[gnt] = @count1 else gcount[gnt] = @igen + 1 endif if @usetotal1 gcount1[gnt] = @total1 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us1 gnt = gnt + 1 endif ; Transform disabled due to depth skipping endif ; @use1 if @use2 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==2) if @useskips gj = 1073741824 gi = 30 gk = @skip2mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip2mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip2mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip2mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip2mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip2mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip2mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp2 ; Transformation priority gv[gnt,1] = @tf2 ; RIFS code if @showtrans==0 || @showtrans==2 gv[gnt,2] = 20 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 1 ; Transformation number if @sp gtc[gnt] = log(@tc2) else gtc[gnt] = @tc2 endif ; transform priorities gp[0] = @sx2p gp[1] = @sy2p gp[2] = @sz2p gp[3] = @rx2p gp[4] = @ry2p gp[5] = @rz2p gp[6] = @shx2p gp[7] = @shy2p gp[8] = @shz2p gp[9] = @m2p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx2 + @tx32 gt[gnt,10] = @ty2 + @ty32 gt[gnt,11] = @tz2 + @tz32 else gt[gnt,9] = @tx2 gt[gnt,10] = @ty2 gt[gnt,11] = @tz2 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem2 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx2+@sx32) else gx = 0.01*@sx2 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy2+@sy32) else gx = 0.01*@sy2 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz2+@sz32) else gx = 0.01*@sz2 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx2+@rx32)*crad else ca = -@rx2*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry2+@ry32)*crad else ca = -@ry2*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz2+@rz32)*crad else ca = @rz2*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx2+@shx32)*crad else ca = -@shx2*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy2+@shy32)*crad else ca = -@shy2*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz2+@shz32)*crad else ca = @shz2*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t2r0c0 + gtemp[1]*@t2r1c0 + gtemp[2]*@t2r2c0 gt[gnt,1] = gtemp[0]*@t2r0c1 + gtemp[1]*@t2r1c1 + gtemp[2]*@t2r2c1 gt[gnt,2] = gtemp[0]*@t2r0c2 + gtemp[1]*@t2r1c2 + gtemp[2]*@t2r2c2 gt[gnt,3] = gtemp[3]*@t2r0c0 + gtemp[4]*@t2r1c0 + gtemp[5]*@t2r2c0 gt[gnt,4] = gtemp[3]*@t2r0c1 + gtemp[4]*@t2r1c1 + gtemp[5]*@t2r2c1 gt[gnt,5] = gtemp[3]*@t2r0c2 + gtemp[4]*@t2r1c2 + gtemp[5]*@t2r2c2 gt[gnt,6] = gtemp[6]*@t2r0c0 + gtemp[7]*@t2r1c0 + gtemp[8]*@t2r2c0 gt[gnt,7] = gtemp[6]*@t2r0c1 + gtemp[7]*@t2r1c1 + gtemp[8]*@t2r2c1 gt[gnt,8] = gtemp[6]*@t2r0c2 + gtemp[7]*@t2r1c2 + gtemp[8]*@t2r2c2 endif endif until gj>=100 if @it2 gt[gnt,9] = gt[gnt,9] +@itx2*gt[gnt,0]+@ity2*gt[gnt,3]+@itz2*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx2*gt[gnt,1]+@ity2*gt[gnt,4]+@itz2*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx2*gt[gnt,2]+@ity2*gt[gnt,5]+@itz2*gt[gnt,8] endif if @usecount2 gcount[gnt] = @count2 else gcount[gnt] = @igen + 1 endif if @usetotal2 gcount1[gnt] = @total2 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us2 gnt = gnt + 1 endif endif ; @use2 if @use3 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==3) if @useskips gj = 1073741824 gi = 30 gk = @skip3mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip3mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip3mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip3mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip3mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip3mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip3mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp3 ; Transformation priority gv[gnt,1] = @tf3 ; RIFS code if @showtrans==0 || @showtrans==3 gv[gnt,2] = 30 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 2 ; Transformation number if @sp gtc[gnt] = log(@tc3) else gtc[gnt] = @tc3 endif ; transform priorities gp[0] = @sx3p gp[1] = @sy3p gp[2] = @sz3p gp[3] = @rx3p gp[4] = @ry3p gp[5] = @rz3p gp[6] = @shx3p gp[7] = @shy3p gp[8] = @shz3p gp[9] = @m3p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx3 + @tx32 gt[gnt,10] = @ty3 + @ty32 gt[gnt,11] = @tz3 + @tz32 else gt[gnt,9] = @tx3 gt[gnt,10] = @ty3 gt[gnt,11] = @tz3 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem3 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx3+@sx32) else gx = 0.01*@sx3 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy3+@sy32) else gx = 0.01*@sy3 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz3+@sz32) else gx = 0.01*@sz3 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx3+@rx32)*crad else ca = -@rx3*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry3+@ry32)*crad else ca = -@ry3*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz3+@rz32)*crad else ca = @rz3*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx3+@shx32)*crad else ca = -@shx3*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy3+@shy32)*crad else ca = -@shy3*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz3+@shz32)*crad else ca = @shz3*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t3r0c0 + gtemp[1]*@t3r1c0 + gtemp[2]*@t3r2c0 gt[gnt,1] = gtemp[0]*@t3r0c1 + gtemp[1]*@t3r1c1 + gtemp[2]*@t3r2c1 gt[gnt,2] = gtemp[0]*@t3r0c2 + gtemp[1]*@t3r1c2 + gtemp[2]*@t3r2c2 gt[gnt,3] = gtemp[3]*@t3r0c0 + gtemp[4]*@t3r1c0 + gtemp[5]*@t3r2c0 gt[gnt,4] = gtemp[3]*@t3r0c1 + gtemp[4]*@t3r1c1 + gtemp[5]*@t3r2c1 gt[gnt,5] = gtemp[3]*@t3r0c2 + gtemp[4]*@t3r1c2 + gtemp[5]*@t3r2c2 gt[gnt,6] = gtemp[6]*@t3r0c0 + gtemp[7]*@t3r1c0 + gtemp[8]*@t3r2c0 gt[gnt,7] = gtemp[6]*@t3r0c1 + gtemp[7]*@t3r1c1 + gtemp[8]*@t3r2c1 gt[gnt,8] = gtemp[6]*@t3r0c2 + gtemp[7]*@t3r1c2 + gtemp[8]*@t3r2c2 endif endif until gj>=100 if @it3 gt[gnt,9] = gt[gnt,9] +@itx3*gt[gnt,0]+@ity3*gt[gnt,3]+@itz3*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx3*gt[gnt,1]+@ity3*gt[gnt,4]+@itz3*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx3*gt[gnt,2]+@ity3*gt[gnt,5]+@itz3*gt[gnt,8] endif if @usecount3 gcount[gnt] = @count3 else gcount[gnt] = @igen + 1 endif if @usetotal3 gcount1[gnt] = @total3 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us3 gnt = gnt + 1 endif endif ; @use3 if @use4 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==4) if @useskips gj = 1073741824 gi = 30 gk = @skip4mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip4mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip4mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip4mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip4mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip4mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip4mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp4 ; Transformation priority gv[gnt,1] = @tf4 ; RIFS code if @showtrans==0 || @showtrans==4 gv[gnt,2] = 40 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 3 ; Transformation number if @sp gtc[gnt] = log(@tc4) else gtc[gnt] = @tc4 endif ; transform priorities gp[0] = @sx4p gp[1] = @sy4p gp[2] = @sz4p gp[3] = @rx4p gp[4] = @ry4p gp[5] = @rz4p gp[6] = @shx4p gp[7] = @shy4p gp[8] = @shz4p gp[9] = @m4p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx4 + @tx32 gt[gnt,10] = @ty4 + @ty32 gt[gnt,11] = @tz4 + @tz32 else gt[gnt,9] = @tx4 gt[gnt,10] = @ty4 gt[gnt,11] = @tz4 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem4 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx4+@sx32) else gx = 0.01*@sx4 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy4+@sy32) else gx = 0.01*@sy4 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz4+@sz32) else gx = 0.01*@sz4 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx4+@rx32)*crad else ca = -@rx4*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry4+@ry32)*crad else ca = -@ry4*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz4+@rz32)*crad else ca = @rz4*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx4+@shx32)*crad else ca = -@shx4*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy4+@shy32)*crad else ca = -@shy4*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz4+@shz32)*crad else ca = @shz4*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t4r0c0 + gtemp[1]*@t4r1c0 + gtemp[2]*@t4r2c0 gt[gnt,1] = gtemp[0]*@t4r0c1 + gtemp[1]*@t4r1c1 + gtemp[2]*@t4r2c1 gt[gnt,2] = gtemp[0]*@t4r0c2 + gtemp[1]*@t4r1c2 + gtemp[2]*@t4r2c2 gt[gnt,3] = gtemp[3]*@t4r0c0 + gtemp[4]*@t4r1c0 + gtemp[5]*@t4r2c0 gt[gnt,4] = gtemp[3]*@t4r0c1 + gtemp[4]*@t4r1c1 + gtemp[5]*@t4r2c1 gt[gnt,5] = gtemp[3]*@t4r0c2 + gtemp[4]*@t4r1c2 + gtemp[5]*@t4r2c2 gt[gnt,6] = gtemp[6]*@t4r0c0 + gtemp[7]*@t4r1c0 + gtemp[8]*@t4r2c0 gt[gnt,7] = gtemp[6]*@t4r0c1 + gtemp[7]*@t4r1c1 + gtemp[8]*@t4r2c1 gt[gnt,8] = gtemp[6]*@t4r0c2 + gtemp[7]*@t4r1c2 + gtemp[8]*@t4r2c2 endif endif until gj>=100 if @it4 gt[gnt,9] = gt[gnt,9] +@itx4*gt[gnt,0]+@ity4*gt[gnt,3]+@itz4*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx4*gt[gnt,1]+@ity4*gt[gnt,4]+@itz4*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx4*gt[gnt,2]+@ity4*gt[gnt,5]+@itz4*gt[gnt,8] endif if @usecount4 gcount[gnt] = @count4 else gcount[gnt] = @igen + 1 endif if @usetotal4 gcount1[gnt] = @total4 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us4 gnt = gnt + 1 endif endif ; @use4 if @use5 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==5) if @useskips gj = 1073741824 gi = 30 gk = @skip5mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip5mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip5mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip5mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip5mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip5mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip5mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp5 ; Transformation priority gv[gnt,1] = @tf5 ; RIFS code if @showtrans==0 || @showtrans==5 gv[gnt,2] = 50 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 4 ; Transformation number if @sp gtc[gnt] = log(@tc5) else gtc[gnt] = @tc5 endif ; transform priorities gp[0] = @sx5p gp[1] = @sy5p gp[2] = @sz5p gp[3] = @rx5p gp[4] = @ry5p gp[5] = @rz5p gp[6] = @shx5p gp[7] = @shy5p gp[8] = @shz5p gp[9] = @m5p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx5 + @tx32 gt[gnt,10] = @ty5 + @ty32 gt[gnt,11] = @tz5 + @tz32 else gt[gnt,9] = @tx5 gt[gnt,10] = @ty5 gt[gnt,11] = @tz5 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem5 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx5+@sx32) else gx = 0.01*@sx5 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy5+@sy32) else gx = 0.01*@sy5 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz5+@sz32) else gx = 0.01*@sz5 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx5+@rx32)*crad else ca = -@rx5*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry5+@ry32)*crad else ca = -@ry5*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz5+@rz32)*crad else ca = @rz5*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx5+@shx32)*crad else ca = -@shx5*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy5+@shy32)*crad else ca = -@shy5*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz5+@shz32)*crad else ca = @shz5*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t5r0c0 + gtemp[1]*@t5r1c0 + gtemp[2]*@t5r2c0 gt[gnt,1] = gtemp[0]*@t5r0c1 + gtemp[1]*@t5r1c1 + gtemp[2]*@t5r2c1 gt[gnt,2] = gtemp[0]*@t5r0c2 + gtemp[1]*@t5r1c2 + gtemp[2]*@t5r2c2 gt[gnt,3] = gtemp[3]*@t5r0c0 + gtemp[4]*@t5r1c0 + gtemp[5]*@t5r2c0 gt[gnt,4] = gtemp[3]*@t5r0c1 + gtemp[4]*@t5r1c1 + gtemp[5]*@t5r2c1 gt[gnt,5] = gtemp[3]*@t5r0c2 + gtemp[4]*@t5r1c2 + gtemp[5]*@t5r2c2 gt[gnt,6] = gtemp[6]*@t5r0c0 + gtemp[7]*@t5r1c0 + gtemp[8]*@t5r2c0 gt[gnt,7] = gtemp[6]*@t5r0c1 + gtemp[7]*@t5r1c1 + gtemp[8]*@t5r2c1 gt[gnt,8] = gtemp[6]*@t5r0c2 + gtemp[7]*@t5r1c2 + gtemp[8]*@t5r2c2 endif endif until gj>=100 if @it5 gt[gnt,9] = gt[gnt,9] +@itx5*gt[gnt,0]+@ity5*gt[gnt,3]+@itz5*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx5*gt[gnt,1]+@ity5*gt[gnt,4]+@itz5*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx5*gt[gnt,2]+@ity5*gt[gnt,5]+@itz5*gt[gnt,8] endif if @usecount5 gcount[gnt] = @count5 else gcount[gnt] = @igen + 1 endif if @usetotal5 gcount1[gnt] = @total5 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us5 gnt = gnt + 1 endif endif ; @use5 if @use6 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==6) if @useskips gj = 1073741824 gi = 30 gk = @skip6mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip6mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip6mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip6mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip6mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip6mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip6mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp6 ; Transformation priority gv[gnt,1] = @tf6 ; RIFS code if @showtrans==0 || @showtrans==6 gv[gnt,2] = 60 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 5 ; Transformation number if @sp gtc[gnt] = log(@tc6) else gtc[gnt] = @tc6 endif ; transform priorities gp[0] = @sx6p gp[1] = @sy6p gp[2] = @sz6p gp[3] = @rx6p gp[4] = @ry6p gp[5] = @rz6p gp[6] = @shx6p gp[7] = @shy6p gp[8] = @shz6p gp[9] = @m6p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx6 + @tx32 gt[gnt,10] = @ty6 + @ty32 gt[gnt,11] = @tz6 + @tz32 else gt[gnt,9] = @tx6 gt[gnt,10] = @ty6 gt[gnt,11] = @tz6 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem6 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx6+@sx32) else gx = 0.01*@sx6 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy6+@sy32) else gx = 0.01*@sy6 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz6+@sz32) else gx = 0.01*@sz6 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx6+@rx32)*crad else ca = -@rx6*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry6+@ry32)*crad else ca = -@ry6*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz6+@rz32)*crad else ca = @rz6*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx6+@shx32)*crad else ca = -@shx6*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy6+@shy32)*crad else ca = -@shy6*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz6+@shz32)*crad else ca = @shz6*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t6r0c0 + gtemp[1]*@t6r1c0 + gtemp[2]*@t6r2c0 gt[gnt,1] = gtemp[0]*@t6r0c1 + gtemp[1]*@t6r1c1 + gtemp[2]*@t6r2c1 gt[gnt,2] = gtemp[0]*@t6r0c2 + gtemp[1]*@t6r1c2 + gtemp[2]*@t6r2c2 gt[gnt,3] = gtemp[3]*@t6r0c0 + gtemp[4]*@t6r1c0 + gtemp[5]*@t6r2c0 gt[gnt,4] = gtemp[3]*@t6r0c1 + gtemp[4]*@t6r1c1 + gtemp[5]*@t6r2c1 gt[gnt,5] = gtemp[3]*@t6r0c2 + gtemp[4]*@t6r1c2 + gtemp[5]*@t6r2c2 gt[gnt,6] = gtemp[6]*@t6r0c0 + gtemp[7]*@t6r1c0 + gtemp[8]*@t6r2c0 gt[gnt,7] = gtemp[6]*@t6r0c1 + gtemp[7]*@t6r1c1 + gtemp[8]*@t6r2c1 gt[gnt,8] = gtemp[6]*@t6r0c2 + gtemp[7]*@t6r1c2 + gtemp[8]*@t6r2c2 endif endif until gj>=100 if @it6 gt[gnt,9] = gt[gnt,9] +@itx6*gt[gnt,0]+@ity6*gt[gnt,3]+@itz6*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx6*gt[gnt,1]+@ity6*gt[gnt,4]+@itz6*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx6*gt[gnt,2]+@ity6*gt[gnt,5]+@itz6*gt[gnt,8] endif if @usecount6 gcount[gnt] = @count6 else gcount[gnt] = @igen + 1 endif if @usetotal6 gcount1[gnt] = @total6 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us6 gnt = gnt + 1 endif endif ; @use6 if @use7 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==7) if @useskips gj = 1073741824 gi = 30 gk = @skip7mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip7mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip7mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip7mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip7mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip7mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip7mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp7 ; Transformation priority gv[gnt,1] = @tf7 ; RIFS code if @showtrans==0 || @showtrans==7 gv[gnt,2] = 70 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 6 ; Transformation number if @sp gtc[gnt] = log(@tc7) else gtc[gnt] = @tc7 endif ; transform priorities gp[0] = @sx7p gp[1] = @sy7p gp[2] = @sz7p gp[3] = @rx7p gp[4] = @ry7p gp[5] = @rz7p gp[6] = @shx7p gp[7] = @shy7p gp[8] = @shz7p gp[9] = @m7p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx7 + @tx32 gt[gnt,10] = @ty7 + @ty32 gt[gnt,11] = @tz7 + @tz32 else gt[gnt,9] = @tx7 gt[gnt,10] = @ty7 gt[gnt,11] = @tz7 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem7 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx7+@sx32) else gx = 0.01*@sx7 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy7+@sy32) else gx = 0.01*@sy7 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz7+@sz32) else gx = 0.01*@sz7 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx7+@rx32)*crad else ca = -@rx7*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry7+@ry32)*crad else ca = -@ry7*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz7+@rz32)*crad else ca = @rz7*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx7+@shx32)*crad else ca = -@shx7*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy7+@shy32)*crad else ca = -@shy7*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz7+@shz32)*crad else ca = @shz7*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t7r0c0 + gtemp[1]*@t7r1c0 + gtemp[2]*@t7r2c0 gt[gnt,1] = gtemp[0]*@t7r0c1 + gtemp[1]*@t7r1c1 + gtemp[2]*@t7r2c1 gt[gnt,2] = gtemp[0]*@t7r0c2 + gtemp[1]*@t7r1c2 + gtemp[2]*@t7r2c2 gt[gnt,3] = gtemp[3]*@t7r0c0 + gtemp[4]*@t7r1c0 + gtemp[5]*@t7r2c0 gt[gnt,4] = gtemp[3]*@t7r0c1 + gtemp[4]*@t7r1c1 + gtemp[5]*@t7r2c1 gt[gnt,5] = gtemp[3]*@t7r0c2 + gtemp[4]*@t7r1c2 + gtemp[5]*@t7r2c2 gt[gnt,6] = gtemp[6]*@t7r0c0 + gtemp[7]*@t7r1c0 + gtemp[8]*@t7r2c0 gt[gnt,7] = gtemp[6]*@t7r0c1 + gtemp[7]*@t7r1c1 + gtemp[8]*@t7r2c1 gt[gnt,8] = gtemp[6]*@t7r0c2 + gtemp[7]*@t7r1c2 + gtemp[8]*@t7r2c2 endif endif until gj>=100 if @it7 gt[gnt,9] = gt[gnt,9] +@itx7*gt[gnt,0]+@ity7*gt[gnt,3]+@itz7*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx7*gt[gnt,1]+@ity7*gt[gnt,4]+@itz7*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx7*gt[gnt,2]+@ity7*gt[gnt,5]+@itz7*gt[gnt,8] endif if @usecount7 gcount[gnt] = @count7 else gcount[gnt] = @igen + 1 endif if @usetotal7 gcount1[gnt] = @total7 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us7 gnt = gnt + 1 endif endif ; @use7 if @use8 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==8) if @useskips gj = 1073741824 gi = 30 gk = @skip8mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip8mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip8mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip8mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip8mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip8mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip8mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp8 ; Transformation priority gv[gnt,1] = @tf8 ; RIFS code if @showtrans==0 || @showtrans==8 gv[gnt,2] = 80 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 7 ; Transformation number if @sp gtc[gnt] = log(@tc8) else gtc[gnt] = @tc8 endif ; transform priorities gp[0] = @sx8p gp[1] = @sy8p gp[2] = @sz8p gp[3] = @rx8p gp[4] = @ry8p gp[5] = @rz8p gp[6] = @shx8p gp[7] = @shy8p gp[8] = @shz8p gp[9] = @m8p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx8 + @tx32 gt[gnt,10] = @ty8 + @ty32 gt[gnt,11] = @tz8 + @tz32 else gt[gnt,9] = @tx8 gt[gnt,10] = @ty8 gt[gnt,11] = @tz8 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem8 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx8+@sx32) else gx = 0.01*@sx8 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy8+@sy32) else gx = 0.01*@sy8 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz8+@sz32) else gx = 0.01*@sz8 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx8+@rx32)*crad else ca = -@rx8*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry8+@ry32)*crad else ca = -@ry8*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz8+@rz32)*crad else ca = @rz8*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx8+@shx32)*crad else ca = -@shx8*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy8+@shy32)*crad else ca = -@shy8*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz8+@shz32)*crad else ca = @shz8*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t8r0c0 + gtemp[1]*@t8r1c0 + gtemp[2]*@t8r2c0 gt[gnt,1] = gtemp[0]*@t8r0c1 + gtemp[1]*@t8r1c1 + gtemp[2]*@t8r2c1 gt[gnt,2] = gtemp[0]*@t8r0c2 + gtemp[1]*@t8r1c2 + gtemp[2]*@t8r2c2 gt[gnt,3] = gtemp[3]*@t8r0c0 + gtemp[4]*@t8r1c0 + gtemp[5]*@t8r2c0 gt[gnt,4] = gtemp[3]*@t8r0c1 + gtemp[4]*@t8r1c1 + gtemp[5]*@t8r2c1 gt[gnt,5] = gtemp[3]*@t8r0c2 + gtemp[4]*@t8r1c2 + gtemp[5]*@t8r2c2 gt[gnt,6] = gtemp[6]*@t8r0c0 + gtemp[7]*@t8r1c0 + gtemp[8]*@t8r2c0 gt[gnt,7] = gtemp[6]*@t8r0c1 + gtemp[7]*@t8r1c1 + gtemp[8]*@t8r2c1 gt[gnt,8] = gtemp[6]*@t8r0c2 + gtemp[7]*@t8r1c2 + gtemp[8]*@t8r2c2 endif endif until gj>=100 if @it8 gt[gnt,9] = gt[gnt,9] +@itx8*gt[gnt,0]+@ity8*gt[gnt,3]+@itz8*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx8*gt[gnt,1]+@ity8*gt[gnt,4]+@itz8*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx8*gt[gnt,2]+@ity8*gt[gnt,5]+@itz8*gt[gnt,8] endif if @usecount8 gcount[gnt] = @count8 else gcount[gnt] = @igen + 1 endif if @usetotal8 gcount1[gnt] = @total8 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us8 gnt = gnt + 1 endif endif ; @use8 if @use9 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==9) if @useskips gj = 1073741824 gi = 30 gk = @skip9mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip9mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip9mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip9mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip9mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip9mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip9mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp9 ; Transformation priority gv[gnt,1] = @tf9 ; RIFS code if @showtrans==0 || @showtrans==9 gv[gnt,2] = 90 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 8 ; Transformation number if @sp gtc[gnt] = log(@tc9) else gtc[gnt] = @tc9 endif ; transform priorities gp[0] = @sx9p gp[1] = @sy9p gp[2] = @sz9p gp[3] = @rx9p gp[4] = @ry9p gp[5] = @rz9p gp[6] = @shx9p gp[7] = @shy9p gp[8] = @shz9p gp[9] = @m9p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx9 + @tx32 gt[gnt,10] = @ty9 + @ty32 gt[gnt,11] = @tz9 + @tz32 else gt[gnt,9] = @tx9 gt[gnt,10] = @ty9 gt[gnt,11] = @tz9 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem9 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx9+@sx32) else gx = 0.01*@sx9 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy9+@sy32) else gx = 0.01*@sy9 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz9+@sz32) else gx = 0.01*@sz9 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx9+@rx32)*crad else ca = -@rx9*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry9+@ry32)*crad else ca = -@ry9*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz9+@rz32)*crad else ca = @rz9*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx9+@shx32)*crad else ca = -@shx9*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy9+@shy32)*crad else ca = -@shy9*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz9+@shz32)*crad else ca = @shz9*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t9r0c0 + gtemp[1]*@t9r1c0 + gtemp[2]*@t9r2c0 gt[gnt,1] = gtemp[0]*@t9r0c1 + gtemp[1]*@t9r1c1 + gtemp[2]*@t9r2c1 gt[gnt,2] = gtemp[0]*@t9r0c2 + gtemp[1]*@t9r1c2 + gtemp[2]*@t9r2c2 gt[gnt,3] = gtemp[3]*@t9r0c0 + gtemp[4]*@t9r1c0 + gtemp[5]*@t9r2c0 gt[gnt,4] = gtemp[3]*@t9r0c1 + gtemp[4]*@t9r1c1 + gtemp[5]*@t9r2c1 gt[gnt,5] = gtemp[3]*@t9r0c2 + gtemp[4]*@t9r1c2 + gtemp[5]*@t9r2c2 gt[gnt,6] = gtemp[6]*@t9r0c0 + gtemp[7]*@t9r1c0 + gtemp[8]*@t9r2c0 gt[gnt,7] = gtemp[6]*@t9r0c1 + gtemp[7]*@t9r1c1 + gtemp[8]*@t9r2c1 gt[gnt,8] = gtemp[6]*@t9r0c2 + gtemp[7]*@t9r1c2 + gtemp[8]*@t9r2c2 endif endif until gj>=100 if @it9 gt[gnt,9] = gt[gnt,9] +@itx9*gt[gnt,0]+@ity9*gt[gnt,3]+@itz9*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx9*gt[gnt,1]+@ity9*gt[gnt,4]+@itz9*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx9*gt[gnt,2]+@ity9*gt[gnt,5]+@itz9*gt[gnt,8] endif if @usecount9 gcount[gnt] = @count9 else gcount[gnt] = @igen + 1 endif if @usetotal9 gcount1[gnt] = @total9 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us9 gnt = gnt + 1 endif endif ; @use9 if @use10 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==10) if @useskips gj = 1073741824 gi = 30 gk = @skip10mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip10mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip10mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip10mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip10mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip10mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip10mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp10 ; Transformation priority gv[gnt,1] = @tf10 ; RIFS code if @showtrans==0 || @showtrans==10 gv[gnt,2] = 100 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 9 ; Transformation number if @sp gtc[gnt] = log(@tc10) else gtc[gnt] = @tc10 endif ; transform priorities gp[0] = @sx10p gp[1] = @sy10p gp[2] = @sz10p gp[3] = @rx10p gp[4] = @ry10p gp[5] = @rz10p gp[6] = @shx10p gp[7] = @shy10p gp[8] = @shz10p gp[9] = @m10p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx10 + @tx32 gt[gnt,10] = @ty10 + @ty32 gt[gnt,11] = @tz10 + @tz32 else gt[gnt,9] = @tx10 gt[gnt,10] = @ty10 gt[gnt,11] = @tz10 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem10 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx10+@sx32) else gx = 0.01*@sx10 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy10+@sy32) else gx = 0.01*@sy10 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz10+@sz32) else gx = 0.01*@sz10 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx10+@rx32)*crad else ca = -@rx10*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry10+@ry32)*crad else ca = -@ry10*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz10+@rz32)*crad else ca = @rz10*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx10+@shx32)*crad else ca = -@shx10*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy10+@shy32)*crad else ca = -@shy10*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz10+@shz32)*crad else ca = @shz10*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t10r0c0 + gtemp[1]*@t10r1c0 + gtemp[2]*@t10r2c0 gt[gnt,1] = gtemp[0]*@t10r0c1 + gtemp[1]*@t10r1c1 + gtemp[2]*@t10r2c1 gt[gnt,2] = gtemp[0]*@t10r0c2 + gtemp[1]*@t10r1c2 + gtemp[2]*@t10r2c2 gt[gnt,3] = gtemp[3]*@t10r0c0 + gtemp[4]*@t10r1c0 + gtemp[5]*@t10r2c0 gt[gnt,4] = gtemp[3]*@t10r0c1 + gtemp[4]*@t10r1c1 + gtemp[5]*@t10r2c1 gt[gnt,5] = gtemp[3]*@t10r0c2 + gtemp[4]*@t10r1c2 + gtemp[5]*@t10r2c2 gt[gnt,6] = gtemp[6]*@t10r0c0 + gtemp[7]*@t10r1c0 + gtemp[8]*@t10r2c0 gt[gnt,7] = gtemp[6]*@t10r0c1 + gtemp[7]*@t10r1c1 + gtemp[8]*@t10r2c1 gt[gnt,8] = gtemp[6]*@t10r0c2 + gtemp[7]*@t10r1c2 + gtemp[8]*@t10r2c2 endif endif until gj>=100 if @it10 gt[gnt,9] = gt[gnt,9] +@itx10*gt[gnt,0]+@ity10*gt[gnt,3]+@itz10*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx10*gt[gnt,1]+@ity10*gt[gnt,4]+@itz10*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx10*gt[gnt,2]+@ity10*gt[gnt,5]+@itz10*gt[gnt,8] endif if @usecount10 gcount[gnt] = @count10 else gcount[gnt] = @igen + 1 endif if @usetotal10 gcount1[gnt] = @total10 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us10 gnt = gnt + 1 endif endif ; @use10 if @use11 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==11) if @useskips gj = 1073741824 gi = 30 gk = @skip11mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip11mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip11mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip11mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip11mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip11mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip11mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp11 ; Transformation priority gv[gnt,1] = @tf11 ; RIFS code if @showtrans==0 || @showtrans==11 gv[gnt,2] = 110 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 10 ; Transformation number if @sp gtc[gnt] = log(@tc11) else gtc[gnt] = @tc11 endif ; transform priorities gp[0] = @sx11p gp[1] = @sy11p gp[2] = @sz11p gp[3] = @rx11p gp[4] = @ry11p gp[5] = @rz11p gp[6] = @shx11p gp[7] = @shy11p gp[8] = @shz11p gp[9] = @m11p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx11 + @tx32 gt[gnt,10] = @ty11 + @ty32 gt[gnt,11] = @tz11 + @tz32 else gt[gnt,9] = @tx11 gt[gnt,10] = @ty11 gt[gnt,11] = @tz11 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem11 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx11+@sx32) else gx = 0.01*@sx11 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy11+@sy32) else gx = 0.01*@sy11 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz11+@sz32) else gx = 0.01*@sz11 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx11+@rx32)*crad else ca = -@rx11*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry11+@ry32)*crad else ca = -@ry11*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz11+@rz32)*crad else ca = @rz11*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx11+@shx32)*crad else ca = -@shx11*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy11+@shy32)*crad else ca = -@shy11*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz11+@shz32)*crad else ca = @shz11*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t11r0c0 + gtemp[1]*@t11r1c0 + gtemp[2]*@t11r2c0 gt[gnt,1] = gtemp[0]*@t11r0c1 + gtemp[1]*@t11r1c1 + gtemp[2]*@t11r2c1 gt[gnt,2] = gtemp[0]*@t11r0c2 + gtemp[1]*@t11r1c2 + gtemp[2]*@t11r2c2 gt[gnt,3] = gtemp[3]*@t11r0c0 + gtemp[4]*@t11r1c0 + gtemp[5]*@t11r2c0 gt[gnt,4] = gtemp[3]*@t11r0c1 + gtemp[4]*@t11r1c1 + gtemp[5]*@t11r2c1 gt[gnt,5] = gtemp[3]*@t11r0c2 + gtemp[4]*@t11r1c2 + gtemp[5]*@t11r2c2 gt[gnt,6] = gtemp[6]*@t11r0c0 + gtemp[7]*@t11r1c0 + gtemp[8]*@t11r2c0 gt[gnt,7] = gtemp[6]*@t11r0c1 + gtemp[7]*@t11r1c1 + gtemp[8]*@t11r2c1 gt[gnt,8] = gtemp[6]*@t11r0c2 + gtemp[7]*@t11r1c2 + gtemp[8]*@t11r2c2 endif endif until gj>=100 if @it11 gt[gnt,9] = gt[gnt,9] +@itx11*gt[gnt,0]+@ity11*gt[gnt,3]+@itz11*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx11*gt[gnt,1]+@ity11*gt[gnt,4]+@itz11*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx11*gt[gnt,2]+@ity11*gt[gnt,5]+@itz11*gt[gnt,8] endif if @usecount11 gcount[gnt] = @count11 else gcount[gnt] = @igen + 1 endif if @usetotal11 gcount1[gnt] = @total11 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us11 gnt = gnt + 1 endif endif ; @use11 if @use12 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==12) if @useskips gj = 1073741824 gi = 30 gk = @skip12mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip12mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip12mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip12mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip12mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip12mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip12mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp12 ; Transformation priority gv[gnt,1] = @tf12 ; RIFS code if @showtrans==0 || @showtrans==12 gv[gnt,2] = 120 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 11 ; Transformation number if @sp gtc[gnt] = log(@tc12) else gtc[gnt] = @tc12 endif ; transform priorities gp[0] = @sx12p gp[1] = @sy12p gp[2] = @sz12p gp[3] = @rx12p gp[4] = @ry12p gp[5] = @rz12p gp[6] = @shx12p gp[7] = @shy12p gp[8] = @shz12p gp[9] = @m12p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx12 + @tx32 gt[gnt,10] = @ty12 + @ty32 gt[gnt,11] = @tz12 + @tz32 else gt[gnt,9] = @tx12 gt[gnt,10] = @ty12 gt[gnt,11] = @tz12 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem12 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx12+@sx32) else gx = 0.01*@sx12 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy12+@sy32) else gx = 0.01*@sy12 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz12+@sz32) else gx = 0.01*@sz12 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx12+@rx32)*crad else ca = -@rx12*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry12+@ry32)*crad else ca = -@ry12*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz12+@rz32)*crad else ca = @rz12*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx12+@shx32)*crad else ca = -@shx12*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy12+@shy32)*crad else ca = -@shy12*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz12+@shz32)*crad else ca = @shz12*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t12r0c0 + gtemp[1]*@t12r1c0 + gtemp[2]*@t12r2c0 gt[gnt,1] = gtemp[0]*@t12r0c1 + gtemp[1]*@t12r1c1 + gtemp[2]*@t12r2c1 gt[gnt,2] = gtemp[0]*@t12r0c2 + gtemp[1]*@t12r1c2 + gtemp[2]*@t12r2c2 gt[gnt,3] = gtemp[3]*@t12r0c0 + gtemp[4]*@t12r1c0 + gtemp[5]*@t12r2c0 gt[gnt,4] = gtemp[3]*@t12r0c1 + gtemp[4]*@t12r1c1 + gtemp[5]*@t12r2c1 gt[gnt,5] = gtemp[3]*@t12r0c2 + gtemp[4]*@t12r1c2 + gtemp[5]*@t12r2c2 gt[gnt,6] = gtemp[6]*@t12r0c0 + gtemp[7]*@t12r1c0 + gtemp[8]*@t12r2c0 gt[gnt,7] = gtemp[6]*@t12r0c1 + gtemp[7]*@t12r1c1 + gtemp[8]*@t12r2c1 gt[gnt,8] = gtemp[6]*@t12r0c2 + gtemp[7]*@t12r1c2 + gtemp[8]*@t12r2c2 endif endif until gj>=100 if @it12 gt[gnt,9] = gt[gnt,9] +@itx12*gt[gnt,0]+@ity12*gt[gnt,3]+@itz12*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx12*gt[gnt,1]+@ity12*gt[gnt,4]+@itz12*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx12*gt[gnt,2]+@ity12*gt[gnt,5]+@itz12*gt[gnt,8] endif if @usecount12 gcount[gnt] = @count12 else gcount[gnt] = @igen + 1 endif if @usetotal12 gcount1[gnt] = @total12 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us12 gnt = gnt + 1 endif endif ; @use12 if @use13 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==13) if @useskips gj = 1073741824 gi = 30 gk = @skip13mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip13mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip13mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip13mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip13mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip13mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip13mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp13 ; Transformation priority gv[gnt,1] = @tf13 ; RIFS code if @showtrans==0 || @showtrans==13 gv[gnt,2] = 130 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 12 ; Transformation number if @sp gtc[gnt] = log(@tc13) else gtc[gnt] = @tc13 endif ; transform priorities gp[0] = @sx13p gp[1] = @sy13p gp[2] = @sz13p gp[3] = @rx13p gp[4] = @ry13p gp[5] = @rz13p gp[6] = @shx13p gp[7] = @shy13p gp[8] = @shz13p gp[9] = @m13p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx13 + @tx32 gt[gnt,10] = @ty13 + @ty32 gt[gnt,11] = @tz13 + @tz32 else gt[gnt,9] = @tx13 gt[gnt,10] = @ty13 gt[gnt,11] = @tz13 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem13 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx13+@sx32) else gx = 0.01*@sx13 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy13+@sy32) else gx = 0.01*@sy13 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz13+@sz32) else gx = 0.01*@sz13 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx13+@rx32)*crad else ca = -@rx13*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry13+@ry32)*crad else ca = -@ry13*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz13+@rz32)*crad else ca = @rz13*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx13+@shx32)*crad else ca = -@shx13*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy13+@shy32)*crad else ca = -@shy13*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz13+@shz32)*crad else ca = @shz13*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t13r0c0 + gtemp[1]*@t13r1c0 + gtemp[2]*@t13r2c0 gt[gnt,1] = gtemp[0]*@t13r0c1 + gtemp[1]*@t13r1c1 + gtemp[2]*@t13r2c1 gt[gnt,2] = gtemp[0]*@t13r0c2 + gtemp[1]*@t13r1c2 + gtemp[2]*@t13r2c2 gt[gnt,3] = gtemp[3]*@t13r0c0 + gtemp[4]*@t13r1c0 + gtemp[5]*@t13r2c0 gt[gnt,4] = gtemp[3]*@t13r0c1 + gtemp[4]*@t13r1c1 + gtemp[5]*@t13r2c1 gt[gnt,5] = gtemp[3]*@t13r0c2 + gtemp[4]*@t13r1c2 + gtemp[5]*@t13r2c2 gt[gnt,6] = gtemp[6]*@t13r0c0 + gtemp[7]*@t13r1c0 + gtemp[8]*@t13r2c0 gt[gnt,7] = gtemp[6]*@t13r0c1 + gtemp[7]*@t13r1c1 + gtemp[8]*@t13r2c1 gt[gnt,8] = gtemp[6]*@t13r0c2 + gtemp[7]*@t13r1c2 + gtemp[8]*@t13r2c2 endif endif until gj>=100 if @it13 gt[gnt,9] = gt[gnt,9] +@itx13*gt[gnt,0]+@ity13*gt[gnt,3]+@itz13*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx13*gt[gnt,1]+@ity13*gt[gnt,4]+@itz13*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx13*gt[gnt,2]+@ity13*gt[gnt,5]+@itz13*gt[gnt,8] endif if @usecount13 gcount[gnt] = @count13 else gcount[gnt] = @igen + 1 endif if @usetotal13 gcount1[gnt] = @total13 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us13 gnt = gnt + 1 endif endif ; @use13 if @use14 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==14) if @useskips gj = 1073741824 gi = 30 gk = @skip14mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip14mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip14mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip14mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip14mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip14mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip14mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp14 ; Transformation priority gv[gnt,1] = @tf14 ; RIFS code if @showtrans==0 || @showtrans==14 gv[gnt,2] = 140 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 13 ; Transformation number if @sp gtc[gnt] = log(@tc14) else gtc[gnt] = @tc14 endif ; transform priorities gp[0] = @sx14p gp[1] = @sy14p gp[2] = @sz14p gp[3] = @rx14p gp[4] = @ry14p gp[5] = @rz14p gp[6] = @shx14p gp[7] = @shy14p gp[8] = @shz14p gp[9] = @m14p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx14 + @tx32 gt[gnt,10] = @ty14 + @ty32 gt[gnt,11] = @tz14 + @tz32 else gt[gnt,9] = @tx14 gt[gnt,10] = @ty14 gt[gnt,11] = @tz14 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem14 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx14+@sx32) else gx = 0.01*@sx14 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy14+@sy32) else gx = 0.01*@sy14 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz14+@sz32) else gx = 0.01*@sz14 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx14+@rx32)*crad else ca = -@rx14*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry14+@ry32)*crad else ca = -@ry14*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz14+@rz32)*crad else ca = @rz14*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx14+@shx32)*crad else ca = -@shx14*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy14+@shy32)*crad else ca = -@shy14*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz14+@shz32)*crad else ca = @shz14*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t14r0c0 + gtemp[1]*@t14r1c0 + gtemp[2]*@t14r2c0 gt[gnt,1] = gtemp[0]*@t14r0c1 + gtemp[1]*@t14r1c1 + gtemp[2]*@t14r2c1 gt[gnt,2] = gtemp[0]*@t14r0c2 + gtemp[1]*@t14r1c2 + gtemp[2]*@t14r2c2 gt[gnt,3] = gtemp[3]*@t14r0c0 + gtemp[4]*@t14r1c0 + gtemp[5]*@t14r2c0 gt[gnt,4] = gtemp[3]*@t14r0c1 + gtemp[4]*@t14r1c1 + gtemp[5]*@t14r2c1 gt[gnt,5] = gtemp[3]*@t14r0c2 + gtemp[4]*@t14r1c2 + gtemp[5]*@t14r2c2 gt[gnt,6] = gtemp[6]*@t14r0c0 + gtemp[7]*@t14r1c0 + gtemp[8]*@t14r2c0 gt[gnt,7] = gtemp[6]*@t14r0c1 + gtemp[7]*@t14r1c1 + gtemp[8]*@t14r2c1 gt[gnt,8] = gtemp[6]*@t14r0c2 + gtemp[7]*@t14r1c2 + gtemp[8]*@t14r2c2 endif endif until gj>=100 if @it14 gt[gnt,9] = gt[gnt,9] +@itx14*gt[gnt,0]+@ity14*gt[gnt,3]+@itz14*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx14*gt[gnt,1]+@ity14*gt[gnt,4]+@itz14*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx14*gt[gnt,2]+@ity14*gt[gnt,5]+@itz14*gt[gnt,8] endif if @usecount14 gcount[gnt] = @count14 else gcount[gnt] = @igen + 1 endif if @usetotal14 gcount1[gnt] = @total14 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us14 gnt = gnt + 1 endif endif ; @use14 if @use15 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==15) if @useskips gj = 1073741824 gi = 30 gk = @skip15mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip15mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip15mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip15mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip15mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip15mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip15mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp15 ; Transformation priority gv[gnt,1] = @tf15 ; RIFS code if @showtrans==0 || @showtrans==15 gv[gnt,2] = 150 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 14 ; Transformation number if @sp gtc[gnt] = log(@tc15) else gtc[gnt] = @tc15 endif ; transform priorities gp[0] = @sx15p gp[1] = @sy15p gp[2] = @sz15p gp[3] = @rx15p gp[4] = @ry15p gp[5] = @rz15p gp[6] = @shx15p gp[7] = @shy15p gp[8] = @shz15p gp[9] = @m15p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx15 + @tx32 gt[gnt,10] = @ty15 + @ty32 gt[gnt,11] = @tz15 + @tz32 else gt[gnt,9] = @tx15 gt[gnt,10] = @ty15 gt[gnt,11] = @tz15 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem15 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx15+@sx32) else gx = 0.01*@sx15 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy15+@sy32) else gx = 0.01*@sy15 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz15+@sz32) else gx = 0.01*@sz15 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx15+@rx32)*crad else ca = -@rx15*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry15+@ry32)*crad else ca = -@ry15*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz15+@rz32)*crad else ca = @rz15*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx15+@shx32)*crad else ca = -@shx15*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy15+@shy32)*crad else ca = -@shy15*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz15+@shz32)*crad else ca = @shz15*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t15r0c0 + gtemp[1]*@t15r1c0 + gtemp[2]*@t15r2c0 gt[gnt,1] = gtemp[0]*@t15r0c1 + gtemp[1]*@t15r1c1 + gtemp[2]*@t15r2c1 gt[gnt,2] = gtemp[0]*@t15r0c2 + gtemp[1]*@t15r1c2 + gtemp[2]*@t15r2c2 gt[gnt,3] = gtemp[3]*@t15r0c0 + gtemp[4]*@t15r1c0 + gtemp[5]*@t15r2c0 gt[gnt,4] = gtemp[3]*@t15r0c1 + gtemp[4]*@t15r1c1 + gtemp[5]*@t15r2c1 gt[gnt,5] = gtemp[3]*@t15r0c2 + gtemp[4]*@t15r1c2 + gtemp[5]*@t15r2c2 gt[gnt,6] = gtemp[6]*@t15r0c0 + gtemp[7]*@t15r1c0 + gtemp[8]*@t15r2c0 gt[gnt,7] = gtemp[6]*@t15r0c1 + gtemp[7]*@t15r1c1 + gtemp[8]*@t15r2c1 gt[gnt,8] = gtemp[6]*@t15r0c2 + gtemp[7]*@t15r1c2 + gtemp[8]*@t15r2c2 endif endif until gj>=100 if @it15 gt[gnt,9] = gt[gnt,9] +@itx15*gt[gnt,0]+@ity15*gt[gnt,3]+@itz15*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx15*gt[gnt,1]+@ity15*gt[gnt,4]+@itz15*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx15*gt[gnt,2]+@ity15*gt[gnt,5]+@itz15*gt[gnt,8] endif if @usecount15 gcount[gnt] = @count15 else gcount[gnt] = @igen + 1 endif if @usetotal15 gcount1[gnt] = @total15 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us15 gnt = gnt + 1 endif endif ; @use15 if @use16 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==16) if @useskips gj = 1073741824 gi = 30 gk = @skip16mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip16mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip16mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip16mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip16mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip16mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip16mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp16 ; Transformation priority gv[gnt,1] = @tf16 ; RIFS code if @showtrans==0 || @showtrans==16 gv[gnt,2] = 160 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 15 ; Transformation number if @sp gtc[gnt] = log(@tc16) else gtc[gnt] = @tc16 endif ; transform priorities gp[0] = @sx16p gp[1] = @sy16p gp[2] = @sz16p gp[3] = @rx16p gp[4] = @ry16p gp[5] = @rz16p gp[6] = @shx16p gp[7] = @shy16p gp[8] = @shz16p gp[9] = @m16p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx16 + @tx32 gt[gnt,10] = @ty16 + @ty32 gt[gnt,11] = @tz16 + @tz32 else gt[gnt,9] = @tx16 gt[gnt,10] = @ty16 gt[gnt,11] = @tz16 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem16 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx16+@sx32) else gx = 0.01*@sx16 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy16+@sy32) else gx = 0.01*@sy16 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz16+@sz32) else gx = 0.01*@sz16 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx16+@rx32)*crad else ca = -@rx16*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry16+@ry32)*crad else ca = -@ry16*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz16+@rz32)*crad else ca = @rz16*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx16+@shx32)*crad else ca = -@shx16*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy16+@shy32)*crad else ca = -@shy16*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz16+@shz32)*crad else ca = @shz16*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t16r0c0 + gtemp[1]*@t16r1c0 + gtemp[2]*@t16r2c0 gt[gnt,1] = gtemp[0]*@t16r0c1 + gtemp[1]*@t16r1c1 + gtemp[2]*@t16r2c1 gt[gnt,2] = gtemp[0]*@t16r0c2 + gtemp[1]*@t16r1c2 + gtemp[2]*@t16r2c2 gt[gnt,3] = gtemp[3]*@t16r0c0 + gtemp[4]*@t16r1c0 + gtemp[5]*@t16r2c0 gt[gnt,4] = gtemp[3]*@t16r0c1 + gtemp[4]*@t16r1c1 + gtemp[5]*@t16r2c1 gt[gnt,5] = gtemp[3]*@t16r0c2 + gtemp[4]*@t16r1c2 + gtemp[5]*@t16r2c2 gt[gnt,6] = gtemp[6]*@t16r0c0 + gtemp[7]*@t16r1c0 + gtemp[8]*@t16r2c0 gt[gnt,7] = gtemp[6]*@t16r0c1 + gtemp[7]*@t16r1c1 + gtemp[8]*@t16r2c1 gt[gnt,8] = gtemp[6]*@t16r0c2 + gtemp[7]*@t16r1c2 + gtemp[8]*@t16r2c2 endif endif until gj>=100 if @it16 gt[gnt,9] = gt[gnt,9] +@itx16*gt[gnt,0]+@ity16*gt[gnt,3]+@itz16*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx16*gt[gnt,1]+@ity16*gt[gnt,4]+@itz16*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx16*gt[gnt,2]+@ity16*gt[gnt,5]+@itz16*gt[gnt,8] endif if @usecount16 gcount[gnt] = @count16 else gcount[gnt] = @igen + 1 endif if @usetotal16 gcount1[gnt] = @total16 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us16 gnt = gnt + 1 endif endif ; @use16 if @use17 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==17) if @useskips gj = 1073741824 gi = 30 gk = @skip17mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip17mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip17mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip17mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip17mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip17mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip17mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp17 ; Transformation priority gv[gnt,1] = @tf17 ; RIFS code if @showtrans==0 || @showtrans==17 gv[gnt,2] = 170 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 16 ; Transformation number if @sp gtc[gnt] = log(@tc17) else gtc[gnt] = @tc17 endif ; transform priorities gp[0] = @sx17p gp[1] = @sy17p gp[2] = @sz17p gp[3] = @rx17p gp[4] = @ry17p gp[5] = @rz17p gp[6] = @shx17p gp[7] = @shy17p gp[8] = @shz17p gp[9] = @m17p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx17 + @tx32 gt[gnt,10] = @ty17 + @ty32 gt[gnt,11] = @tz17 + @tz32 else gt[gnt,9] = @tx17 gt[gnt,10] = @ty17 gt[gnt,11] = @tz17 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem17 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx17+@sx32) else gx = 0.01*@sx17 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy17+@sy32) else gx = 0.01*@sy17 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz17+@sz32) else gx = 0.01*@sz17 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx17+@rx32)*crad else ca = -@rx17*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry17+@ry32)*crad else ca = -@ry17*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz17+@rz32)*crad else ca = @rz17*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx17+@shx32)*crad else ca = -@shx17*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy17+@shy32)*crad else ca = -@shy17*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz17+@shz32)*crad else ca = @shz17*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t17r0c0 + gtemp[1]*@t17r1c0 + gtemp[2]*@t17r2c0 gt[gnt,1] = gtemp[0]*@t17r0c1 + gtemp[1]*@t17r1c1 + gtemp[2]*@t17r2c1 gt[gnt,2] = gtemp[0]*@t17r0c2 + gtemp[1]*@t17r1c2 + gtemp[2]*@t17r2c2 gt[gnt,3] = gtemp[3]*@t17r0c0 + gtemp[4]*@t17r1c0 + gtemp[5]*@t17r2c0 gt[gnt,4] = gtemp[3]*@t17r0c1 + gtemp[4]*@t17r1c1 + gtemp[5]*@t17r2c1 gt[gnt,5] = gtemp[3]*@t17r0c2 + gtemp[4]*@t17r1c2 + gtemp[5]*@t17r2c2 gt[gnt,6] = gtemp[6]*@t17r0c0 + gtemp[7]*@t17r1c0 + gtemp[8]*@t17r2c0 gt[gnt,7] = gtemp[6]*@t17r0c1 + gtemp[7]*@t17r1c1 + gtemp[8]*@t17r2c1 gt[gnt,8] = gtemp[6]*@t17r0c2 + gtemp[7]*@t17r1c2 + gtemp[8]*@t17r2c2 endif endif until gj>=100 if @it17 gt[gnt,9] = gt[gnt,9] +@itx17*gt[gnt,0]+@ity17*gt[gnt,3]+@itz17*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx17*gt[gnt,1]+@ity17*gt[gnt,4]+@itz17*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx17*gt[gnt,2]+@ity17*gt[gnt,5]+@itz17*gt[gnt,8] endif if @usecount17 gcount[gnt] = @count17 else gcount[gnt] = @igen + 1 endif if @usetotal17 gcount1[gnt] = @total17 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us17 gnt = gnt + 1 endif endif ; @use17 if @use18 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==18) if @useskips gj = 1073741824 gi = 30 gk = @skip18mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip18mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip18mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip18mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip18mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip18mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip18mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp18 ; Transformation priority gv[gnt,1] = @tf18 ; RIFS code if @showtrans==0 || @showtrans==18 gv[gnt,2] = 180 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 17 ; Transformation number if @sp gtc[gnt] = log(@tc18) else gtc[gnt] = @tc18 endif ; transform priorities gp[0] = @sx18p gp[1] = @sy18p gp[2] = @sz18p gp[3] = @rx18p gp[4] = @ry18p gp[5] = @rz18p gp[6] = @shx18p gp[7] = @shy18p gp[8] = @shz18p gp[9] = @m18p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx18 + @tx32 gt[gnt,10] = @ty18 + @ty32 gt[gnt,11] = @tz18 + @tz32 else gt[gnt,9] = @tx18 gt[gnt,10] = @ty18 gt[gnt,11] = @tz18 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem18 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx18+@sx32) else gx = 0.01*@sx18 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy18+@sy32) else gx = 0.01*@sy18 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz18+@sz32) else gx = 0.01*@sz18 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx18+@rx32)*crad else ca = -@rx18*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry18+@ry32)*crad else ca = -@ry18*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz18+@rz32)*crad else ca = @rz18*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx18+@shx32)*crad else ca = -@shx18*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy18+@shy32)*crad else ca = -@shy18*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz18+@shz32)*crad else ca = @shz18*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t18r0c0 + gtemp[1]*@t18r1c0 + gtemp[2]*@t18r2c0 gt[gnt,1] = gtemp[0]*@t18r0c1 + gtemp[1]*@t18r1c1 + gtemp[2]*@t18r2c1 gt[gnt,2] = gtemp[0]*@t18r0c2 + gtemp[1]*@t18r1c2 + gtemp[2]*@t18r2c2 gt[gnt,3] = gtemp[3]*@t18r0c0 + gtemp[4]*@t18r1c0 + gtemp[5]*@t18r2c0 gt[gnt,4] = gtemp[3]*@t18r0c1 + gtemp[4]*@t18r1c1 + gtemp[5]*@t18r2c1 gt[gnt,5] = gtemp[3]*@t18r0c2 + gtemp[4]*@t18r1c2 + gtemp[5]*@t18r2c2 gt[gnt,6] = gtemp[6]*@t18r0c0 + gtemp[7]*@t18r1c0 + gtemp[8]*@t18r2c0 gt[gnt,7] = gtemp[6]*@t18r0c1 + gtemp[7]*@t18r1c1 + gtemp[8]*@t18r2c1 gt[gnt,8] = gtemp[6]*@t18r0c2 + gtemp[7]*@t18r1c2 + gtemp[8]*@t18r2c2 endif endif until gj>=100 if @it18 gt[gnt,9] = gt[gnt,9] +@itx18*gt[gnt,0]+@ity18*gt[gnt,3]+@itz18*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx18*gt[gnt,1]+@ity18*gt[gnt,4]+@itz18*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx18*gt[gnt,2]+@ity18*gt[gnt,5]+@itz18*gt[gnt,8] endif if @usecount18 gcount[gnt] = @count18 else gcount[gnt] = @igen + 1 endif if @usetotal18 gcount1[gnt] = @total18 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us18 gnt = gnt + 1 endif endif ; @use18 if @use19 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==19) if @useskips gj = 1073741824 gi = 30 gk = @skip19mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip19mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip19mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip19mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip19mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip19mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip19mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp19 ; Transformation priority gv[gnt,1] = @tf19 ; RIFS code if @showtrans==0 || @showtrans==19 gv[gnt,2] = 190 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 18 ; Transformation number if @sp gtc[gnt] = log(@tc19) else gtc[gnt] = @tc19 endif ; transform priorities gp[0] = @sx19p gp[1] = @sy19p gp[2] = @sz19p gp[3] = @rx19p gp[4] = @ry19p gp[5] = @rz19p gp[6] = @shx19p gp[7] = @shy19p gp[8] = @shz19p gp[9] = @m19p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx19 + @tx32 gt[gnt,10] = @ty19 + @ty32 gt[gnt,11] = @tz19 + @tz32 else gt[gnt,9] = @tx19 gt[gnt,10] = @ty19 gt[gnt,11] = @tz19 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem19 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx19+@sx32) else gx = 0.01*@sx19 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy19+@sy32) else gx = 0.01*@sy19 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz19+@sz32) else gx = 0.01*@sz19 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx19+@rx32)*crad else ca = -@rx19*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry19+@ry32)*crad else ca = -@ry19*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz19+@rz32)*crad else ca = @rz19*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx19+@shx32)*crad else ca = -@shx19*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy19+@shy32)*crad else ca = -@shy19*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz19+@shz32)*crad else ca = @shz19*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t19r0c0 + gtemp[1]*@t19r1c0 + gtemp[2]*@t19r2c0 gt[gnt,1] = gtemp[0]*@t19r0c1 + gtemp[1]*@t19r1c1 + gtemp[2]*@t19r2c1 gt[gnt,2] = gtemp[0]*@t19r0c2 + gtemp[1]*@t19r1c2 + gtemp[2]*@t19r2c2 gt[gnt,3] = gtemp[3]*@t19r0c0 + gtemp[4]*@t19r1c0 + gtemp[5]*@t19r2c0 gt[gnt,4] = gtemp[3]*@t19r0c1 + gtemp[4]*@t19r1c1 + gtemp[5]*@t19r2c1 gt[gnt,5] = gtemp[3]*@t19r0c2 + gtemp[4]*@t19r1c2 + gtemp[5]*@t19r2c2 gt[gnt,6] = gtemp[6]*@t19r0c0 + gtemp[7]*@t19r1c0 + gtemp[8]*@t19r2c0 gt[gnt,7] = gtemp[6]*@t19r0c1 + gtemp[7]*@t19r1c1 + gtemp[8]*@t19r2c1 gt[gnt,8] = gtemp[6]*@t19r0c2 + gtemp[7]*@t19r1c2 + gtemp[8]*@t19r2c2 endif endif until gj>=100 if @it19 gt[gnt,9] = gt[gnt,9] +@itx19*gt[gnt,0]+@ity19*gt[gnt,3]+@itz19*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx19*gt[gnt,1]+@ity19*gt[gnt,4]+@itz19*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx19*gt[gnt,2]+@ity19*gt[gnt,5]+@itz19*gt[gnt,8] endif if @usecount19 gcount[gnt] = @count19 else gcount[gnt] = @igen + 1 endif if @usetotal19 gcount1[gnt] = @total19 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us19 gnt = gnt + 1 endif endif ; @use19 if @use20 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==20) if @useskips gj = 1073741824 gi = 30 gk = @skip20mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip20mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip20mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip20mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip20mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip20mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip20mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp20 ; Transformation priority gv[gnt,1] = @tf20 ; RIFS code if @showtrans==0 || @showtrans==20 gv[gnt,2] = 200 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 19 ; Transformation number if @sp gtc[gnt] = log(@tc20) else gtc[gnt] = @tc20 endif ; transform priorities gp[0] = @sx20p gp[1] = @sy20p gp[2] = @sz20p gp[3] = @rx20p gp[4] = @ry20p gp[5] = @rz20p gp[6] = @shx20p gp[7] = @shy20p gp[8] = @shz20p gp[9] = @m20p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx20 + @tx32 gt[gnt,10] = @ty20 + @ty32 gt[gnt,11] = @tz20 + @tz32 else gt[gnt,9] = @tx20 gt[gnt,10] = @ty20 gt[gnt,11] = @tz20 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem20 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx20+@sx32) else gx = 0.01*@sx20 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy20+@sy32) else gx = 0.01*@sy20 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz20+@sz32) else gx = 0.01*@sz20 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx20+@rx32)*crad else ca = -@rx20*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry20+@ry32)*crad else ca = -@ry20*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz20+@rz32)*crad else ca = @rz20*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx20+@shx32)*crad else ca = -@shx20*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy20+@shy32)*crad else ca = -@shy20*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz20+@shz32)*crad else ca = @shz20*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t20r0c0 + gtemp[1]*@t20r1c0 + gtemp[2]*@t20r2c0 gt[gnt,1] = gtemp[0]*@t20r0c1 + gtemp[1]*@t20r1c1 + gtemp[2]*@t20r2c1 gt[gnt,2] = gtemp[0]*@t20r0c2 + gtemp[1]*@t20r1c2 + gtemp[2]*@t20r2c2 gt[gnt,3] = gtemp[3]*@t20r0c0 + gtemp[4]*@t20r1c0 + gtemp[5]*@t20r2c0 gt[gnt,4] = gtemp[3]*@t20r0c1 + gtemp[4]*@t20r1c1 + gtemp[5]*@t20r2c1 gt[gnt,5] = gtemp[3]*@t20r0c2 + gtemp[4]*@t20r1c2 + gtemp[5]*@t20r2c2 gt[gnt,6] = gtemp[6]*@t20r0c0 + gtemp[7]*@t20r1c0 + gtemp[8]*@t20r2c0 gt[gnt,7] = gtemp[6]*@t20r0c1 + gtemp[7]*@t20r1c1 + gtemp[8]*@t20r2c1 gt[gnt,8] = gtemp[6]*@t20r0c2 + gtemp[7]*@t20r1c2 + gtemp[8]*@t20r2c2 endif endif until gj>=100 if @it20 gt[gnt,9] = gt[gnt,9] +@itx20*gt[gnt,0]+@ity20*gt[gnt,3]+@itz20*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx20*gt[gnt,1]+@ity20*gt[gnt,4]+@itz20*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx20*gt[gnt,2]+@ity20*gt[gnt,5]+@itz20*gt[gnt,8] endif if @usecount20 gcount[gnt] = @count20 else gcount[gnt] = @igen + 1 endif if @usetotal20 gcount1[gnt] = @total20 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us20 gnt = gnt + 1 endif endif ; @use20 if @use21 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==21) if @useskips gj = 1073741824 gi = 30 gk = @skip21mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip21mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip21mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip21mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip21mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip21mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip21mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp21 ; Transformation priority gv[gnt,1] = @tf21 ; RIFS code if @showtrans==0 || @showtrans==21 gv[gnt,2] = 210 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 20 ; Transformation number if @sp gtc[gnt] = log(@tc21) else gtc[gnt] = @tc21 endif ; transform priorities gp[0] = @sx21p gp[1] = @sy21p gp[2] = @sz21p gp[3] = @rx21p gp[4] = @ry21p gp[5] = @rz21p gp[6] = @shx21p gp[7] = @shy21p gp[8] = @shz21p gp[9] = @m21p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx21 + @tx32 gt[gnt,10] = @ty21 + @ty32 gt[gnt,11] = @tz21 + @tz32 else gt[gnt,9] = @tx21 gt[gnt,10] = @ty21 gt[gnt,11] = @tz21 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem21 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx21+@sx32) else gx = 0.01*@sx21 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy21+@sy32) else gx = 0.01*@sy21 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz21+@sz32) else gx = 0.01*@sz21 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx21+@rx32)*crad else ca = -@rx21*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry21+@ry32)*crad else ca = -@ry21*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz21+@rz32)*crad else ca = @rz21*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx21+@shx32)*crad else ca = -@shx21*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy21+@shy32)*crad else ca = -@shy21*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz21+@shz32)*crad else ca = @shz21*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t21r0c0 + gtemp[1]*@t21r1c0 + gtemp[2]*@t21r2c0 gt[gnt,1] = gtemp[0]*@t21r0c1 + gtemp[1]*@t21r1c1 + gtemp[2]*@t21r2c1 gt[gnt,2] = gtemp[0]*@t21r0c2 + gtemp[1]*@t21r1c2 + gtemp[2]*@t21r2c2 gt[gnt,3] = gtemp[3]*@t21r0c0 + gtemp[4]*@t21r1c0 + gtemp[5]*@t21r2c0 gt[gnt,4] = gtemp[3]*@t21r0c1 + gtemp[4]*@t21r1c1 + gtemp[5]*@t21r2c1 gt[gnt,5] = gtemp[3]*@t21r0c2 + gtemp[4]*@t21r1c2 + gtemp[5]*@t21r2c2 gt[gnt,6] = gtemp[6]*@t21r0c0 + gtemp[7]*@t21r1c0 + gtemp[8]*@t21r2c0 gt[gnt,7] = gtemp[6]*@t21r0c1 + gtemp[7]*@t21r1c1 + gtemp[8]*@t21r2c1 gt[gnt,8] = gtemp[6]*@t21r0c2 + gtemp[7]*@t21r1c2 + gtemp[8]*@t21r2c2 endif endif until gj>=100 if @it21 gt[gnt,9] = gt[gnt,9] +@itx21*gt[gnt,0]+@ity21*gt[gnt,3]+@itz21*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx21*gt[gnt,1]+@ity21*gt[gnt,4]+@itz21*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx21*gt[gnt,2]+@ity21*gt[gnt,5]+@itz21*gt[gnt,8] endif if @usecount21 gcount[gnt] = @count21 else gcount[gnt] = @igen + 1 endif if @usetotal21 gcount1[gnt] = @total21 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us21 gnt = gnt + 1 endif endif ; @use21 if @use22 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==22) if @useskips gj = 1073741824 gi = 30 gk = @skip22mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip22mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip22mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip22mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip22mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip22mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip22mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp22 ; Transformation priority gv[gnt,1] = @tf22 ; RIFS code if @showtrans==0 || @showtrans==22 gv[gnt,2] = 220 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 21 ; Transformation number if @sp gtc[gnt] = log(@tc22) else gtc[gnt] = @tc22 endif ; transform priorities gp[0] = @sx22p gp[1] = @sy22p gp[2] = @sz22p gp[3] = @rx22p gp[4] = @ry22p gp[5] = @rz22p gp[6] = @shx22p gp[7] = @shy22p gp[8] = @shz22p gp[9] = @m22p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx22 + @tx32 gt[gnt,10] = @ty22 + @ty32 gt[gnt,11] = @tz22 + @tz32 else gt[gnt,9] = @tx22 gt[gnt,10] = @ty22 gt[gnt,11] = @tz22 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem22 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx22+@sx32) else gx = 0.01*@sx22 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy22+@sy32) else gx = 0.01*@sy22 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz22+@sz32) else gx = 0.01*@sz22 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx22+@rx32)*crad else ca = -@rx22*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry22+@ry32)*crad else ca = -@ry22*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz22+@rz32)*crad else ca = @rz22*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx22+@shx32)*crad else ca = -@shx22*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy22+@shy32)*crad else ca = -@shy22*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz22+@shz32)*crad else ca = @shz22*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t22r0c0 + gtemp[1]*@t22r1c0 + gtemp[2]*@t22r2c0 gt[gnt,1] = gtemp[0]*@t22r0c1 + gtemp[1]*@t22r1c1 + gtemp[2]*@t22r2c1 gt[gnt,2] = gtemp[0]*@t22r0c2 + gtemp[1]*@t22r1c2 + gtemp[2]*@t22r2c2 gt[gnt,3] = gtemp[3]*@t22r0c0 + gtemp[4]*@t22r1c0 + gtemp[5]*@t22r2c0 gt[gnt,4] = gtemp[3]*@t22r0c1 + gtemp[4]*@t22r1c1 + gtemp[5]*@t22r2c1 gt[gnt,5] = gtemp[3]*@t22r0c2 + gtemp[4]*@t22r1c2 + gtemp[5]*@t22r2c2 gt[gnt,6] = gtemp[6]*@t22r0c0 + gtemp[7]*@t22r1c0 + gtemp[8]*@t22r2c0 gt[gnt,7] = gtemp[6]*@t22r0c1 + gtemp[7]*@t22r1c1 + gtemp[8]*@t22r2c1 gt[gnt,8] = gtemp[6]*@t22r0c2 + gtemp[7]*@t22r1c2 + gtemp[8]*@t22r2c2 endif endif until gj>=100 if @it22 gt[gnt,9] = gt[gnt,9] +@itx22*gt[gnt,0]+@ity22*gt[gnt,3]+@itz22*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx22*gt[gnt,1]+@ity22*gt[gnt,4]+@itz22*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx22*gt[gnt,2]+@ity22*gt[gnt,5]+@itz22*gt[gnt,8] endif if @usecount22 gcount[gnt] = @count22 else gcount[gnt] = @igen + 1 endif if @usetotal22 gcount1[gnt] = @total22 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us22 gnt = gnt + 1 endif endif ; @use22 if @use23 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==23) if @useskips gj = 1073741824 gi = 30 gk = @skip23mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip23mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip23mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip23mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip23mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip23mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip23mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp23 ; Transformation priority gv[gnt,1] = @tf23 ; RIFS code if @showtrans==0 || @showtrans==23 gv[gnt,2] = 230 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 22 ; Transformation number if @sp gtc[gnt] = log(@tc23) else gtc[gnt] = @tc23 endif ; transform priorities gp[0] = @sx23p gp[1] = @sy23p gp[2] = @sz23p gp[3] = @rx23p gp[4] = @ry23p gp[5] = @rz23p gp[6] = @shx23p gp[7] = @shy23p gp[8] = @shz23p gp[9] = @m23p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx23 + @tx32 gt[gnt,10] = @ty23 + @ty32 gt[gnt,11] = @tz23 + @tz32 else gt[gnt,9] = @tx23 gt[gnt,10] = @ty23 gt[gnt,11] = @tz23 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem23 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx23+@sx32) else gx = 0.01*@sx23 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy23+@sy32) else gx = 0.01*@sy23 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz23+@sz32) else gx = 0.01*@sz23 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx23+@rx32)*crad else ca = -@rx23*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry23+@ry32)*crad else ca = -@ry23*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz23+@rz32)*crad else ca = @rz23*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx23+@shx32)*crad else ca = -@shx23*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy23+@shy32)*crad else ca = -@shy23*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz23+@shz32)*crad else ca = @shz23*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t23r0c0 + gtemp[1]*@t23r1c0 + gtemp[2]*@t23r2c0 gt[gnt,1] = gtemp[0]*@t23r0c1 + gtemp[1]*@t23r1c1 + gtemp[2]*@t23r2c1 gt[gnt,2] = gtemp[0]*@t23r0c2 + gtemp[1]*@t23r1c2 + gtemp[2]*@t23r2c2 gt[gnt,3] = gtemp[3]*@t23r0c0 + gtemp[4]*@t23r1c0 + gtemp[5]*@t23r2c0 gt[gnt,4] = gtemp[3]*@t23r0c1 + gtemp[4]*@t23r1c1 + gtemp[5]*@t23r2c1 gt[gnt,5] = gtemp[3]*@t23r0c2 + gtemp[4]*@t23r1c2 + gtemp[5]*@t23r2c2 gt[gnt,6] = gtemp[6]*@t23r0c0 + gtemp[7]*@t23r1c0 + gtemp[8]*@t23r2c0 gt[gnt,7] = gtemp[6]*@t23r0c1 + gtemp[7]*@t23r1c1 + gtemp[8]*@t23r2c1 gt[gnt,8] = gtemp[6]*@t23r0c2 + gtemp[7]*@t23r1c2 + gtemp[8]*@t23r2c2 endif endif until gj>=100 if @it23 gt[gnt,9] = gt[gnt,9] +@itx23*gt[gnt,0]+@ity23*gt[gnt,3]+@itz23*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx23*gt[gnt,1]+@ity23*gt[gnt,4]+@itz23*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx23*gt[gnt,2]+@ity23*gt[gnt,5]+@itz23*gt[gnt,8] endif if @usecount23 gcount[gnt] = @count23 else gcount[gnt] = @igen + 1 endif if @usetotal23 gcount1[gnt] = @total23 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us23 gnt = gnt + 1 endif endif ; @use23 if @use24 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==24) if @useskips gj = 1073741824 gi = 30 gk = @skip24mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip24mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip24mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip24mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip24mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip24mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip24mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp24 ; Transformation priority gv[gnt,1] = @tf24 ; RIFS code if @showtrans==0 || @showtrans==24 gv[gnt,2] = 240 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 23 ; Transformation number if @sp gtc[gnt] = log(@tc24) else gtc[gnt] = @tc24 endif ; transform priorities gp[0] = @sx24p gp[1] = @sy24p gp[2] = @sz24p gp[3] = @rx24p gp[4] = @ry24p gp[5] = @rz24p gp[6] = @shx24p gp[7] = @shy24p gp[8] = @shz24p gp[9] = @m24p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx24 + @tx32 gt[gnt,10] = @ty24 + @ty32 gt[gnt,11] = @tz24 + @tz32 else gt[gnt,9] = @tx24 gt[gnt,10] = @ty24 gt[gnt,11] = @tz24 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem24 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx24+@sx32) else gx = 0.01*@sx24 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy24+@sy32) else gx = 0.01*@sy24 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz24+@sz32) else gx = 0.01*@sz24 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx24+@rx32)*crad else ca = -@rx24*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry24+@ry32)*crad else ca = -@ry24*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz24+@rz32)*crad else ca = @rz24*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx24+@shx32)*crad else ca = -@shx24*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy24+@shy32)*crad else ca = -@shy24*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz24+@shz32)*crad else ca = @shz24*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t24r0c0 + gtemp[1]*@t24r1c0 + gtemp[2]*@t24r2c0 gt[gnt,1] = gtemp[0]*@t24r0c1 + gtemp[1]*@t24r1c1 + gtemp[2]*@t24r2c1 gt[gnt,2] = gtemp[0]*@t24r0c2 + gtemp[1]*@t24r1c2 + gtemp[2]*@t24r2c2 gt[gnt,3] = gtemp[3]*@t24r0c0 + gtemp[4]*@t24r1c0 + gtemp[5]*@t24r2c0 gt[gnt,4] = gtemp[3]*@t24r0c1 + gtemp[4]*@t24r1c1 + gtemp[5]*@t24r2c1 gt[gnt,5] = gtemp[3]*@t24r0c2 + gtemp[4]*@t24r1c2 + gtemp[5]*@t24r2c2 gt[gnt,6] = gtemp[6]*@t24r0c0 + gtemp[7]*@t24r1c0 + gtemp[8]*@t24r2c0 gt[gnt,7] = gtemp[6]*@t24r0c1 + gtemp[7]*@t24r1c1 + gtemp[8]*@t24r2c1 gt[gnt,8] = gtemp[6]*@t24r0c2 + gtemp[7]*@t24r1c2 + gtemp[8]*@t24r2c2 endif endif until gj>=100 if @it24 gt[gnt,9] = gt[gnt,9] +@itx24*gt[gnt,0]+@ity24*gt[gnt,3]+@itz24*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx24*gt[gnt,1]+@ity24*gt[gnt,4]+@itz24*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx24*gt[gnt,2]+@ity24*gt[gnt,5]+@itz24*gt[gnt,8] endif if @usecount24 gcount[gnt] = @count24 else gcount[gnt] = @igen + 1 endif if @usetotal24 gcount1[gnt] = @total24 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us24 gnt = gnt + 1 endif endif ; @use24 if @use25 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==25) if @useskips gj = 1073741824 gi = 30 gk = @skip25mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip25mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip25mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip25mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip25mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip25mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip25mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp25 ; Transformation priority gv[gnt,1] = @tf25 ; RIFS code if @showtrans==0 || @showtrans==25 gv[gnt,2] = 250 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 24 ; Transformation number if @sp gtc[gnt] = log(@tc25) else gtc[gnt] = @tc25 endif ; transform priorities gp[0] = @sx25p gp[1] = @sy25p gp[2] = @sz25p gp[3] = @rx25p gp[4] = @ry25p gp[5] = @rz25p gp[6] = @shx25p gp[7] = @shy25p gp[8] = @shz25p gp[9] = @m25p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx25 + @tx32 gt[gnt,10] = @ty25 + @ty32 gt[gnt,11] = @tz25 + @tz32 else gt[gnt,9] = @tx25 gt[gnt,10] = @ty25 gt[gnt,11] = @tz25 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem25 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx25+@sx32) else gx = 0.01*@sx25 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy25+@sy32) else gx = 0.01*@sy25 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz25+@sz32) else gx = 0.01*@sz25 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx25+@rx32)*crad else ca = -@rx25*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry25+@ry32)*crad else ca = -@ry25*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz25+@rz32)*crad else ca = @rz25*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx25+@shx32)*crad else ca = -@shx25*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy25+@shy32)*crad else ca = -@shy25*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz25+@shz32)*crad else ca = @shz25*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t25r0c0 + gtemp[1]*@t25r1c0 + gtemp[2]*@t25r2c0 gt[gnt,1] = gtemp[0]*@t25r0c1 + gtemp[1]*@t25r1c1 + gtemp[2]*@t25r2c1 gt[gnt,2] = gtemp[0]*@t25r0c2 + gtemp[1]*@t25r1c2 + gtemp[2]*@t25r2c2 gt[gnt,3] = gtemp[3]*@t25r0c0 + gtemp[4]*@t25r1c0 + gtemp[5]*@t25r2c0 gt[gnt,4] = gtemp[3]*@t25r0c1 + gtemp[4]*@t25r1c1 + gtemp[5]*@t25r2c1 gt[gnt,5] = gtemp[3]*@t25r0c2 + gtemp[4]*@t25r1c2 + gtemp[5]*@t25r2c2 gt[gnt,6] = gtemp[6]*@t25r0c0 + gtemp[7]*@t25r1c0 + gtemp[8]*@t25r2c0 gt[gnt,7] = gtemp[6]*@t25r0c1 + gtemp[7]*@t25r1c1 + gtemp[8]*@t25r2c1 gt[gnt,8] = gtemp[6]*@t25r0c2 + gtemp[7]*@t25r1c2 + gtemp[8]*@t25r2c2 endif endif until gj>=100 if @it25 gt[gnt,9] = gt[gnt,9] +@itx25*gt[gnt,0]+@ity25*gt[gnt,3]+@itz25*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx25*gt[gnt,1]+@ity25*gt[gnt,4]+@itz25*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx25*gt[gnt,2]+@ity25*gt[gnt,5]+@itz25*gt[gnt,8] endif if @usecount25 gcount[gnt] = @count25 else gcount[gnt] = @igen + 1 endif if @usetotal25 gcount1[gnt] = @total25 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us25 gnt = gnt + 1 endif endif ; @use25 if @use26 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==26) if @useskips gj = 1073741824 gi = 30 gk = @skip26mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip26mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip26mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip26mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip26mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip26mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip26mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp26 ; Transformation priority gv[gnt,1] = @tf26 ; RIFS code if @showtrans==0 || @showtrans==26 gv[gnt,2] = 260 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 25 ; Transformation number if @sp gtc[gnt] = log(@tc26) else gtc[gnt] = @tc26 endif ; transform priorities gp[0] = @sx26p gp[1] = @sy26p gp[2] = @sz26p gp[3] = @rx26p gp[4] = @ry26p gp[5] = @rz26p gp[6] = @shx26p gp[7] = @shy26p gp[8] = @shz26p gp[9] = @m26p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx26 + @tx32 gt[gnt,10] = @ty26 + @ty32 gt[gnt,11] = @tz26 + @tz32 else gt[gnt,9] = @tx26 gt[gnt,10] = @ty26 gt[gnt,11] = @tz26 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem26 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx26+@sx32) else gx = 0.01*@sx26 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy26+@sy32) else gx = 0.01*@sy26 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz26+@sz32) else gx = 0.01*@sz26 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx26+@rx32)*crad else ca = -@rx26*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry26+@ry32)*crad else ca = -@ry26*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz26+@rz32)*crad else ca = @rz26*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx26+@shx32)*crad else ca = -@shx26*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy26+@shy32)*crad else ca = -@shy26*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz26+@shz32)*crad else ca = @shz26*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t26r0c0 + gtemp[1]*@t26r1c0 + gtemp[2]*@t26r2c0 gt[gnt,1] = gtemp[0]*@t26r0c1 + gtemp[1]*@t26r1c1 + gtemp[2]*@t26r2c1 gt[gnt,2] = gtemp[0]*@t26r0c2 + gtemp[1]*@t26r1c2 + gtemp[2]*@t26r2c2 gt[gnt,3] = gtemp[3]*@t26r0c0 + gtemp[4]*@t26r1c0 + gtemp[5]*@t26r2c0 gt[gnt,4] = gtemp[3]*@t26r0c1 + gtemp[4]*@t26r1c1 + gtemp[5]*@t26r2c1 gt[gnt,5] = gtemp[3]*@t26r0c2 + gtemp[4]*@t26r1c2 + gtemp[5]*@t26r2c2 gt[gnt,6] = gtemp[6]*@t26r0c0 + gtemp[7]*@t26r1c0 + gtemp[8]*@t26r2c0 gt[gnt,7] = gtemp[6]*@t26r0c1 + gtemp[7]*@t26r1c1 + gtemp[8]*@t26r2c1 gt[gnt,8] = gtemp[6]*@t26r0c2 + gtemp[7]*@t26r1c2 + gtemp[8]*@t26r2c2 endif endif until gj>=100 if @it26 gt[gnt,9] = gt[gnt,9] +@itx26*gt[gnt,0]+@ity26*gt[gnt,3]+@itz26*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx26*gt[gnt,1]+@ity26*gt[gnt,4]+@itz26*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx26*gt[gnt,2]+@ity26*gt[gnt,5]+@itz26*gt[gnt,8] endif if @usecount26 gcount[gnt] = @count26 else gcount[gnt] = @igen + 1 endif if @usetotal26 gcount1[gnt] = @total26 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us26 gnt = gnt + 1 endif endif ; @use26 if @use27 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==27) if @useskips gj = 1073741824 gi = 30 gk = @skip27mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip27mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip27mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip27mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip27mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip27mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip27mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp27 ; Transformation priority gv[gnt,1] = @tf27 ; RIFS code if @showtrans==0 || @showtrans==27 gv[gnt,2] = 270 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 26 ; Transformation number if @sp gtc[gnt] = log(@tc27) else gtc[gnt] = @tc27 endif ; transform priorities gp[0] = @sx27p gp[1] = @sy27p gp[2] = @sz27p gp[3] = @rx27p gp[4] = @ry27p gp[5] = @rz27p gp[6] = @shx27p gp[7] = @shy27p gp[8] = @shz27p gp[9] = @m27p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx27 + @tx32 gt[gnt,10] = @ty27 + @ty32 gt[gnt,11] = @tz27 + @tz32 else gt[gnt,9] = @tx27 gt[gnt,10] = @ty27 gt[gnt,11] = @tz27 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem27 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx27+@sx32) else gx = 0.01*@sx27 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy27+@sy32) else gx = 0.01*@sy27 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz27+@sz32) else gx = 0.01*@sz27 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx27+@rx32)*crad else ca = -@rx27*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry27+@ry32)*crad else ca = -@ry27*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz27+@rz32)*crad else ca = @rz27*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx27+@shx32)*crad else ca = -@shx27*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy27+@shy32)*crad else ca = -@shy27*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz27+@shz32)*crad else ca = @shz27*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t27r0c0 + gtemp[1]*@t27r1c0 + gtemp[2]*@t27r2c0 gt[gnt,1] = gtemp[0]*@t27r0c1 + gtemp[1]*@t27r1c1 + gtemp[2]*@t27r2c1 gt[gnt,2] = gtemp[0]*@t27r0c2 + gtemp[1]*@t27r1c2 + gtemp[2]*@t27r2c2 gt[gnt,3] = gtemp[3]*@t27r0c0 + gtemp[4]*@t27r1c0 + gtemp[5]*@t27r2c0 gt[gnt,4] = gtemp[3]*@t27r0c1 + gtemp[4]*@t27r1c1 + gtemp[5]*@t27r2c1 gt[gnt,5] = gtemp[3]*@t27r0c2 + gtemp[4]*@t27r1c2 + gtemp[5]*@t27r2c2 gt[gnt,6] = gtemp[6]*@t27r0c0 + gtemp[7]*@t27r1c0 + gtemp[8]*@t27r2c0 gt[gnt,7] = gtemp[6]*@t27r0c1 + gtemp[7]*@t27r1c1 + gtemp[8]*@t27r2c1 gt[gnt,8] = gtemp[6]*@t27r0c2 + gtemp[7]*@t27r1c2 + gtemp[8]*@t27r2c2 endif endif until gj>=100 if @it27 gt[gnt,9] = gt[gnt,9] +@itx27*gt[gnt,0]+@ity27*gt[gnt,3]+@itz27*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx27*gt[gnt,1]+@ity27*gt[gnt,4]+@itz27*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx27*gt[gnt,2]+@ity27*gt[gnt,5]+@itz27*gt[gnt,8] endif if @usecount27 gcount[gnt] = @count27 else gcount[gnt] = @igen + 1 endif if @usetotal27 gcount1[gnt] = @total27 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us27 gnt = gnt + 1 endif endif ; @use27 if @use28 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==28) if @useskips gj = 1073741824 gi = 30 gk = @skip28mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip28mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip28mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip28mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip28mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip28mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip28mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp28 ; Transformation priority gv[gnt,1] = @tf28 ; RIFS code if @showtrans==0 || @showtrans==28 gv[gnt,2] = 280 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 27 ; Transformation number if @sp gtc[gnt] = log(@tc28) else gtc[gnt] = @tc28 endif ; transform priorities gp[0] = @sx28p gp[1] = @sy28p gp[2] = @sz28p gp[3] = @rx28p gp[4] = @ry28p gp[5] = @rz28p gp[6] = @shx28p gp[7] = @shy28p gp[8] = @shz28p gp[9] = @m28p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx28 + @tx32 gt[gnt,10] = @ty28 + @ty32 gt[gnt,11] = @tz28 + @tz32 else gt[gnt,9] = @tx28 gt[gnt,10] = @ty28 gt[gnt,11] = @tz28 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem28 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx28+@sx32) else gx = 0.01*@sx28 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy28+@sy32) else gx = 0.01*@sy28 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz28+@sz32) else gx = 0.01*@sz28 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx28+@rx32)*crad else ca = -@rx28*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry28+@ry32)*crad else ca = -@ry28*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz28+@rz32)*crad else ca = @rz28*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx28+@shx32)*crad else ca = -@shx28*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy28+@shy32)*crad else ca = -@shy28*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz28+@shz32)*crad else ca = @shz28*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t28r0c0 + gtemp[1]*@t28r1c0 + gtemp[2]*@t28r2c0 gt[gnt,1] = gtemp[0]*@t28r0c1 + gtemp[1]*@t28r1c1 + gtemp[2]*@t28r2c1 gt[gnt,2] = gtemp[0]*@t28r0c2 + gtemp[1]*@t28r1c2 + gtemp[2]*@t28r2c2 gt[gnt,3] = gtemp[3]*@t28r0c0 + gtemp[4]*@t28r1c0 + gtemp[5]*@t28r2c0 gt[gnt,4] = gtemp[3]*@t28r0c1 + gtemp[4]*@t28r1c1 + gtemp[5]*@t28r2c1 gt[gnt,5] = gtemp[3]*@t28r0c2 + gtemp[4]*@t28r1c2 + gtemp[5]*@t28r2c2 gt[gnt,6] = gtemp[6]*@t28r0c0 + gtemp[7]*@t28r1c0 + gtemp[8]*@t28r2c0 gt[gnt,7] = gtemp[6]*@t28r0c1 + gtemp[7]*@t28r1c1 + gtemp[8]*@t28r2c1 gt[gnt,8] = gtemp[6]*@t28r0c2 + gtemp[7]*@t28r1c2 + gtemp[8]*@t28r2c2 endif endif until gj>=100 if @it28 gt[gnt,9] = gt[gnt,9] +@itx28*gt[gnt,0]+@ity28*gt[gnt,3]+@itz28*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx28*gt[gnt,1]+@ity28*gt[gnt,4]+@itz28*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx28*gt[gnt,2]+@ity28*gt[gnt,5]+@itz28*gt[gnt,8] endif if @usecount28 gcount[gnt] = @count28 else gcount[gnt] = @igen + 1 endif if @usetotal28 gcount1[gnt] = @total28 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us28 gnt = gnt + 1 endif endif ; @use28 if @use29 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==29) if @useskips gj = 1073741824 gi = 30 gk = @skip29mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip29mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip29mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip29mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip29mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip29mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip29mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp29 ; Transformation priority gv[gnt,1] = @tf29 ; RIFS code if @showtrans==0 || @showtrans==29 gv[gnt,2] = 290 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 28 ; Transformation number if @sp gtc[gnt] = log(@tc29) else gtc[gnt] = @tc29 endif ; transform priorities gp[0] = @sx29p gp[1] = @sy29p gp[2] = @sz29p gp[3] = @rx29p gp[4] = @ry29p gp[5] = @rz29p gp[6] = @shx29p gp[7] = @shy29p gp[8] = @shz29p gp[9] = @m29p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx29 + @tx32 gt[gnt,10] = @ty29 + @ty32 gt[gnt,11] = @tz29 + @tz32 else gt[gnt,9] = @tx29 gt[gnt,10] = @ty29 gt[gnt,11] = @tz29 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem29 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx29+@sx32) else gx = 0.01*@sx29 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy29+@sy32) else gx = 0.01*@sy29 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz29+@sz32) else gx = 0.01*@sz29 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx29+@rx32)*crad else ca = -@rx29*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry29+@ry32)*crad else ca = -@ry29*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz29+@rz32)*crad else ca = @rz29*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx29+@shx32)*crad else ca = -@shx29*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy29+@shy32)*crad else ca = -@shy29*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz29+@shz32)*crad else ca = @shz29*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t29r0c0 + gtemp[1]*@t29r1c0 + gtemp[2]*@t29r2c0 gt[gnt,1] = gtemp[0]*@t29r0c1 + gtemp[1]*@t29r1c1 + gtemp[2]*@t29r2c1 gt[gnt,2] = gtemp[0]*@t29r0c2 + gtemp[1]*@t29r1c2 + gtemp[2]*@t29r2c2 gt[gnt,3] = gtemp[3]*@t29r0c0 + gtemp[4]*@t29r1c0 + gtemp[5]*@t29r2c0 gt[gnt,4] = gtemp[3]*@t29r0c1 + gtemp[4]*@t29r1c1 + gtemp[5]*@t29r2c1 gt[gnt,5] = gtemp[3]*@t29r0c2 + gtemp[4]*@t29r1c2 + gtemp[5]*@t29r2c2 gt[gnt,6] = gtemp[6]*@t29r0c0 + gtemp[7]*@t29r1c0 + gtemp[8]*@t29r2c0 gt[gnt,7] = gtemp[6]*@t29r0c1 + gtemp[7]*@t29r1c1 + gtemp[8]*@t29r2c1 gt[gnt,8] = gtemp[6]*@t29r0c2 + gtemp[7]*@t29r1c2 + gtemp[8]*@t29r2c2 endif endif until gj>=100 if @it29 gt[gnt,9] = gt[gnt,9] +@itx29*gt[gnt,0]+@ity29*gt[gnt,3]+@itz29*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx29*gt[gnt,1]+@ity29*gt[gnt,4]+@itz29*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx29*gt[gnt,2]+@ity29*gt[gnt,5]+@itz29*gt[gnt,8] endif if @usecount29 gcount[gnt] = @count29 else gcount[gnt] = @igen + 1 endif if @usetotal29 gcount1[gnt] = @total29 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us29 gnt = gnt + 1 endif endif ; @use29 if @use30 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==30) if @useskips gj = 1073741824 gi = 30 gk = @skip30mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip30mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip30mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip30mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip30mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip30mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip30mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp30 ; Transformation priority gv[gnt,1] = @tf30 ; RIFS code if @showtrans==0 || @showtrans==30 gv[gnt,2] = 300 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 29 ; Transformation number if @sp gtc[gnt] = log(@tc30) else gtc[gnt] = @tc30 endif ; transform priorities gp[0] = @sx30p gp[1] = @sy30p gp[2] = @sz30p gp[3] = @rx30p gp[4] = @ry30p gp[5] = @rz30p gp[6] = @shx30p gp[7] = @shy30p gp[8] = @shz30p gp[9] = @m30p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx30 + @tx32 gt[gnt,10] = @ty30 + @ty32 gt[gnt,11] = @tz30 + @tz32 else gt[gnt,9] = @tx30 gt[gnt,10] = @ty30 gt[gnt,11] = @tz30 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem30 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx30+@sx32) else gx = 0.01*@sx30 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy30+@sy32) else gx = 0.01*@sy30 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz30+@sz32) else gx = 0.01*@sz30 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx30+@rx32)*crad else ca = -@rx30*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry30+@ry32)*crad else ca = -@ry30*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz30+@rz32)*crad else ca = @rz30*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx30+@shx32)*crad else ca = -@shx30*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy30+@shy32)*crad else ca = -@shy30*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz30+@shz32)*crad else ca = @shz30*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t30r0c0 + gtemp[1]*@t30r1c0 + gtemp[2]*@t30r2c0 gt[gnt,1] = gtemp[0]*@t30r0c1 + gtemp[1]*@t30r1c1 + gtemp[2]*@t30r2c1 gt[gnt,2] = gtemp[0]*@t30r0c2 + gtemp[1]*@t30r1c2 + gtemp[2]*@t30r2c2 gt[gnt,3] = gtemp[3]*@t30r0c0 + gtemp[4]*@t30r1c0 + gtemp[5]*@t30r2c0 gt[gnt,4] = gtemp[3]*@t30r0c1 + gtemp[4]*@t30r1c1 + gtemp[5]*@t30r2c1 gt[gnt,5] = gtemp[3]*@t30r0c2 + gtemp[4]*@t30r1c2 + gtemp[5]*@t30r2c2 gt[gnt,6] = gtemp[6]*@t30r0c0 + gtemp[7]*@t30r1c0 + gtemp[8]*@t30r2c0 gt[gnt,7] = gtemp[6]*@t30r0c1 + gtemp[7]*@t30r1c1 + gtemp[8]*@t30r2c1 gt[gnt,8] = gtemp[6]*@t30r0c2 + gtemp[7]*@t30r1c2 + gtemp[8]*@t30r2c2 endif endif until gj>=100 if @it30 gt[gnt,9] = gt[gnt,9] +@itx30*gt[gnt,0]+@ity30*gt[gnt,3]+@itz30*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx30*gt[gnt,1]+@ity30*gt[gnt,4]+@itz30*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx30*gt[gnt,2]+@ity30*gt[gnt,5]+@itz30*gt[gnt,8] endif if @usecount30 gcount[gnt] = @count30 else gcount[gnt] = @igen + 1 endif if @usetotal30 gcount1[gnt] = @total2 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us30 gnt = gnt + 1 endif endif ; @use30 if @use31 && (@view==0 || @viewall==0 || @showtrans==0 || @showtrans==31) if @useskips gj = 1073741824 gi = 30 gk = @skip31mask1 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip31mask2 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip31mask3 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip31mask4 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip31mask5 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip31mask6 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip31mask7 repeat if gk>=gj df[gnt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @igen repeat gg = df[gnt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips gv[gnt,0] = @tp31 ; Transformation priority gv[gnt,1] = @tf31 ; RIFS code if @showtrans==0 || @showtrans==31 gv[gnt,2] = 310 ; Transformation colour else gv[gnt,2] = 1 endif gv[gnt,3] = 30 ; Transformation number if @sp gtc[gnt] = log(@tc31) else gtc[gnt] = @tc31 endif ; transform priorities gp[0] = @sx31p gp[1] = @sy31p gp[2] = @sz31p gp[3] = @rx31p gp[4] = @ry31p gp[5] = @rz31p gp[6] = @shx31p gp[7] = @shy31p gp[8] = @shz31p gp[9] = @m31p if @xeno gp[0] = 3 gp[1] = 4 gp[2] = 5 gp[3] = 6 gp[4] = 7 gp[5] = 8 gp[6] = 1 gp[7] = 2 gp[8] = 0 gp[9] = 9 endif ; the Transformation (matrix part to be calculated) gt[gnt,0] = 1.0 gt[gnt,1] = 0.0 gt[gnt,2] = 0.0 gt[gnt,3] = 0.0 gt[gnt,4] = 1.0 gt[gnt,5] = 0.0 gt[gnt,6] = 0.0 gt[gnt,7] = 0.0 gt[gnt,8] = 1.0 if @deform gt[gnt,9] = @tx31 + @tx32 gt[gnt,10] = @ty31 + @ty32 gt[gnt,11] = @tz31 + @tz32 else gt[gnt,9] = @tx31 gt[gnt,10] = @ty31 gt[gnt,11] = @tz31 endif if @xeno gt[gnt,11] = -gt[gnt,11] endif ; calculate the (contraction) matrix repeat gi = 8 if @usem31 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 if @deform gx = 0.01*(@sx31+@sx32) else gx = 0.01*@sx31 endif gt[gnt,0] = gx*gt[gnt,0] gt[gnt,3] = gx*gt[gnt,3] gt[gnt,6] = gx*gt[gnt,6] elseif gk==1 if @deform gx = 0.01*(@sy31+@sy32) else gx = 0.01*@sy31 endif gt[gnt,1] = gx*gt[gnt,1] gt[gnt,4] = gx*gt[gnt,4] gt[gnt,7] = gx*gt[gnt,7] elseif gk==2 if @deform gx = 0.01*(@sz31+@sz32) else gx = 0.01*@sz31 endif gt[gnt,2] = gx*gt[gnt,2] gt[gnt,5] = gx*gt[gnt,5] gt[gnt,8] = gx*gt[gnt,8] elseif gk==3 if @deform ca = -(@rx31+@rx32)*crad else ca = -@rx31*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,1] gt[gnt,1] = gx*ca - gt[gnt,2]*sa gt[gnt,2] = gx*sa + gt[gnt,2]*ca gx = gt[gnt,4] gt[gnt,4] = gx*ca - gt[gnt,5]*sa gt[gnt,5] = gx*sa + gt[gnt,5]*ca gx = gt[gnt,7] gt[gnt,7] = gx*ca - gt[gnt,8]*sa gt[gnt,8] = gx*sa + gt[gnt,8]*ca elseif gk==4 if @deform ca = -(@ry31+@ry32)*crad else ca = -@ry31*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca + gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca - gx*sa gx = gt[gnt,3] gt[gnt,3] = gx*ca + gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca - gx*sa gx = gt[gnt,6] gt[gnt,6] = gx*ca + gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca - gx*sa elseif gk==5 if @deform ca = (@rz31+@rz32)*crad else ca = @rz31*crad endif sa = sin(ca) ca = cos(ca) gx = gt[gnt,0] gt[gnt,0] = gx*ca - gt[gnt,1]*sa gt[gnt,1] = gx*sa + gt[gnt,1]*ca gx = gt[gnt,3] gt[gnt,3] = gx*ca - gt[gnt,4]*sa gt[gnt,4] = gx*sa + gt[gnt,4]*ca gx = gt[gnt,6] gt[gnt,6] = gx*ca - gt[gnt,7]*sa gt[gnt,7] = gx*sa + gt[gnt,7]*ca elseif gk==6 if @deform ca = -(@shx31+@shx32)*crad else ca = -@shx31*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,1] = gt[gnt,1] - gt[gnt,2]*sa gt[gnt,2] = gt[gnt,2]*ca gt[gnt,4] = gt[gnt,4] - gt[gnt,5]*sa gt[gnt,5] = gt[gnt,5]*ca gt[gnt,7] = gt[gnt,7] - gt[gnt,8]*sa gt[gnt,8] = gt[gnt,8]*ca elseif gk==7 if @deform ca = -(@shy31+@shy32)*crad else ca = -@shy31*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,2] = gt[gnt,2] - gt[gnt,0]*sa gt[gnt,0] = gt[gnt,0]*ca gt[gnt,5] = gt[gnt,5] - gt[gnt,3]*sa gt[gnt,3] = gt[gnt,3]*ca gt[gnt,8] = gt[gnt,8] - gt[gnt,6]*sa gt[gnt,6] = gt[gnt,6]*ca elseif gk==8 if @deform ca = (@shz31+@shz32)*crad else ca = @shz31*crad endif sa = sin(ca) ca = cos(ca) gt[gnt,0] = gt[gnt,0] - gt[gnt,1]*sa gt[gnt,1] = gt[gnt,1]*ca gt[gnt,3] = gt[gnt,3] - gt[gnt,4]*sa gt[gnt,4] = gt[gnt,4]*ca gt[gnt,6] = gt[gnt,6] - gt[gnt,7]*sa gt[gnt,7] = gt[gnt,7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gt[gnt,gj] until (gj=gj-1)<0 gt[gnt,0] = gtemp[0]*@t31r0c0 + gtemp[1]*@t31r1c0 + gtemp[2]*@t31r2c0 gt[gnt,1] = gtemp[0]*@t31r0c1 + gtemp[1]*@t31r1c1 + gtemp[2]*@t31r2c1 gt[gnt,2] = gtemp[0]*@t31r0c2 + gtemp[1]*@t31r1c2 + gtemp[2]*@t31r2c2 gt[gnt,3] = gtemp[3]*@t31r0c0 + gtemp[4]*@t31r1c0 + gtemp[5]*@t31r2c0 gt[gnt,4] = gtemp[3]*@t31r0c1 + gtemp[4]*@t31r1c1 + gtemp[5]*@t31r2c1 gt[gnt,5] = gtemp[3]*@t31r0c2 + gtemp[4]*@t31r1c2 + gtemp[5]*@t31r2c2 gt[gnt,6] = gtemp[6]*@t31r0c0 + gtemp[7]*@t31r1c0 + gtemp[8]*@t31r2c0 gt[gnt,7] = gtemp[6]*@t31r0c1 + gtemp[7]*@t31r1c1 + gtemp[8]*@t31r2c1 gt[gnt,8] = gtemp[6]*@t31r0c2 + gtemp[7]*@t31r1c2 + gtemp[8]*@t31r2c2 endif endif until gj>=100 if @it31 gt[gnt,9] = gt[gnt,9] +@itx31*gt[gnt,0]+@ity31*gt[gnt,3]+@itz31*gt[gnt,6] gt[gnt,10] = gt[gnt,10]+@itx31*gt[gnt,1]+@ity31*gt[gnt,4]+@itz31*gt[gnt,7] gt[gnt,11] = gt[gnt,11]+@itx31*gt[gnt,2]+@ity31*gt[gnt,5]+@itz31*gt[gnt,8] endif if @usecount31 gcount[gnt] = @count31 else gcount[gnt] = @igen + 1 endif if @usetotal31 gcount1[gnt] = @total31 else gcount1[gnt] = @igen + 1 endif gus[gnt] = @us31 gnt = gnt + 1 endif endif ; @use31 if @trans && gnt>1 ; overall Transformation ; transform priorities gp[0] = @sx0p gp[1] = @sy0p gp[2] = @sz0p gp[3] = @rx0p gp[4] = @ry0p gp[5] = @rz0p gp[6] = @shx0p gp[7] = @shy0p gp[8] = @shz0p gp[9] = @m0p ; the Transformation (matrix part to be calculated) gtt[0] = 1.0 gtt[1] = 0.0 gtt[2] = 0.0 gtt[3] = 0.0 gtt[4] = 1.0 gtt[5] = 0.0 gtt[6] = 0.0 gtt[7] = 0.0 gtt[8] = 1.0 gtt[9] = @tx0 gtt[10] = @ty0 gtt[11] = @tz0 ; calculate the matrix repeat gi = 8 if @usem0 gi = 9 endif gj = 100 repeat if gp[gi]<=gj gj = gp[gi] gk = gi endif until (gi=gi-1)<0 if gj<100 gp[gk] = 100 if gk==0 gx = 0.01*@sx0 gtt[0] = gx*gtt[0] gtt[3] = gx*gtt[3] gtt[6] = gx*gtt[6] elseif gk==1 gx = 0.01*@sy0 gtt[1] = gx*gtt[1] gtt[4] = gx*gtt[4] gtt[7] = gx*gtt[7] elseif gk==2 gx = 0.01*@sz0 gtt[2] = gx*gtt[2] gtt[5] = gx*gtt[5] gtt[8] = gx*gtt[8] elseif gk==3 ca = -@rx0*crad sa = sin(ca) ca = cos(ca) gx = gtt[1] gtt[1] = gx*ca - gtt[2]*sa gtt[2] = gx*sa + gtt[2]*ca gx = gtt[4] gtt[4] = gx*ca - gtt[5]*sa gtt[5] = gx*sa + gtt[5]*ca gx = gtt[7] gtt[7] = gx*ca - gtt[8]*sa gtt[8] = gx*sa + gtt[8]*ca elseif gk==4 ca = -@ry0*crad sa = sin(ca) ca = cos(ca) gx = gtt[0] gtt[0] = gx*ca + gtt[2]*sa gtt[2] = gtt[2]*ca - gx*sa gx = gtt[3] gtt[3] = gx*ca + gtt[5]*sa gtt[5] = gtt[5]*ca - gx*sa gx = gtt[6] gtt[6] = gx*ca + gtt[8]*sa gtt[8] = gtt[8]*ca - gx*sa elseif gk==5 ca = @rz0*crad sa = sin(ca) ca = cos(ca) gx = gtt[0] gtt[0] = gx*ca - gtt[1]*sa gtt[1] = gx*sa + gtt[1]*ca gx = gtt[3] gtt[3] = gx*ca - gtt[4]*sa gtt[4] = gx*sa + gtt[4]*ca gx = gtt[6] gtt[6] = gx*ca - gtt[7]*sa gtt[7] = gx*sa + gtt[7]*ca elseif gk==6 ca = -@shx0*crad sa = sin(ca) ca = cos(ca) gtt[1] = gtt[1] - gtt[2]*sa gtt[2] = gtt[2]*ca gtt[4] = gtt[4] - gtt[5]*sa gtt[5] = gtt[5]*ca gtt[7] = gtt[7] - gtt[8]*sa gtt[8] = gtt[8]*ca elseif gk==7 ca = -@shy0*crad sa = sin(ca) ca = cos(ca) gtt[2] = gtt[2] - gtt[0]*sa gtt[0] = gtt[0]*ca gtt[5] = gtt[5] - gtt[3]*sa gtt[3] = gtt[3]*ca gtt[8] = gtt[8] - gtt[6]*sa gtt[6] = gtt[6]*ca elseif gk==8 ca = @shz0*crad sa = sin(ca) ca = cos(ca) gtt[0] = gtt[0] - gtt[1]*sa gtt[1] = gtt[1]*ca gtt[3] = gtt[3] - gtt[4]*sa gtt[4] = gtt[4]*ca gtt[6] = gtt[6] - gtt[7]*sa gtt[7] = gtt[7]*ca elseif gk==9 gj = 8 repeat gtemp[gj] = gtt[gj] until (gj=gj-1)<0 gtt[0] = gtemp[0]*@t0r0c0 + gtemp[1]*@t0r1c0 + gtemp[2]*@t0r2c0 gtt[1] = gtemp[0]*@t0r0c1 + gtemp[1]*@t0r1c1 + gtemp[2]*@t0r2c1 gtt[2] = gtemp[0]*@t0r0c2 + gtemp[1]*@t0r1c2 + gtemp[2]*@t0r2c2 gtt[3] = gtemp[3]*@t0r0c0 + gtemp[4]*@t0r1c0 + gtemp[5]*@t0r2c0 gtt[4] = gtemp[3]*@t0r0c1 + gtemp[4]*@t0r1c1 + gtemp[5]*@t0r2c1 gtt[5] = gtemp[3]*@t0r0c2 + gtemp[4]*@t0r1c2 + gtemp[5]*@t0r2c2 gtt[6] = gtemp[6]*@t0r0c0 + gtemp[7]*@t0r1c0 + gtemp[8]*@t0r2c0 gtt[7] = gtemp[6]*@t0r0c1 + gtemp[7]*@t0r1c1 + gtemp[8]*@t0r2c1 gtt[8] = gtemp[6]*@t0r0c2 + gtemp[7]*@t0r1c2 + gtemp[8]*@t0r2c2 endif endif until gj>=100 ; ;-------------------------------------------------------------------------- ; ; Transformation of an entire IFS: ; assume we have n transforms |Ai|+|ai,bi| such that ; ; |x,y||Ai|+|ai,bi|=|x1,y1| ; ; To transform our entire IFS by a transform |B|+|c,d| ; for each original transform we want |Ci|+|ei,fi| such that: ; ; (|x,y||B|+|c,d|)|Ci|+|ei,fi|=|x1,y1||B|+|c,d| ; (as both the entry point and exit point are transformed by |B|+|c,d|) ; we already have |x1,y1|=|x,y||Ai|+|ai,bi| so ; (|x,y||B|+|c,d|)|Ci|+|ei,fi|=(|x,y||Ai|+|ai,bi|)|B|+|c,d| ; |x,y||B||Ci|+|c,d||Ci|+|ei,fi|=|x,y||Ai||B|+|ai,bi||B|+|c,d| ; if |Ci|=|~B||Ai||B| (where |~B| is the inverse of B) we have: ; |x,y||Ai||B|+|c,d||Ci|+|ei,fi|=|x,y||Ai||B|+|ai,bi||B|+|c,d| ; hence ; |c,d||Ci|+|ei,fi|=|ai,bi||B|+|c,d| ; |ei,fi|=|ai,bi||B|+|c,d|-|c,d||Ci| ; ; ie. To transform an entire IFS |Ai|+|ai,bi| by |B|+|c,d| ; for each transform in the IFS our new matrix is ; |Ci| = |~B||Ai||B| (where |~B| is the inverse of |B|) ; and our new translation is ; |ei,fi| = |ai,bi||B|+|c,d|-|c,d||Ci| ; ; Note that the new transformation matrix |Ci| will have exactly the same ; scaling factor as the original |Ai|, hence the probabilities and fractal ; dimension of the new transformed RIFS will be the same as the original, ; all that is changed is the area it covers. ; ;-------------------------------------------------------------------------- ; ; Transform all the Transformations by the Overall Transformation ; First check that the Overall Transformation is valid gx = gtt[0]*(gtt[4]*gtt[8]-gtt[5]*gtt[7]) \ -gtt[1]*(gtt[3]*gtt[8]-gtt[5]*gtt[6]) \ +gtt[2]*(gtt[3]*gtt[7]-gtt[4]*gtt[6]) if abs(gx)<1e-100 || abs(gx)>1e100 if @showinfo print("Overall Transformation will not invert, it will be ignored.") endif else ; Now Apply the overall transform after each individual one ; and partially adjust the Translation |ei,fi| = |ai,bi||B|+|c,d| (-|c,d||Ci|) gi = gnt-1 repeat gj = 8 repeat gtemp[gj] = gt[gi,gj] until (gj=gj-1)<0 gt[gi,0] = gtemp[0]*gtt[0] + gtemp[1]*gtt[3] + gtemp[2]*gtt[6] gt[gi,1] = gtemp[0]*gtt[1] + gtemp[1]*gtt[4] + gtemp[2]*gtt[7] gt[gi,2] = gtemp[0]*gtt[2] + gtemp[1]*gtt[5] + gtemp[2]*gtt[8] gt[gi,3] = gtemp[3]*gtt[0] + gtemp[4]*gtt[3] + gtemp[5]*gtt[6] gt[gi,4] = gtemp[3]*gtt[1] + gtemp[4]*gtt[4] + gtemp[5]*gtt[7] gt[gi,5] = gtemp[3]*gtt[2] + gtemp[4]*gtt[5] + gtemp[5]*gtt[8] gt[gi,6] = gtemp[6]*gtt[0] + gtemp[7]*gtt[3] + gtemp[8]*gtt[6] gt[gi,7] = gtemp[6]*gtt[1] + gtemp[7]*gtt[4] + gtemp[8]*gtt[7] gt[gi,8] = gtemp[6]*gtt[2] + gtemp[7]*gtt[5] + gtemp[8]*gtt[8] gy = gt[gi,9] gz = gt[gi,10] gt[gi,9] = gy*gtt[0] + gz*gtt[3] + gt[gi,11]*gtt[6] + gtt[9] gt[gi,10] = gy*gtt[1] + gz*gtt[4] + gt[gi,11]*gtt[7] + gtt[10] gt[gi,11] = gy*gtt[2] + gz*gtt[5] + gt[gi,11]*gtt[8] + gtt[11] until (gi=gi-1)<0 ; Now invert the Overall Transformation gx = 1.0/gx gj = 8 repeat gtemp[gj] = gtt[gj] until (gj=gj-1)<0 gtt[0] = (gtemp[4]*gtemp[8]-gtemp[5]*gtemp[7])*gx gtt[1] = (gtemp[2]*gtemp[7]-gtemp[1]*gtemp[8])*gx gtt[2] = (gtemp[1]*gtemp[5]-gtemp[2]*gtemp[4])*gx gtt[3] = (gtemp[5]*gtemp[6]-gtemp[3]*gtemp[8])*gx gtt[4] = (gtemp[0]*gtemp[8]-gtemp[2]*gtemp[6])*gx gtt[5] = (gtemp[2]*gtemp[3]-gtemp[0]*gtemp[5])*gx gtt[6] = (gtemp[3]*gtemp[7]-gtemp[4]*gtemp[6])*gx gtt[7] = (gtemp[1]*gtemp[6]-gtemp[0]*gtemp[7])*gx gtt[8] = (gtemp[0]*gtemp[4]-gtemp[1]*gtemp[3])*gx ; Now Apply the inverted overall transform before each individual one ; and then correct the Translation |ei,fi| = (|ai,bi||B|+|c,d|) - |c,d||Ci| gi = gnt-1 repeat gj = 8 repeat gtemp[gj] = gt[gi,gj] until (gj=gj-1)<0 gt[gi,0] = gtt[0]*gtemp[0] + gtt[1]*gtemp[3] + gtt[2]*gtemp[6] gt[gi,1] = gtt[0]*gtemp[1] + gtt[1]*gtemp[4] + gtt[2]*gtemp[7] gt[gi,2] = gtt[0]*gtemp[2] + gtt[1]*gtemp[5] + gtt[2]*gtemp[8] gt[gi,3] = gtt[3]*gtemp[0] + gtt[4]*gtemp[3] + gtt[5]*gtemp[6] gt[gi,4] = gtt[3]*gtemp[1] + gtt[4]*gtemp[4] + gtt[5]*gtemp[7] gt[gi,5] = gtt[3]*gtemp[2] + gtt[4]*gtemp[5] + gtt[5]*gtemp[8] gt[gi,6] = gtt[6]*gtemp[0] + gtt[7]*gtemp[3] + gtt[8]*gtemp[6] gt[gi,7] = gtt[6]*gtemp[1] + gtt[7]*gtemp[4] + gtt[8]*gtemp[7] gt[gi,8] = gtt[6]*gtemp[2] + gtt[7]*gtemp[5] + gtt[8]*gtemp[8] gt[gi,9] = gt[gi,9] - gtt[9]*gt[gi,0] - gtt[10]*gt[gi,3] \ - gtt[11]*gt[gi,6] gt[gi,10] = gt[gi,10] - gtt[9]*gt[gi,1] - gtt[10]*gt[gi,4] \ - gtt[11]*gt[gi,7] gt[gi,11] = gt[gi,11] - gtt[9]*gt[gi,2] - gtt[10]*gt[gi,5] \ - gtt[11]*gt[gi,8] until (gi=gi-1)<0 endif ; Overall Transform valid endif ; @trans (overall Transformation) if @view==1 ; if viewing Transformations int gsc[@twidth+1,@theight+1] ; screen buffer float gc[32,8,3] ; vertices gv[gnt,2] = 1 ; colour 1 for untransformed cube ; Points for untransformed cube gc[gnt,0,0] = -1.0 gc[gnt,0,1] = -1.0 gc[gnt,0,2] = -1.0 gc[gnt,1,0] = -1.0 gc[gnt,1,1] = 1.0 gc[gnt,1,2] = -1.0 gc[gnt,2,0] = 1.0 gc[gnt,2,1] = 1.0 gc[gnt,2,2] = -1.0 gc[gnt,3,0] = 1.0 gc[gnt,3,1] = -1.0 gc[gnt,3,2] = -1.0 gc[gnt,4,0] = 1.0 gc[gnt,4,1] = -1.0 gc[gnt,4,2] = 1.0 gc[gnt,5,0] = 1.0 gc[gnt,5,1] = 1.0 gc[gnt,5,2] = 1.0 gc[gnt,6,0] = -1.0 gc[gnt,6,1] = 1.0 gc[gnt,6,2] = 1.0 gc[gnt,7,0] = -1.0 gc[gnt,7,1] = -1.0 gc[gnt,7,2] = 1.0 if gnt>0 ; Get the transformed cubes in 3D gj = 0 repeat gk = 0 repeat gc[gj,gk,0] = gc[gnt,gk,0]*gt[gj,0] + gc[gnt,gk,1]*gt[gj,3] \ + gc[gnt,gk,2]*gt[gj,6] gc[gj,gk,1] = gc[gnt,gk,0]*gt[gj,1] + gc[gnt,gk,1]*gt[gj,4] \ + gc[gnt,gk,2]*gt[gj,7] gc[gj,gk,2] = gc[gnt,gk,0]*gt[gj,2] + gc[gnt,gk,1]*gt[gj,5] \ + gc[gnt,gk,2]*gt[gj,8] if (@viewall==0 || @showtrans==0) gc[gj,gk,0] = gc[gj,gk,0] + gt[gj,9] gc[gj,gk,1] = gc[gj,gk,1] + gt[gj,10] gc[gj,gk,2] = gc[gj,gk,2] + gt[gj,11] endif until (gk=gk+1)>=8 until (gj=gj+1)>=gnt endif ; Calculate the viewing rotation matrix ca = -imag(@rotxy)*crad ; elevation sa = sin(ca) ca = cos(ca) cb = real(@rotxy)*crad ; direction sb = sin(cb) cb = cos(cb) gtemp[0] = cb gtemp[1] = sa*sb gtemp[2] = -ca*sb ; gtemp[3] = 0.0 gtemp[4] = ca gtemp[5] = sa gtemp[6] = sb gtemp[7] = -sa*cb gtemp[8] = ca*cb ; Rotate gz = 1e100 gj = 0 repeat gk = 0 repeat gx = gc[gj,gk,0] gy = gc[gj,gk,1] gc[gj,gk,0] = gx*gtemp[0] + gc[gj,gk,2]*gtemp[6] gc[gj,gk,1] = gx*gtemp[1] + gy*gtemp[4] + gc[gj,gk,2]*gtemp[7] gc[gj,gk,2] = gx*gtemp[2] + gy*gtemp[5] + gc[gj,gk,2]*gtemp[8] if gc[gj,gk,2]=8 until (gj=gj+1)>gnt ; Adjust z coords and get max x and y gy = 2.0*gz - 20.0 gz = gw = 0.0 gj = 0 repeat gk = 0 repeat gx = gc[gj,gk,2] - gy gc[gj,gk,0] = gc[gj,gk,0]/gx gc[gj,gk,1] = gc[gj,gk,1]/gx if abs(gc[gj,gk,0])>gz gz = abs(gc[gj,gk,0]) endif if abs(gc[gj,gk,1])>gw gw = abs(gc[gj,gk,1]) endif until (gk=gk+1)>=8 until (gj=gj+1)>gnt ; Scale to best fit to screen coords. gz = 0.49*@twidth/gz gw = 0.49*@theight/gw if gw=8 until (gj=gj+1)>gnt ; now calculate "self-hidden" flags for the 6 faces ; then draw the visible lines solidly and dot the hidden ones. ; ; 6 ________ 5 ; / | /| ; 1 /__|____2/ | ; | 7 |____|__| 4 ; | / | / ; | / | / ; 0 |/_______|/ 3 ; gj = gnt repeat gtemp[0] = gc[gj,1,0] - gc[gj,0,0] ; point 1 - point 0 x gtemp[1] = gc[gj,1,1] - gc[gj,0,1] ; point 1 - point 0 y gtemp[2] = gc[gj,3,0] - gc[gj,0,0] ; point 3 - point 0 x gtemp[3] = gc[gj,3,1] - gc[gj,0,1] ; point 3 - point 0 y gtemp[4] = gc[gj,7,0] - gc[gj,0,0] ; point 7 - point 0 x gtemp[5] = gc[gj,7,1] - gc[gj,0,1] ; point 7 - point 0 y gtemp[6] = gc[gj,2,0] - gc[gj,5,0] ; point 2 - point 5 x gtemp[7] = gc[gj,2,1] - gc[gj,5,1] ; point 2 - point 5 y gtemp[8] = gc[gj,4,0] - gc[gj,5,0] ; point 4 - point 5 x gtemp[9] = gc[gj,4,1] - gc[gj,5,1] ; point 4 - point 5 y gtemp[10] = gc[gj,6,0] - gc[gj,5,0] ; point 6 - point 5 x gtemp[11] = gc[gj,6,1] - gc[gj,5,1] ; point 6 - point 5 y if gtemp[0]*gtemp[3]-gtemp[1]*gtemp[2]>0.0 gf[0,0] = true ; front is visible else gf[0,0] = false endif if gtemp[4]*gtemp[1]-gtemp[5]*gtemp[0]>0.0 gf[0,1] = true ; left is visible else gf[0,1] = false endif if gtemp[2]*gtemp[5]-gtemp[3]*gtemp[4]>0.0 gf[0,2] = true ; bottom is visible else gf[0,2] = false endif if gtemp[8]*gtemp[7]-gtemp[9]*gtemp[6]>0.0 gf[0,3] = true ; right is visible else gf[0,3] = false endif if gtemp[6]*gtemp[11]-gtemp[7]*gtemp[10]>0.0 gf[0,4] = true ; top is visible else gf[0,4] = false endif if gtemp[10]*gtemp[9]-gtemp[11]*gtemp[8]>0.0 gf[0,5] = true ; back is visible else gf[0,5] = false endif gx = gc[gj,0,0] gy = gc[gj,0,1] gw = gc[gj,1,0] - gx gz = gc[gj,1,1] - gy gi = round(abs(gw)) if gi>0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi0 || round(abs(gz))>0 if gi1 ; Calculate scales and remove invalid Transformations ; and calculate point attractors for each Transformation gi = gnt-1 repeat gj = 8 gt[gi,12] = gt[gi,0]*(gt[gi,4]*gt[gi,8]-gt[gi,5]*gt[gi,7]) \ -gt[gi,1]*(gt[gi,3]*gt[gi,8]-gt[gi,5]*gt[gi,6]) \ +gt[gi,2]*(gt[gi,3]*gt[gi,7]-gt[gi,4]*gt[gi,6]) if abs(gt[gi,12])<1e-100; || abs(gt[gi,12])>0.999 if @showinfo if gt[gi,12]<1e-100 print("Transformation ",gv[gi,3]+1," was removed as the scale was \ too small.") else print("Transformation ",gv[gi,3]+1," was removed as the scale was \ too large: ",abs(gt[gi,12])) endif endif gk = gi while gk12 gax[gk] = gax[gk+1] gay[gk] = gay[gk+1] gaz[gk] = gaz[gk+1] gtc[gk] = gtc[gk+1] gk = gk + 1 endwhile gnt = gnt - 1 elseif @view==0 gt[gi,0] = gt[gi,0] - 1.0 gt[gi,4] = gt[gi,4] - 1.0 gt[gi,8] = gt[gi,8] - 1.0 gw = -1.0/(gt[gi,0]*(gt[gi,4]*gt[gi,8]-gt[gi,7]*gt[gi,5]) \ -gt[gi,3]*(gt[gi,1]*gt[gi,8]-gt[gi,7]*gt[gi,2]) \ +gt[gi,6]*(gt[gi,1]*gt[gi,5]-gt[gi,4]*gt[gi,2]) ) gax[gi] = ((gt[gi,4]*gt[gi,8]-gt[gi,7]*gt[gi,5])*gt[gi,9] \ +(gt[gi,6]*gt[gi,5]-gt[gi,3]*gt[gi,8])*gt[gi,10] \ +(gt[gi,3]*gt[gi,7]-gt[gi,6]*gt[gi,4])*gt[gi,11])*gw gay[gi] = ((gt[gi,7]*gt[gi,2]-gt[gi,1]*gt[gi,8])*gt[gi,9] \ +(gt[gi,0]*gt[gi,8]-gt[gi,6]*gt[gi,2])*gt[gi,10] \ +(gt[gi,6]*gt[gi,1]-gt[gi,0]*gt[gi,7])*gt[gi,11])*gw gaz[gi] = ((gt[gi,1]*gt[gi,5]-gt[gi,4]*gt[gi,2])*gt[gi,9] \ +(gt[gi,3]*gt[gi,2]-gt[gi,0]*gt[gi,5])*gt[gi,10] \ +(gt[gi,0]*gt[gi,4]-gt[gi,3]*gt[gi,1])*gt[gi,11])*gw gt[gi,0] = gt[gi,0] + 1.0 gt[gi,4] = gt[gi,4] + 1.0 gt[gi,8] = gt[gi,8] + 1.0 ; Check attractors ; print(gax[gi]) ; print(gay[gi]) ; print(gaz[gi]) ; print(" ") ; print(gax[gi]*gt[gi,0]+gay[gi]*gt[gi,3]+gaz[gi]*gt[gi,6]+gt[gi,9]) ; print(gax[gi]*gt[gi,1]+gay[gi]*gt[gi,4]+gaz[gi]*gt[gi,7]+gt[gi,10]) ; print(gax[gi]*gt[gi,2]+gay[gi]*gt[gi,5]+gaz[gi]*gt[gi,8]+gt[gi,11]) endif until (gi=gi-1)<0 if gnt>1 if @view==0 ; Now use the point attractors to get the centre of gravity and extent gtestx = 0.0 gtesty = 0.0 gtestz = 0.0 gi = gnt-1 repeat gj = gnt-1 repeat gtestx = gtestx + (gtempx[gi,gj] = gax[gj]*gt[gi,0] \ + gay[gj]*gt[gi,3] \ + gaz[gj]*gt[gi,6] + gt[gi,9]) gtesty = gtesty + (gtempy[gi,gj] = gax[gj]*gt[gi,1] \ + gay[gj]*gt[gi,4] \ + gaz[gj]*gt[gi,7] + gt[gi,10]) gtestz = gtestz + (gtempz[gi,gj] = gax[gj]*gt[gi,2] \ + gay[gj]*gt[gi,5] \ + gaz[gj]*gt[gi,8] + gt[gi,11]) until (gj=gj-1)<0 until (gi=gi-1)<0 if @testval==0 gx = 1.0/(gnt*gnt) gtestx = gtestx*gx gtesty = gtesty*gx gtestz = gtestz*gx else gtestx = real(@coordxy) gtesty = imag(@coordxy) gtestz = @coordz endif if @calcgdist gdist = 0.0 gi = gnt-1 repeat gj = gnt-1 repeat gx = gtempx[gi,gj] - gtestx gy = gtempy[gi,gj] - gtesty gz = gtempz[gi,gj] - gtestz if (gw=gx*gx+gy*gy+gz*gz)>gdist gdist = gw endif until (gj=gj-1)<0 until (gi=gi-1)<0 gdist = @minval*@minval*gdist endif if !@usepri gi = gnt - 1 repeat gj = gnt - 1 gx = gax[gi] gy = gay[gi] gz = gaz[gi] repeat gx = gx + gtempx[gj,gi] gy = gy + gtempy[gj,gi] gz = gz + gtempz[gj,gi] until (gj=gj-1)<0 gdx[gi] = (gx/(gnt+1)-vx)^2 + (gy/(gnt+1)-vy)^2 + (gz/(gnt+1)-vz)^2 until (gi=gi-1)<0 endif endif ; auto-centre ; Change determinant scales to absolute and ; invert the matrices gi = gnt-1 repeat gj = 8 repeat gtemp[gj] = gt[gi,gj] until (gj=gj-1)<0 gu = 1.0/gt[gi,12] gt[gi,0] = (gtemp[4]*gtemp[8]-gtemp[5]*gtemp[7])*gu gt[gi,1] = (gtemp[2]*gtemp[7]-gtemp[1]*gtemp[8])*gu gt[gi,2] = (gtemp[1]*gtemp[5]-gtemp[2]*gtemp[4])*gu gt[gi,3] = (gtemp[5]*gtemp[6]-gtemp[3]*gtemp[8])*gu gt[gi,4] = (gtemp[0]*gtemp[8]-gtemp[2]*gtemp[6])*gu gt[gi,5] = (gtemp[2]*gtemp[3]-gtemp[0]*gtemp[5])*gu gt[gi,6] = (gtemp[3]*gtemp[7]-gtemp[4]*gtemp[6])*gu gt[gi,7] = (gtemp[1]*gtemp[6]-gtemp[0]*gtemp[7])*gu gt[gi,8] = (gtemp[0]*gtemp[4]-gtemp[1]*gtemp[3])*gu gt[gi,12] = abs(gt[gi,12]) until (gi=gi-1)<0 ; Convert RIFS codes to flags gi = gnt-1 gj = 30 gk = 1073741824 gg = false ; "no forbidden combinations" repeat if gv[gi,3]=gk gv[gl,1] = gv[gl,1] - gk endif until (gl=gl-1)<0 gj = gj - 1 gk = round(0.5*gk) until gv[gi,3]==gj endif gl = gnt - 1 repeat if gv[gl,1]>=gk gg = true ; at least one forbidden combination gf[gi,gl] = false gv[gl,1] = gv[gl,1] - gk else gf[gi,gl] = true endif until (gl=gl-1)<0 gj = gj - 1 gk = round(0.5*gk) until (gi=gi-1)<0 ; gi = gnt-1 ; repeat ; gj = gnt-1 ; repeat ; if !gf[gi,gj] ; print(gv[gi,3]+1," is not preceded by ",gv[gj,3]+1) ; endif ; until (gj=gj-1)<0 ; until (gi=gi-1)<0 if gg ; if are some forbidden combinations ; Check for and remove unused Transformations gi = gnt-1 repeat gj = gnt-1 gh = false repeat gh = gh || gf[gi,gj] until (gj=gj-1)<0 if !gh if @showinfo print("Transformation ",gv[gi,3]+1," was removed as it is not \ preceded by anything.") endif gk = gi while gk12 gj = gnt-1 repeat gf[gk,gj] = gf[gk+1,gj] gf[gj,gk] = gf[gj,gk+1] until (gj=gj-1)<0 gtc[gk] = gtc[gk+1] gk = gk + 1 endwhile gnt = gnt - 1 endif until (gi=gi-1)<0 if gnt >1 ; Calculate second level scales and find the largest gi = gnt-1 gu = 0.0 repeat gj = gi repeat gy = gs[gi,gj] = gt[gi,12]*gt[gj,12] if gf[gi,gj] && gy>gu gu = gy gk = gi gl = gj endif until (gj=gj-1)<0 until (gi=gi-1)<0 ; P0+P0^(log(S1)/log(S0))+P0^(log(S2)/log(S0))+....+P0^(log(Sn)/log(S0))=1.0 ; Convert all Si to log(Si)/log(S0), obviously log(S0)/log(S0) is 1.0 gu = 1.0/log(gu) gi = gnt-1 repeat gj = gi repeat gs[gi,gj] = gs[gj,gi] = log(gs[gi,gj])*gu until (gj=gj-1)<0 until (gi=gi-1)<0 ; Now use a binary search to get P0 and hence the fractal dimension gx = 0.5 gy = 0.25 repeat gz = gx gw = 0.0 gi = gnt-1 repeat gj = gnt-1 repeat if gf[gi,gj] gw = gw + gx^gs[gi,gj] endif until (gj=gj-1)<0 until (gi=gi-1)<0 if gw>1.0 gx = gx - gy elseif gw<1.0 gx = gx + gy else gx = gz endif gy = 0.5*gy until abs(gx-gz)<1e-100 if @useg gi = gnt - 1 repeat gy = 0.0 gj = gnt - 1 repeat gy = gy + exp(gs[gi,gj]*log(gx)) until (gj=gj-1)<0 if @sp gtc[gi] = log(gy) else gtc[gi] = gy endif until (gi=gi-1)<0 endif endif ; gnt>1 (after removing forbidden combinations) else ; no forbidden combinations ; Find the largest scale gu = 0.0 gi = gnt-1 repeat if gt[gi,12]>gu gu = gt[gi,12] gk = gi endif until (gi=gi-1)<0 ; P0+P0^(log(S1)/log(S0))+P0^(log(S2)/log(S0))+....+P0^(log(Sn)/log(S0))=1.0 ; Get all log(Si)/log(S0), obviously log(S0)/log(S0) is 1.0 gu = 1.0/log(gu) gi = gnt-1 repeat gs[0,gi] = log(gt[gi,12])*gu until (gi=gi-1)<0 ; Now use a binary search to get P0 and hence the fractal dimension gx = 0.5 gy = 0.25 repeat gz = gx gw = 0.0 gi = gnt - 1 repeat gw = gw + gx^gs[0,gi] until (gi=gi-1)<0 if gw>1.0 gx = gx - gy elseif gw<1.0 gx = gx + gy else gx = gz endif gy = 0.5*gy until abs(gx-gz)<1e-100 if @useg gi = gnt - 1 repeat gy = exp(gs[0,gi]*log(gx)) if @sp gtc[gi] = log(gy) else gtc[gi] = gy endif until (gi=gi-1)<0 endif endif ; gg (forbidden combinations) gd = 3.0*log(gx)*gu ; Fractal Dimension = log(P0)/log(S0) if gnt>1 gntm1 = gnt - 1 ; Now check any depth restrictions haven't completely disabled starting depths ; if they have then remove the unused depths gi = 0 gg = false repeat gj = gntm1 repeat gg = df[gj,gi] until (gj=gj-1)<0 || gg if !gg gi = gi + 1 endif until gg if gi>0 gl = @depth if gl>216-gi gl = 216-gi endif gj = 0 repeat gk = gntm1 repeat df[gk,gj] = df[gk,gj+gi] until (gk=gk-1)<0 until (gj=gj+1)>gl endif ; Now bubble sort the Transformations according to priority if @usepri gi = gntm1 repeat gj = gi - 1 gk = gi gl = gv[gi,0] repeat if gv[gj,0]>gl gl = gv[gj,0] gk = gj endif until (gj=gj-1)<0 if gk!=gi gj = gntm1 repeat gh = gf[gi,gj] gf[gi,gj] = gf[gk,gj] gf[gk,gj] = gh until (gj=gj-1)<0 gj = gntm1 repeat gh = gf[gj,gi] gf[gj,gi] = gf[gj,gk] gf[gj,gk] = gh until (gj=gj-1)<0 gj = @igen repeat gh = df[gi,gj] df[gi,gj] = df[gk,gj] df[gk,gj] = gh until (gj=gj-1)<0 gj = 12 repeat if gj<4 gl = gv[gi,gj] gv[gi,gj] = gv[gk,gj] gv[gk,gj] = gl endif gx = gt[gi,gj] gt[gi,gj] = gt[gk,gj] gt[gk,gj] = gx until (gj=gj-1)<0 gx = gtc[gi] gtc[gi] = gtc[gk] gtc[gk] = gx gj = gcount[gi] gcount[gi] = gcount[gk] gcount[gk] = gj gj = gcount1[gi] gcount1[gi] = gcount1[gk] gcount1[gk] = gj gx = gus[gi] gus[gi] = gus[gk] gus[gk] = gx endif until (gi=gi-1)<=0 else gi = gntm1 repeat gj = gi - 1 gk = gi gx = gdx[gi] repeat if gdx[gj]-1 repeat gn[gi,gk] = -1 until (gk=gk-1)<0 endif until (gi=gi-1)<0 ; gi = gntm1 ; repeat ; print("old ",gv[gi,3]+1) ; gj = gntm1 ; repeat ; gj = gn[gi,gj] ; if (gj>=0) ; print("next new ",gv[gj,3]+1) ; endif ; until (gj=gj-1)<0 ; until (gi=gi-1)<0 ; find the first transform at depth 0 gi = gntm1 repeat gg = df[gi,0] if !gg gi = gi - 1 endif until gg gft = gi endif endif ; gnt>1 (after testing scales) if @showinfo if gnt>1 print("Fractal Dimension: ",gd) elseif @view==0 print("No fractal due to less than two Transformations active.") endif endif endif ; gnt>0 if @view==0 if @render==0 gx = 25.0*(m2r0c0 + m2r1c0) gy = 25.0*(m2r0c1 + m2r1c1) gz = 25.0*(m2r0c2 + m2r1c2) else gx = m2r2c0 gy = m2r2c1 gz = m2r2c2 ca = 1.0/sqrt(gx*gx+gy*gy+gz*gz) gx = gx*ca gy = gy*ca gz = gz*ca ca = (@ip+@camdist)/@ip gx = gx*ca gy = gy*ca gz = gz*ca sa = m2r0c0 + m2r1c0 + m2r2c0 cb = m2r0c1 + m2r1c1 + m2r2c1 sb = m2r0c2 + m2r1c2 + m2r2c2 ca = 1.0/sqrt(sa*sa+cb*cb+sb*sb) sa = sa*ca cb = cb*ca sb = sb*ca ca = (@ip+@camdist)/@ip gx = sa - gx gy = cb - gy gz = sb - gz endif sep = sep*sqrt(gx*gx+gy*gy+gz*gz) if @render!=0 sep = sep/@ip endif endif if @user gi = gntm1 repeat gt[gi,12] = 0.01*gus[gi] until (gi=gi-1)<0 endif init: float sc[5] float t1 = 0.0 float t2 = 0.0 float t3 = 0.0 float t4 = 0.0 float t5 = 0.0 float t6 = 0.0 float t7 = 0.0 float t8 = 0.0 float t9 = 0.0 float t10 = 0.0 float t11 = 0.0 float t12 = 0.0 float end = @bclip float oldt4 = 0.0 float found = 0.0 float tx = 0.0 ; ray start x float ty = 0.0 ; ray start y float tz = 0.0 ; ray start z float tw = 0.0 ; ray start w float dx = sx float dy = sy float dz = sz float cls = 1.0 float xc = sx float yc = sy float zc = sz float cxc = 0.0 float cyc = 0.0 float czc = 0.0 float cs = 0.0 float ce = 0.0 float xs = real(#screenpixel)-0.5*#width float xp = xs float ys = 0.5*#height-imag(#screenpixel) float yp = ys int i[@igen+1] int is[@igen+1] int j = 0 bool nomore = true bool clipped = false bool lbail = true ; assume we want solid=="inside" bool u1 = false bool u2 = false bool u3 = false bool u4 = false float uu = 0.0 float vv = 1e200 float xx = 0.0 float yy = 0.0 float zz = 0.0 float x1 = 0.0 float y1 = 0.0 float z1 = 0.0 float x2 = 0.0 float y2 = 0.0 float z2 = 0.0 float x3 = 0.0 float y3 = 0.0 float z3 = 0.0 float x4 = 0.0 float y4 = 0.0 float z4 = 0.0 float x5 = 0.0 float y5 = 0.0 float z5 = 0.0 float lx = sx float ly = sy float lz = sz float xv[@igen+2] float yv[@igen+2] float zv[@igen+2] float dxv[@igen+1] float dyv[@igen+1] float dzv[@igen+1] float px[5] float py[5] float pz[5] float ss float s[@igen+1] int k = 0 int l = 0 int m = 0 int ii = 0 int jj = 0 bool nosh[6] nosh[0] = nosh[1] = nosh[2] = nosh[3] = nosh[4] = nosh[5] = true bool morecalc = true bool f complex tzz int count[@igen+1,31] int count1[31] int cnt = 0 int cnt1 = 0 if @useiterations k = gntm1 repeat count[0,k] = gcount[k] until (k=k-1)<0 endif if @view==0 && gnt>1 repeat if ii==0 t1 = yp*m2r1c0 + m2r2c0 t2 = yp*m2r1c1 + m2r2c1 t3 = yp*m2r1c2 + m2r2c2 elseif ii==1 xp = xs - @poff elseif ii==2 xp = xs + @poff elseif ii==3 yp = ys + @poff xp = xs t1 = yp*m2r1c0 + m2r2c0 t2 = yp*m2r1c1 + m2r2c1 t3 = yp*m2r1c2 + m2r2c2 elseif ii==4 yp = ys - @poff t1 = yp*m2r1c0 + m2r2c0 t2 = yp*m2r1c1 + m2r2c1 t3 = yp*m2r1c2 + m2r2c2 endif if @render==0 tx = xp*m2r0c0 + t1 ty = xp*m2r0c1 + t2 tz = xp*m2r0c2 + t3 dx = sx dy = sy dz = sz t4 = 0.0 end = @bclip else dx = xp*m2r0c0 + t1 dy = xp*m2r0c1 + t2 dz = xp*m2r0c2 + t3 end = 1.0/sqrt(dx*dx+dy*dy+dz*dz) dx = dx*end dy = dy*end dz = dz*end end = 1.0/(end*@ip) t4 = (@ip+@fclip)*end end = t4 + @bclip*end tx = vx ty = vy tz = vz endif xc = dx yc = dy zc = dz xx = tx yy = ty zz = tz if ii==0 x5 = xc y5 = yc z5 = zc endif clipped = false if @clip4 t10 = t4 t11 = end endif if @clip1 || @clip2 || @clip3 cxc = xc1 - tx cyc = yc1 - ty czc = zc1 - tz if @clip1 tw = cxc*c1r0c2 + cyc*c1r1c2 + czc*c1r2c2 oldt4 = dx*c1r0c2 + dy*c1r1c2 + dz*c1r2c2 if abs(oldt4)>1e-50 cs = (tw-@clip1front)/oldt4 ce = (tw+@clip1back)/oldt4 if cs>ce if ce>t4 t4 = ce endif if cst4 t4 = cs endif if ce@clip1back clipped = true endif endif if @clip2 && !clipped tw = cxc*c1r0c0 + cyc*c1r1c0 + czc*c1r2c0 oldt4 = dx*c1r0c0 + dy*c1r1c0 + dz*c1r2c0 if abs(oldt4)>1e-50 cs = (tw-@clip2left)/oldt4 ce = (tw+@clip2right)/oldt4 if cs>ce if ce>t4 t4 = ce endif if cst4 t4 = cs endif if ce@clip2right clipped = true endif endif if @clip3 && !clipped tw = cxc*c1r0c1 + cyc*c1r1c1 + czc*c1r2c1 oldt4 = dx*c1r0c1 + dy*c1r1c1 + dz*c1r2c1 if abs(oldt4)>1e-50 cs = (tw-@clip3btm)/oldt4 ce = (tw+@clip3top)/oldt4 if cs>ce if ce>t4 t4 = ce endif if cst4 t4 = cs endif if ce@clip3top clipped = true endif endif endif if clipped t4 = 1e100 end = -1e100 endif if @clip4 t5 = tx - xc2 t6 = ty - yc2 t7 = tz - zc2 t8 = 2.0*(t5*dx+t6*dy+t7*dz) t9 = t8*t8 - 4.0*(t5*t5+t6*t6+t7*t7-cliprad) if t9>=0.0 t5 = -0.5*(t8+sqrt(t9)) t6 = -0.5*(t8-sqrt(t9)) if t5t10 t10 = t5 endif else if t5t10 t10 = t6 endif endif else t10 = 1e100 t11 = -1e100 endif if @clip1 || @clip2 || @clip3 if @clipcombine==0 if t10>t4 t4 = t10 endif if t11end end = t11 endif endif else t4 = t10 end = t11 endif endif if ii>0 if @render==0 t11 = sep else t11 = sep*sc[0] endif t10 = sc[0] - t11 if t10>t4 t4 = t10 endif t10 = sc[0] + 2.0*t11 if t10=0.0 t12 = (t11=x2*t11) - (t9=sqrt(x2*t9)) if t12<=end && t11+t9>=t4 if j>=@igen || (j>=@imin && ss3) && @colmeth==0 nomore = false endif if (@colouring>0 || @colmeth==1) && ii==0 jj = l = j while (l=l-1)>=0 is[l] = i[l] endwhile endif endif else if t123) && @colmeth==0 nomore = false endif if (@colouring>0 || @colmeth==1) && ii==0 jj = l = j while (l=l-1)>=0 is[l] = i[l] endwhile endif endif endif elseif (k=gn[k,gntm1])>=0 if @useiterations if k!=i[j-1] count[j,k] = gcount[k] endif if @useskips if !(f=df[k,j]) || count[j,k]==0 \ || (@useiterations1 && count1[k]==0) f = false if @useiterations1 count1[k] = count1[k] - 1 endif j = j + 1 endif elseif count[j,k]==0 || (@useiterations1 && count1[k]==0) if @useiterations1 count1[k] = count1[k] - 1 endif j = j + 1 else f = true endif elseif @useskips if !(f=df[k,j]) || (@useiterations1 && count1[k]==0) if @useiterations1 f = false count1[k] = count1[k] - 1 endif j = j + 1 endif elseif @useiterations1 && count1[k]==0 count1[k] = count1[k] - 1 j = j + 1 else f = true endif else k = i[j-1] endif endif endif if !f j = j - 1 if @useiterations1 count1[k] = count1[k] + 1 endif repeat if (k=k-1)<0 if (j=j-1)<0 f = true else k = i[j] if @useiterations1 count1[k] = count1[k] + 1 endif endif elseif j>0 if (k=gn[i[j-1],k])>=0 if @useiterations if k!=i[j-1] count[j,k] = gcount[k] endif if count[j,k]>0 && (!@useiterations1 || count1[k]>0) if @useskips f = df[k,j] else f = true endif endif elseif @useskips && (!@useiterations1 || count1[k]>0) f = df[k,j] elseif !@useiterations1 || count1[k]>0 f = true endif else k = i[(j=j-1)] if @useiterations1 count1[k] = count1[k] + 1 endif endif elseif @useskips f = df[k,0] else f = true endif until f if (j>=0) t5 = xv[j] t6 = yv[j] t7 = zv[j] dx = dxv[j] dy = dyv[j] dz = dzv[j] endif endif until j<0 endif if (sc[ii]=found)<1e100 if ii==0 vv = found px[0] = xx + found*xc py[0] = yy + found*yc pz[0] = zz + found*zc elseif abs(vv-found)=5 if vv<1e100 ; found solid ? if (@colouring==0 || @colouring>3) if @colmeth==1 if (l=@lskip)>=jj l = jj - 1 endif if (m=l+@luse-1)>jj m = jj endif t5 = xx t6 = yy t7 = zz dx = xc dy = yc dz = zc tx = ty = tz = 0.0 j = 0 ss = 1.0 if l==0 x1 = gtestx - t5 y1 = gtesty - t6 z1 = gtestz - t7 t9 = sqrt(gdist-x1*x1-y1*y1-z1*z1+(t11=x1*dx+y1*dy+z1*dz)^2) t9 = t11 - t9 tx = (gtestx - t5 - t9*dx)*(1.0+@fudge1) ty = (gtesty - t6 - t9*dy)*(1.0+@fudge1) tz = (gtestz - t7 - t9*dz)*(1.0+@fudge1) endif j = 0 while j=l-1 t9 = gdist - x1*x1 - y1*y1 - z1*z1 \ + (x2=1.0/(dx*dx+dy*dy+dz*dz))*(t11=x1*dx+y1*dy+z1*dz)^2 t9 = x2*t11 - sqrt(x2*t9) tx = @fudge2*tx + (gtestx - t5 - t9*dx)*(1.0+@fudge1*ss) ty = @fudge2*ty + (gtesty - t6 - t9*dy)*(1.0+@fudge1*ss) tz = @fudge2*tz + (gtestz - t7 - t9*dz)*(1.0+@fudge1*ss) endif j = j + 1 endwhile x1 = 1.0/sqrt(tx*tx + ty*ty + tz*tz) xx = x1*tx yy = x1*ty zz = x1*tz else if sc[4]<1e100 u1 = true x1 = px[0] - px[4] y1 = py[0] - py[4] z1 = pz[0] - pz[4] endif if sc[1]<1e100 u2 = true x2 = px[0] - px[1] y2 = py[0] - py[1] z2 = pz[0] - pz[1] endif if sc[2]<1e100 u3 = true x3 = px[2] - px[0] y3 = py[2] - py[0] z3 = pz[2] - pz[0] endif if sc[3]<1e100 u4 = true x4 = px[3] - px[0] y4 = py[3] - py[0] z4 = pz[3] - pz[0] endif if u1 && u2 x5 = y2*z1 - z2*y1 y5 = z2*x1 - x2*z1 z5 = x2*y1 - y2*x1 ; uu = 1.0/sqrt(x5*x5+y5*y5+z5*z5) ; x5 = x5*uu ; y5 = y5*uu ; z5 = z5*uu else x5 = y5 = z5 = 0.0 endif if u1 && u3 xx = y3*z1 - z3*y1 yy = z3*x1 - x3*z1 zz = x3*y1 - y3*x1 ; uu = 1.0/sqrt(xx*xx+yy*yy+zz*zz) ; xx = xx*uu ; yy = yy*uu ; zz = zz*uu else xx = yy = zz = 0.0 endif if u2 && u4 x1 = y2*z4 - z2*y4 y1 = z2*x4 - x2*z4 z1 = x2*y4 - y2*x4 ; uu = 1.0/sqrt(x1*x1+y1*y1+z1*z1) ; x1 = x1*uu ; y1 = y1*uu ; z1 = z1*uu else x1 = y1 = z1 = 0.0 endif if u3 && u4 x2 = z4*y3 - y4*z3 y2 = x4*z3 - z4*x3 z2 = y4*x3 - x4*y3 ; uu = 1.0/sqrt(x2*x2+y2*y2+z2*z2) ; x2 = x2*uu ; y2 = y2*uu ; z2 = z2*uu else x2 = y2 = z2 = 0.0 endif if u1 || u2 || u3 || u4 xx = x5 + xx + x1 + x2 yy = y5 + yy + y1 + y2 zz = z5 + zz + z1 + z2 uu = 1.0/sqrt(xx*xx+yy*yy+zz*zz) xx = xx*uu yy = yy*uu zz = zz*uu endif endif if @lighting>2 ii = @numlights tx = px[0] ty = py[0] tz = pz[0] repeat t4 = onepix if lt[ii]==0 dx = -ltx[ii] dy = -lty[ii] dz = -ltz[ii] end = 1e10 else dx = ltx[ii] - tx dy = lty[ii] - ty dz = ltz[ii] - tz x1 = 1.0/(end = sqrt(dx*dx+dy*dy+dz*dz)) dx = x1*dx dy = x1*dy dz = x1*dz endif clipped = false if @clip4 t10 = t4 t11 = end endif if @clip1 || @clip2 || @clip3 cxc = xc1 - tx cyc = yc1 - ty czc = zc1 - tz if @clip1 tw = cxc*c1r0c2 + cyc*c1r1c2 + czc*c1r2c2 oldt4 = dx*c1r0c2 + dy*c1r1c2 + dz*c1r2c2 if abs(oldt4)>1e-50 cs = (tw-@clip1front)/oldt4 ce = (tw+@clip1back)/oldt4 if cs>ce if ce>t4 t4 = ce endif if cst4 t4 = cs endif if ce@clip1back clipped = true endif endif if @clip2 && !clipped tw = cxc*c1r0c0 + cyc*c1r1c0 + czc*c1r2c0 oldt4 = dx*c1r0c0 + dy*c1r1c0 + dz*c1r2c0 if abs(oldt4)>1e-50 cs = (tw-@clip2left)/oldt4 ce = (tw+@clip2right)/oldt4 if cs>ce if ce>t4 t4 = ce endif if cst4 t4 = cs endif if ce@clip2right clipped = true endif endif if @clip3 && !clipped tw = cxc*c1r0c1 + cyc*c1r1c1 + czc*c1r2c1 oldt4 = dx*c1r0c1 + dy*c1r1c1 + dz*c1r2c1 if abs(oldt4)>1e-50 cs = (tw-@clip3btm)/oldt4 ce = (tw+@clip3top)/oldt4 if cs>ce if ce>t4 t4 = ce endif if cst4 t4 = cs endif if ce@clip3top clipped = true endif endif endif if clipped t4 = 1e100 end = -1e100 endif if @clip4 t5 = tx - xc2 t6 = ty - yc2 t7 = tz - zc2 t8 = 2.0*(t5*dx+t6*dy+t7*dz) t9 = t8*t8 - 4.0*(t5*t5+t6*t6+t7*t7-cliprad) if t9>=0.0 t5 = -0.5*(t8+sqrt(t9)) t6 = -0.5*(t8-sqrt(t9)) if t5t10 t10 = t5 endif else if t5t10 t10 = t6 endif endif else t10 = 1e100 t11 = -1e100 endif if @clip1 || @clip2 || @clip3 if @clipcombine==0 if t10>t4 t4 = t10 endif if t11end end = t11 endif endif else t4 = t10 end = t11 endif endif x1 = gtestx - tx y1 = gtesty - ty z1 = gtestz - tz if x1*x1 + y1*y1 + z1*z1 - (x1*dx + y1*dy + z1*dz)^2<=gdist if @useiterations1 k = gntm1 repeat count1[k] = gcount1[k] until (k=k-1)<0 endif xv[0] = t5 = tx yv[0] = t6 = ty zv[0] = t7 = tz dxv[0] = dx dyv[0] = dy dzv[0] = dz k = gft s[0] = 1.0 j = 0 repeat ss = s[j]*gt[(i[j]=k),12] if @useiterations cnt = count[j,k] - 1 endif if @useiterations1 cnt1 = count1[k] - 1 endif xv[(j=j+1)] = t5 = (x1=t5-gt[k,9])*gt[k,0] \ + (y1=t6-gt[k,10])*gt[k,3] \ + (z1=t7-gt[k,11])*gt[k,6] yv[j] = t6 = x1*gt[k,1] + y1*gt[k,4] + z1*gt[k,7] zv[j] = t7 = x1*gt[k,2] + y1*gt[k,5] + z1*gt[k,8] dxv[j] = dx = (x1=dx)*gt[k,0] + (y1=dy)*gt[k,3] + dz*gt[k,6] dyv[j] = dy = x1*gt[k,1] + y1*gt[k,4] + dz*gt[k,7] dzv[j] = dz = x1*gt[k,2] + y1*gt[k,5] + dz*gt[k,8] x1 = gtestx - t5 y1 = gtesty - t6 z1 = gtestz - t7 f = false s[j] = ss if @useiterations count[j,k] = cnt endif if @useiterations1 count1[k] = cnt1 endif if (t9 = gdist - x1*x1 - y1*y1 - z1*z1 \ + (x2=1.0/(dx*dx+dy*dy+dz*dz))*(t11=x1*dx+y1*dy+z1*dz)^2)>=0.0 t12 = (t11=x2*t11) - (t9=sqrt(x2*t9)) if t12<=end && t11+t9>=t4 if j>=@igen || (j>=@imin && ss=0 if @useiterations if k!=i[j-1] count[j,k] = gcount[k] endif if @useskips if !(f=df[k,j]) || count[j,k]==0 \ || (@useiterations1 && count1[k]==0) f = false if @useiterations1 count1[k] = count1[k] - 1 endif j = j + 1 endif elseif count[j,k]==0 || (@useiterations1 && count1[k]==0) if @useiterations1 count1[k] = count1[k] - 1 endif j = j + 1 else f = true endif elseif @useskips if !(f=df[k,j]) || (@useiterations1 && count1[k]==0) if @useiterations1 f = false count1[k] = count1[k] - 1 endif j = j + 1 endif elseif @useiterations1 && count1[k]==0 count1[k] = count1[k] - 1 j = j + 1 else f = true endif else k = i[j-1] endif endif endif if !f j = j - 1 if @useiterations1 count1[k] = count1[k] + 1 endif repeat if (k=k-1)<0 if (j=j-1)<0 f = true else k = i[j] if @useiterations1 count1[k] = count1[k] + 1 endif endif elseif j>0 if (k=gn[i[j-1],k])>=0 if @useiterations if k!=i[j-1] count[j,k] = gcount[k] endif if count[j,k]>0 && (!@useiterations1 || count1[k]>0) if @useskips f = df[k,j] else f = true endif endif elseif @useskips && (!@useiterations1 || count1[k]>0) f = df[k,j] elseif !@useiterations1 || count1[k]>0 f = true endif else k = i[(j=j-1)] if @useiterations1 count1[k] = count1[k] + 1 endif endif elseif @useskips f = df[k,0] else f = true endif until f if (j>=0) t5 = xv[j] t6 = yv[j] t7 = zv[j] dx = dxv[j] dy = dyv[j] dz = dzv[j] endif endif until j<0 endif until (ii=ii-1)<0 endif endif if @colouring>0 xv[0] = px[0] yv[0] = py[0] zv[0] = pz[0] k = 0 repeat l = is[k] x1 = xv[k] y1 = yv[k] z1 = zv[k] k = k + 1 x1 = x1 - gt[l,9] y1 = y1 - gt[l,10] z1 = z1 - gt[l,11] xv[k] = x1*gt[l,0] + y1*gt[l,3] + z1*gt[l,6] yv[k] = x1*gt[l,1] + y1*gt[l,4] + z1*gt[l,7] zv[k] = x1*gt[l,2] + y1*gt[l,5] + z1*gt[l,8] until k>=jj endif else ; no solid #z = (0,0) morecalc = false ; no calculations if !@inout lbail = false ; no solid so is outside endif endif endif ; @view==0 && gnt>1 k = 0 loop: if @view==1 if morecalc morecalc=false if gsc[round(real(#screenpixel)),round(imag(#screenpixel))]!=0 #z=gsc[round(real(#screenpixel)),round(imag(#screenpixel))]/400.0 if @inout lbail = false endif else if !@inout lbail = false endif #z = 0.0 endif endif else if morecalc if k==0 && (@colouring==0 || @colouring>3) if u1 || u2 || u3 || u4 || @colmeth==1 z1 = 0.0 if @version==1 y2 = x3 = y3 = z3 = x4 = y4 = z4 = 0.0 endif if @lighting==0 || @lighting==2 || @lighting==4 if @camlight==1 lx = px[0] - cx ly = py[0] - cy lz = pz[0] - cz uu = 1.0/(cls=sqrt(lx*lx+ly*ly+lz*lz)) lx = lx*uu ly = ly*uu lz = lz*uu cls = 1.0/(@cls*cls*cls + @clv*cls + 1.0) endif z1 = x1 = lx*xx + ly*yy + lz*zz ; N.L if @lighting==0 || @usespec y1 = (2.0*z1*xx - lx)*xc + (2.0*z1*yy - ly)*yc + (2.0*z1*zz - lz)*zc if x1<0.0 x1 = 0.0 elseif x1>1.0 x1 = 1.0 endif if y1<0.0 y1 = 0.0 elseif y1>1.0 y1 = 1.0 endif y1 = y1^(@lpwr-lpwr1*acos(x1)) endif if @black z1 = 0.5*(1.0+z1) endif if z1<0.0 z1 = 0.0 elseif z1>1.0 z1 = 1.0 endif if @colouring>3 if @version==0 z1 = cls*(@amb + @diff*z1) else z1 = cls*(@ambl + @diff*z1) endif if @lighting==0 || @usespec y2 = cls*@spec*y1 else y2 = 0.0 endif if @lightver==1 x3 = @camstrr*z1 y3 = @camstrg*z1 z3 = @camstrb*z1 x4 = @camstrr*y2 y4 = @camstrg*y2 z4 = @camstrb*y2 endif elseif @lighting==0 || @usespec if @version==0 z1 = cls*(@amb + @diff*z1 + @spec*y1) else z1 = cls*(@ambl + @diff*z1 + @spec*y1) endif elseif @version==0 z1 = cls*(@amb + @diff*z1) else z1 = cls*(@ambl + @diff*z1) endif endif if @lighting>0 z1 = @camstr*z1 j = @numlights repeat if lt[j]==1 lx = px[0] - ltx[j] ly = py[0] - lty[j] lz = pz[0] - ltz[j] x1 = 1.0/(cls=sqrt(lx*lx+ly*ly+lz*lz)) lx = x1*lx ly = x1*ly lz = x1*lz cls = 1.0/(@cls*cls*cls + @clv*cls + 1.0) else lx = ltx[j] ly = lty[j] lz = ltz[j] cls = 1.0 endif x2 = x1 = lx*xx + ly*yy + lz*zz ; N.L if nosh[j] y1 = (2.0*x2*xx - lx)*xc + (2.0*x2*yy - ly)*yc \ + (2.0*x2*zz - lz)*zc if x1<0.0 x1 = 0.0 elseif x1>1.0 x1 = 1.0 endif if y1<0.0 y1 = 0.0 elseif y1>1.0 y1 = 1.0 endif y1 = y1^(@lpwr-lpwr1*acos(x1)) endif if @black x2 = 0.5*(1.0+x2) endif if x2<0.0 x2 = 0.0 elseif x2>1.0 x2 = 1.0 endif if @colouring>3 if @lightver==1 if nosh[j] if @version==0 x2 = cls*(@amb + @diff*x2) else x2 = cls*(@ambl + @diff*x2) endif x3 = x3 + lsr[j]*x2 y3 = y3 + lsg[j]*x2 z3 = z3 + lsb[j]*x2 y1 = cls*@spec*y1 x4 = x4 + lsr[j]*y1 y4 = y4 + lsg[j]*y1 z4 = z4 + lsb[j]*y1 else if @version==0 x2 = cls*(@amb + lsh[j]*@diff*x2) else x2 = cls*(@ambl + lsh[j]*@diff*x2) endif x3 = x3 + lsr[j]*x2 y3 = y3 + lsg[j]*x2 z3 = z3 + lsb[j]*x2 endif elseif nosh[j] if @version==0 z1 = z1 + cls*ls[j]*(@amb + @diff*x2) else z1 = z1 + cls*ls[j]*(@ambl + @diff*x2) endif y2 = y2 + cls*ls[j]*@spec*y1 elseif @version==0 z1 = z1 + cls*ls[j]*(@amb + lsh[j]*@diff*x2) else z1 = z1 + cls*ls[j]*(@ambl + lsh[j]*@diff*x2) endif elseif nosh[j] if @version==0 z1 = z1 + cls*ls[j]*(@amb + @diff*x2 + @spec*y1) else z1 = z1 + cls*ls[j]*(@ambl + @diff*x2 + @spec*y1) endif elseif @version==0 z1 = z1 + cls*ls[j]*(@amb + lsh[j]*@diff*x2) else z1 = z1 + cls*ls[j]*(@ambl + lsh[j]*@diff*x2) endif until (j=j-1)<0 endif if @version==1 z1 = @amb + z1 x3 = @ambr + x3 y3 = @ambg + y3 z3 = @ambb + z3 endif if @colouring>3 && @lightver==1 #z = @rscale*(x3 + flip(x4)) elseif @clamp if @colouring>3 #z = (z1 + flip(y2))/tl else #z = z1/tl endif elseif @colouring>3 #z = @lscale*(z1 + flip(y2)) else z1 = @lscale*z1 if z1>1.0 z1 = 1.0 endif #z = z1 endif elseif @clamp if @version==0 #z = (@amb*nl)/tl else #z = (@amb + (@ambl*nl))/tl endif elseif @version==0 #z = @lscale*@amb*nl else #z = @lscale*(@amb + @ambl*nl) endif if @colouring==0 morecalc = false if @inout lbail = false endif endif elseif @colouring>3 && @lightver==1 && k<3 if k==1 #z = @gscale*(y3 + flip(y4)) elseif k==2 #z = @bscale*(z3 + flip(z4)) endif else if @colouring==1 || @colouring==7 if @colouring==7 if @lightver>0 k = k - 3 else k = k - 1 endif endif if k<=jj if @comp==0 #z = xv[k] + flip(sqrt(yv[k]*yv[k]+zv[k]*zv[k])) elseif @comp==1 #z = yv[k] + flip(sqrt(xv[k]*xv[k]+zv[k]*zv[k])) elseif @comp==2 #z = zv[k] + flip(sqrt(xv[k]*xv[k]+yv[k]*yv[k])) else;if @comp>2 x1 = 1.0/sqrt(xv[k]*xv[k]+yv[k]*yv[k]+zv[k]*zv[k]) if @comp==3 #z = x1*(xv[k] + flip(yv[k])) elseif @comp==4 #z = x1*(xv[k] + flip(zv[k])) elseif @comp==5 #z = x1*(yv[k] + flip(zv[k])) endif endif #z = @zfn(#z) else morecalc = false endif if @colouring==7 if @lightver>0 k = k + 3 else k = k + 1 endif endif elseif @colouring==2 || @colouring==4 k = @older lx = ly = lz = 0.0 tzz = 1.0 if @distloc==0 if @older>jj k = jj endif if k+@depth-1jj k = jj endif if k+@depth-1jj-1 j = jj - 1 endif if (k=j+@numg)>jj k = jj endif x1 = 0.0 y1 = 1.0 repeat if gtc[is[j]]>0 x1 = x1 + y1*gtc[is[j]] y1 = y1*@fadeg else if (k=k+1)>jj k = jj endif endif until (j=j+1)>=k if @sp #z = exp(x1) else #z = x1 endif morecalc = false elseif @colouring==6 #z = 0.0025*@clr endif if !morecalc && @inout lbail = false endif endif k = k + 1 endif endif ; @view bailout: lbail==true default: title = "3D IFS" magn = 1.0 maxiter = 20 method = multipass periodicity = 0 param version caption = "Formula version" enum = "1.0" "1.1" default = 1 hint = "If you have compatibility issues with older parameter sets then \ try switching this parameter to an older version." endparam heading caption = "Information" text = "You should normally use an appropriate 'Inside' colouring with \ this formula. When you have 'Colouring' set to 'Lighting', \ 'Position/Distance' or 'Genetics' then you should use mmf.ucl \ '3D colouring' with 'Maximum Iterations' set to 1. When you have \ 'Colouring' set to 'UF colouring' you can use any UF colouring \ and use 'Maximum Iterations' to control the 'business' of the \ colouring. When using the combined Lighting and Colouring options \ you should use mmf4.ucl '3D colouring direct' setting 'Maximum \ Iterations' to 2 if using 'Lighting Version' 'Normal' and to 4 if \ using 'Lighting Version' 'Advanced'." endheading param showinfo caption = "Show debug info." default = false hint = "Enables compiler messages for help on setting up or for warnings." endparam heading caption = "Method" endheading param view caption = "View" enum = "Fractal" "Transformations" default = 0 hint = "You can opt to view the Transformations being used to create the \ fractal if you wish. When doing so an untransformed cube is shown \ along with the transformed version of the cube for each active \ Transformation. You should view the Transformations using \ mmf.ucl-'MMF 3D colouring' as the inside colouring: palette \ index 1 and 6 are used for the untransformed cube, 10 and 15 for \ Transformation 1, 20 and 25 for Transformation 2, through to \ 310 and 315 for Transformation 31 (all assuming that the Color \ Density is set to 1 and the Transfer Function is Linear)." endparam param inout caption = "Reverse Inside/Outside" default = false hint = "Normally your solid fractal or transformation view is coloured as \ 'inside' but this option lets you colour using an 'outside' \ colouring instead." endparam param twidth caption = "Pixel width" default = 1 min = 1 max = 2400 hint = "Supplied so that you can specify the image pixel width when \ viewing your transformations. Should be set to 1 when not viewing \ the transformations." endparam param theight caption = "Pixel height" default = 1 min = 1 max = 1800 hint = "Supplied so that you can specify the image pixel height when \ viewing your transformations. Should be set to 1 when not viewing \ the transformations." endparam param fixall caption = "Auto-scale detail" default = false hint = "When enabled the 'Light scan distance', 'Min. Scale' and 'Joined \ threshold' are all scaled based on image size and magnification. \ This means that you'll see better details on larger or more \ magnified renders." visible = @view==0 endparam param testval caption = "Test Centre" enum = "Auto" "Specified coord." default = 0 hint = "'Auto' calculates the optimum test centre based on the current \ Transformations. If using 'Specified coord.' then \ you should supply a 3D coordinate such that the smallest sphere \ possible contains the whole fractal." visible = @view==0 endparam param coordxy caption = "Centre X and Y" default = (0,0) hint = "The 3D x and y coordinates of the test centre." visible = @view==0 && @testval==1 endparam param coordz caption = "Centre Z" default = 0.0 hint = "The 3D z coordinate of the test centre." visible = @view==0 && @testval==1 endparam param dscale caption = "Min. Scale" default = 100.0 min = 0.0 hint = "Controls how far to go down the separate branches of the IFS tree, \ the closer to zero the scale the further down each branch to go \ and the longer the render will take. Smaller values improve the \ accuracy of the results but may result in some parts of the \ fractal disappearing. If the fractal is noticeably made up of \ round globules then you need to reduce the value. Also note that \ using smaller values will not help if the Max. Depth parameter is \ too low." visible = @view==0 endparam param fixdist caption = "Auto adjust 'Min. scale'" default = false hint = "When enabled your minimum scale value is automatically adjusted \ based on the magnification and image size. This avoids your image \ becoming noticeably made up of spheres when rendering large or \ zooming in provided 'Max. Depth' is set large enough. If you wish \ to adjust all parameters that are susceptible to changes in image \ size or magnification then it's better to use 'Auto-scale detail'." visible = @view==0 && !@fixall endparam param igen caption = "Max. Depth" default = 100 min = 1 max = 200 hint = "The maximum number of generations allowed. The higher the number \ actually calculated then the longer the render time." visible = @view==0 endparam param imin caption = "Min. Depth" default = 0 max = 100 hint = "The minimum number of generations, this overrides the scaling test \ such that even if there is enough scaling then calculations \ will proceed further down the tree to this depth. May be needed if \ the scale of some transforms is particularly low." visible = @view==0 endparam param calcgdist caption = "Calculate bailout" default = true hint = "Normally it's best to let the formula calculate a base value for \ the bailout radius and adjust if necessary using the 'Bailout \ (adjust)' parameter but sometimes it will be necessary to make \ your value explicit especially when using more agressive RIFS." visible = @view==0 endparam param minval caption = "Bailout (adjust)" default = 1.0 min = 1e-6 hint = "This controls the distance at which the fractal is considered to \ be 'solid'. The smaller you set the value then the faster the \ render time but if the value is too small then parts of the \ fractal will be missed. If the value is too large then areas not \ part of the true fractal may be considered as 'solid' and \ rendering times will be slower. The optimum value when expressed \ explicitly is the radius of the smallest sphere that can contain \ the whole fractal." visible = @view==0 endparam param flat caption = "'Flat' rendering" default = false hint = "Changes the way 'solid' is found. If disabled then your fractal \ actually consists of small spheres, if you enable this it is made \ of small flat circles instead. Generally using spheres is better \ but if you magnify you may like to use this as a special effect." visible = @view==0 endparam param separation caption = "Light scan distance" default = 0.1 hint = "Controls the extra scan distance used in the ray tracing when the \ lighting needs calculating. If getting dark areas when using \ lighting then try increasing the value." visible = @view==0 && (@colouring==0 || @colouring>3) && @colmeth==0 endparam param fixsep caption = "Auto adjust 'Light scan distance'" default = false hint = "When enabled the light scan distance is automatically adjusted \ based on the magnification and image size. This helps maintain \ consistency when rendering large or zooming in. If you wish \ to adjust all parameters that are susceptible to changes in image \ size or magnification then it's better to use 'Auto-scale detail'." visible = @view==0 && (@colouring==0 || @colouring>3) && @colmeth==0 \ && !@fixall endparam param usepri caption = "User Priorities ?" default = false hint = "Normally the order in which transforms are performed is decided \ for optimum rendering speed but you can over-ride this and use \ the transform 'Priority' parameters to control the order." visible = @view==0 endparam heading caption = "Viewing control" endheading param viewall caption = "Transformation View" enum = "All" "Selected" default = 0 hint = "'All' always shows all active Transformations, 'Selected' shows \ either all the Transformations or just one (if it is active) as \ set by the 'Show Tranforms' parameter. When showing just one then \ the view is centred on that transform i.e. the translation is \ ignored for viewing purposes. An original untransformed cube is \ always shown." visible = @view==1 endparam param txy caption = "Target x/y coords" default = (0.0,0.0) hint = "The (3D) x and y coordinates that the 'camera' is aimed at." visible = @view==0 endparam param tzw caption = "Target z coord" default = 0.0 hint = "The (3D) z coordinate that the 'camera' is aimed at." visible = @view==0 endparam param camdist caption = "Camera distance" default = 3.0 min = 0.0 hint = "The distance of the camera lens from the target." visible = @view==0 endparam param crot caption = "Camera Rot." default = (30.0,30.0) hint = "Rotates the camera around the target (in degrees). The imaginary \ part is the elevation (rotation around the x axis) and the real \ part is the direction (rotation around the y axis). Note that by \ default the camera always points directly at the target, use \ 'Camera Direction' to change the direction in which the camera \ points." visible = @view==0 endparam param trot caption = "Camera Dir." default = (0.0,0.0) hint = "Changes the direction of the camera (in degrees) so it doesn't \ point straight at the target. The imaginary part is the elevation \ (rotation around the x axis) and the real part is the \ direction (rotation around the y axis). To rotate the image around \ the viewing axis use 'Rotation Angle' in the Ultrafractal \ 'Location' parameters." visible = @view==0 endparam param render caption = "Projection method" enum = "Parallel" "Perspective" default = 1 hint = "Allows you to choose between rendering using parallel projection \ or using perspective projection. With parallel projection there is \ no perspective i.e. objects do not diminish in size further from \ the camera." visible = @view==0 endparam param ip caption = "Image Plane Distance" default = 12.0 min = 0.00001 hint = "The distance of the image plane from the computer/camera lens. \ The smaller you set the value the greater the effect of \ perspective i.e. the quicker objects get smaller with distance. \ Change the value with the 'Focal length' when using the 'Camera' \ model. Really large values effectively produce parallel projection \ so if you're adjusting this and finding you're using values larger \ than say 50 then it's probably better to use parallel projection \ instead as that's quicker." visible = @render==1 && @view==0 endparam param fclip caption = "Front clip" default = 0.0 hint = "The front clipping distance. The front clipping plane is set to \ this distance from the camera lens, anything closer to the lens \ than this is clipped. You may set the distance to less than zero \ if you wish." visible = @render==1 && @view==0 endparam param bclip caption = "Back clip" default = 5.0 min = 0.0 hint = "Specifies the distance for back clipping. When using perspective \ projection the back clipping plane is set to this distance beyond \ the front clipping plane. When using parallel projection the back \ clipping plane is set to this distance from the camera lens." visible = @view==0 endparam param rotxy caption = "X/Y Rotation" default = (30.0,30.0) hint = "Rotates the camera around the Transformations. The imaginary \ part is the elevation (rotation around the x axis) and the real \ part is the direction (rotation around the y axis)." visible = @view==1 endparam heading caption = "Advanced Clipping" visible = @view==0 endheading param clip1 caption = "Clip Front/Back" default = false hint = "Enables a pair of clipping planes which cut at the front and back \ by default." visible = @view==0 endparam param clip1front caption = "Front clip" default = 2.0 hint = "The distance of the 'front' clipping plane from the clip centre." visible = @clip1 && @view==0 endparam param clip1back caption = "Back clip" default = 2.0 hint = "The distance of the 'back' clipping plane from the clip centre." visible = @clip1 && @view==0 endparam param clip2 caption = "Clip Left/Right" default = false hint = "Enables a pair of clipping planes which cut at the left and right \ by default." visible = @view==0 endparam param clip2left caption = "Left clip" default = 2.0 hint = "The distance of the 'left' clipping plane from the clip centre." visible = @clip2 && @view==0 endparam param clip2right caption = "Right clip" default = 2.0 hint = "The distance of the 'right' clipping plane from the clip centre." visible = @clip2 && @view==0 endparam param clip3 caption = "Clip Top/Bottom" default = false hint = "Enables a pair of clipping planes which cut at the top and bottom \ by default." visible = @view==0 endparam param clip3btm caption = "Bottom clip" default = 2.0 hint = "The distance of the 'top' clipping plane from the clip centre." visible = @clip3 && @view==0 endparam param clip3top caption = "Top clip" default = 2.0 hint = "The distance of the 'bottom' clipping plane from the clip centre." visible = @clip3 && @view==0 endparam param clip1type caption = "Planar Position" enum = "Absolute" "Offset" default = 0 hint = "Allows you to specify if the rectangular clipping planes are \ positioned based on absolute coordinates or coordinates relative \ to the target." visible = (@clip1 || @clip2 || @clip3) && @view==0 endparam param clip1xy caption = "XY Coords" default = (0,0) hint = "Specifies either the absolute or relative x and y coordinates used \ to position the rectangular clipping planes. Note that the \ position is also used as the rotation centre for these planes." visible = (@clip1 || @clip2 || @clip3) && @view==0 endparam param clip1z caption = "Z Coords" default = 0.0 hint = "Specifies either the absolute or relative z coordinate used to \ position the rectangular clipping planes. Note that the position \ is also used as the rotation centre for these planes." visible = (@clip1 || @clip2 || @clip3) && @view==0 endparam param clip1rot caption = "Planar Rotation" default = (0,0) hint = "Allows you to specify angles by which to rotate the position of \ the rectangular clipping planes around the target. The real part \ gives the direction and the imaginary the elevation." visible = (@clip1 || @clip2 || @clip3) && @view==0 endparam param clip1orient caption = "Planar Orientation" default = (0,0) hint = "Allows you to rotate the orientation of the rectangular clipping \ planes. The real part alters the direction and the imaginary part \ alters the elevation." visible = (@clip1 || @clip2 || @clip3) && @view==0 endparam param clip4 caption = "Spherical Clip" default = false hint = "Enables clipping to a sphere." visible = @view==0 endparam param clip4type caption = "Sphere Position" enum = "Absolute" "Offset" default = 0 hint = "Allows you to specify if the clip sphere is \ positioned based on absolute coordinates or coordinates relative \ to the target." visible = @clip4 && @view==0 endparam param clip4xy caption = "XY Coords" default = (0,0) hint = "Specifies either the absolute or relative x and y coordinates used \ to position the clip sphere." visible = @clip4 && @view==0 endparam param clip4z caption = "Z Coords" default = 0.0 hint = "Specifies either the absolute or relative z coordinate used to \ position the clip sphere." visible = @clip4 && @view==0 endparam param clip4rot caption = "Sphere Rotation" default = (0,0) hint = "Allows you to specify angles by which to rotate the position of \ the clipping sphere around the target. The real part \ gives the direction and the imaginary the elevation." visible = @clip4 && @view==0 endparam param clip4radius caption = "Sphere Radius" default = 2.0 hint = "The radius of the clipping sphere." visible = @clip4 && @view==0 endparam param clipcombine caption = "Combination" enum = "And" "Or" default = 0 hint = "Combining using 'And' clips to the planes and the sphere i.e. \ leaves only solid not clipped by either method. Combining using \ 'Or' leaves both the area not clipped by the planes or the area \ not clipped by the sphere. Note that when using 'Or' and the \ solid cut by the planes and the solid cut by the sphere are \ separate or they overlap in a concave manner then the results \ are not 100% correct." visible = (@clip1 || @clip2 || @clip3) && @clip4 && @view==0 endparam heading caption = "Colouring/Lighting" visible = @view==0 endheading param colouring caption = "Colouring" enum = "Lighting" "UF colouring" "Position/Distance" "Genetics" \ "Lighting+Pos/Dist" "Lighting+Genetics" "Lighting+Colour" hint = "If you choose 'UF colouring' then you can use any UF colouring at \ all, the plain colouring methods require '3D Colouring' from \ 'mmf.ucl' and the mixed lighting and colouring modes need \ '3D colouring direct' from mmf4.ucl." visible = @view==0 endparam param colmeth caption = "Lighting method" enum = "Z-buffer" "Bounding normals" default = 0 hint = "Z-buffer is better but 2 to 4 times slower. The bounding normals \ method needs some parameters tweaking to get decent results - the \ required tweaking will vary from one fractal to another, in \ particular it doesn't work well with fractals that should have \ visibly flat surfaces such as the Menger Sponge." visible = @view==0 && (@colouring==0 || @colouring>3) endparam param fudge1 caption = "Radius scale" default = 1.0 min = 0.0 hint = "A scaling factor for controlling the relevance of smaller bounding \ spheres. You should try altering this and 'Filtering scale' to \ get best results." visible = @view==0 && (@colouring==0 || @colouring>3) && @colmeth==1 endparam param fudge2 caption = "Filtering scale" default = 1.0 hint = "Using larger values (v>1.0) increases the effect of the larger \ bounding spheres. Using smaller values (03) && @colmeth==1 endparam param lskip caption = "Spheres to skip" default = 0 min = 0 hint = "On some fractals skipping the earlier bounding spheres will help." visible = @view==0 && (@colouring==0 || @colouring>3) && @colmeth==1 endparam param luse caption = "Spheres to use" default = 20 min = 1 hint = "On some fractals restricting the number of bounding spheres used \ will help." visible = @view==0 && (@colouring==0 || @colouring>3) && @colmeth==1 endparam param comp caption = "Z value" enum = "x+flip(sqrt(y^2+z^2))" "y+flip(sqrt(x^2+z^2))" \ "z+flip(sqrt(x^2+y^2))" "Normalised x,y" "Normalised x,z" \ "Normalised y,z" default = 0 hint = "Allows you to choose how to convert the 3D orbit values to a \ complex value of z to be passed to the UF colouring." visible = @colouring==1 && @view==0 endparam func zfn caption = "Z Function" default = ident() hint = "Allows you to apply a complex function to the z value before it's \ passed to the UF colouring." visible = @colouring==1 && @view==0 endfunc param distloc caption = "Dist. or Location" enum = "Location" "Distance" default = 0 hint = "You can choose to use the orbit locations as the colouring or the \ distances between them." visible = @view==0 && (@colouring==2 || @colouring==4) endparam param addmul caption = "Sum or Product" enum = "Sum" "Product1" "Product2" default = 0 hint = "Sum sums up the 3D values. Product1 multiplies the individual 3D \ values i.e. x*x, y*y and z*z. Product2 converts the 3D value to a \ complex number as x+flip(sqrt(y*y+z*z)) and gets the complex \ product of these values." visible = @view==0 && (@colouring==2 || @colouring==4) endparam param depth caption = "Depth" default = 5 min = 1 hint = "Specifies how many iterations to use in the colouring." visible = @view==0 && (@colouring==2 || @colouring==4) endparam param fade caption = "Fade" default = 0.75 hint = "Fades out the values from older iterations, the closer to zero the \ value the greater the fade. Designed to be 0 <= value <= 1." visible = @view==0 && (@colouring==2 || @colouring==4) && @depth>1 endparam param older caption = "Older Iterations" default = 0 min = 0 hint = "You may choose to use older iterations for the colouring. The \ older you go the busier the colouring." visible = @view==0 && (@colouring==2 || @colouring==4) endparam param oldg caption = "Genetic age" default = 0 min = 0 hint = "Specifies the age of the first transform to consider from the \ genetic history. The older you go the busier the colouring." visible = @view==0 && (@colouring==3 || @colouring==5) endparam param numg caption = "#Genetic codes" default = 4 min = 1 hint = "Specifies how many transform colour values to use in the colouring." visible = @view==0 && (@colouring==3 || @colouring==5) endparam param fadeg caption = "Genetic Fade" default = 0.75 hint = "Fades out older transform colour values, the closer to zero the \ value the greater the fade. Designed to be 0 <= value <= 1." visible = @view==0 && (@colouring==3 || @colouring==5) endparam param useg caption = "Genetic Probabilities ?" default = false hint = "When enabled the transform probability values are used instead of \ the transform colour values. Only useful for fractals where the \ transforms have different scales." visible = @view==0 && (@colouring==3 || @colouring==5) endparam param sp caption = "Use faded product" default = false hint = "Normally the faded sum is used but you can choose to use the \ faded product instead." visible = @view==0 && (@colouring==3 || @colouring==5) endparam heading text = "The 'Transform colour' values control how the use of each of \ the tranforms is converted to a colour value for the genetics \ colouring modes. Note that using a value of zero as the colour \ for a given transform means that the transform concerned is \ ignored completely in the genetics colouring calculations." visible = @view==0 && (@colouring==3 || @colouring==5) && !@useg endheading param tc1 caption = "Transform colour 1" default = 1.0 min = 0.0 hint = "The colour value for transform 1 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use1 && !@useg endparam param tc2 caption = "Transform colour 2" default = 1.1 min = 0.0 hint = "The colour value for transform 2 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use2 && !@useg endparam param tc3 caption = "Transform colour 3" default = 1.2 min = 0.0 hint = "The colour value for transform 3 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use3 && !@useg endparam param tc4 caption = "Transform colour 4" default = 1.3 min = 0.0 hint = "The colour value for transform 4 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use4 && !@useg endparam param tc5 caption = "Transform colour 5" default = 1.4 min = 0.0 hint = "The colour value for transform 5 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use5 && !@useg endparam param tc6 caption = "Transform colour 6" default = 1.5 min = 0.0 hint = "The colour value for transform 6 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use6 && !@useg endparam param tc7 caption = "Transform colour 7" default = 1.6 min = 0.0 hint = "The colour value for transform 7 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use7 && !@useg endparam param tc8 caption = "Transform colour 8" default = 1.7 min = 0.0 hint = "The colour value for transform 8 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use8 && !@useg endparam param tc9 caption = "Transform colour 9" default = 1.8 min = 0.0 hint = "The colour value for transform 9 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use9 && !@useg endparam param tc10 caption = "Transform colour 10" default = 1.9 min = 0.0 hint = "The colour value for transform 10 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use10 && !@useg endparam param tc11 caption = "Transform colour 11" default = 2.0 min = 0.0 hint = "The colour value for transform 11 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use11 && !@useg endparam param tc12 caption = "Transform colour 12" default = 2.1 min = 0.0 hint = "The colour value for transform 12 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use12 && !@useg endparam param tc13 caption = "Transform colour 13" default = 2.2 min = 0.0 hint = "The colour value for transform 13 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use13 && !@useg endparam param tc14 caption = "Transform colour 14" default = 2.3 min = 0.0 hint = "The colour value for transform 14 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use14 && !@useg endparam param tc15 caption = "Transform colour 15" default = 2.4 min = 0.0 hint = "The colour value for transform 15 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use15 && !@useg endparam param tc16 caption = "Transform colour 16" default = 2.5 min = 0.0 hint = "The colour value for transform 16 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use16 && !@useg endparam param tc17 caption = "Transform colour 17" default = 2.6 min = 0.0 hint = "The colour value for transform 17 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use17 && !@useg endparam param tc18 caption = "Transform colour 18" default = 2.7 min = 0.0 hint = "The colour value for transform 18 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use18 && !@useg endparam param tc19 caption = "Transform colour 19" default = 2.8 min = 0.0 hint = "The colour value for transform 19 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use19 && !@useg endparam param tc20 caption = "Transform colour 20" default = 2.9 min = 0.0 hint = "The colour value for transform 20 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use20 && !@useg endparam param tc21 caption = "Transform colour 21" default = 3.0 min = 0.0 hint = "The colour value for transform 21 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use21 && !@useg endparam param tc22 caption = "Transform colour 22" default = 3.1 min = 0.0 hint = "The colour value for transform 22 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use22 && !@useg endparam param tc23 caption = "Transform colour 23" default = 3.2 min = 0.0 hint = "The colour value for transform 23 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use23 && !@useg endparam param tc24 caption = "Transform colour 24" default = 3.3 min = 0.0 hint = "The colour value for transform 24 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use24 && !@useg endparam param tc25 caption = "Transform colour 25" default = 3.4 min = 0.0 hint = "The colour value for transform 25 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use25 && !@useg endparam param tc26 caption = "Transform colour 26" default = 3.5 min = 0.0 hint = "The colour value for transform 26 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use26 && !@useg endparam param tc27 caption = "Transform colour 27" default = 3.6 min = 0.0 hint = "The colour value for transform 27 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use27 && !@useg endparam param tc28 caption = "Transform colour 28" default = 3.7 min = 0.0 hint = "The colour value for transform 28 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use28 && !@useg endparam param tc29 caption = "Transform colour 29" default = 3.8 min = 0.0 hint = "The colour value for transform 29 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use29 && !@useg endparam param tc30 caption = "Transform colour 30" default = 3.9 min = 0.0 hint = "The colour value for transform 30 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use30 && !@useg endparam param tc31 caption = "Transform colour 31" default = 4.0 min = 0.0 hint = "The colour value for transform 31 for the 'Genetics' colouring." visible = @view==0 && (@colouring==3 || @colouring==5) && @use31 && !@useg endparam param clr caption = "Object colour index" default = 0.0 min = 0.0 hint = "The colour index for the object colour (it will be the colour at \ this index in the gradient if you set 'Colour Density' to 1 and \ 'Transfer Function' to linear in mmf4.ucl-3D colouring direct)." visible = @view==0 && @colouring==6 endparam param lighting caption = "Lighting" enum = "Camera" "Other" "Camera+Other" "Other+Shadows" \ "Camera+Other+Shadows" default = 0 hint = "Allows you to specify the lighting method." visible = (@colouring==0 || @colouring>3) && @view==0 endparam param lightver caption = "Lighting Version" enum = "Normal" "Advanced" default = 0 hint = "Should be set to the same as the equivalent parameter in mmf4.ucl \ '3D colouring direct'. 'Normal' is when the light is plain \ white/grey light only. In 'Advanced' mode you can use coloured \ lights. When using 'Normal' you should set 'Maximum Iterations' \ to 2, when using 'Advanced' you should set 'Maximum Iterations' \ to 4." visible = @view==0 && @colouring>3 endparam param cls caption = "Squared fade" default = 0.0 hint = "The amount the light fades based on the square of the distance \ from point sources." visible = (@colouring==0 || @colouring>3) && @view==0 endparam param clv caption = "Linear fade" default = 0.0 hint = "The amount the light fades based on the distance from point \ sources." visible = (@colouring==0 || @colouring>3) && @view==0 endparam param poff caption = "Pixel offset" default = 1.0 min = 0.1 max = 2.0 hint = "Allows you to modify the pixel offset of the adjacent rays cast \ when a point is found on the fractal. The default is 1, the best \ value to use is probably 0.5 but you may set the value as low as \ 0.1 or as high as 2." visible = (@colouring==0 || @colouring>3) && @view==0 && @colmeth==0 endparam param onepix caption = "'Joined' threshold" default = 0.05 hint = "This is the (3D) distance beyond which the solid is considered to \ be separate for lighting purposes. It is required to avoid thick \ lines of dark where separate sections of fractal overlap. It's \ unlikely to need changing unless you're viewing at very high \ magnification in which case you may want to reduce the value." visible = (@colouring==0 || @colouring>3) && @view==0 endparam param fixpix caption = "Auto adjust 'Joined threshold'" default = false hint = "When enabled the 'Joined threshold' value is automatically \ adjusted based on the magnification and image size. This helps \ ensure more consistency when rendering large or zooming in. If \ you wish to adjust all parameters that are susceptible to changes \ in image size or magnification then it's better to use 'Auto-scale \ detail'." visible = (@colouring==0 || @colouring>3) && @view==0 && !@fixall endparam param amb caption = "(Base) Ambient" default = 0.0 min = 0.0 hint = "Controls the amount of (unsourced) ambient light. The larger you \ set the value the less the relative effect of specular, diffuse \ (and sourced ambient) lighting." visible = (@colouring==0 \ || (@colouring>3 && (@lightver==0 || @version==0))) && @view==0 endparam param ambr caption = "Base Ambient Red" default = 0.0 min = 0.0 hint = "Controls the amount of (unsourced) ambient red light. The larger \ you set the value the less the relative effect of specular, \ diffuse and sourced ambient red lighting." visible = @colouring>3 && @lightver==1 && @view==0 && @version==1 endparam param ambg caption = "Base Ambient Green" default = 0.0 min = 0.0 hint = "Controls the amount of (unsourced) ambient green light. The larger \ you set the value the less the relative effect of specular, \ diffuse and sourced ambient green lighting." visible = @colouring>3 && @lightver==1 && @view==0 && @version==1 endparam param ambb caption = "Base Ambient Blue" default = 0.0 min = 0.0 hint = "Controls the amount of (unsourced) ambient blue light. The larger \ you set the value the less the relative effect of specular, \ diffuse and sourced ambient blue lighting." visible = @colouring>3 && @lightver==1 && @view==0 && @version==1 endparam param ambl caption = "Sourced Ambient" default = 0.0 min = 0.0 hint = "Controls the amount of sourced ambient light. The larger you \ set the value the less the relative effect of specular, diffuse \ and unsourced ambient lighting. If this value is non-zero then \ any new lights added automatically add to the overall sourced \ ambient amount." visible = (@colouring==0 || @colouring>3) && @view==0 && @version==1 endparam param diff caption = "Diffuse amount" default = 1.0 hint = "Controls the amount of diffuse light. The larger you set the value \ the less the relative effect of ambient and specular lighting." visible = (@colouring==0 || @colouring>3) && @view==0 endparam param spec caption = "Specular amount" default = 0.0 hint = "Controls the amount of specular light. The larger you set the \ value the less the relative effect of ambient and diffuse light." visible = (@colouring==0 || @colouring>3) && @view==0 endparam param lpwr caption = "Specular exponent" default = 4.0 min = 0.0 hint = "The larger the value you use the more mirror-like the reflection." visible = @view==0 && (@colouring==0 || @colouring>3) endparam param lpwr1 caption = "Roughness %age" default = 0.0 min = 0.0 hint = "Using non-zero values attempts to simulate rougher surfaces by \ modifying the specular exponent based on the angle of incidence. \ Values >100% may introduce errors." visible = @view==0 && (@colouring==0 || @colouring>3) endparam param black caption = "Negative light" default = false hint = "When enabled the diffuse light is taken from 0 (facing directly \ away from a light source) to 1 (directly facing a light source) \ instead of the usual 0 (90 degrees or more around) to 1 (directly \ facing). If enabled it's best to reduce the ambient amount." visible = (@colouring==0 || @colouring>3) && @view==0 endparam param clamp caption = "Normalise" default = true hint = "When enabled your ambient, diffuse and specular amounts are \ adjusted so the maximum possible value is 1, if disabled then \ the values are used directly which may result in light values \ exceeding 1 which are then clamped to 1. Obviously when \ 'Normalise' is disabled it's important your values aren't too \ large as then you'll just get an all 'white' object." visible = (@colouring==0 || (@colouring>3 && @lightver==0)) && @view==0 endparam param lscale caption = "Light Scale" default = 0.75 min = 0.0 hint = "This allows you to scale the overall light strength before the \ value is clamped to a maximum of 1." visible = (@colouring==0 || (@colouring>3 && @lightver==0)) && @view==0 \ && !@clamp endparam param rscale caption = "Red Scale" default = 0.75 min = 0.0 hint = "This allows you to scale the overall red strength." visible = @colouring>3 && @lightver==1 && @view==0 endparam param gscale caption = "Green Scale" default = 0.75 min = 0.0 hint = "This allows you to scale the overall greeen strength." visible = @colouring>3 && @lightver==1 && @view==0 endparam param bscale caption = "Blue Scale" default = 0.75 min = 0.0 hint = "This allows you to scale the overall blue strength." visible = @colouring>3 && @lightver==1 && @view==0 endparam param camlight caption = "Camera Light" enum = "Remote" "Point" default = 0 hint = "Allows you to control a light source from the direction of the \ camera. 'Remote' will use light travelling from the direction of \ the centre of the camera lens to the target. 'Point' allows you \ to specify the location of a point source somewhere along the line \ from the centre of the lens to the target, if you set the 'Camera \ Light Distance' to 0 then the point source is at the centre of the \ camera lens, using values >0 moves the point source further away \ from the target, using values <0 moves the point source towards \ the target. Note that shadows are not cast by the 'Camera Light'." visible = @view==0 && (@colouring==0 || @colouring>3) && \ (@lighting==0 || @lighting==2 || @lighting==4) endparam param campoint caption = "Camera Light Distance" default = 4.0 hint = "Allows you to control the position of a point light source \ somewhere on the line through the target and the centre of the \ camera lens. If you set the value to 0 then the point source is at \ the centre of the camera lens, using values >0 moves the point \ source further away from the target, using values <0 moves the \ point source towards the target. Note that shadows are not cast by \ the 'Camera Light'." visible = @view==0 && @camlight==1 && (@colouring==0 || @colouring>3) && \ (@lighting==0 || @lighting==2 || @lighting==4) endparam param camstr caption = "Camera strength" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the camera light with respect to \ the other light source/s." visible = @view==0 && (@colouring==0 || (@colouring>3 && @lightver==0)) && \ (@lighting==2 || @lighting==4) endparam param camstrr caption = "Camera red" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the camera red with respect to \ the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 && \ (@lighting==2 || @lighting==4) endparam param camstrg caption = "Camera green" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the camera green with respect to \ the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 && \ (@lighting==2 || @lighting==4) endparam param camstrb caption = "Camera blue" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the camera blue with respect to \ the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 && \ (@lighting==2 || @lighting==4) endparam param usespec caption = "Specular camera" default = true hint = "Disable to disable the specular component of the camera lighting. \ Useful when using other lights if the specular amount is non-zero \ but you don't want specular highlights from the camera light. \ Useful when using the camera light as a sort of directional \ ambient light." visible = @view==0 && (@colouring==0 || @colouring>3) && \ (@lighting==2 || @lighting==4) endparam param numlights caption = "#Other lights" enum = "1" "2" "3" "4" "5" "6" default = 0 hint = "Allows you to specify the number of independant light sources." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 endparam param light1 caption = "Light 1 type" enum = "Remote" "Point" default = 0 hint = "You may choose a remote or point light source." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 endparam param l1str caption = "Light 1 strength" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the light 1 with respect to \ the other light source/s." visible = @view==0 && (@colouring==0 || (@colouring>3 && @lightver==0)) && \ (@lighting==2 || @lighting==4 || (@lighting>0 && @numlights>0)) endparam param l1strr caption = "Light 1 red" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the red for light 1 with respect \ to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 && \ (@lighting==2 || @lighting==4 || (@lighting>0 && @numlights>0)) endparam param l1strg caption = "Light 1 green" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the green for light 1 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 && \ (@lighting==2 || @lighting==4 || (@lighting>0 && @numlights>0)) endparam param l1strb caption = "Light 1 blue" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the blue for light 1 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 && \ (@lighting==2 || @lighting==4 || (@lighting>0 && @numlights>0)) endparam param l1meth caption = "Light 1 position" enum = "Absolute" "Offset" default = 1 hint = "Allows you to choose whether your lighting position is specified \ in absolute terms or as an offset from the target coords. If your \ light is remote then the coords you specify simply control the \ light's direction." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 endparam param l1xy caption = "Light 1 x,y" default = (0,0) hint = "The x and y coords or offsets for light 1." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 endparam param l1z caption = "Light 1 z" default = -3.0 hint = "The z coord or offset for light 1." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 endparam param l1rot caption = "Light 1 rot. (degrees)" default = (45,60) hint = "Light 1 rotation (real part) and elevation (imag part) around the \ target." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 endparam param l1cam caption = "Rotate light 1 with camera" default = true hint = "When enabled the angles specified for light 1 are relative to the \ camera angles, otherwise they are absolute." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 endparam param lsh1 caption = "Shadow strength 1" default = 1.0 min = 0.0 max = 1.0 hint = "Allows you to set the shadow strength for light 1. If you specify \ 1.0 then the contribution to a point in shadow from this light is \ restricted to ambient only. Using a smaller value will allow some \ diffuse contribution in shadows from this light source. Using 0 \ allows the full diffuse amount. No specular contribution is made \ from this light source for points in its shadow." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>2 endparam param light2 caption = "Light 2 type" enum = "Remote" "Point" default = 0 hint = "You may choose a remote or point light source." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>0 endparam param l2str caption = "Light 2 strength" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the light 2 with respect to \ the other light source/s." visible = @view==0 && (@colouring==0 || (@colouring>3 && @lightver==0)) \ && @lighting>0 && @numlights>0 endparam param l2strr caption = "Light 2 red" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the red for light 2 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>0 endparam param l2strg caption = "Light 2 green" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the green for light 2 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>0 endparam param l2strb caption = "Light 2 blue" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the blue for light 2 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>0 endparam param l2meth caption = "Light 2 position" enum = "Absolute" "Offset" default = 1 hint = "Allows you to choose whether your lighting position is specified \ in absolute terms or as an offset from the target coords. If your \ light is remote then the coords you specify simply control the \ light's direction." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>0 endparam param l2xy caption = "Light 2 x,y" default = (0,0) hint = "The x and y coords or offsets for light 2." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>0 endparam param l2z caption = "Light 2 z" default = -3.0 hint = "The z coord or offset for light 2." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>0 endparam param l2rot caption = "Light 2 rot. (degrees)" default = (45,60) hint = "Light 2 rotation (real part) and elevation (imag part) around the \ target." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>0 endparam param l2cam caption = "Rotate light 2 with camera" default = true hint = "When enabled the angles specified for light 2 are relative to the \ camera angles, otherwise they are absolute." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>0 endparam param lsh2 caption = "Shadow strength 2" default = 1.0 min = 0.0 max = 1.0 hint = "Allows you to set the shadow strength for light 2. If you specify \ 1.0 then the contribution to a point in shadow from this light is \ restricted to ambient only. Using a smaller value will allow some \ diffuse contribution in shadows from this light source. Using 0 \ allows the full diffuse amount. No specular contribution is made \ from this light source for points in its shadow." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>2 \ && @numlights>0 endparam param light3 caption = "Light 3 type" enum = "Remote" "Point" default = 0 hint = "You may choose a remote or point light source." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>1 endparam param l3str caption = "Light 3 strength" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the light 3 with respect to \ the other light source/s." visible = @view==0 && (@colouring==0 || (@colouring>3 && @lightver==0)) \ && @lighting>0 && @numlights>1 endparam param l3strr caption = "Light 3 red" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the red for light 3 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>1 endparam param l3strg caption = "Light 3 green" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the green for light 3 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>1 endparam param l3strb caption = "Light 3 blue" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the blue for light 3 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>1 endparam param l3meth caption = "Light 3 position" enum = "Absolute" "Offset" default = 1 hint = "Allows you to choose whether your lighting position is specified \ in absolute terms or as an offset from the target coords. If your \ light is remote then the coords you specify simply control the \ light's direction." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>1 endparam param l3xy caption = "Light 3 x,y" default = (0,0) hint = "The x and y coords or offsets for light 3." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>1 endparam param l3z caption = "Light 3 z" default = -3.0 hint = "The z coord or offset for light 3." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>1 endparam param l3rot caption = "Light 3 rot. (degrees)" default = (45,60) hint = "Light 1 rotation (real part) and elevation (imag part) around the \ target." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>1 endparam param l3cam caption = "Rotate light 3 with camera" default = true hint = "When enabled the angles specified for light 3 are relative to the \ camera angles, otherwise they are absolute." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>1 endparam param lsh3 caption = "Shadow strength 3" default = 1.0 min = 0.0 max = 1.0 hint = "Allows you to set the shadow strength for light 3. If you specify \ 1.0 then the contribution to a point in shadow from this light is \ restricted to ambient only. Using a smaller value will allow some \ diffuse contribution in shadows from this light source. Using 0 \ allows the full diffuse amount. No specular contribution is made \ from this light source for points in its shadow." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>2 \ && @numlights>1 endparam param light4 caption = "Light 4 type" enum = "Remote" "Point" default = 0 hint = "You may choose a remote or point light source." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>2 endparam param l4str caption = "Light 4 strength" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the light 4 with respect to \ the other light source/s." visible = @view==0 && (@colouring==0 || (@colouring>3 && @lightver==0)) \ && @lighting>0 && @numlights>2 endparam param l4strr caption = "Light 4 red" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the red for light 4 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>2 endparam param l4strg caption = "Light 4 green" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the green for light 4 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>2 endparam param l4strb caption = "Light 4 blue" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the blue for light 4 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>2 endparam param l4meth caption = "Light 4 position" enum = "Absolute" "Offset" default = 1 hint = "Allows you to choose whether your lighting position is specified \ in absolute terms or as an offset from the target coords. If your \ light is remote then the coords you specify simply control the \ light's direction." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>2 endparam param l4xy caption = "Light 4 x,y" default = (0,0) hint = "The x and y coords or offsets for light 4." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>2 endparam param l4z caption = "Light 4 z" default = -3.0 hint = "The z coord or offset for light 4." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>2 endparam param l4rot caption = "Light 4 rot. (degrees)" default = (45,60) hint = "Light 4 rotation (real part) and elevation (imag part) around the \ target." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>2 endparam param l4cam caption = "Rotate light 4 with camera" default = true hint = "When enabled the angles specified for light 4 are relative to the \ camera angles, otherwise they are absolute." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>2 endparam param lsh4 caption = "Shadow strength 4" default = 1.0 min = 0.0 max = 1.0 hint = "Allows you to set the shadow strength for light 4. If you specify \ 1.0 then the contribution to a point in shadow from this light is \ restricted to ambient only. Using a smaller value will allow some \ diffuse contribution in shadows from this light source. Using 0 \ allows the full diffuse amount. No specular contribution is made \ from this light source for points in its shadow." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>2 \ && @numlights>2 endparam param light5 caption = "Light 5 type" enum = "Remote" "Point" default = 0 hint = "You may choose a remote or point light source." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>3 endparam param l5str caption = "Light 5 strength" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the light 5 with respect to \ the other light source/s." visible = @view==0 && (@colouring==0 || (@colouring>3 && @lightver==0)) \ && @lighting>0 && @numlights>3 endparam param l5strr caption = "Light 5 red" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the red for light 5 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>3 endparam param l5strg caption = "Light 5 green" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the green for light 5 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>3 endparam param l5strb caption = "Light 5 blue" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the blue for light 5 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>3 endparam param l5meth caption = "Light 5 position" enum = "Absolute" "Offset" default = 1 hint = "Allows you to choose whether your lighting position is specified \ in absolute terms or as an offset from the target coords. If your \ light is remote then the coords you specify simply control the \ light's direction." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>3 endparam param l5xy caption = "Light 5 x,y" default = (0,0) hint = "The x and y coords or offsets for light 5." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>3 endparam param l5z caption = "Light 5 z" default = -3.0 hint = "The z coord or offset for light 5." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>3 endparam param l5rot caption = "Light 5 rot. (degrees)" default = (45,60) hint = "Light 5 rotation (real part) and elevation (imag part) around the \ target." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>3 endparam param l5cam caption = "Rotate light 5 with camera" default = true hint = "When enabled the angles specified for light 5 are relative to the \ camera angles, otherwise they are absolute." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>3 endparam param lsh5 caption = "Shadow strength 5" default = 1.0 min = 0.0 max = 1.0 hint = "Allows you to set the shadow strength for light 5. If you specify \ 1.0 then the contribution to a point in shadow from this light is \ restricted to ambient only. Using a smaller value will allow some \ diffuse contribution in shadows from this light source. Using 0 \ allows the full diffuse amount. No specular contribution is made \ from this light source for points in its shadow." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>2 \ && @numlights>3 endparam param light6 caption = "Light 6 type" enum = "Remote" "Point" default = 0 hint = "You may choose a remote or point light source." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>4 endparam param l6str caption = "Light 6 strength" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the light 6 with respect to \ the other light source/s." visible = @view==0 && (@colouring==0 || (@colouring>3 && @lightver==0)) \ && @lighting>0 && @numlights>4 endparam param l6strr caption = "Light 6 red" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the red for light 6 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>4 endparam param l6strg caption = "Light 6 green" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the green for light 6 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>4 endparam param l6strb caption = "Light 6 blue" default = 1.0 min = 0.0 hint = "Allows you to set the strength of the blue for light 6 with \ respect to the other light source/s." visible = @view==0 && @colouring>3 && @lightver==1 \ && @lighting>0 && @numlights>4 endparam param l6meth caption = "Light 6 position" enum = "Absolute" "Offset" default = 1 hint = "Allows you to choose whether your lighting position is specified \ in absolute terms or as an offset from the target coords. If your \ light is remote then the coords you specify simply control the \ light's direction." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>4 endparam param l6xy caption = "Light 6 x,y" default = (0,0) hint = "The x and y coords or offsets for light 6." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>4 endparam param l6z caption = "Light 6 z" default = -3.0 hint = "The z coord or offset for light 6." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>4 endparam param l6rot caption = "Light 6 rot. (degrees)" default = (45,60) hint = "Light 6 rotation (real part) and elevation (imag part) around the \ target." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>4 endparam param l6cam caption = "Rotate light 6 with camera" default = true hint = "When enabled the angles specified for light 6 are relative to the \ camera angles, otherwise they are absolute." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>0 \ && @numlights>4 endparam param lsh6 caption = "Shadow strength 6" default = 1.0 min = 0.0 max = 1.0 hint = "Allows you to set the shadow strength for light 6. If you specify \ 1.0 then the contribution to a point in shadow from this light is \ restricted to ambient only. Using a smaller value will allow some \ diffuse contribution in shadows from this light source. Using 0 \ allows the full diffuse amount. No specular contribution is made \ from this light source for points in its shadow." visible = @view==0 && (@colouring==0 || @colouring>3) && @lighting>2 \ && @numlights>4 endparam heading caption = "Fractal Calculation" endheading param trans caption = "Apply Overall Transformation" default = false hint = "When enabled you can specify an Overall Transformation to be \ combined with each of the individual Transformations in such a way \ that the resulting fractal is deformed exactly as described by the \ Overall Transformation i.e. the fractal shape will stay 'intact'." endparam param sx0 caption = "X Scale (%)" default = 80.0 hint = "Scales in x. Note that very small values (<1.0) or very large \ values (>100.0) may cause some of the Transformations to be \ removed from the render." visible = @trans endparam param sx0p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans endparam param sy0 caption = "Y Scale (%)" default = 80.0 hint = "Scales in y. Note that very small values (<1.0) or very large \ values (>100.0) may cause some of the Transformations to be \ removed from the render." visible = @trans endparam param sy0p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans endparam param sz0 caption = "Z Scale (%)" default = 80.0 hint = "Scales in z. Note that very small values (<1.0) or very large \ values (>100.0) may cause some of the Transformations to be \ removed from the render." visible = @trans endparam param sz0p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans endparam param rx0 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = @trans endparam param rx0p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans endparam param ry0 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = @trans endparam param ry0p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans endparam param rz0 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = @trans endparam param rz0p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans endparam param shx0 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = @trans endparam param shx0p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans endparam param shy0 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = @trans endparam param shy0p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans endparam param shz0 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = @trans endparam param shz0p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans endparam param usem0 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = @trans endparam param t0r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = @trans && @usem0 endparam param t0r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = @trans && @usem0 endparam param t0r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = @trans && @usem0 endparam param t0r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = @trans && @usem0 endparam param t0r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = @trans && @usem0 endparam param t0r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = @trans && @usem0 endparam param t0r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = @trans && @usem0 endparam param t0r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = @trans && @usem0 endparam param t0r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = @trans && @usem0 endparam param m0p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = @trans && @usem0 endparam param tx0 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = @trans endparam param ty0 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = @trans endparam param tz0 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = @trans endparam param deform caption = "Apply Deformation Transformation" default = false hint = "When enabled you can specify a Deformation Transformation to be \ combined with each of the individual Transformations in such a way \ that the fractal is deformed i.e. it will change to an entirely \ different fractal. Note that the values are simply applied as \ offsets to the values specified in the individual Transformations \ rather than being applied as a separate overall transformation." endparam param sx32 caption = "X Scale (%)" default = 0.0 hint = "Adds to the scales in x. Note that when combined with the \ scales for the individual Transformations very small values \ or very large values will cause a Transformation to be \ removed from the render." visible = @deform endparam param sy32 caption = "Y Scale (%)" default = 0.0 hint = "Adds to the scales in y. Note that when combined with the \ scales for the individual Transformations very small values \ or very large values will cause a Transformation to be \ removed from the render." visible = @deform endparam param sz32 caption = "Z Scale (%)" default = 0.0 hint = "Adds to the scales in z. Note that when combined with the \ scales for the individual Transformations very small values \ or very large values will cause a Transformation to be \ removed from the render." visible = @deform endparam param rx32 caption = "X Rotation" default = 0.0 hint = "Specifies extra rotation around the 3D x axis (in degrees)." visible = @deform endparam param ry32 caption = "Y Rotation" default = 0.0 hint = "Specifies extra rotation around the 3D y axis (in degrees)." visible = @deform endparam param rz32 caption = "Z Rotation" default = 0.0 hint = "Specifies extra rotation around the 3D z axis (in degrees)." visible = @deform endparam param shx32 caption = "X Skew" default = 0.0 hint = "Specifies an extra skew angle around the 3D x axis (in degrees)." visible = @deform endparam param shy32 caption = "Y Skew" default = 0.0 hint = "Specifies an extra skew angle around the 3D y axis (in degrees)." visible = @deform endparam param shz32 caption = "Z Skew" default = 0.0 hint = "Specifies an extra skew angle around the 3D z axis (in degrees)." visible = @deform endparam param tx32 caption = "X Translation" default = 0.0 hint = "Additional 3D x translation." visible = @deform endparam param ty32 caption = "Y Translation" default = 0.0 hint = "Additional 3D y translation." visible = @deform endparam param tz32 caption = "Z Translation" default = 0.0 hint = "Additional 3D z translation." visible = @deform endparam heading caption = "Individual Transformations" endheading param user caption = "User scales ?" default = false hint = "When enabled you specify the scales of the transforms rather than \ the calculated value being used." endparam param xeno caption = "Xenodream mode" default = false hint = "Enable to make the formula compatible with holons from Xenodream \ (provided they're plain affine i.e. they don't use any \ metamorphs). Note that you need to divide the translation values \ by 100." endparam param useskips caption = "Use Depth Restrictions" default = false hint = "When enabled you can limit at what depths the individual \ transforms are enabled. This allows you to manipulate your \ fractal in ways not possible using plain RIFS." visible = @view==0 endparam param useiterations caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can limit the use of each transform to a \ maximum number of consecutive uses within a branch down the \ IFS tree. Useful (for example) for limiting the application \ of transforms with large scale factors e.g. 100%." endparam param useiterations1 caption = "Restrict Total Uses" default = false hint = "When enabled you can limit the use of each transform to a \ maximum number of uses anywhere within a branch down the \ IFS tree. Useful (for example) for limiting the application \ of transforms with large scale factors e.g. 100%." endparam param showtrans caption = "Show Transforms" enum = "All" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" \ "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" \ "28" "29" "30" "31" default = 0 endparam param use1 caption = "Apply Transformation 1" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==1 endparam heading caption = "Transformation #1" visible = (@showtrans==0 || @showtrans==1) && @use1 endheading param tp1 caption = "Priority" default = 1 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usepri endparam param us1 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==1) && @use1 && @user endparam param usecount1 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==1) && @use1 && @useiterations endparam param count1 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usecount1 \ && @useiterations endparam param usetotal1 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==1) && @use1 && @useiterations1 endparam param total1 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usetotal1 \ && @useiterations1 endparam param tf1 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param skip1mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==1) && @use1 && @useskips endparam param skip1mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==1) && @use1 && @useskips \ && @igen>30 endparam param skip1mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==1) && @use1 && @useskips \ && @igen>61 endparam param skip1mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==1) && @use1 && @useskips \ && @igen>92 endparam param skip1mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==1) && @use1 && @useskips \ && @igen>123 endparam param skip1mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==1) && @use1 && @useskips \ && @igen>154 endparam param skip1mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==1) && @use1 && @useskips \ && @igen>185 endparam param it1 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param itx1 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==1) && @use1 && @it1 endparam param ity1 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==1) && @use1 && @it1 endparam param itz1 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==1) && @use1 && @it1 endparam param sx1 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.00 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param sx1p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && !@xeno endparam param sy1 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param sy1p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && !@xeno endparam param sz1 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param sz1p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && !@xeno endparam param rx1 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param rx1p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && !@xeno endparam param ry1 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param ry1p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && !@xeno endparam param rz1 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param rz1p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && !@xeno endparam param shx1 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param shx1p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && !@xeno endparam param shy1 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param shy1p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && !@xeno endparam param shz1 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param shz1p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && !@xeno endparam param usem1 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param t1r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 endparam param t1r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 endparam param t1r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 endparam param t1r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 endparam param t1r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 endparam param t1r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 endparam param t1r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 endparam param t1r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 endparam param t1r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 endparam param m1p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==1) && @use1 && @usem1 && !@xeno endparam param tx1 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param ty1 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param tz1 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==1) && @use1 endparam param use2 caption = "Apply Transformation 2" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==2 endparam heading caption = "Transformation #2" visible = (@showtrans==0 || @showtrans==2) && @use2 endheading param tp2 caption = "Priority" default = 2 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usepri endparam param us2 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==2) && @use2 && @user endparam param usecount2 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==2) && @use2 && @useiterations endparam param count2 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usecount2 \ && @useiterations endparam param usetotal2 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==2) && @use2 && @useiterations1 endparam param total2 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usetotal2 \ && @useiterations1 endparam param tf2 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param skip2mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==2) && @use2 && @useskips endparam param skip2mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==2) && @use2 && @useskips \ && @igen>30 endparam param skip2mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==2) && @use2 && @useskips \ && @igen>61 endparam param skip2mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==2) && @use2 && @useskips \ && @igen>92 endparam param skip2mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==2) && @use2 && @useskips \ && @igen>123 endparam param skip2mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==2) && @use2 && @useskips \ && @igen>154 endparam param skip2mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==2) && @use2 && @useskips \ && @igen>185 endparam param it2 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param itx2 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==2) && @use2 && @it2 endparam param ity2 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==2) && @use2 && @it2 endparam param itz2 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==2) && @use2 && @it2 endparam param sx2 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param sx2p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && !@xeno endparam param sy2 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param sy2p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && !@xeno endparam param sz2 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param sz2p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && !@xeno endparam param rx2 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param rx2p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && !@xeno endparam param ry2 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param ry2p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && !@xeno endparam param rz2 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param rz2p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && !@xeno endparam param shx2 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param shx2p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && !@xeno endparam param shy2 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param shy2p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && !@xeno endparam param shz2 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param shz2p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && !@xeno endparam param usem2 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param t2r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 endparam param t2r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 endparam param t2r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 endparam param t2r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 endparam param t2r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 endparam param t2r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 endparam param t2r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 endparam param t2r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 endparam param t2r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 endparam param m2p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==2) && @use2 && @usem2 && !@xeno endparam param tx2 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param ty2 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param tz2 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==2) && @use2 endparam param use3 caption = "Apply Transformation 3" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==3 endparam heading caption = "Transformation #3" visible = (@showtrans==0 || @showtrans==3) && @use3 endheading param tp3 caption = "Priority" default = 3 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usepri endparam param us3 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==3) && @use3 && @user endparam param usecount3 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==3) && @use3 && @useiterations endparam param count3 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usecount3 \ && @useiterations endparam param usetotal3 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==3) && @use3 && @useiterations1 endparam param total3 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usetotal3 \ && @useiterations1 endparam param tf3 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param skip3mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==3) && @use3 && @useskips endparam param skip3mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==3) && @use3 && @useskips \ && @igen>30 endparam param skip3mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==3) && @use3 && @useskips \ && @igen>61 endparam param skip3mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==3) && @use3 && @useskips \ && @igen>92 endparam param skip3mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==3) && @use3 && @useskips \ && @igen>123 endparam param skip3mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==3) && @use3 && @useskips \ && @igen>154 endparam param skip3mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==3) && @use3 && @useskips \ && @igen>185 endparam param it3 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param itx3 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==3) && @use3 && @it3 endparam param ity3 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==3) && @use3 && @it3 endparam param itz3 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==3) && @use3 && @it3 endparam param sx3 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param sx3p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && !@xeno endparam param sy3 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param sy3p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && !@xeno endparam param sz3 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param sz3p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && !@xeno endparam param rx3 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param rx3p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && !@xeno endparam param ry3 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param ry3p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && !@xeno endparam param rz3 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param rz3p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && !@xeno endparam param shx3 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param shx3p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && !@xeno endparam param shy3 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param shy3p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && !@xeno endparam param shz3 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param shz3p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && !@xeno endparam param usem3 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param t3r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 endparam param t3r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 endparam param t3r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 endparam param t3r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 endparam param t3r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 endparam param t3r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 endparam param t3r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 endparam param t3r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 endparam param t3r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 endparam param m3p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==3) && @use3 && @usem3 && !@xeno endparam param tx3 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param ty3 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param tz3 caption = "Z Translation" default = 0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==3) && @use3 endparam param use4 caption = "Apply Transformation 4" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==4 endparam heading caption = "Transformation #4" visible = (@showtrans==0 || @showtrans==4) && @use4 endheading param tp4 caption = "Priority" default = 4 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usepri endparam param us4 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==4) && @use4 && @user endparam param usecount4 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==4) && @use4 && @useiterations endparam param count4 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usecount4 \ && @useiterations endparam param usetotal4 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==4) && @use4 && @useiterations1 endparam param total4 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usetotal4 \ && @useiterations1 endparam param tf4 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param skip4mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==4) && @use4 && @useskips endparam param skip4mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==4) && @use4 && @useskips \ && @igen>30 endparam param skip4mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==4) && @use4 && @useskips \ && @igen>61 endparam param skip4mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==4) && @use4 && @useskips \ && @igen>92 endparam param skip4mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==4) && @use4 && @useskips \ && @igen>123 endparam param skip4mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==4) && @use4 && @useskips \ && @igen>154 endparam param skip4mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==4) && @use4 && @useskips \ && @igen>185 endparam param it4 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param itx4 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==4) && @use4 && @it4 endparam param ity4 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==4) && @use4 && @it4 endparam param itz4 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==4) && @use4 && @it4 endparam param sx4 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param sx4p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && !@xeno endparam param sy4 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param sy4p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && !@xeno endparam param sz4 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param sz4p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && !@xeno endparam param rx4 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param rx4p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && !@xeno endparam param ry4 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param ry4p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && !@xeno endparam param rz4 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param rz4p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && !@xeno endparam param shx4 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param shx4p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && !@xeno endparam param shy4 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param shy4p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && !@xeno endparam param shz4 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param shz4p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && !@xeno endparam param usem4 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param t4r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 endparam param t4r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 endparam param t4r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 endparam param t4r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 endparam param t4r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 endparam param t4r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 endparam param t4r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 endparam param t4r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 endparam param t4r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 endparam param m4p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==4) && @use4 && @usem4 && !@xeno endparam param tx4 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param ty4 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param tz4 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==4) && @use4 endparam param use5 caption = "Apply Transformation 5" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==5 endparam heading caption = "Transformation #5" visible = (@showtrans==0 || @showtrans==5) && @use5 endheading param tp5 caption = "Priority" default = 5 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usepri endparam param us5 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==5) && @use5 && @user endparam param usecount5 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==5) && @use5 && @useiterations endparam param count5 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usecount5 \ && @useiterations endparam param usetotal5 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==5) && @use5 && @useiterations1 endparam param total5 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usetotal5 \ && @useiterations1 endparam param tf5 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param skip5mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==5) && @use5 && @useskips endparam param skip5mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==5) && @use5 && @useskips \ && @igen>30 endparam param skip5mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==5) && @use5 && @useskips \ && @igen>61 endparam param skip5mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==5) && @use5 && @useskips \ && @igen>92 endparam param skip5mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==5) && @use5 && @useskips \ && @igen>123 endparam param skip5mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==5) && @use5 && @useskips \ && @igen>154 endparam param skip5mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==5) && @use5 && @useskips \ && @igen>185 endparam param it5 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param itx5 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==5) && @use5 && @it5 endparam param ity5 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==5) && @use5 && @it5 endparam param itz5 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==5) && @use5 && @it5 endparam param sx5 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param sx5p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && !@xeno endparam param sy5 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param sy5p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && !@xeno endparam param sz5 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param sz5p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && !@xeno endparam param rx5 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param rx5p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && !@xeno endparam param ry5 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param ry5p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && !@xeno endparam param rz5 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param rz5p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && !@xeno endparam param shx5 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param shx5p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && !@xeno endparam param shy5 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param shy5p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && !@xeno endparam param shz5 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param shz5p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && !@xeno endparam param usem5 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param t5r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 endparam param t5r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 endparam param t5r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 endparam param t5r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 endparam param t5r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 endparam param t5r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 endparam param t5r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 endparam param t5r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 endparam param t5r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 endparam param m5p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==5) && @use5 && @usem5 && !@xeno endparam param tx5 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param ty5 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param tz5 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==5) && @use5 endparam param use6 caption = "Apply Transformation 6" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==6 endparam heading caption = "Transformation #6" visible = (@showtrans==0 || @showtrans==6) && @use6 endheading param tp6 caption = "Priority" default = 6 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usepri endparam param us6 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==6) && @use6 && @user endparam param usecount6 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==6) && @use6 && @useiterations endparam param count6 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usecount6 \ && @useiterations endparam param usetotal6 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==6) && @use6 && @useiterations1 endparam param total6 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usetotal6 \ && @useiterations1 endparam param tf6 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param skip6mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==6) && @use6 && @useskips endparam param skip6mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==6) && @use6 && @useskips \ && @igen>30 endparam param skip6mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==6) && @use6 && @useskips \ && @igen>61 endparam param skip6mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==6) && @use6 && @useskips \ && @igen>92 endparam param skip6mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==6) && @use6 && @useskips \ && @igen>123 endparam param skip6mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==6) && @use6 && @useskips \ && @igen>154 endparam param skip6mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==6) && @use6 && @useskips \ && @igen>185 endparam param it6 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param itx6 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==6) && @use6 && @it6 endparam param ity6 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==6) && @use6 && @it6 endparam param itz6 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==6) && @use6 && @it6 endparam param sx6 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param sx6p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && !@xeno endparam param sy6 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param sy6p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && !@xeno endparam param sz6 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param sz6p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && !@xeno endparam param rx6 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param rx6p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && !@xeno endparam param ry6 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param ry6p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && !@xeno endparam param rz6 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param rz6p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && !@xeno endparam param shx6 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param shx6p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && !@xeno endparam param shy6 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param shy6p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && !@xeno endparam param shz6 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param shz6p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && !@xeno endparam param usem6 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param t6r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 endparam param t6r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 endparam param t6r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 endparam param t6r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 endparam param t6r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 endparam param t6r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 endparam param t6r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 endparam param t6r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 endparam param t6r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 endparam param m6p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==6) && @use6 && @usem6 && !@xeno endparam param tx6 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param ty6 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param tz6 caption = "Z Translation" default = 0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==6) && @use6 endparam param use7 caption = "Apply Transformation 7" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==7 endparam heading caption = "Transformation #7" visible = (@showtrans==0 || @showtrans==7) && @use7 endheading param tp7 caption = "Priority" default = 7 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usepri endparam param us7 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==7) && @use7 && @user endparam param usecount7 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==7) && @use7 && @useiterations endparam param count7 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usecount7 \ && @useiterations endparam param usetotal7 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==7) && @use7 && @useiterations1 endparam param total7 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usetotal7 \ && @useiterations1 endparam param tf7 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param skip7mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==7) && @use7 && @useskips endparam param skip7mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==7) && @use7 && @useskips \ && @igen>30 endparam param skip7mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==7) && @use7 && @useskips \ && @igen>61 endparam param skip7mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==7) && @use7 && @useskips \ && @igen>92 endparam param skip7mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==7) && @use7 && @useskips \ && @igen>123 endparam param skip7mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==7) && @use7 && @useskips \ && @igen>154 endparam param skip7mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==7) && @use7 && @useskips \ && @igen>185 endparam param it7 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param itx7 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==7) && @use7 && @it7 endparam param ity7 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==7) && @use7 && @it7 endparam param itz7 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==7) && @use7 && @it7 endparam param sx7 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param sx7p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && !@xeno endparam param sy7 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param sy7p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && !@xeno endparam param sz7 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param sz7p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && !@xeno endparam param rx7 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param rx7p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && !@xeno endparam param ry7 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param ry7p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && !@xeno endparam param rz7 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param rz7p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && !@xeno endparam param shx7 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param shx7p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && !@xeno endparam param shy7 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param shy7p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && !@xeno endparam param shz7 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param shz7p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && !@xeno endparam param usem7 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param t7r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 endparam param t7r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 endparam param t7r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 endparam param t7r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 endparam param t7r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 endparam param t7r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 endparam param t7r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 endparam param t7r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 endparam param t7r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 endparam param m7p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==7) && @use7 && @usem7 && !@xeno endparam param tx7 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param ty7 caption = "Y Translation" default = 0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param tz7 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==7) && @use7 endparam param use8 caption = "Apply Transformation 8" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==8 endparam heading caption = "Transformation #8" visible = (@showtrans==0 || @showtrans==8) && @use8 endheading param tp8 caption = "Priority" default = 8 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usepri endparam param us8 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==8) && @use8 && @user endparam param usecount8 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==8) && @use8 && @useiterations endparam param count8 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usecount8 \ && @useiterations endparam param usetotal8 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==8) && @use8 && @useiterations1 endparam param total8 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usetotal8 \ && @useiterations1 endparam param tf8 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param skip8mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==8) && @use8 && @useskips endparam param skip8mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==8) && @use8 && @useskips \ && @igen>30 endparam param skip8mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==8) && @use8 && @useskips \ && @igen>61 endparam param skip8mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==8) && @use8 && @useskips \ && @igen>92 endparam param skip8mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==8) && @use8 && @useskips \ && @igen>123 endparam param skip8mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==8) && @use8 && @useskips \ && @igen>154 endparam param skip8mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==8) && @use8 && @useskips \ && @igen>185 endparam param it8 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param itx8 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==8) && @use8 && @it8 endparam param ity8 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==8) && @use8 && @it8 endparam param itz8 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==8) && @use8 && @it8 endparam param sx8 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param sx8p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && !@xeno endparam param sy8 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param sy8p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && !@xeno endparam param sz8 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param sz8p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && !@xeno endparam param rx8 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param rx8p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && !@xeno endparam param ry8 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param ry8p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && !@xeno endparam param rz8 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param rz8p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && !@xeno endparam param shx8 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param shx8p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && !@xeno endparam param shy8 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param shy8p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && !@xeno endparam param shz8 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param shz8p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && !@xeno endparam param usem8 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param t8r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 endparam param t8r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 endparam param t8r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 endparam param t8r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 endparam param t8r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 endparam param t8r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 endparam param t8r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 endparam param t8r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 endparam param t8r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 endparam param m8p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==8) && @use8 && @usem8 && !@xeno endparam param tx8 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param ty8 caption = "Y Translation" default = 0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param tz8 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==8) && @use8 endparam param use9 caption = "Apply Transformation 9" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==9 endparam heading caption = "Transformation #9" visible = (@showtrans==0 || @showtrans==9) && @use9 endheading param tp9 caption = "Priority" default = 9 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usepri endparam param us9 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==9) && @use9 && @user endparam param usecount9 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==9) && @use9 && @useiterations endparam param count9 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usecount9 \ && @useiterations endparam param usetotal9 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==9) && @use9 && @useiterations1 endparam param total9 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usetotal9 \ && @useiterations1 endparam param tf9 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param skip9mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==9) && @use9 && @useskips endparam param skip9mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==9) && @use9 && @useskips \ && @igen>30 endparam param skip9mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==9) && @use9 && @useskips \ && @igen>61 endparam param skip9mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==9) && @use9 && @useskips \ && @igen>92 endparam param skip9mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==9) && @use9 && @useskips \ && @igen>123 endparam param skip9mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==9) && @use9 && @useskips \ && @igen>154 endparam param skip9mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==9) && @use9 && @useskips \ && @igen>185 endparam param it9 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param itx9 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==9) && @use9 && @it9 endparam param ity9 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==9) && @use9 && @it9 endparam param itz9 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==9) && @use9 && @it9 endparam param sx9 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param sx9p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && !@xeno endparam param sy9 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param sy9p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && !@xeno endparam param sz9 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param sz9p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && !@xeno endparam param rx9 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param rx9p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && !@xeno endparam param ry9 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param ry9p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && !@xeno endparam param rz9 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param rz9p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && !@xeno endparam param shx9 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param shx9p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && !@xeno endparam param shy9 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param shy9p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && !@xeno endparam param shz9 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param shz9p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && !@xeno endparam param usem9 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param t9r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 endparam param t9r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 endparam param t9r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 endparam param t9r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 endparam param t9r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 endparam param t9r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 endparam param t9r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 endparam param t9r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 endparam param t9r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 endparam param m9p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==9) && @use9 && @usem9 && !@xeno endparam param tx9 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param ty9 caption = "Y Translation" default = 0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param tz9 caption = "Z Translation" default = 0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==9) && @use9 endparam param use10 caption = "Apply Transformation 10" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==10 endparam heading caption = "Transformation #10" visible = (@showtrans==0 || @showtrans==10) && @use10 endheading param tp10 caption = "Priority" default = 10 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usepri endparam param us10 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==10) && @use10 && @user endparam param usecount10 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==10) && @use10 && @useiterations endparam param count10 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usecount10 \ && @useiterations endparam param usetotal10 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==10) && @use10 && @useiterations1 endparam param total10 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usetotal10 \ && @useiterations1 endparam param tf10 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param skip10mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==10) && @use10 && @useskips endparam param skip10mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==10) && @use10 && @useskips \ && @igen>30 endparam param skip10mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==10) && @use10 && @useskips \ && @igen>61 endparam param skip10mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==10) && @use10 && @useskips \ && @igen>92 endparam param skip10mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==10) && @use10 && @useskips \ && @igen>123 endparam param skip10mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==10) && @use10 && @useskips \ && @igen>154 endparam param skip10mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==10) && @use10 && @useskips \ && @igen>185 endparam param it10 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param itx10 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==10) && @use10 && @it10 endparam param ity10 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==10) && @use10 && @it10 endparam param itz10 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==10) && @use10 && @it10 endparam param sx10 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param sx10p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && !@xeno endparam param sy10 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param sy10p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && !@xeno endparam param sz10 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param sz10p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && !@xeno endparam param rx10 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param rx10p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && !@xeno endparam param ry10 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param ry10p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && !@xeno endparam param rz10 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param rz10p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && !@xeno endparam param shx10 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param shx10p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && !@xeno endparam param shy10 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param shy10p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && !@xeno endparam param shz10 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param shz10p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && !@xeno endparam param usem10 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param t10r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 endparam param t10r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 endparam param t10r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 endparam param t10r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 endparam param t10r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 endparam param t10r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 endparam param t10r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 endparam param t10r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 endparam param t10r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 endparam param m10p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==10) && @use10 && @usem10 && !@xeno endparam param tx10 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param ty10 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param tz10 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==10) && @use10 endparam param use11 caption = "Apply Transformation 11" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==11 endparam heading caption = "Transformation #11" visible = (@showtrans==0 || @showtrans==11) && @use11 endheading param tp11 caption = "Priority" default = 11 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usepri endparam param us11 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==11) && @use11 && @user endparam param usecount11 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==11) && @use11 && @useiterations endparam param count11 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usecount11 \ && @useiterations endparam param usetotal11 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==11) && @use11 && @useiterations1 endparam param total11 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usetotal11 \ && @useiterations1 endparam param tf11 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param skip11mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==11) && @use11 && @useskips endparam param skip11mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==11) && @use11 && @useskips \ && @igen>30 endparam param skip11mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==11) && @use11 && @useskips \ && @igen>61 endparam param skip11mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==11) && @use11 && @useskips \ && @igen>92 endparam param skip11mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==11) && @use11 && @useskips \ && @igen>123 endparam param skip11mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==11) && @use11 && @useskips \ && @igen>154 endparam param skip11mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==11) && @use11 && @useskips \ && @igen>185 endparam param it11 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param itx11 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==11) && @use11 && @it11 endparam param ity11 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==11) && @use11 && @it11 endparam param itz11 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==11) && @use11 && @it11 endparam param sx11 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param sx11p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && !@xeno endparam param sy11 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param sy11p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && !@xeno endparam param sz11 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param sz11p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && !@xeno endparam param rx11 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param rx11p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && !@xeno endparam param ry11 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param ry11p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && !@xeno endparam param rz11 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param rz11p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && !@xeno endparam param shx11 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param shx11p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && !@xeno endparam param shy11 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param shy11p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && !@xeno endparam param shz11 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param shz11p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && !@xeno endparam param usem11 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param t11r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 endparam param t11r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 endparam param t11r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 endparam param t11r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 endparam param t11r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 endparam param t11r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 endparam param t11r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 endparam param t11r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 endparam param t11r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 endparam param m11p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==11) && @use11 && @usem11 && !@xeno endparam param tx11 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param ty11 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param tz11 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==11) && @use11 endparam param use12 caption = "Apply Transformation 12" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==12 endparam heading caption = "Transformation #12" visible = (@showtrans==0 || @showtrans==12) && @use12 endheading param tp12 caption = "Priority" default = 12 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usepri endparam param us12 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==12) && @use12 && @user endparam param usecount12 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==12) && @use12 && @useiterations endparam param count12 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usecount12 \ && @useiterations endparam param usetotal12 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==12) && @use12 && @useiterations1 endparam param total12 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usetotal12 \ && @useiterations1 endparam param tf12 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param skip12mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==12) && @use12 && @useskips endparam param skip12mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==12) && @use12 && @useskips \ && @igen>30 endparam param skip12mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==12) && @use12 && @useskips \ && @igen>61 endparam param skip12mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==12) && @use12 && @useskips \ && @igen>92 endparam param skip12mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==12) && @use12 && @useskips \ && @igen>123 endparam param skip12mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==12) && @use12 && @useskips \ && @igen>154 endparam param skip12mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==12) && @use12 && @useskips \ && @igen>185 endparam param it12 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param itx12 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==12) && @use12 && @it12 endparam param ity12 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==12) && @use12 && @it12 endparam param itz12 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==12) && @use12 && @it12 endparam param sx12 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param sx12p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && !@xeno endparam param sy12 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param sy12p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && !@xeno endparam param sz12 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param sz12p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && !@xeno endparam param rx12 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param rx12p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && !@xeno endparam param ry12 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param ry12p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && !@xeno endparam param rz12 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param rz12p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && !@xeno endparam param shx12 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param shx12p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && !@xeno endparam param shy12 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param shy12p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && !@xeno endparam param shz12 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param shz12p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && !@xeno endparam param usem12 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param t12r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 endparam param t12r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 endparam param t12r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 endparam param t12r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 endparam param t12r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 endparam param t12r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 endparam param t12r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 endparam param t12r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 endparam param t12r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 endparam param m12p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==12) && @use12 && @usem12 && !@xeno endparam param tx12 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param ty12 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param tz12 caption = "Z Translation" default = 0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==12) && @use12 endparam param use13 caption = "Apply Transformation 13" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==13 endparam heading caption = "Transformation #13" visible = (@showtrans==0 || @showtrans==13) && @use13 endheading param tp13 caption = "Priority" default = 13 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usepri endparam param us13 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==13) && @use13 && @user endparam param usecount13 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==13) && @use13 && @useiterations endparam param count13 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usecount13 \ && @useiterations endparam param usetotal13 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==13) && @use13 && @useiterations1 endparam param total13 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usetotal13 \ && @useiterations1 endparam param tf13 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param skip13mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==13) && @use13 && @useskips endparam param skip13mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==13) && @use13 && @useskips \ && @igen>30 endparam param skip13mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==13) && @use13 && @useskips \ && @igen>61 endparam param skip13mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==13) && @use13 && @useskips \ && @igen>92 endparam param skip13mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==13) && @use13 && @useskips \ && @igen>123 endparam param skip13mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==13) && @use13 && @useskips \ && @igen>154 endparam param skip13mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==13) && @use13 && @useskips \ && @igen>185 endparam param it13 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param itx13 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==13) && @use13 && @it13 endparam param ity13 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==13) && @use13 && @it13 endparam param itz13 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==13) && @use13 && @it13 endparam param sx13 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param sx13p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && !@xeno endparam param sy13 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param sy13p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && !@xeno endparam param sz13 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param sz13p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && !@xeno endparam param rx13 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param rx13p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && !@xeno endparam param ry13 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param ry13p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && !@xeno endparam param rz13 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param rz13p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && !@xeno endparam param shx13 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param shx13p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && !@xeno endparam param shy13 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param shy13p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && !@xeno endparam param shz13 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param shz13p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && !@xeno endparam param usem13 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param t13r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 endparam param t13r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 endparam param t13r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 endparam param t13r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 endparam param t13r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 endparam param t13r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 endparam param t13r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 endparam param t13r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 endparam param t13r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 endparam param m13p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==13) && @use13 && @usem13 && !@xeno endparam param tx13 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param ty13 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param tz13 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==13) && @use13 endparam param use14 caption = "Apply Transformation 14" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==14 endparam heading caption = "Transformation #14" visible = (@showtrans==0 || @showtrans==14) && @use14 endheading param tp14 caption = "Priority" default = 14 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usepri endparam param us14 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==14) && @use14 && @user endparam param usecount14 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==14) && @use14 && @useiterations endparam param count14 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usecount14 \ && @useiterations endparam param usetotal14 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==14) && @use14 && @useiterations1 endparam param total14 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usetotal14 \ && @useiterations1 endparam param tf14 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param skip14mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==14) && @use14 && @useskips endparam param skip14mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==14) && @use14 && @useskips \ && @igen>30 endparam param skip14mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==14) && @use14 && @useskips \ && @igen>61 endparam param skip14mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==14) && @use14 && @useskips \ && @igen>92 endparam param skip14mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==14) && @use14 && @useskips \ && @igen>123 endparam param skip14mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==14) && @use14 && @useskips \ && @igen>154 endparam param skip14mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==14) && @use14 && @useskips \ && @igen>185 endparam param it14 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param itx14 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==14) && @use14 && @it14 endparam param ity14 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==14) && @use14 && @it14 endparam param itz14 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==14) && @use14 && @it14 endparam param sx14 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param sx14p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && !@xeno endparam param sy14 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param sy14p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && !@xeno endparam param sz14 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param sz14p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && !@xeno endparam param rx14 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param rx14p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && !@xeno endparam param ry14 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param ry14p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && !@xeno endparam param rz14 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param rz14p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && !@xeno endparam param shx14 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param shx14p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && !@xeno endparam param shy14 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param shy14p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && !@xeno endparam param shz14 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param shz14p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && !@xeno endparam param usem14 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param t14r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 endparam param t14r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 endparam param t14r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 endparam param t14r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 endparam param t14r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 endparam param t14r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 endparam param t14r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 endparam param t14r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 endparam param t14r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 endparam param m14p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==14) && @use14 && @usem14 && !@xeno endparam param tx14 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param ty14 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param tz14 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==14) && @use14 endparam param use15 caption = "Apply Transformation 15" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==15 endparam heading caption = "Transformation #15" visible = (@showtrans==0 || @showtrans==15) && @use15 endheading param tp15 caption = "Priority" default = 15 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usepri endparam param us15 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==15) && @use15 && @user endparam param usecount15 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==15) && @use15 && @useiterations endparam param count15 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usecount15 \ && @useiterations endparam param usetotal15 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==15) && @use15 && @useiterations1 endparam param total15 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usetotal15 \ && @useiterations1 endparam param tf15 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param skip15mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==15) && @use15 && @useskips endparam param skip15mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==15) && @use15 && @useskips \ && @igen>30 endparam param skip15mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==15) && @use15 && @useskips \ && @igen>61 endparam param skip15mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==15) && @use15 && @useskips \ && @igen>92 endparam param skip15mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==15) && @use15 && @useskips \ && @igen>123 endparam param skip15mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==15) && @use15 && @useskips \ && @igen>154 endparam param skip15mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==15) && @use15 && @useskips \ && @igen>185 endparam param it15 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param itx15 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==15) && @use15 && @it15 endparam param ity15 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==15) && @use15 && @it15 endparam param itz15 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==15) && @use15 && @it15 endparam param sx15 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param sx15p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && !@xeno endparam param sy15 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param sy15p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && !@xeno endparam param sz15 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param sz15p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && !@xeno endparam param rx15 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param rx15p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && !@xeno endparam param ry15 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param ry15p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && !@xeno endparam param rz15 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param rz15p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && !@xeno endparam param shx15 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param shx15p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && !@xeno endparam param shy15 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param shy15p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && !@xeno endparam param shz15 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param shz15p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && !@xeno endparam param usem15 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param t15r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 endparam param t15r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 endparam param t15r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 endparam param t15r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 endparam param t15r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 endparam param t15r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 endparam param t15r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 endparam param t15r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 endparam param t15r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 endparam param m15p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==15) && @use15 && @usem15 && !@xeno endparam param tx15 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param ty15 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param tz15 caption = "Z Translation" default = 0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==15) && @use15 endparam param use16 caption = "Apply Transformation 16" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==16 endparam heading caption = "Transformation #16" visible = (@showtrans==0 || @showtrans==16) && @use16 endheading param tp16 caption = "Priority" default = 16 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usepri endparam param us16 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==16) && @use16 && @user endparam param usecount16 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==16) && @use16 && @useiterations endparam param count16 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usecount16 \ && @useiterations endparam param usetotal16 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==16) && @use16 && @useiterations1 endparam param total16 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usetotal16 \ && @useiterations1 endparam param tf16 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param skip16mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==16) && @use16 && @useskips endparam param skip16mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==16) && @use16 && @useskips \ && @igen>30 endparam param skip16mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==16) && @use16 && @useskips \ && @igen>61 endparam param skip16mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==16) && @use16 && @useskips \ && @igen>92 endparam param skip16mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==16) && @use16 && @useskips \ && @igen>123 endparam param skip16mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==16) && @use16 && @useskips \ && @igen>154 endparam param skip16mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==16) && @use16 && @useskips \ && @igen>185 endparam param it16 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param itx16 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==16) && @use16 && @it16 endparam param ity16 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==16) && @use16 && @it16 endparam param itz16 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==16) && @use16 && @it16 endparam param sx16 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param sx16p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && !@xeno endparam param sy16 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param sy16p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && !@xeno endparam param sz16 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param sz16p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && !@xeno endparam param rx16 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param rx16p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && !@xeno endparam param ry16 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param ry16p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && !@xeno endparam param rz16 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param rz16p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && !@xeno endparam param shx16 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param shx16p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && !@xeno endparam param shy16 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param shy16p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && !@xeno endparam param shz16 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param shz16p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && !@xeno endparam param usem16 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param t16r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 endparam param t16r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 endparam param t16r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 endparam param t16r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 endparam param t16r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 endparam param t16r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 endparam param t16r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 endparam param t16r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 endparam param t16r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 endparam param m16p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==16) && @use16 && @usem16 && !@xeno endparam param tx16 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param ty16 caption = "Y Translation" default = 0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param tz16 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==16) && @use16 endparam param use17 caption = "Apply Transformation 17" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==17 endparam heading caption = "Transformation #17" visible = (@showtrans==0 || @showtrans==17) && @use17 endheading param tp17 caption = "Priority" default = 17 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usepri endparam param us17 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==17) && @use17 && @user endparam param usecount17 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==17) && @use17 && @useiterations endparam param count17 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usecount17 \ && @useiterations endparam param usetotal17 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==17) && @use17 && @useiterations1 endparam param total17 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usetotal17 \ && @useiterations1 endparam param tf17 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param skip17mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==17) && @use17 && @useskips endparam param skip17mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==17) && @use17 && @useskips \ && @igen>30 endparam param skip17mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==17) && @use17 && @useskips \ && @igen>61 endparam param skip17mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==17) && @use17 && @useskips \ && @igen>92 endparam param skip17mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==17) && @use17 && @useskips \ && @igen>123 endparam param skip17mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==17) && @use17 && @useskips \ && @igen>154 endparam param skip17mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==17) && @use17 && @useskips \ && @igen>185 endparam param it17 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param itx17 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==17) && @use17 && @it17 endparam param ity17 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==17) && @use17 && @it17 endparam param itz17 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==17) && @use17 && @it17 endparam param sx17 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param sx17p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && !@xeno endparam param sy17 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param sy17p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && !@xeno endparam param sz17 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param sz17p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && !@xeno endparam param rx17 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param rx17p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && !@xeno endparam param ry17 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param ry17p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && !@xeno endparam param rz17 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param rz17p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && !@xeno endparam param shx17 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param shx17p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && !@xeno endparam param shy17 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param shy17p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && !@xeno endparam param shz17 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param shz17p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && !@xeno endparam param usem17 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param t17r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 endparam param t17r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 endparam param t17r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 endparam param t17r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 endparam param t17r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 endparam param t17r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 endparam param t17r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 endparam param t17r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 endparam param t17r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 endparam param m17p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==17) && @use17 && @usem17 && !@xeno endparam param tx17 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param ty17 caption = "Y Translation" default = 0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param tz17 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==17) && @use17 endparam param use18 caption = "Apply Transformation 18" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==18 endparam heading caption = "Transformation #18" visible = (@showtrans==0 || @showtrans==18) && @use18 endheading param tp18 caption = "Priority" default = 18 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usepri endparam param us18 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==18) && @use18 && @user endparam param usecount18 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==18) && @use18 && @useiterations endparam param count18 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usecount18 \ && @useiterations endparam param usetotal18 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==18) && @use18 && @useiterations1 endparam param total18 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usetotal18 \ && @useiterations1 endparam param tf18 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param skip18mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==18) && @use18 && @useskips endparam param skip18mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==18) && @use18 && @useskips \ && @igen>30 endparam param skip18mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==18) && @use18 && @useskips \ && @igen>61 endparam param skip18mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==18) && @use18 && @useskips \ && @igen>92 endparam param skip18mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==18) && @use18 && @useskips \ && @igen>123 endparam param skip18mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==18) && @use18 && @useskips \ && @igen>154 endparam param skip18mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==18) && @use18 && @useskips \ && @igen>185 endparam param it18 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param itx18 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==18) && @use18 && @it18 endparam param ity18 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==18) && @use18 && @it18 endparam param itz18 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==18) && @use18 && @it18 endparam param sx18 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param sx18p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && !@xeno endparam param sy18 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param sy18p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && !@xeno endparam param sz18 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param sz18p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && !@xeno endparam param rx18 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param rx18p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && !@xeno endparam param ry18 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param ry18p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && !@xeno endparam param rz18 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param rz18p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && !@xeno endparam param shx18 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param shx18p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && !@xeno endparam param shy18 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param shy18p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && !@xeno endparam param shz18 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param shz18p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && !@xeno endparam param usem18 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param t18r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 endparam param t18r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 endparam param t18r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 endparam param t18r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 endparam param t18r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 endparam param t18r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 endparam param t18r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 endparam param t18r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 endparam param t18r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 endparam param m18p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==18) && @use18 && @usem18 && !@xeno endparam param tx18 caption = "X Translation" default = 0.0 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param ty18 caption = "Y Translation" default = 0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param tz18 caption = "Z Translation" default = 0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==18) && @use18 endparam param use19 caption = "Apply Transformation 19" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==19 endparam heading caption = "Transformation #19" visible = (@showtrans==0 || @showtrans==19) && @use19 endheading param tp19 caption = "Priority" default = 19 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usepri endparam param us19 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==19) && @use19 && @user endparam param usecount19 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==19) && @use19 && @useiterations endparam param count19 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usecount19 \ && @useiterations endparam param usetotal19 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==19) && @use19 && @useiterations1 endparam param total19 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usetotal19 \ && @useiterations1 endparam param tf19 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param skip19mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==19) && @use19 && @useskips endparam param skip19mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==19) && @use19 && @useskips \ && @igen>30 endparam param skip19mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==19) && @use19 && @useskips \ && @igen>61 endparam param skip19mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==19) && @use19 && @useskips \ && @igen>92 endparam param skip19mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==19) && @use19 && @useskips \ && @igen>123 endparam param skip19mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==19) && @use19 && @useskips \ && @igen>154 endparam param skip19mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==19) && @use19 && @useskips \ && @igen>185 endparam param it19 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param itx19 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==19) && @use19 && @it19 endparam param ity19 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==19) && @use19 && @it19 endparam param itz19 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==19) && @use19 && @it19 endparam param sx19 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param sx19p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && !@xeno endparam param sy19 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param sy19p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && !@xeno endparam param sz19 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param sz19p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && !@xeno endparam param rx19 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param rx19p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && !@xeno endparam param ry19 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param ry19p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && !@xeno endparam param rz19 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param rz19p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && !@xeno endparam param shx19 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param shx19p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && !@xeno endparam param shy19 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param shy19p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && !@xeno endparam param shz19 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param shz19p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && !@xeno endparam param usem19 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param t19r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 endparam param t19r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 endparam param t19r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 endparam param t19r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 endparam param t19r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 endparam param t19r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 endparam param t19r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 endparam param t19r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 endparam param t19r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 endparam param m19p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==19) && @use19 && @usem19 && !@xeno endparam param tx19 caption = "X Translation" default = 0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param ty19 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param tz19 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==19) && @use19 endparam param use20 caption = "Apply Transformation 20" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==20 endparam heading caption = "Transformation #20" visible = (@showtrans==0 || @showtrans==20) && @use20 endheading param tp20 caption = "Priority" default = 20 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usepri endparam param us20 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==20) && @use20 && @user endparam param usecount20 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==20) && @use20 && @useiterations endparam param count20 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usecount20 \ && @useiterations endparam param usetotal20 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==20) && @use20 && @useiterations1 endparam param total20 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usetotal20 \ && @useiterations1 endparam param tf20 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param skip20mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==20) && @use20 && @useskips endparam param skip20mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==20) && @use20 && @useskips \ && @igen>30 endparam param skip20mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==20) && @use20 && @useskips \ && @igen>61 endparam param skip20mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==20) && @use20 && @useskips \ && @igen>92 endparam param skip20mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==20) && @use20 && @useskips \ && @igen>123 endparam param skip20mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==20) && @use20 && @useskips \ && @igen>154 endparam param skip20mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==20) && @use20 && @useskips \ && @igen>185 endparam param it20 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param itx20 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==20) && @use20 && @it20 endparam param ity20 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==20) && @use20 && @it20 endparam param itz20 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==20) && @use20 && @it20 endparam param sx20 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param sx20p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && !@xeno endparam param sy20 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param sy20p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && !@xeno endparam param sz20 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param sz20p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && !@xeno endparam param rx20 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param rx20p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && !@xeno endparam param ry20 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param ry20p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && !@xeno endparam param rz20 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param rz20p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && !@xeno endparam param shx20 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param shx20p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && !@xeno endparam param shy20 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param shy20p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && !@xeno endparam param shz20 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param shz20p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && !@xeno endparam param usem20 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param t20r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 endparam param t20r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 endparam param t20r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 endparam param t20r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 endparam param t20r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 endparam param t20r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 endparam param t20r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 endparam param t20r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 endparam param t20r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 endparam param m20p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==20) && @use20 && @usem20 && !@xeno endparam param tx20 caption = "X Translation" default = 0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param ty20 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param tz20 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==20) && @use20 endparam param use21 caption = "Apply Transformation 21" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==21 endparam heading caption = "Transformation #21" visible = (@showtrans==0 || @showtrans==21) && @use21 endheading param tp21 caption = "Priority" default = 21 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usepri endparam param us21 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==21) && @use21 && @user endparam param usecount21 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==21) && @use21 && @useiterations endparam param count21 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usecount21 \ && @useiterations endparam param usetotal21 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==21) && @use21 && @useiterations1 endparam param total21 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usetotal21 \ && @useiterations1 endparam param tf21 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param skip21mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==21) && @use21 && @useskips endparam param skip21mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==21) && @use21 && @useskips \ && @igen>30 endparam param skip21mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==21) && @use21 && @useskips \ && @igen>61 endparam param skip21mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==21) && @use21 && @useskips \ && @igen>92 endparam param skip21mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==21) && @use21 && @useskips \ && @igen>123 endparam param skip21mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==21) && @use21 && @useskips \ && @igen>154 endparam param skip21mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==21) && @use21 && @useskips \ && @igen>185 endparam param it21 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param itx21 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==21) && @use21 && @it21 endparam param ity21 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==21) && @use21 && @it21 endparam param itz21 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==21) && @use21 && @it21 endparam param sx21 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param sx21p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && !@xeno endparam param sy21 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param sy21p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && !@xeno endparam param sz21 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param sz21p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && !@xeno endparam param rx21 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param rx21p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && !@xeno endparam param ry21 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param ry21p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && !@xeno endparam param rz21 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param rz21p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && !@xeno endparam param shx21 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param shx21p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && !@xeno endparam param shy21 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param shy21p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && !@xeno endparam param shz21 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param shz21p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && !@xeno endparam param usem21 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param t21r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 endparam param t21r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 endparam param t21r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 endparam param t21r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 endparam param t21r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 endparam param t21r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 endparam param t21r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 endparam param t21r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 endparam param t21r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 endparam param m21p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==21) && @use21 && @usem21 && !@xeno endparam param tx21 caption = "X Translation" default = 0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param ty21 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param tz21 caption = "Z Translation" default = 0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==21) && @use21 endparam param use22 caption = "Apply Transformation 22" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==22 endparam heading caption = "Transformation #22" visible = (@showtrans==0 || @showtrans==22) && @use22 endheading param tp22 caption = "Priority" default = 22 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usepri endparam param us22 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==22) && @use22 && @user endparam param usecount22 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==22) && @use22 && @useiterations endparam param count22 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usecount22 \ && @useiterations endparam param usetotal22 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==22) && @use22 && @useiterations1 endparam param total22 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usetotal22 \ && @useiterations1 endparam param tf22 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param skip22mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==22) && @use22 && @useskips endparam param skip22mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==22) && @use22 && @useskips \ && @igen>30 endparam param skip22mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==22) && @use22 && @useskips \ && @igen>61 endparam param skip22mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==22) && @use22 && @useskips \ && @igen>92 endparam param skip22mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==22) && @use22 && @useskips \ && @igen>123 endparam param skip22mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==22) && @use22 && @useskips \ && @igen>154 endparam param skip22mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==22) && @use22 && @useskips \ && @igen>185 endparam param it22 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param itx22 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==22) && @use22 && @it22 endparam param ity22 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==22) && @use22 && @it22 endparam param itz22 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==22) && @use22 && @it22 endparam param sx22 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param sx22p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && !@xeno endparam param sy22 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param sy22p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && !@xeno endparam param sz22 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param sz22p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && !@xeno endparam param rx22 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param rx22p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && !@xeno endparam param ry22 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param ry22p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && !@xeno endparam param rz22 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param rz22p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && !@xeno endparam param shx22 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param shx22p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && !@xeno endparam param shy22 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param shy22p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && !@xeno endparam param shz22 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param shz22p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && !@xeno endparam param usem22 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param t22r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 endparam param t22r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 endparam param t22r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 endparam param t22r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 endparam param t22r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 endparam param t22r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 endparam param t22r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 endparam param t22r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 endparam param t22r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 endparam param m22p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==22) && @use22 && @usem22 && !@xeno endparam param tx22 caption = "X Translation" default = 0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param ty22 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param tz22 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==22) && @use22 endparam param use23 caption = "Apply Transformation 23" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==23 endparam heading caption = "Transformation #23" visible = (@showtrans==0 || @showtrans==23) && @use23 endheading param tp23 caption = "Priority" default = 23 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usepri endparam param us23 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==23) && @use23 && @user endparam param usecount23 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==23) && @use23 && @useiterations endparam param count23 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usecount23 \ && @useiterations endparam param usetotal23 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==23) && @use23 && @useiterations1 endparam param total23 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usetotal23 \ && @useiterations1 endparam param tf23 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param skip23mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==23) && @use23 && @useskips endparam param skip23mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==23) && @use23 && @useskips \ && @igen>30 endparam param skip23mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==23) && @use23 && @useskips \ && @igen>61 endparam param skip23mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==23) && @use23 && @useskips \ && @igen>92 endparam param skip23mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==23) && @use23 && @useskips \ && @igen>123 endparam param skip23mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==23) && @use23 && @useskips \ && @igen>154 endparam param skip23mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==23) && @use23 && @useskips \ && @igen>185 endparam param it23 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param itx23 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==23) && @use23 && @it23 endparam param ity23 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==23) && @use23 && @it23 endparam param itz23 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==23) && @use23 && @it23 endparam param sx23 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param sx23p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && !@xeno endparam param sy23 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param sy23p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && !@xeno endparam param sz23 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param sz23p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && !@xeno endparam param rx23 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param rx23p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && !@xeno endparam param ry23 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param ry23p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && !@xeno endparam param rz23 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param rz23p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && !@xeno endparam param shx23 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param shx23p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && !@xeno endparam param shy23 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param shy23p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && !@xeno endparam param shz23 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param shz23p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && !@xeno endparam param usem23 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param t23r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 endparam param t23r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 endparam param t23r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 endparam param t23r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 endparam param t23r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 endparam param t23r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 endparam param t23r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 endparam param t23r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 endparam param t23r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 endparam param m23p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==23) && @use23 && @usem23 && !@xeno endparam param tx23 caption = "X Translation" default = 0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param ty23 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param tz23 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==23) && @use23 endparam param use24 caption = "Apply Transformation 24" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==24 endparam heading caption = "Transformation #24" visible = (@showtrans==0 || @showtrans==24) && @use24 endheading param tp24 caption = "Priority" default = 24 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usepri endparam param us24 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==24) && @use24 && @user endparam param usecount24 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==24) && @use24 && @useiterations endparam param count24 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usecount24 \ && @useiterations endparam param usetotal24 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==24) && @use24 && @useiterations1 endparam param total24 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usetotal24 \ && @useiterations1 endparam param tf24 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param skip24mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==24) && @use24 && @useskips endparam param skip24mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==24) && @use24 && @useskips \ && @igen>30 endparam param skip24mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==24) && @use24 && @useskips \ && @igen>61 endparam param skip24mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==24) && @use24 && @useskips \ && @igen>92 endparam param skip24mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==24) && @use24 && @useskips \ && @igen>123 endparam param skip24mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==24) && @use24 && @useskips \ && @igen>154 endparam param skip24mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==24) && @use24 && @useskips \ && @igen>185 endparam param it24 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param itx24 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==24) && @use24 && @it24 endparam param ity24 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==24) && @use24 && @it24 endparam param itz24 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==24) && @use24 && @it24 endparam param sx24 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param sx24p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && !@xeno endparam param sy24 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param sy24p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && !@xeno endparam param sz24 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param sz24p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && !@xeno endparam param rx24 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param rx24p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && !@xeno endparam param ry24 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param ry24p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && !@xeno endparam param rz24 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param rz24p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && !@xeno endparam param shx24 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param shx24p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && !@xeno endparam param shy24 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param shy24p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && !@xeno endparam param shz24 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param shz24p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && !@xeno endparam param usem24 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param t24r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 endparam param t24r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 endparam param t24r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 endparam param t24r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 endparam param t24r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 endparam param t24r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 endparam param t24r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 endparam param t24r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 endparam param t24r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 endparam param m24p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==24) && @use24 && @usem24 && !@xeno endparam param tx24 caption = "X Translation" default = 0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param ty24 caption = "Y Translation" default = 0.0 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param tz24 caption = "Z Translation" default = 0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==24) && @use24 endparam param use25 caption = "Apply Transformation 25" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==25 endparam heading caption = "Transformation #25" visible = (@showtrans==0 || @showtrans==25) && @use25 endheading param tp25 caption = "Priority" default = 25 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usepri endparam param us25 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==25) && @use25 && @user endparam param usecount25 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==25) && @use25 && @useiterations endparam param count25 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usecount25 \ && @useiterations endparam param usetotal25 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==25) && @use25 && @useiterations1 endparam param total25 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usetotal25 \ && @useiterations1 endparam param tf25 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param skip25mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==25) && @use25 && @useskips endparam param skip25mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==25) && @use25 && @useskips \ && @igen>30 endparam param skip25mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==25) && @use25 && @useskips \ && @igen>61 endparam param skip25mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==25) && @use25 && @useskips \ && @igen>92 endparam param skip25mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==25) && @use25 && @useskips \ && @igen>123 endparam param skip25mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==25) && @use25 && @useskips \ && @igen>154 endparam param skip25mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==25) && @use25 && @useskips \ && @igen>185 endparam param it25 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param itx25 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==25) && @use25 && @it25 endparam param ity25 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==25) && @use25 && @it25 endparam param itz25 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==25) && @use25 && @it25 endparam param sx25 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param sx25p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && !@xeno endparam param sy25 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param sy25p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && !@xeno endparam param sz25 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param sz25p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && !@xeno endparam param rx25 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param rx25p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && !@xeno endparam param ry25 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param ry25p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && !@xeno endparam param rz25 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param rz25p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && !@xeno endparam param shx25 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param shx25p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && !@xeno endparam param shy25 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param shy25p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && !@xeno endparam param shz25 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param shz25p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && !@xeno endparam param usem25 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param t25r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 endparam param t25r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 endparam param t25r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 endparam param t25r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 endparam param t25r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 endparam param t25r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 endparam param t25r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 endparam param t25r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 endparam param t25r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 endparam param m25p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==25) && @use25 && @usem25 && !@xeno endparam param tx25 caption = "X Translation" default = 0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param ty25 caption = "Y Translation" default = 0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param tz25 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==25) && @use25 endparam param use26 caption = "Apply Transformation 26" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==26 endparam heading caption = "Transformation #26" visible = (@showtrans==0 || @showtrans==26) && @use26 endheading param tp26 caption = "Priority" default = 26 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usepri endparam param us26 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==26) && @use26 && @user endparam param usecount26 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==26) && @use26 && @useiterations endparam param count26 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usecount26 \ && @useiterations endparam param usetotal26 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==26) && @use26 && @useiterations1 endparam param total26 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usetotal26 \ && @useiterations1 endparam param tf26 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param skip26mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==26) && @use26 && @useskips endparam param skip26mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==26) && @use26 && @useskips \ && @igen>30 endparam param skip26mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==26) && @use26 && @useskips \ && @igen>61 endparam param skip26mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==26) && @use26 && @useskips \ && @igen>92 endparam param skip26mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==26) && @use26 && @useskips \ && @igen>123 endparam param skip26mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==26) && @use26 && @useskips \ && @igen>154 endparam param skip26mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==26) && @use26 && @useskips \ && @igen>185 endparam param it26 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param itx26 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==26) && @use26 && @it26 endparam param ity26 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==26) && @use26 && @it26 endparam param itz26 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==26) && @use26 && @it26 endparam param sx26 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param sx26p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && !@xeno endparam param sy26 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param sy26p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && !@xeno endparam param sz26 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param sz26p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && !@xeno endparam param rx26 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param rx26p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && !@xeno endparam param ry26 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param ry26p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && !@xeno endparam param rz26 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param rz26p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && !@xeno endparam param shx26 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param shx26p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && !@xeno endparam param shy26 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param shy26p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && !@xeno endparam param shz26 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param shz26p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && !@xeno endparam param usem26 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param t26r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 endparam param t26r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 endparam param t26r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 endparam param t26r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 endparam param t26r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 endparam param t26r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 endparam param t26r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 endparam param t26r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 endparam param t26r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 endparam param m26p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==26) && @use26 && @usem26 && !@xeno endparam param tx26 caption = "X Translation" default = 0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param ty26 caption = "Y Translation" default = 0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param tz26 caption = "Z Translation" default = 0.0 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==26) && @use26 endparam param use27 caption = "Apply Transformation 27" default = true hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==27 endparam heading caption = "Transformation #27" visible = (@showtrans==0 || @showtrans==27) && @use27 endheading param tp27 caption = "Priority" default = 27 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usepri endparam param us27 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==27) && @use27 && @user endparam param usecount27 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==27) && @use27 && @useiterations endparam param count27 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usecount27 \ && @useiterations endparam param usetotal27 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==27) && @use27 && @useiterations1 endparam param total27 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usetotal27 \ && @useiterations1 endparam param tf27 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param skip27mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==27) && @use27 && @useskips endparam param skip27mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==27) && @use27 && @useskips \ && @igen>30 endparam param skip27mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==27) && @use27 && @useskips \ && @igen>61 endparam param skip27mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==27) && @use27 && @useskips \ && @igen>92 endparam param skip27mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==27) && @use27 && @useskips \ && @igen>123 endparam param skip27mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==27) && @use27 && @useskips \ && @igen>154 endparam param skip27mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==27) && @use27 && @useskips \ && @igen>185 endparam param it27 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param itx27 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==27) && @use27 && @it27 endparam param ity27 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==27) && @use27 && @it27 endparam param itz27 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==27) && @use27 && @it27 endparam param sx27 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param sx27p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && !@xeno endparam param sy27 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param sy27p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && !@xeno endparam param sz27 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param sz27p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && !@xeno endparam param rx27 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param rx27p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && !@xeno endparam param ry27 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param ry27p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && !@xeno endparam param rz27 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param rz27p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && !@xeno endparam param shx27 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param shx27p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && !@xeno endparam param shy27 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param shy27p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && !@xeno endparam param shz27 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param shz27p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && !@xeno endparam param usem27 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param t27r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 endparam param t27r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 endparam param t27r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 endparam param t27r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 endparam param t27r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 endparam param t27r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 endparam param t27r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 endparam param t27r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 endparam param t27r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 endparam param m27p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==27) && @use27 && @usem27 && !@xeno endparam param tx27 caption = "X Translation" default = 0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param ty27 caption = "Y Translation" default = 0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param tz27 caption = "Z Translation" default = 0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==27) && @use27 endparam param use28 caption = "Apply Transformation 28" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==28 endparam heading caption = "Transformation #28" visible = (@showtrans==0 || @showtrans==28) && @use28 endheading param tp28 caption = "Priority" default = 28 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usepri endparam param us28 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==28) && @use28 && @user endparam param usecount28 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==28) && @use28 && @useiterations endparam param count28 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usecount28 \ && @useiterations endparam param usetotal28 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==28) && @use28 && @useiterations1 endparam param total28 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usetotal28 \ && @useiterations1 endparam param tf28 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param skip28mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==28) && @use28 && @useskips endparam param skip28mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==28) && @use28 && @useskips \ && @igen>30 endparam param skip28mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==28) && @use28 && @useskips \ && @igen>61 endparam param skip28mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==28) && @use28 && @useskips \ && @igen>92 endparam param skip28mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==28) && @use28 && @useskips \ && @igen>123 endparam param skip28mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==28) && @use28 && @useskips \ && @igen>154 endparam param skip28mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==28) && @use28 && @useskips \ && @igen>185 endparam param it28 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param itx28 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==28) && @use28 && @it28 endparam param ity28 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==28) && @use28 && @it28 endparam param itz28 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==28) && @use28 && @it28 endparam param sx28 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param sx28p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && !@xeno endparam param sy28 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param sy28p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && !@xeno endparam param sz28 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param sz28p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && !@xeno endparam param rx28 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param rx28p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && !@xeno endparam param ry28 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param ry28p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && !@xeno endparam param rz28 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param rz28p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && !@xeno endparam param shx28 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param shx28p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && !@xeno endparam param shy28 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param shy28p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && !@xeno endparam param shz28 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param shz28p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && !@xeno endparam param usem28 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param t28r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 endparam param t28r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 endparam param t28r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 endparam param t28r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 endparam param t28r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 endparam param t28r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 endparam param t28r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 endparam param t28r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 endparam param t28r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 endparam param m28p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==28) && @use28 && @usem28 && !@xeno endparam param tx28 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param ty28 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param tz28 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==28) && @use28 endparam param use29 caption = "Apply Transformation 29" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==29 endparam heading caption = "Transformation #29" visible = (@showtrans==0 || @showtrans==29) && @use29 endheading param tp29 caption = "Priority" default = 29 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usepri endparam param us29 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==29) && @use29 && @user endparam param usecount29 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==29) && @use29 && @useiterations endparam param count29 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usecount29 \ && @useiterations endparam param usetotal29 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==29) && @use29 && @useiterations1 endparam param total29 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usetotal29 \ && @useiterations1 endparam param tf29 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param skip29mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==29) && @use29 && @useskips endparam param skip29mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==29) && @use29 && @useskips \ && @igen>30 endparam param skip29mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==29) && @use29 && @useskips \ && @igen>61 endparam param skip29mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==29) && @use29 && @useskips \ && @igen>92 endparam param skip29mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==29) && @use29 && @useskips \ && @igen>123 endparam param skip29mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==29) && @use29 && @useskips \ && @igen>154 endparam param skip29mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==29) && @use29 && @useskips \ && @igen>185 endparam param it29 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param itx29 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==29) && @use29 && @it29 endparam param ity29 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==29) && @use29 && @it29 endparam param itz29 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==29) && @use29 && @it29 endparam param sx29 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param sx29p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && !@xeno endparam param sy29 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param sy29p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && !@xeno endparam param sz29 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param sz29p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && !@xeno endparam param rx29 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param rx29p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && !@xeno endparam param ry29 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param ry29p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && !@xeno endparam param rz29 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param rz29p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && !@xeno endparam param shx29 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param shx29p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && !@xeno endparam param shy29 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param shy29p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && !@xeno endparam param shz29 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param shz29p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && !@xeno endparam param usem29 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param t29r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 endparam param t29r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 endparam param t29r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 endparam param t29r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 endparam param t29r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 endparam param t29r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 endparam param t29r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 endparam param t29r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 endparam param t29r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 endparam param m29p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==29) && @use29 && @usem29 && !@xeno endparam param tx29 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param ty29 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param tz29 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==29) && @use29 endparam param use30 caption = "Apply Transformation 30" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==30 endparam heading caption = "Transformation #30" visible = (@showtrans==0 || @showtrans==30) && @use30 endheading param tp30 caption = "Priority" default = 30 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usepri endparam param us30 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==30) && @use30 && @user endparam param usecount30 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==30) && @use30 && @useiterations endparam param count30 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usecount30 \ && @useiterations endparam param usetotal30 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==30) && @use30 && @useiterations1 endparam param total30 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usetotal30 \ && @useiterations1 endparam param tf30 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param skip30mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==30) && @use30 && @useskips endparam param skip30mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==30) && @use30 && @useskips \ && @igen>30 endparam param skip30mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==30) && @use30 && @useskips \ && @igen>61 endparam param skip30mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==30) && @use30 && @useskips \ && @igen>92 endparam param skip30mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==30) && @use30 && @useskips \ && @igen>123 endparam param skip30mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==30) && @use30 && @useskips \ && @igen>154 endparam param skip30mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==30) && @use30 && @useskips \ && @igen>185 endparam param it30 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param itx30 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==30) && @use30 && @it30 endparam param ity30 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==30) && @use30 && @it30 endparam param itz30 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==30) && @use30 && @it30 endparam param sx30 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param sx30p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && !@xeno endparam param sy30 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param sy30p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && !@xeno endparam param sz30 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param sz30p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && !@xeno endparam param rx30 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param rx30p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && !@xeno endparam param ry30 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param ry30p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && !@xeno endparam param rz30 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param rz30p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && !@xeno endparam param shx30 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param shx30p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && !@xeno endparam param shy30 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param shy30p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && !@xeno endparam param shz30 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param shz30p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && !@xeno endparam param usem30 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param t30r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 endparam param t30r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 endparam param t30r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 endparam param t30r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 endparam param t30r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 endparam param t30r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 endparam param t30r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 endparam param t30r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 endparam param t30r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 endparam param m30p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==30) && @use30 && @usem30 && !@xeno endparam param tx30 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param ty30 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param tz30 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==30) && @use30 endparam param use31 caption = "Apply Transformation 31" default = false hint = "You can enable/disable any Transformation." visible = @showtrans==0 || @showtrans==31 endparam heading caption = "Transformation #31" visible = (@showtrans==0 || @showtrans==31) && @use31 endheading param tp31 caption = "Priority" default = 31 min = 1 max = 31 hint = "Decides on the priority of points from this Transformation with \ respect to the others for colouring purposes. The larger the value \ the greater the influence of this Transformation on the colouring. \ If two or more Transformations are given the same priority then \ the one furthest down the order of parameter display gives most \ influence on the colouring." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usepri endparam param us31 caption = "User scale %age" default = 33.333333333333333333333333333333 hint = "Specify the scale of the transform for rendering purposes. It's \ usually best to use the largest of the transform x,y,z scales." visible = (@showtrans==0 || @showtrans==31) && @use31 && @user endparam param usecount31 caption = "Restrict Consecutive Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times consecutively." visible = (@showtrans==0 || @showtrans==31) && @use31 && @useiterations endparam param count31 caption = "Iteration Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of \ consecutive uses as a maximum." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usecount31 \ && @useiterations endparam param usetotal31 caption = "Restrict Total Uses" default = false hint = "When enabled you can specify a count value. This transform \ will be used at most that number of times in total down a \ given branch of the IFS tree." visible = (@showtrans==0 || @showtrans==31) && @use31 && @useiterations1 endparam param total31 caption = "Total Count" default = 4 min = 1 hint = "Restricts the use of this transform to this number of uses \ in total down any route of the IFS tree." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usetotal31 \ && @useiterations1 endparam param tf31 caption = "RIFS code" default = 0 min = 0 max = 2147483647 hint = "The RIFS code is made up of binary flags, for each set bit this \ Transformation will not be followed by the one represented by that \ bit. Bit 0 (ie. 1) represents Transformation 1, bit 1 (ie. 2) \ represents Transformation 2, bit 2 (ie. 4) represents \ Transformation 3, bit 3 (ie. 8) represents Transformation 4 etc. \ For example if you didn't want this Transformation followed by \ Transformations 2, 6, 9 or 16 then you would set the RIFS code to \ 2+32+256+32768 ie. 33058." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param skip31mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = (@showtrans==0 || @showtrans==31) && @use31 && @useskips endparam param skip31mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = (@showtrans==0 || @showtrans==31) && @use31 && @useskips \ && @igen>30 endparam param skip31mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = (@showtrans==0 || @showtrans==31) && @use31 && @useskips \ && @igen>61 endparam param skip31mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = (@showtrans==0 || @showtrans==31) && @use31 && @useskips \ && @igen>92 endparam param skip31mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = (@showtrans==0 || @showtrans==31) && @use31 && @useskips \ && @igen>123 endparam param skip31mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = (@showtrans==0 || @showtrans==31) && @use31 && @useskips \ && @igen>154 endparam param skip31mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = (@showtrans==0 || @showtrans==31) && @use31 && @useskips \ && @igen>185 endparam param it31 caption = "Apply initial translation (offset)" default = false hint = "When enabled you can add an initial translation to be applied \ prior to the scalings, rotations etc." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param itx31 caption = "Initial x offset" default = 0.0 visible = (@showtrans==0 || @showtrans==31) && @use31 && @it31 endparam param ity31 caption = "Initial y offset" default = 0.0 visible = (@showtrans==0 || @showtrans==31) && @use31 && @it31 endparam param itz31 caption = "Initial z offset" default = 0.0 visible = (@showtrans==0 || @showtrans==31) && @use31 && @it31 endparam param sx31 caption = "X Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in x. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param sx31p caption = "X Scale priority" default = 1 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && !@xeno endparam param sy31 caption = "Y Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in y. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param sy31p caption = "Y Scale priority" default = 2 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && !@xeno endparam param sz31 caption = "Z Scale (%)" default = 33.333333333333333333333333333333 min = -100.0 max = 100.0 hint = "Scales in z. The closer to 100 (or -100) you set the value then \ the larger the fractal area produced due to this Transformation. \ Strictly speaking values of exactly -100 or 100 should not be used." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param sz31p caption = "Z Scale priority" default = 3 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && !@xeno endparam param rx31 caption = "X Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D x axis (in degrees)." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param rx31p caption = "X Rot. priority" default = 7 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && !@xeno endparam param ry31 caption = "Y Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D y axis (in degrees)." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param ry31p caption = "Y Rot. priority" default = 8 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && !@xeno endparam param rz31 caption = "Z Rotation" default = 0.0 hint = "Specifies a rotation angle around the 3D z axis (in degrees)." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param rz31p caption = "Z Rot. priority" default = 9 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && !@xeno endparam param shx31 caption = "X Skew" default = 0.0 hint = "Specifies a skew angle around the 3D x axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param shx31p caption = "X Skew priority" default = 5 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && !@xeno endparam param shy31 caption = "Y Skew" default = 0.0 hint = "Specifies a skew angle around the 3D y axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param shy31p caption = "Y Skew priority" default = 6 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && !@xeno endparam param shz31 caption = "Z Skew" default = 0.0 hint = "Specifies a skew angle around the 3D z axis (in degrees). Values \ of -270, -90, 90, 270 etc. should be avoided." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param shz31p caption = "Z Skew priority" default = 4 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && !@xeno endparam param usem31 caption = "Custom transform" default = false hint = "When enabled you can specify a custom 3*3 matrix transform which \ is combined with the scale/rotation/skew transforms for this \ Transformation." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param t31r0c0 caption = "r0c0" default = 1.0 hint = "Row 0 Column 0 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 endparam param t31r0c1 caption = "r0c1" default = 0.0 hint = "Row 0 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 endparam param t31r0c2 caption = "r0c2" default = 0.0 hint = "Row 0 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 endparam param t31r1c0 caption = "r1c0" default = 0.0 hint = "Row 1 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 endparam param t31r1c1 caption = "r1c1" default = 1.0 hint = "Row 1 Column 1 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 endparam param t31r1c2 caption = "r1c2" default = 0.0 hint = "Row 1 Column 2 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 endparam param t31r2c0 caption = "r2c0" default = 0.0 hint = "Row 2 Column 0 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 endparam param t31r2c1 caption = "r2c1" default = 0.0 hint = "Row 2 Column 1 of a 3*3 matrix, use 0.0 for 'ident'." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 endparam param t31r2c2 caption = "r2c2" default = 1.0 hint = "Row 2 Column 2 of a 3*3 matrix, use 1.0 for 'ident'." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 endparam param m31p caption = "Custom priority" default = 10 max = 99 hint = "The transform with the lowest priority is applied first, if two \ or more have the same priority then they are applied in the order \ in which they appear in the parameter list." visible = (@showtrans==0 || @showtrans==31) && @use31 && @usem31 && !@xeno endparam param tx31 caption = "X Translation" default = -0.66666666666666666666666666666667 hint = "The 3D x translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param ty31 caption = "Y Translation" default = -0.66666666666666666666666666666667 hint = "The 3D y translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam param tz31 caption = "Z Translation" default = -0.66666666666666666666666666666667 hint = "The 3D z translation applied in this Transformation." visible = (@showtrans==0 || @showtrans==31) && @use31 endparam } MMF4B-EscapeTimeIFS { global: if @warn || @showdim || @showtrans $define DEBUG endif complex tcm[64] ; transform complex multiplies complex tct[64] ; transform complex translates (also used as float translate) complex tcc[64] ; transform complex point attractors complex a[64] ; non-linear complex scale complex b[64] ; non-linear complex additive constant complex cc[64] ; non-linear complex scale for plain z complex p[64] ; non-linear complex power float tf0[64] ; float transforms, used if skewing/stretching etc. float tf1[64] ; | 0 1 | float tf2[64] ; | 2 3 | float tf3[64] float tfs[64] ; transform scales float tfc[64] ; transform colour values (inside) float tfco[64] ; transform colour values (outside) float tfp[64] ; transform probabilities float tfx[64] ; user scales for if non-linear enabled and temp for rifs float tfy[64] ; scales for rifs float mix[64] ; non-linear mixing amount (0==all affine) float mix1[64] ; 1 - non-linear mixing amount float ax[64] ; non-linear float x scale float bx[64] ; non-linear float x additive constant float px[64] ; non-linear float x power float ay[64] ; non-linear float y scale float by[64] ; non-linear float y additive constant float py[64] ; non-linear float y power int tn[64] ; original transform numbers int ts[64] ; sort codes int mod[64] ; non-linear method int fnc[64] ; non linear function int fn[64] ; non-linear complex user-defineable function int fnx[64] ; non-linear float x user-defineable function int fny[64] ; non-linear float y user-defineable function int ss[6,2] ; for the transformation sort order bool fp[64] ; flag for "add #pixel" in the non-linear complex functions bool f[64] ; transform flags (float or complex) bool pf[64] ; flag for "phoenix" bool rf[64] ; RIFS enabled flags bool rifs[64,64] ; RIFS flags bool rifs1[64,64]; converted RIFS flags bool df[64,500] ; depth restriction flags complex gcm = (0,0) ; global complex multiply complex gcc ; complex temp and overall 'centre of gravity' complex gcd ; another complex temp complex gce ; another complex temp complex gcf ; another complex temp complex gcg ; another complex temp float gf0 = 0.0 ; global float transform, used if skewing/stretching etc. float gf1 = 0.0 ; | 0 1 | float gf2 = 0.0 ; | 2 3 | (also used as temp matrix) float gf3 = 0.0 float gi0 = 0.0 ; inverse global float trasform float gi1 = 0.0 ; | 0 1 | float gi2 = 0.0 ; | 2 3 | (also used as temp matrix) float gi3 = 0.0 float fd = 0.0 ; Fractal dimension float rfd = 0.0 ; RIFS dimension float torad = #pi/180.0 ; for conversion from degrees to radians float gt = 0.0 ; global temp float gs = 0.0 ; another global temp float gu = 0.0 ; another global temp float gv = 0.0 ; another global temp float gw = 0.0 ; another global temp float gx = 0.0 ; another global temp float gy = 0.0 ; another global temp float gz = 0.0 ; another global temp float csc = 0.0 ; colouring scale (inside) float cmin = 0.0 ; colouring minimum (inside) float csco = 0.0 ; colouring scale (outside) float cmno = 0.0 ; colouring minimum (outside) float psc = 0.0 ; probability scale (inside) float pmin = 0.0 ; probability minimum (inside) float psco = 0.0 ; probability scale (outside) float pmno = 0.0 ; probability minimum (outside) float bail = @bradius*@bradius ; since we test using |z-centre| float invnt ; for 1/(number of transforms) float minsc = 0.001*@scale ; minimum scale int nt = 0 ; number of transforms int gi = 0 ; global counter int gj = 0 ; another global counter int gk = 0 ; another global counter int gl = 0 ; another global counter int gm = 0 ; another global counter int gn = 0 ; another global counter int ft ; first/final transform int gft ; first transform at depth 0 bool gf ; temp flag and flag for "use RIFS" bool gg = false ; another temp flag ; Adjust minscale if requested if @fixmag minsc = minsc/#magn endif if @fixsize minsc = 1000.0*minsc/sqrt(#width*#height) endif ; Initialise RIFS flags to true i.e. transform a can be followed by transform b gi = 63 repeat gj = 63 repeat rifs[gi,gj] = rifs1[gi,gj] = true until (gj=gj-1)<0 until (gi=gi-1)<0 ; Initialise depth restriction flags to true gi = 63 repeat gj = 499 repeat df[gi,gj] = true until (gj=gj-1)<0 until (gi=gi-1)<0 ; Set up the transformation combination sort order (bubble sort) ss[0,0] = 0 ; main scale/rotation ss[0,1] = @mainpri ss[1,0] = 1 ; x stretch ss[1,1] = @xstpri ss[2,0] = 2 ; y stretch ss[2,1] = @ystpri ss[3,0] = 3 ; x skew ss[3,1] = @xshpri ss[4,0] = 4 ; yskew ss[4,1] = @yshpri ss[5,0] = 5 ; free transform ss[5,1] = @genpri gi = 4 repeat gj = 5 while gj>gi && ss[gi,1]>ss[gj,1] gj = gj - 1 endwhile if gj>gi && ss[gi,1]<=ss[gj,1] gk = ss[gi,0] gl = ss[gi,1] gm = gi repeat ss[gm,0] = ss[gm+1,0] ss[gm,1] = ss[gm+1,1] until (gm=gm+1)>=gj ss[gj,0] = gk ss[gj,1] = gl endif until (gi=gi-1)<0 ; Set up the transforms if @use0 ; if transform enabled if @useskips gj = 1073741824 gi = 30 gk = @skip1mask1 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip1mask2 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip1mask3 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip1mask4 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip1mask5 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip1mask6 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip1mask7 repeat if gk>=gj df[0,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[0,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used ; if deform enabled gt = (@rot0+@rotd)*torad+atan2(@gen0)+atan2(@gend) ; angle in rads gu = @scaled*@scale0*cabs(@gen0)*cabs(@gend) ; combined scale tct[0] = @offset0 + @offsetd ; translation gs = gu*sin(gt) ; combine scale and sin(angle) gt = gu*cos(gt) ; combine scale and cos(angle) else gt = @rot0*torad+atan2(@gen0) ; angle in rads gu = @scale0*cabs(@gen0) ; combined scale tct[0] = @offset0 ; translation gs = gu*sin(gt) ; combine scale and sin(angle) gt = gu*cos(gt) ; combine scale and cos(angle) endif if @flt0 || (@used && @fltd) ; if float for this transform or for the deform f[0] = true ; transform "is float" if @flt0 gv = @xscale0 ; transform scale, skew and free transform gw = @yscale0 gx = @xshear0 gy = @yshear0 gf0 = real(@trow0) gf1 = imag(@trow0) gf2 = real(@brow0) gf3 = imag(@brow0) else gv = gw = gf0 = gf3 = 1.0 ; default scale, skew and free transform gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled ; combine scale, skew and free transform from gw = gw*@yscaled ; the deformation with the transform values gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif ; Now combine all the separate transforms for transform 0 if ss[5,0]==0 ; main scaling/rotation first ? gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 ; x stretch first ? gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 ; y stretch first ? gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 ; x skew first ? gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 ; y skew first ? gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else ; free transform first gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 ; main scale/rotate gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 ; x stretch gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 ; y stretch gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 ; x skew gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 ; y skew gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else ; free transform gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[0] = gi0 ; store combined transform 0 tf1[0] = gi1 tf2[0] = gi2 tf3[0] = gi3 else f[0] = false ; transform "is not float" i.e. use the complex method tcm[0] = gt+flip(gs) ; complex transform multiply tf0[0] = gt ; also store the equivalent float version tf1[0] = gs ; in case the global transform is in float mode tf2[0] = -gs tf3[0] = gt endif a[0] = @a0 b[0] = @b0 cc[0] = @cs0 fp[0] = @fp0 p[0] = @pwr0 mix[0] = @mix0 mod[0] = @mod0 fnc[0] = @fnc0 fn[0] = @fn0 tfx[0] = @sx0 pf[0] = @pf0 ax[0] = @ax0 bx[0] = @bx0 px[0] = @pwrx0 fnx[0] = @fnx0 ay[0] = @ay0 by[0] = @by0 py[0] = @pwry0 fny[0] = @fny0 if @mod0==0 || (@mod0!=1 && @mix0==0.0) mod[0] = 0 ; "no non-linear" elseif @mod0!=2 && @mix0==1.0 mod[0] = 4 ; "all non-linear" elseif @mod0==1 ; 0 = no non lnear, 1 = post-affine mod[0] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod0==2 ; 4 = all non-linear mod[0] = 1 endif rf[0] = @user0 ; Use rifs for transform 0 ? if @user0 ; if yes, then get flags rifs[0,0] = @rifs0_0 rifs[0,1] = @rifs0_1 rifs[0,2] = @rifs0_2 rifs[0,3] = @rifs0_3 rifs[0,4] = @rifs0_4 rifs[0,5] = @rifs0_5 rifs[0,6] = @rifs0_6 rifs[0,7] = @rifs0_7 rifs[0,8] = @rifs0_8 rifs[0,9] = @rifs0_9 rifs[0,10] = @rifs0_10 rifs[0,11] = @rifs0_11 rifs[0,12] = @rifs0_12 rifs[0,13] = @rifs0_13 rifs[0,14] = @rifs0_14 rifs[0,15] = @rifs0_15 if @rifs0==1 ; invert the state of the flags for transform 0 ? gi = 15 repeat rifs[0,gi] = !rifs[0,gi] until (gi=gi-1)<0 endif endif tn[0] = 0 ; transform 0 = original transform 0 ts[0] = @tv0 ; sort code for transform 0 if @sp ; if exponential fade tfc[0] = log(@tc0) ; convert colour values else tfc[0] = @tc0 ; just store colour value endif if @spo ; if exponential fade tfco[0] = log(@tco0) ; convert colour values else tfco[0] = @tco0 ; just store colour value endif nt = nt + 1 ; add 1 to transform count endif endif if @use1 if @useskips gj = 1073741824 gi = 30 gk = @skip2mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip2mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip2mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip2mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip2mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip2mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip2mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot1+@rotd)*torad + atan2(@gen1)+atan2(@gend) gu = @scaled*@scale1*cabs(@gen1)*cabs(@gend) tct[nt] = @offset1 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot1*torad + atan2(@gen1) gu = @scale1*cabs(@gen1) tct[nt] = @offset1 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt1 || (@used && @fltd) f[nt] = true if @flt1 gv = @xscale1 gw = @yscale1 gx = @xshear1 gy = @yshear1 gf0 = real(@trow1) gf1 = imag(@trow1) gf2 = real(@brow1) gf3 = imag(@brow1) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a1 b[nt] = @b1 cc[nt] = @cs1 fp[nt] = @fp1 p[nt] = @pwr1 mix[nt] = @mix1 mod[nt] = @mod1 fnc[nt] = @fnc1 fn[nt] = @fn1 tfx[nt] = @sx1 pf[nt] = @pf1 ax[nt] = @ax1 bx[nt] = @bx1 px[nt] = @pwrx1 fnx[nt] = @fnx1 ay[nt] = @ay1 by[nt] = @by1 py[nt] = @pwry1 fny[nt] = @fny1 if @mod1==0 || (@mod1!=1 && @mix1==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod1!=2 && @mix1==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod1==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod1==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user1 if @user1 rifs[1,0] = @rifs1_0 rifs[1,1] = @rifs1_1 rifs[1,2] = @rifs1_2 rifs[1,3] = @rifs1_3 rifs[1,4] = @rifs1_4 rifs[1,5] = @rifs1_5 rifs[1,6] = @rifs1_6 rifs[1,7] = @rifs1_7 rifs[1,8] = @rifs1_8 rifs[1,9] = @rifs1_9 rifs[1,10] = @rifs1_10 rifs[1,11] = @rifs1_11 rifs[1,12] = @rifs1_12 rifs[1,13] = @rifs1_13 rifs[1,14] = @rifs1_14 rifs[1,15] = @rifs1_15 if @rifs1==1 gi = 15 repeat rifs[1,gi] = !rifs[1,gi] until (gi=gi-1)<0 endif endif tn[nt] = 1 ts[nt] = @tv1 if @sp tfc[nt] = log(@tc1) else tfc[nt] = @tc1 endif if @spo tfco[nt] = log(@tco1) else tfco[nt] = @tco1 endif nt = nt + 1 endif endif if @use2 && @at>0 if @useskips gj = 1073741824 gi = 30 gk = @skip3mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip3mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip3mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip3mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip3mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip3mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip3mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot2+@rotd)*torad + atan2(@gen2)+atan2(@gend) gu = @scaled*@scale2*cabs(@gen2)*cabs(@gend) tct[nt] = @offset2 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot2*torad + atan2(@gen2) gu = @scale2*cabs(@gen2) tct[nt] = @offset2 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt2 || (@used && @fltd) f[nt] = true if @flt2 gv = @xscale2 gw = @yscale2 gx = @xshear2 gy = @yshear2 gf0 = real(@trow2) gf1 = imag(@trow2) gf2 = real(@brow2) gf3 = imag(@brow2) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a2 b[nt] = @b2 cc[nt] = @cs2 fp[nt] = @fp2 p[nt] = @pwr2 mix[nt] = @mix2 mod[nt] = @mod2 fnc[nt] = @fnc2 fn[nt] = @fn2 tfx[nt] = @sx2 pf[nt] = @pf2 ax[nt] = @ax2 bx[nt] = @bx2 px[nt] = @pwrx2 fnx[nt] = @fnx2 ay[nt] = @ay2 by[nt] = @by2 py[nt] = @pwry2 fny[nt] = @fny2 if @mod2==0 || (@mod2!=1 && @mix2==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod2!=2 && @mix2==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod2==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod2==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user2 if @user2 rifs[2,0] = @rifs2_0 rifs[2,1] = @rifs2_1 rifs[2,2] = @rifs2_2 rifs[2,3] = @rifs2_3 rifs[2,4] = @rifs2_4 rifs[2,5] = @rifs2_5 rifs[2,6] = @rifs2_6 rifs[2,7] = @rifs2_7 rifs[2,8] = @rifs2_8 rifs[2,9] = @rifs2_9 rifs[2,10] = @rifs2_10 rifs[2,11] = @rifs2_11 rifs[2,12] = @rifs2_12 rifs[2,13] = @rifs2_13 rifs[2,14] = @rifs2_14 rifs[2,15] = @rifs2_15 if @rifs2==1 gi = 15 repeat rifs[2,gi] = !rifs[2,gi] until (gi=gi-1)<0 endif endif tn[nt] = 2 ts[nt] = @tv2 if @sp tfc[nt] = log(@tc2) else tfc[nt] = @tc2 endif if @spo tfco[nt] = log(@tco2) else tfco[nt] = @tco2 endif nt = nt + 1 endif endif if @use3 && @at>1 if @useskips gj = 1073741824 gi = 30 gk = @skip4mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip4mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip4mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip4mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip4mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip4mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip4mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot3+@rotd)*torad + atan2(@gen3)+atan2(@gend) gu = @scaled*@scale3*cabs(@gen3)*cabs(@gend) tct[nt] = @offset3 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot3*torad + atan2(@gen3) gu = @scale3*cabs(@gen3) tct[nt] = @offset3 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt3 || (@used && @fltd) f[nt] = true if @flt3 gv = @xscale3 gw = @yscale3 gx = @xshear3 gy = @yshear3 gf0 = real(@trow3) gf1 = imag(@trow3) gf2 = real(@brow3) gf3 = imag(@brow3) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a3 b[nt] = @b3 cc[nt] = @cs3 fp[nt] = @fp3 p[nt] = @pwr3 mix[nt] = @mix3 mod[nt] = @mod3 fnc[nt] = @fnc3 fn[nt] = @fn3 tfx[nt] = @sx3 pf[nt] = @pf3 ax[nt] = @ax3 bx[nt] = @bx3 px[nt] = @pwrx3 fnx[nt] = @fnx3 ay[nt] = @ay3 by[nt] = @by3 py[nt] = @pwry3 fny[nt] = @fny3 if @mod3==0 || (@mod3!=1 && @mix3==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod3!=2 && @mix3==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod3==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod3==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user3 if @user3 rifs[3,0] = @rifs3_0 rifs[3,1] = @rifs3_1 rifs[3,2] = @rifs3_2 rifs[3,3] = @rifs3_3 rifs[3,4] = @rifs3_4 rifs[3,5] = @rifs3_5 rifs[3,6] = @rifs3_6 rifs[3,7] = @rifs3_7 rifs[3,8] = @rifs3_8 rifs[3,9] = @rifs3_9 rifs[3,10] = @rifs3_10 rifs[3,11] = @rifs3_11 rifs[3,12] = @rifs3_12 rifs[3,13] = @rifs3_13 rifs[3,14] = @rifs3_14 rifs[3,15] = @rifs3_15 if @rifs3==1 gi = 15 repeat rifs[3,gi] = !rifs[3,gi] until (gi=gi-1)<0 endif endif tn[nt] = 3 ts[nt] = @tv3 if @sp tfc[nt] = log(@tc3) else tfc[nt] = @tc3 endif if @spo tfco[nt] = log(@tco3) else tfco[nt] = @tco3 endif nt = nt + 1 endif endif if @use4 && @at>2 if @useskips gj = 1073741824 gi = 30 gk = @skip5mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip5mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip5mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip5mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip5mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip5mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip5mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot4+@rotd)*torad + atan2(@gen4)+atan2(@gend) gu = @scaled*@scale4*cabs(@gen4)*cabs(@gend) tct[nt] = @offset4 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot4*torad + atan2(@gen4) gu = @scale4*cabs(@gen4) tct[nt] = @offset4 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt4 || (@used && @fltd) f[nt] = true if @flt4 gv = @xscale4 gw = @yscale4 gx = @xshear4 gy = @yshear4 gf0 = real(@trow4) gf1 = imag(@trow4) gf2 = real(@brow4) gf3 = imag(@brow4) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a4 b[nt] = @b4 cc[nt] = @cs4 fp[nt] = @fp4 p[nt] = @pwr4 mix[nt] = @mix4 mod[nt] = @mod4 fnc[nt] = @fnc4 fn[nt] = @fn4 tfx[nt] = @sx4 pf[nt] = @pf4 ax[nt] = @ax4 bx[nt] = @bx4 px[nt] = @pwrx4 fnx[nt] = @fnx4 ay[nt] = @ay4 by[nt] = @by4 py[nt] = @pwry4 fny[nt] = @fny4 if @mod4==0 || (@mod4!=1 && @mix4==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod4!=2 && @mix4==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod4==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod4==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user4 if @user4 rifs[4,0] = @rifs4_0 rifs[4,1] = @rifs4_1 rifs[4,2] = @rifs4_2 rifs[4,3] = @rifs4_3 rifs[4,4] = @rifs4_4 rifs[4,5] = @rifs4_5 rifs[4,6] = @rifs4_6 rifs[4,7] = @rifs4_7 rifs[4,8] = @rifs4_8 rifs[4,9] = @rifs4_9 rifs[4,10] = @rifs4_10 rifs[4,11] = @rifs4_11 rifs[4,12] = @rifs4_12 rifs[4,13] = @rifs4_13 rifs[4,14] = @rifs4_14 rifs[4,15] = @rifs4_15 if @rifs4==1 gi = 15 repeat rifs[4,gi] = !rifs[4,gi] until (gi=gi-1)<0 endif endif tn[nt] = 4 ts[nt] = @tv4 if @sp tfc[nt] = log(@tc4) else tfc[nt] = @tc4 endif if @spo tfco[nt] = log(@tco4) else tfco[nt] = @tco4 endif nt = nt + 1 endif endif if @use5 && @at>3 if @useskips gj = 1073741824 gi = 30 gk = @skip6mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip6mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip6mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip6mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip6mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip6mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip6mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot5+@rotd)*torad + atan2(@gen5)+atan2(@gend) gu = @scaled*@scale5*cabs(@gen5)*cabs(@gend) tct[nt] = @offset5 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot5*torad + atan2(@gen5) gu = @scale5*cabs(@gen5) tct[nt] = @offset5 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt5 || (@used && @fltd) f[nt] = true if @flt5 gv = @xscale5 gw = @yscale5 gx = @xshear5 gy = @yshear5 gf0 = real(@trow5) gf1 = imag(@trow5) gf2 = real(@brow5) gf3 = imag(@brow5) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a5 b[nt] = @b5 cc[nt] = @cs5 fp[nt] = @fp5 p[nt] = @pwr5 mix[nt] = @mix5 mod[nt] = @mod5 fnc[nt] = @fnc5 fn[nt] = @fn5 tfx[nt] = @sx5 pf[nt] = @pf5 ax[nt] = @ax5 bx[nt] = @bx5 px[nt] = @pwrx5 fnx[nt] = @fnx5 ay[nt] = @ay5 by[nt] = @by5 py[nt] = @pwry5 fny[nt] = @fny5 if @mod5==0 || (@mod5!=1 && @mix5==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod5!=2 && @mix5==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod5==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod5==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user5 if @user5 rifs[5,0] = @rifs5_0 rifs[5,1] = @rifs5_1 rifs[5,2] = @rifs5_2 rifs[5,3] = @rifs5_3 rifs[5,4] = @rifs5_4 rifs[5,5] = @rifs5_5 rifs[5,6] = @rifs5_6 rifs[5,7] = @rifs5_7 rifs[5,8] = @rifs5_8 rifs[5,9] = @rifs5_9 rifs[5,10] = @rifs5_10 rifs[5,11] = @rifs5_11 rifs[5,12] = @rifs5_12 rifs[5,13] = @rifs5_13 rifs[5,14] = @rifs5_14 rifs[5,15] = @rifs5_15 if @rifs5==1 gi = 15 repeat rifs[5,gi] = !rifs[5,gi] until (gi=gi-1)<0 endif endif tn[nt] = 5 ts[nt] = @tv5 if @sp tfc[nt] = log(@tc5) else tfc[nt] = @tc5 endif if @spo tfco[nt] = log(@tco5) else tfco[nt] = @tco5 endif nt = nt + 1 endif endif if @use6 && @at>4 if @useskips gj = 1073741824 gi = 30 gk = @skip7mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip7mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip7mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip7mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip7mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip7mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip7mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot6+@rotd)*torad + atan2(@gen6)+atan2(@gend) gu = @scaled*@scale6*cabs(@gen6)*cabs(@gend) tct[nt] = @offset6 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot6*torad + atan2(@gen6) gu = @scale6*cabs(@gen6) tct[nt] = @offset6 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt6 || (@used && @fltd) f[nt] = true if @flt6 gv = @xscale6 gw = @yscale6 gx = @xshear6 gy = @yshear6 gf0 = real(@trow6) gf1 = imag(@trow6) gf2 = real(@brow6) gf3 = imag(@brow6) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a6 b[nt] = @b6 cc[nt] = @cs6 fp[nt] = @fp6 p[nt] = @pwr6 mix[nt] = @mix6 mod[nt] = @mod6 fnc[nt] = @fnc6 fn[nt] = @fn6 tfx[nt] = @sx6 pf[nt] = @pf6 ax[nt] = @ax6 bx[nt] = @bx6 px[nt] = @pwrx6 fnx[nt] = @fnx6 ay[nt] = @ay6 by[nt] = @by6 py[nt] = @pwry6 fny[nt] = @fny6 if @mod6==0 || (@mod6!=1 && @mix6==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod6!=2 && @mix6==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod6==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod6==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user6 if @user6 rifs[6,0] = @rifs6_0 rifs[6,1] = @rifs6_1 rifs[6,2] = @rifs6_2 rifs[6,3] = @rifs6_3 rifs[6,4] = @rifs6_4 rifs[6,5] = @rifs6_5 rifs[6,6] = @rifs6_6 rifs[6,7] = @rifs6_7 rifs[6,8] = @rifs6_8 rifs[6,9] = @rifs6_9 rifs[6,10] = @rifs6_10 rifs[6,11] = @rifs6_11 rifs[6,12] = @rifs6_12 rifs[6,13] = @rifs6_13 rifs[6,14] = @rifs6_14 rifs[6,15] = @rifs6_15 if @rifs6==1 gi = 15 repeat rifs[6,gi] = !rifs[6,gi] until (gi=gi-1)<0 endif endif tn[nt] = 6 ts[nt] = @tv6 if @sp tfc[nt] = log(@tc6) else tfc[nt] = @tc6 endif if @spo tfco[nt] = log(@tco6) else tfco[nt] = @tco6 endif nt = nt + 1 endif endif if @use7 && @at>5 if @useskips gj = 1073741824 gi = 30 gk = @skip8mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip8mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip8mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip8mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip8mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip8mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip8mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot7+@rotd)*torad + atan2(@gen7)+atan2(@gend) gu = @scaled*@scale7*cabs(@gen7)*cabs(@gend) tct[nt] = @offset7 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot7*torad + atan2(@gen7) gu = @scale7*cabs(@gen7) tct[nt] = @offset7 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt7 || (@used && @fltd) f[nt] = true if @flt7 gv = @xscale7 gw = @yscale7 gx = @xshear7 gy = @yshear7 gf0 = real(@trow7) gf1 = imag(@trow7) gf2 = real(@brow7) gf3 = imag(@brow7) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a7 b[nt] = @b7 cc[nt] = @cs7 fp[nt] = @fp7 p[nt] = @pwr7 mix[nt] = @mix7 mod[nt] = @mod7 fnc[nt] = @fnc7 fn[nt] = @fn7 tfx[nt] = @sx7 pf[nt] = @pf7 ax[nt] = @ax7 bx[nt] = @bx7 px[nt] = @pwrx7 fnx[nt] = @fnx7 ay[nt] = @ay7 by[nt] = @by7 py[nt] = @pwry7 fny[nt] = @fny7 if @mod7==0 || (@mod7!=1 && @mix7==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod7!=2 && @mix7==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod7==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod7==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user7 if @user7 rifs[7,0] = @rifs7_0 rifs[7,1] = @rifs7_1 rifs[7,2] = @rifs7_2 rifs[7,3] = @rifs7_3 rifs[7,4] = @rifs7_4 rifs[7,5] = @rifs7_5 rifs[7,6] = @rifs7_6 rifs[7,7] = @rifs7_7 rifs[7,8] = @rifs7_8 rifs[7,9] = @rifs7_9 rifs[7,10] = @rifs7_10 rifs[7,11] = @rifs7_11 rifs[7,12] = @rifs7_12 rifs[7,13] = @rifs7_13 rifs[7,14] = @rifs7_14 rifs[7,15] = @rifs7_15 if @rifs7==1 gi = 15 repeat rifs[7,gi] = !rifs[7,gi] until (gi=gi-1)<0 endif endif tn[nt] = 7 ts[nt] = @tv7 if @sp tfc[nt] = log(@tc7) else tfc[nt] = @tc7 endif if @spo tfco[nt] = log(@tco7) else tfco[nt] = @tco7 endif nt = nt + 1 endif endif if @use8 && @at>6 if @useskips gj = 1073741824 gi = 30 gk = @skip9mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip9mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip9mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip9mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip9mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip9mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip9mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot8+@rotd)*torad + atan2(@gen8)+atan2(@gend) gu = @scaled*@scale8*cabs(@gen8)*cabs(@gend) tct[nt] = @offset8 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot8*torad + atan2(@gen8) gu = @scale8*cabs(@gen8) tct[nt] = @offset8 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt8 || (@used && @fltd) f[nt] = true if @flt8 gv = @xscale8 gw = @yscale8 gx = @xshear8 gy = @yshear8 gf0 = real(@trow8) gf1 = imag(@trow8) gf2 = real(@brow8) gf3 = imag(@brow8) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a8 b[nt] = @b8 cc[nt] = @cs8 fp[nt] = @fp8 p[nt] = @pwr8 mix[nt] = @mix8 mod[nt] = @mod8 fnc[nt] = @fnc8 fn[nt] = @fn8 tfx[nt] = @sx8 pf[nt] = @pf8 ax[nt] = @ax8 bx[nt] = @bx8 px[nt] = @pwrx8 fnx[nt] = @fnx8 ay[nt] = @ay8 by[nt] = @by8 py[nt] = @pwry8 fny[nt] = @fny8 if @mod8==0 || (@mod8!=1 && @mix8==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod8!=2 && @mix8==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod8==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod8==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user8 if @user8 rifs[8,0] = @rifs8_0 rifs[8,1] = @rifs8_1 rifs[8,2] = @rifs8_2 rifs[8,3] = @rifs8_3 rifs[8,4] = @rifs8_4 rifs[8,5] = @rifs8_5 rifs[8,6] = @rifs8_6 rifs[8,7] = @rifs8_7 rifs[8,8] = @rifs8_8 rifs[8,9] = @rifs8_9 rifs[8,10] = @rifs8_10 rifs[8,11] = @rifs8_11 rifs[8,12] = @rifs8_12 rifs[8,13] = @rifs8_13 rifs[8,14] = @rifs8_14 rifs[8,15] = @rifs8_15 if @rifs8==1 gi = 15 repeat rifs[8,gi] = !rifs[8,gi] until (gi=gi-1)<0 endif endif tn[nt] = 8 ts[nt] = @tv8 if @sp tfc[nt] = log(@tc8) else tfc[nt] = @tc8 endif if @spo tfco[nt] = log(@tco8) else tfco[nt] = @tco8 endif nt = nt + 1 endif endif if @use9 && @at>7 if @useskips gj = 1073741824 gi = 30 gk = @skip10mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip10mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip10mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip10mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip10mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip10mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip10mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot9+@rotd)*torad + atan2(@gen9)+atan2(@gend) gu = @scaled*@scale9*cabs(@gen9)*cabs(@gend) tct[nt] = @offset9 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot9*torad + atan2(@gen9) gu = @scale9*cabs(@gen9) tct[nt] = @offset9 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt9 || (@used && @fltd) f[nt] = true if @flt9 gv = @xscale9 gw = @yscale9 gx = @xshear9 gy = @yshear9 gf0 = real(@trow9) gf1 = imag(@trow9) gf2 = real(@brow9) gf3 = imag(@brow9) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a9 b[nt] = @b9 cc[nt] = @cs9 fp[nt] = @fp9 p[nt] = @pwr9 mix[nt] = @mix9 mod[nt] = @mod9 fnc[nt] = @fnc9 fn[nt] = @fn9 tfx[nt] = @sx9 pf[nt] = @pf9 ax[nt] = @ax9 bx[nt] = @bx9 px[nt] = @pwrx9 fnx[nt] = @fnx9 ay[nt] = @ay9 by[nt] = @by9 py[nt] = @pwry9 fny[nt] = @fny9 if @mod9==0 || (@mod9!=1 && @mix9==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod9!=2 && @mix9==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod9==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod9==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user9 if @user9 rifs[9,0] = @rifs9_0 rifs[9,1] = @rifs9_1 rifs[9,2] = @rifs9_2 rifs[9,3] = @rifs9_3 rifs[9,4] = @rifs9_4 rifs[9,5] = @rifs9_5 rifs[9,6] = @rifs9_6 rifs[9,7] = @rifs9_7 rifs[9,8] = @rifs9_8 rifs[9,9] = @rifs9_9 rifs[9,10] = @rifs9_10 rifs[9,11] = @rifs9_11 rifs[9,12] = @rifs9_12 rifs[9,13] = @rifs9_13 rifs[9,14] = @rifs9_14 rifs[9,15] = @rifs9_15 if @rifs9==1 gi = 15 repeat rifs[9,gi] = !rifs[9,gi] until (gi=gi-1)<0 endif endif tn[nt] = 9 ts[nt] = @tv9 if @sp tfc[nt] = log(@tc9) else tfc[nt] = @tc9 endif if @spo tfco[nt] = log(@tco9) else tfco[nt] = @tco9 endif nt = nt + 1 endif endif if @use10 && @at>8 if @useskips gj = 1073741824 gi = 30 gk = @skip11mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip11mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip11mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip11mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip11mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip11mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip11mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot10+@rotd)*torad + atan2(@gen10)+atan2(@gend) gu = @scaled*@scale10*cabs(@gen10)*cabs(@gend) tct[nt] = @offset10 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot10*torad + atan2(@gen10) gu = @scale10*cabs(@gen10) tct[nt] = @offset10 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt10 || (@used && @fltd) f[nt] = true if @flt10 gv = @xscale10 gw = @yscale10 gx = @xshear10 gy = @yshear10 gf0 = real(@trow10) gf1 = imag(@trow10) gf2 = real(@brow10) gf3 = imag(@brow10) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a10 b[nt] = @b10 cc[nt] = @cs10 fp[nt] = @fp10 p[nt] = @pwr10 mix[nt] = @mix10 mod[nt] = @mod10 fnc[nt] = @fnc10 fn[nt] = @fn10 tfx[nt] = @sx10 pf[nt] = @pf10 ax[nt] = @ax10 bx[nt] = @bx10 px[nt] = @pwrx10 fnx[nt] = @fnx10 ay[nt] = @ay10 by[nt] = @by10 py[nt] = @pwry10 fny[nt] = @fny10 if @mod10==0 || (@mod10!=1 && @mix10==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod10!=2 && @mix10==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod10==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod10==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user10 if @user10 rifs[10,0] = @rifs10_0 rifs[10,1] = @rifs10_1 rifs[10,2] = @rifs10_2 rifs[10,3] = @rifs10_3 rifs[10,4] = @rifs10_4 rifs[10,5] = @rifs10_5 rifs[10,6] = @rifs10_6 rifs[10,7] = @rifs10_7 rifs[10,8] = @rifs10_8 rifs[10,9] = @rifs10_9 rifs[10,10] = @rifs10_10 rifs[10,11] = @rifs10_11 rifs[10,12] = @rifs10_12 rifs[10,13] = @rifs10_13 rifs[10,14] = @rifs10_14 rifs[10,15] = @rifs10_15 if @rifs10==1 gi = 15 repeat rifs[10,gi] = !rifs[10,gi] until (gi=gi-1)<0 endif endif tn[nt] = 10 ts[nt] = @tv10 if @sp tfc[nt] = log(@tc10) else tfc[nt] = @tc10 endif if @spo tfco[nt] = log(@tco10) else tfco[nt] = @tco10 endif nt = nt + 1 endif endif if @use11 && @at>9 if @useskips gj = 1073741824 gi = 30 gk = @skip12mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip12mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip12mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip12mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip12mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip12mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip12mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot11+@rotd)*torad + atan2(@gen11)+atan2(@gend) gu = @scaled*@scale11*cabs(@gen11)*cabs(@gend) tct[nt] = @offset11 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot11*torad + atan2(@gen11) gu = @scale11*cabs(@gen11) tct[nt] = @offset11 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt11 || (@used && @fltd) f[nt] = true if @flt11 gv = @xscale11 gw = @yscale11 gx = @xshear11 gy = @yshear11 gf0 = real(@trow11) gf1 = imag(@trow11) gf2 = real(@brow11) gf3 = imag(@brow11) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a11 b[nt] = @b11 cc[nt] = @cs11 fp[nt] = @fp11 p[nt] = @pwr11 mix[nt] = @mix11 mod[nt] = @mod11 fnc[nt] = @fnc11 fn[nt] = @fn11 tfx[nt] = @sx11 pf[nt] = @pf11 ax[nt] = @ax11 bx[nt] = @bx11 px[nt] = @pwrx11 fnx[nt] = @fnx11 ay[nt] = @ay11 by[nt] = @by11 py[nt] = @pwry11 fny[nt] = @fny11 if @mod11==0 || (@mod11!=1 && @mix11==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod11!=2 && @mix11==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod11==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod11==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user11 if @user11 rifs[11,0] = @rifs11_0 rifs[11,1] = @rifs11_1 rifs[11,2] = @rifs11_2 rifs[11,3] = @rifs11_3 rifs[11,4] = @rifs11_4 rifs[11,5] = @rifs11_5 rifs[11,6] = @rifs11_6 rifs[11,7] = @rifs11_7 rifs[11,8] = @rifs11_8 rifs[11,9] = @rifs11_9 rifs[11,10] = @rifs11_10 rifs[11,11] = @rifs11_11 rifs[11,12] = @rifs11_12 rifs[11,13] = @rifs11_13 rifs[11,14] = @rifs11_14 rifs[11,15] = @rifs11_15 if @rifs11==1 gi = 15 repeat rifs[11,gi] = !rifs[11,gi] until (gi=gi-1)<0 endif endif tn[nt] = 11 ts[nt] = @tv11 if @sp tfc[nt] = log(@tc11) else tfc[nt] = @tc11 endif if @spo tfco[nt] = log(@tco11) else tfco[nt] = @tco11 endif nt = nt + 1 endif endif if @use12 && @at>10 if @useskips gj = 1073741824 gi = 30 gk = @skip13mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip13mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip13mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip13mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip13mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip13mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip13mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot12+@rotd)*torad + atan2(@gen12)+atan2(@gend) gu = @scaled*@scale12*cabs(@gen12)*cabs(@gend) tct[nt] = @offset12 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot12*torad + atan2(@gen12) gu = @scale12*cabs(@gen12) tct[nt] = @offset12 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt12 || (@used && @fltd) f[nt] = true if @flt12 gv = @xscale12 gw = @yscale12 gx = @xshear12 gy = @yshear12 gf0 = real(@trow12) gf1 = imag(@trow12) gf2 = real(@brow12) gf3 = imag(@brow12) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a12 b[nt] = @b12 cc[nt] = @cs12 fp[nt] = @fp12 p[nt] = @pwr12 mix[nt] = @mix12 mod[nt] = @mod12 fnc[nt] = @fnc12 fn[nt] = @fn12 tfx[nt] = @sx12 pf[nt] = @pf12 ax[nt] = @ax12 bx[nt] = @bx12 px[nt] = @pwrx12 fnx[nt] = @fnx12 ay[nt] = @ay12 by[nt] = @by12 py[nt] = @pwry12 fny[nt] = @fny12 if @mod12==0 || (@mod12!=1 && @mix12==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod12!=2 && @mix12==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod12==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod12==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user12 if @user12 rifs[12,0] = @rifs12_0 rifs[12,1] = @rifs12_1 rifs[12,2] = @rifs12_2 rifs[12,3] = @rifs12_3 rifs[12,4] = @rifs12_4 rifs[12,5] = @rifs12_5 rifs[12,6] = @rifs12_6 rifs[12,7] = @rifs12_7 rifs[12,8] = @rifs12_8 rifs[12,9] = @rifs12_9 rifs[12,10] = @rifs12_10 rifs[12,11] = @rifs12_11 rifs[12,12] = @rifs12_12 rifs[12,13] = @rifs12_13 rifs[12,14] = @rifs12_14 rifs[12,15] = @rifs12_15 if @rifs12==1 gi = 15 repeat rifs[12,gi] = !rifs[12,gi] until (gi=gi-1)<0 endif endif tn[nt] = 12 ts[nt] = @tv12 if @sp tfc[nt] = log(@tc12) else tfc[nt] = @tc12 endif if @spo tfco[nt] = log(@tco12) else tfco[nt] = @tco12 endif nt = nt + 1 endif endif if @use13 && @at>11 if @useskips gj = 1073741824 gi = 30 gk = @skip14mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip14mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip14mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip14mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip14mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip14mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip14mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot13+@rotd)*torad + atan2(@gen13)+atan2(@gend) gu = @scaled*@scale13*cabs(@gen13)*cabs(@gend) tct[nt] = @offset13 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot13*torad + atan2(@gen13) gu = @scale13*cabs(@gen13) tct[nt] = @offset13 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt13 || (@used && @fltd) f[nt] = true if @flt13 gv = @xscale13 gw = @yscale13 gx = @xshear13 gy = @yshear13 gf0 = real(@trow13) gf1 = imag(@trow13) gf2 = real(@brow13) gf3 = imag(@brow13) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a13 b[nt] = @b13 cc[nt] = @cs13 fp[nt] = @fp13 p[nt] = @pwr13 mix[nt] = @mix13 mod[nt] = @mod13 fnc[nt] = @fnc13 fn[nt] = @fn13 tfx[nt] = @sx13 pf[nt] = @pf13 ax[nt] = @ax13 bx[nt] = @bx13 px[nt] = @pwrx13 fnx[nt] = @fnx13 ay[nt] = @ay13 by[nt] = @by13 py[nt] = @pwry13 fny[nt] = @fny13 if @mod13==0 || (@mod13!=1 && @mix13==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod13!=2 && @mix13==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod13==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod13==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user13 if @user13 rifs[13,0] = @rifs13_0 rifs[13,1] = @rifs13_1 rifs[13,2] = @rifs13_2 rifs[13,3] = @rifs13_3 rifs[13,4] = @rifs13_4 rifs[13,5] = @rifs13_5 rifs[13,6] = @rifs13_6 rifs[13,7] = @rifs13_7 rifs[13,8] = @rifs13_8 rifs[13,9] = @rifs13_9 rifs[13,10] = @rifs13_10 rifs[13,11] = @rifs13_11 rifs[13,12] = @rifs13_12 rifs[13,13] = @rifs13_13 rifs[13,14] = @rifs13_14 rifs[13,15] = @rifs13_15 if @rifs13==1 gi = 15 repeat rifs[13,gi] = !rifs[13,gi] until (gi=gi-1)<0 endif endif tn[nt] = 13 ts[nt] = @tv13 if @sp tfc[nt] = log(@tc13) else tfc[nt] = @tc13 endif if @spo tfco[nt] = log(@tco13) else tfco[nt] = @tco13 endif nt = nt + 1 endif endif if @use14 && @at>12 if @useskips gj = 1073741824 gi = 30 gk = @skip15mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip15mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip15mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip15mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip15mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip15mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip15mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot14+@rotd)*torad + atan2(@gen14)+atan2(@gend) gu = @scaled*@scale14*cabs(@gen14)*cabs(@gend) tct[nt] = @offset14 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot14*torad + atan2(@gen14) gu = @scale14*cabs(@gen14) tct[nt] = @offset14 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt14 || (@used && @fltd) f[nt] = true if @flt14 gv = @xscale14 gw = @yscale14 gx = @xshear14 gy = @yshear14 gf0 = real(@trow14) gf1 = imag(@trow14) gf2 = real(@brow14) gf3 = imag(@brow14) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a14 b[nt] = @b14 cc[nt] = @cs14 fp[nt] = @fp14 p[nt] = @pwr14 mix[nt] = @mix14 mod[nt] = @mod14 fnc[nt] = @fnc14 fn[nt] = @fn14 tfx[nt] = @sx14 pf[nt] = @pf14 ax[nt] = @ax14 bx[nt] = @bx14 px[nt] = @pwrx14 fnx[nt] = @fnx14 ay[nt] = @ay14 by[nt] = @by14 py[nt] = @pwry14 fny[nt] = @fny14 if @mod14==0 || (@mod14!=1 && @mix14==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod14!=2 && @mix14==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod14==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod14==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user14 if @user14 rifs[14,0] = @rifs14_0 rifs[14,1] = @rifs14_1 rifs[14,2] = @rifs14_2 rifs[14,3] = @rifs14_3 rifs[14,4] = @rifs14_4 rifs[14,5] = @rifs14_5 rifs[14,6] = @rifs14_6 rifs[14,7] = @rifs14_7 rifs[14,8] = @rifs14_8 rifs[14,9] = @rifs14_9 rifs[14,10] = @rifs14_10 rifs[14,11] = @rifs14_11 rifs[14,12] = @rifs14_12 rifs[14,13] = @rifs14_13 rifs[14,14] = @rifs14_14 rifs[14,15] = @rifs14_15 if @rifs14==1 gi = 15 repeat rifs[14,gi] = !rifs[14,gi] until (gi=gi-1)<0 endif endif tn[nt] = 14 ts[nt] = @tv14 if @sp tfc[nt] = log(@tc14) else tfc[nt] = @tc14 endif if @spo tfco[nt] = log(@tco14) else tfco[nt] = @tco14 endif nt = nt + 1 endif endif if @use15 && @at>13 if @useskips gj = 1073741824 gi = 30 gk = @skip16mask1 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<0 gj = 1073741824 gi = 61 gk = @skip16mask2 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<31 gj = 1073741824 gi = 92 gk = @skip16mask3 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<62 gj = 1073741824 gi = 123 gk = @skip16mask4 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<93 gj = 1073741824 gi = 154 gk = @skip16mask5 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<124 gj = 1073741824 gi = 185 gk = @skip16mask6 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<155 gj = 1073741824 gi = 216 gk = @skip16mask7 repeat if gk>=gj df[nt,gi] = false gk = gk - gj endif gj = round(0.5*gj) until (gi=gi-1)<186 gi = @depth if gi>216 gi = 216 endif repeat gg = df[nt,gi] until (gi=gi-1)<0 || gg endif if gg || !@useskips if @used gt = (@rot15+@rotd)*torad + atan2(@gen15)+atan2(@gend) gu = @scaled*@scale15*cabs(@gen15)*cabs(@gend) tct[nt] = @offset15 + @offsetd gs = gu*sin(gt) gt = gu*cos(gt) else gt = @rot15*torad + atan2(@gen15) gu = @scale15*cabs(@gen5) tct[nt] = @offset15 gs = gu*sin(gt) gt = gu*cos(gt) endif if @flt15 || (@used && @fltd) f[nt] = true if @flt15 gv = @xscale15 gw = @yscale15 gx = @xshear15 gy = @yshear15 gf0 = real(@trow15) gf1 = imag(@trow15) gf2 = real(@brow15) gf3 = imag(@brow15) else gv = gw = gf0 = gf3 = 1.0 gx = gy = gf1 = gf2 = 0.0 endif if @used && @fltd gv = gv*@xscaled gw = gw*@yscaled gx = gx + @xsheard gy = gy + @ysheard gz = gf0 gf0 = gf0*real(@trowd) + gf1*real(@browd) gf1 = gz*imag(@trowd) + gf1*imag(@browd) gz = gf2 gf2 = gf2*real(@trowd) + gf3*real(@browd) gf3 = gz*imag(@trowd) + gf3*imag(@browd) endif if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 tf0[nt] = gi0 tf1[nt] = gi1 tf2[nt] = gi2 tf3[nt] = gi3 else f[nt] = false tcm[nt] = gt+flip(gs) tf0[nt] = gt tf1[nt] = gs tf2[nt] = -gs tf3[nt] = gt endif a[nt] = @a15 b[nt] = @b15 cc[nt] = @cs15 fp[nt] = @fp15 p[nt] = @pwr15 mix[nt] = @mix15 mod[nt] = @mod15 fnc[nt] = @fnc15 fn[nt] = @fn15 tfx[nt] = @sx15 pf[nt] = @pf15 ax[nt] = @ax15 bx[nt] = @bx15 px[nt] = @pwrx15 fnx[nt] = @fnx15 ay[nt] = @ay15 by[nt] = @by15 py[nt] = @pwry15 fny[nt] = @fny15 if @mod15==0 || (@mod15!=1 && @mix15==0.0) mod[nt] = 0 ; "no non-linear" elseif @mod15!=2 && @mix15==1.0 mod[nt] = 4 ; "all non-linear" elseif @mod15==1 ; 0 = no non lnear, 1 = post-affine mod[nt] = 2 ; 2 = pre-affine, 3 = mixer elseif @mod15==2 ; 4 = all non-linear mod[nt] = 1 endif rf[nt] = @user15 if @user15 rifs[15,0] = @rifs15_0 rifs[15,1] = @rifs15_1 rifs[15,2] = @rifs15_2 rifs[15,3] = @rifs15_3 rifs[15,4] = @rifs15_4 rifs[15,5] = @rifs15_5 rifs[15,6] = @rifs15_6 rifs[15,7] = @rifs15_7 rifs[15,8] = @rifs15_8 rifs[15,9] = @rifs15_9 rifs[15,10] = @rifs15_10 rifs[15,11] = @rifs15_11 rifs[15,12] = @rifs15_12 rifs[15,13] = @rifs15_13 rifs[15,14] = @rifs15_14 rifs[15,15] = @rifs15_15 if @rifs15==1 gi = 15 repeat rifs[15,gi] = !rifs[15,gi] until (gi=gi-1)<0 endif endif tn[nt] = 15 ts[nt] = @tv15 if @sp tfc[nt] = log(@tc15) else tfc[nt] = @tc15 endif if @spo tfco[nt] = log(@tco15) else tfco[nt] = @tco15 endif nt = nt + 1 endif endif ft = nt - 1 ; first/final transform invnt = 1.0/nt ; optimisation if @warn && nt==0 print("No transforms are enabled !") print("Check the '# active transforms' parameter and the 'Apply transform \ n' parameters.") endif ; Bubble sort the transforms according to the sort codes if ft>0 gi = ft - 1 repeat gj = ft while gj>gi && ts[gi]>ts[gj] gj = gj - 1 endwhile if gj>gi && ts[gi]<=ts[gj] gcc = tcm[gi] gcd = tct[gi] gce = a[gi] gcf = b[gi] gcg = p[gi] gs = tf0[gi] gt = tf1[gi] gu = tf2[gi] gv = tf3[gi] gw = mix[gi] gx = tfx[gi] gl = mod[gi] gm = fnc[gi] gn = fn[gi] gf = pf[gi] gk = gi repeat tcm[gk] = tcm[gk+1] tct[gk] = tct[gk+1] a[gk] = a[gk+1] b[gk] = b[gk+1] p[gk] = p[gk+1] tf0[gk] = tf0[gk+1] tf1[gk] = tf1[gk+1] tf2[gk] = tf2[gk+1] tf3[gk] = tf3[gk+1] mix[gk] = mix[gk+1] tfx[gk] = tfx[gk+1] mod[gk] = mod[gk+1] fnc[gk] = fnc[gk+1] fn[gk] = fn[gk+1] pf[gk] = pf[gk+1] until (gk=gk+1)>=gj tcm[gj] = gcc tct[gj] = gcd a[gj] = gce b[gj] = gcf p[gj] = gcg tf0[gj] = gs tf1[gj] = gt tf2[gj] = gu tf3[gj] = gv mix[gj] = gw tfx[gj] = gx mod[gj] = gl fnc[gj] = gm fn[gj] = gn pf[gj] = gf gcf = cc[gi] gs = tfs[gi] gt = tfc[gi] gu = tfco[gi] gl = ts[gi] gm = tn[gi] gf = f[gi] gg = rf[gi] gk = gi repeat cc[gk] = cc[gk+1] tfs[gk] = tfs[gk+1] tfc[gk] = tfc[gk+1] tfco[gk] = tfco[gk+1] ts[gk] = ts[gk+1] tn[gk] = tn[gk+1] f[gk] = f[gk+1] rf[gk] = rf[gk+1] until (gk=gk+1)>=gj cc[gj] = gcf tfs[gj] = gs tfc[gj] = gt tfco[gj] = gu ts[gj] = gl tn[gj] = gm f[gj] = gf rf[gj] = gg gs = ax[gi] gt = bx[gi] gu = px[gi] gl = fnx[gi] gv = ay[gi] gw = by[gi] gx = py[gi] gm = fny[gi] gf = fp[gi] gk = gi repeat ax[gk] = ax[gk+1] bx[gk] = bx[gk+1] px[gk] = px[gk+1] fnx[gk] = fnx[gk+1] ay[gk] = ay[gk+1] by[gk] = by[gk+1] py[gk] = py[gk+1] fny[gk] = fny[gk+1] fp[gk] = fp[gk+1] until (gk=gk+1)>=gj ax[gj] = gs bx[gj] = gt px[gj] = gu fnx[gj] = gl ay[gj] = gv by[gj] = gw py[gj] = gx fny[gj] = gm fp[gj] = gf gl = 216 repeat gg = df[gi,gl] gk = gi repeat df[gk,gl] = df[gk+1,gl] until (gk=gk+1)>=gj df[gj,gl] = gg until (gl=gl-1)<0 endif until (gi=gi-1)<0 endif ; Now convert the RIFS codes so they match the new transform numbers gi = ft repeat gj = ft gk = tn[gi] repeat rifs1[gi,gj] = rifs[gk,tn[gj]] until (gj=gj-1)<0 until (gi=gi-1)<0 ; Now check to see if any RIFS flags are actually used gi = ft gf = false repeat if rf[gi] gj = ft repeat if !rifs1[gi,gj] gf = true endif until gf || (gj=gj-1)<0 endif until gf || (gi=gi-1)<0 if @warn && gf gi = ft repeat gg = false gj = ft repeat if rifs1[gj,gi] gg = true endif until (gj=gj-1)<0 || gg if !gg print("Transform ",tn[gi]," is completely disabled by the RIFS flags.") endif until (gi=gi-1)<0 endif ; Apply the global transform (if any) if @uset ; if use global transform gt = @rott*torad+atan2(@gent) ; angle in rads gu = @scalet*cabs(@gent) ; combined scale gs = gu*sin(gt) ; combine scale and sin(angle) gt = gu*cos(gt) ; combine scale and cos(angle) if @fltt ; if float for the global transform ; Set up global floating transform gv = @xscalet gw = @yscalet gx = @xsheart gy = @ysheart gf0 = real(@trowt) gf1 = imag(@trowt) gf2 = real(@browt) gf3 = imag(@browt) if ss[5,0]==0 gi0 = gt gi1 = gs gi2 = -gs gi3 = gt elseif ss[5,0]==1 gi0 = gv gi1 = gi2 = 0.0 gi3 = 1.0 elseif ss[5,0]==2 gi0 = 1.0 gi1 = gi2 = 0.0 gi3 = gw elseif ss[5,0]==3 gz = torad*gx gi0 = 1.0 gi1 = 0.0 gi2 = -sin(gz) gi3 = cos(gz) elseif ss[5,0]==4 gz = torad*gy gi0 = cos(gz) gi1 = sin(gz) gi2 = 0.0 gi3 = 1.0 else gi0 = gf0 gi1 = gf1 gi2 = gf2 gi3 = gf3 endif gi = 4 repeat if ss[gi,0]==0 gz = gi0 gi0 = gi0*gt - gi1*gs gi1 = gz*gs + gi1*gt gz = gi2 gi2 = gi2*gt - gi3*gs gi3 = gz*gs + gi3*gt elseif ss[gi,0]==1 gi0 = gi0*gv gi2 = gi2*gv elseif ss[gi,0]==2 gi1 = gi1*gw gi3 = gi3*gw elseif ss[gi,0]==3 gz = torad*gx gx = sin(gz) gz = cos(gz) gi0 = gi0 - gi1*gx gi2 = gi2 - gi3*gx gi1 = gi1*gz gi3 = gi3*gz elseif ss[gi,0]==4 gz = torad*gy gy = sin(gz) gz = cos(gz) gi1 = gi1 + gi0*gy gi3 = gi3 + gi2*gy gi0 = gi0*gz gi2 = gi2*gz else gz = gi0 gi0 = gi0*gf0 - gi1*gf2 gi1 = gz*gf1 + gi1*gf3 gz = gi2 gi2 = gi2*gf0 - gi3*gf2 gi3 = gz*gf1 + gi3*gf3 endif until (gi=gi-1)<0 gf0 = gi0 ; Global matrix gf1 = gi1 ; | 0 1 | gf2 = gi2 ; | 2 3 | gf3 = gi3 gt = 1.0/(gi0*gi3 - gi1*gi2) gi0 = gt*gi3 ; Inverted matrix gi3 = gt*gf0 ; | 0 1 | gi1 = -gt*gi1 ; | 2 3 | gi2 = -gt*gi2 ; Now apply to the normal transforms ; To transform an entire IFS |Ai|+|ai,bi| by |B|+|c,d| ; for each transform in the IFS our new matrix is ; |C| = |~B||Ai||B| (where |~B| is the inverse of |B|) ; and our new translation is ; |ei,fi| = |c,d|+|ai,bi||B|-|c,d||C| gi = ft ; number of transforms-1 repeat ; New tranfsorm |~B||Ai||B| f[gi] = true ; transform "is float" gs = gi0*tf0[gi] + gi1*tf2[gi] ; |-B||Ai| gt = gi0*tf1[gi] + gi1*tf3[gi] gu = gi2*tf0[gi] + gi3*tf2[gi] gv = gi2*tf1[gi] + gi3*tf3[gi] tf0[gi] = gs*gf0 + gt*gf2 ; |C|=(|-B||Ai|)|B| tf1[gi] = gs*gf1 + gt*gf3 tf2[gi] = gu*gf0 + gv*gf2 tf3[gi] = gu*gf1 + gv*gf3 ; New translation = |ei,fi| = |c,d|+|ai,bi||B|-|c,d||C| tct[gi] = @offsett + real(tct[gi])*gf0 + imag(tct[gi])*gf2 \ - real(@offsett)*tf0[gi] - imag(@offsett)*tf2[gi] \ + flip(real(tct[gi])*gf1 + imag(tct[gi])*gf3 \ - real(@offsett)*tf1[gi] - imag(@offsett)*tf3[gi]) until (gi=gi-1)<0 else gcm = gt+flip(gs) ; global complex multiplier gf0 = gt ; Global matrix gf1 = gs ; | 0 1 | gf2 = -gs ; | 2 3 | gu = 1.0/(@scalet*@scalet) ; To invert the matrix gf3 = gt gt = gt*gu gs = gs*gu gi0 = gt ; Inverted matrix gi1 = -gs ; | 0 1 | gi2 = gs ; | 2 3 | gi3 = gt ; Now apply to the normal transforms ; To transform an entire IFS |Ai|+|ai,bi| by |B|+|c,d| ; for each transform in the IFS our new matrix is ; |C| = |~B||Ai||B| (where |~B| is the inverse of |B|) ; and our new translation is ; |ei,fi| = |c,d|+|ai,bi||B|-|c,d||C| gi = ft ; number of transforms-1 repeat if f[gi] ; New transform |~B||Ai||B| gs = gi0*tf0[gi] + gi1*tf2[gi] ; |-B||Ai| gt = gi0*tf1[gi] + gi1*tf3[gi] gu = gi2*tf0[gi] + gi3*tf2[gi] gv = gi2*tf1[gi] + gi3*tf3[gi] tf0[gi] = gs*gf0 + gt*gf2 ; |C|=(|-B||Ai|)|B| tf1[gi] = gs*gf1 + gt*gf3 tf2[gi] = gu*gf0 + gv*gf2 tf3[gi] = gu*gf1 + gv*gf3 ; New translation = |ei,fi| = |c,d|+|ai,bi||B|-|c,d||C| tct[gi] = @offsett + real(tct[gi])*gf0 + imag(tct[gi])*gf2 \ - real(@offsett)*tf0[gi] - imag(@offsett)*tf2[gi] \ + flip(real(tct[gi])*gf1 + imag(tct[gi])*gf3 \ - real(@offsett)*tf1[gi] - imag(@offsett)*tf3[gi]) else ; New complex multiply and translate: ; Want (((z - offsett)/gcm)*tcm + tct)*gcm + offsett ; ((z*tcm - offsett*tcm)/gcm + tct)*gcm + offsett ; z*tcm - offsett*tcm + tct*gcm + offsett ; z*tcm + tct*gcm + offsett(1-tcm) tct[gi] = tct[gi]*gcm + @offsett*(1.0 - tcm[gi]) endif until (gi=gi-1)<0 endif endif if @version<2 || ((@mod0==0 || (@mix0==0.0 && @mod0!=1)) \ && (@mod1==0 || (@mix1==0.0 && @mod1!=1)) \ && (@mod2==0 || (@mix2==0.0 && @mod2!=1)) \ && (@mod3==0 || (@mix3==0.0 && @mod3!=1)) \ && (@mod4==0 || (@mix4==0.0 && @mod4!=1)) \ && (@mod5==0 || (@mix5==0.0 && @mod5!=1)) \ && (@mod6==0 || (@mix6==0.0 && @mod6!=1)) \ && (@mod7==0 || (@mix7==0.0 && @mod7!=1)) \ && (@mod8==0 || (@mix8==0.0 && @mod8!=1)) \ && (@mod9==0 || (@mix9==0.0 && @mod9!=1)) \ && (@mod10==0 || (@mix10==0.0 && @mod10!=1)) \ && (@mod11==0 || (@mix11==0.0 && @mod11!=1)) \ && (@mod12==0 || (@mix12==0.0 && @mod12!=1)) \ && (@mod13==0 || (@mix13==0.0 && @mod13!=1)) \ && (@mod14==0 || (@mix14==0.0 && @mod14!=1)) \ && (@mod15==0 || (@mix15==0.0 && @mod15!=1))) ; Find the point attractors and scales of the individual transforms gi = ft repeat if f[gi] tfs[gi] = abs(tf0[gi]*tf3[gi] - tf1[gi]*tf2[gi]) tcc[gi] = (tf2[gi]*imag(tct[gi]) - (tf3[gi]-1.0)*real(tct[gi]) \ + flip(tf1[gi]*real(tct[gi]) - (tf0[gi]-1.0)*imag(tct[gi]))) \ /((tf0[gi]-1.0)*(tf3[gi]-1.0) - tf1[gi]*tf2[gi]) else tfs[gi] = |tcm[gi]| tcc[gi] = tct[gi]/(1.0-tcm[gi]) endif if @warn if tfs[gi]>0.99 print("The scale of transform ",tn[gi]," is a bit large.") elseif tfs[gi]<0.01 print("The scale of transform ",tn[gi]," is a bit small.") endif endif until (gi=gi-1)<0 if gf ; if any forbidden combinations ; Find the maximum and minimum scale and make a temp copy gs = -1e200 gt = 1e200 gi = ft repeat if tfs[gi]>gs gs = tfs[gi] endif if tfs[gi]1e-20 gi = ft gw = 0.0 repeat gw = gw + tfs[gi]^gu until (gi=gi-1)<0 if gw<1.0 gu = gu - gv elseif gw>1.0 gu = gu + gv endif endwhile ; Now make a copy of them adjusted accordingly gi = ft repeat tfy[gi] = tfs[gi]^gu until (gi=gi-1)<0 ; Now change the scales by removing the disallowed combinations gi = ft repeat gj = ft repeat if !rifs1[gi,gj] ; if gi not followed by gj tfx[gj] = tfx[gj] - tfy[gi]*tfs[gj] ; then remove the gi fraction endif ; from scale gj until (gj=gj-1)<0 until (gi=gi-1)<0 ; Convert the scales to linear and find the maximum scale gi = ft gt = -1e200 repeat if (tfx[gi]=sqrt(tfx[gi]))>gt gt = tfx[gi] gj = gi endif until (gi=gi-1)<0 ; Get all values of P0^(log(S1)/log(S0)) ; handling the ==0 and >=1.0 scale problems if gt>0.999 gt = 0.999 elseif gt<1e-10 gt = 1e-10 endif gt = 1.0/log(gt) gi = ft repeat if gi!=gj if tfx[gi]>0.999 tfp[gi] = 1.0 else tfp[gi]=log(tfx[gi])*gt endif endif until (gi=gi-1)<0 ; Now perform a binary search to get P0 gt = 0.5 gs = 0.25 repeat gi = ft gu = gt repeat if gi!=gj gu = gu + gt^tfp[gi] endif until (gi=gi-1)<0 gu = gu - 1.0 if gu>1e-15 gt = gt - gs elseif gu<-1e-15 gt = gt + gs else gs = 0.0 endif gs = gs*0.5 until gs<1e-200 tfp[gj] = gt if (tfx[gj]>=0.999) rfd = log(gt)/log(0.999) else rfd = log(gt)/log(tfx[gj]) endif endif ; rifs ; Now find the correct probabilities for the chaos game and hence the ; fractal dimension, given log(Pi)/log(Si)=D then: ; ; P0+P0^(log(S1)/log(S0))+P0^(log(S2)/log(S0))+....+P0^(log(Sn)/log(S0))=1.0 ; ; Where P0 is the probability of transform 0, S0 is the scale of transform 0 ; and S1 to Sn are the scales of transforms 1 to n. ; If we take S0 as the largest scale then we can perform a simple binary search ; to find P0. ; Convert the scales to linear and find the maximum scale gi = ft gt = -1e200 repeat if (tfs[gi]=sqrt(tfs[gi]))>gt gt = tfs[gi] gj = gi endif until (gi=gi-1)<0 ; Get all values of P0^(log(S1)/log(S0)) ; handling the ==0 and >=1.0 scale problems if gt>0.999 gt = 0.999 elseif gt<1e-10 gt = 1e-10 endif gt = 1.0/log(gt) gi = ft repeat if gi!=gj if tfs[gi]>0.999 tfp[gi] = 1.0 else tfp[gi]=log(tfs[gi])*gt endif endif until (gi=gi-1)<0 ; Now perform a binary search to get P0 gt = 0.5 gs = 0.25 repeat gi = ft gu = gt repeat if gi!=gj gu = gu + gt^tfp[gi] endif until (gi=gi-1)<0 gu = gu - 1.0 if gu>1e-15 gt = gt - gs elseif gu<-1e-15 gt = gt + gs else gs = 0.0 endif gs = gs*0.5 until gs<1e-200 tfp[gj] = gt if (tfs[gj]>=0.999) fd = log(gt)/log(0.999) else fd = log(gt)/log(tfs[gj]) endif ; Now get the rest of the probabilities gi = ft repeat if gi!=gj tfp[gi] = gt^tfp[gi] endif until (gi=gi-1)<0 ; Adjust to fixed dimension if requested if @fixdim gs = fd/@dim gi = ft repeat gt = tfs[gi] tfs[gi] = tfs[gi]^gs gt = tfs[gi]/gt tcm[gi] = tcm[gi]*gt tf0[gi] = tf0[gi]*gt tf1[gi] = tf1[gi]*gt tf2[gi] = tf2[gi]*gt tf3[gi] = tf3[gi]*gt until (gi=gi-1)<0 fd = @dim endif if @bailout==0 ; Now find the positions of the point attractors transformed by each transform ; to get an approximate centre and bounding box (or circle) for the fractal. gs = 1e200 ; for min x gt = -1e200 ; for max x gu = 1e200 ; for min y gv = -1e200 ; for max y gi = ft repeat gcc = tcc[gi] if real(tcc[gi])gt gt = real(gcc) endif if imag(tcc[gi])gv gv = imag(gcc) endif gj = ft repeat if rifs1[gi,gj] gcc = tcc[gi] if gi!=gj if f[gj] gcc = real(gcc)*tf0[gj] + imag(gcc)*tf2[gj] \ +flip(real(gcc)*tf1[gj] + imag(gcc)*tf3[gj]) + tct[gj] else gcc = gcc*tcm[gj] + tct[gj] endif if real(gcc)gt gt = real(gcc) endif if imag(gcc)gv gv = imag(gcc) endif endif if nt<8 gk = ft repeat if rifs1[gj,gk] gcd = gcc if (gk!=gi || gk!=gj) if f[gk] gcd = real(gcd)*tf0[gk] + imag(gcd)*tf2[gk] \ +flip(real(gcd)*tf1[gk] + imag(gcd)*tf3[gk]) + tct[gk] else gcd = gcd*tcm[gk] + tct[gk] endif if real(gcd)gt gt = real(gcd) endif if imag(gcd)gv gv = imag(gcd) endif endif if (nt<4) gl = ft repeat if rifs1[gk,gl] gce = gcd if gl!=gi || gl!=gj || gl!=gk if f[gl] gce = real(gce)*tf0[gl] + imag(gce)*tf2[gl] \ +flip(real(gce)*tf1[gl] + imag(gce)*tf3[gl]) + tct[gl] else gce = gce*tcm[gl] + tct[gl] endif if real(gce)gt gt = real(gce) endif if imag(gce)gv gv = imag(gce) endif endif if (nt<3) gm = ft repeat if rifs1[gl,gm] gcf = gce if gm!=gi || gm!=gj || gm!=gk || gm!=gl if f[gm] gcf = real(gcf)*tf0[gm] + imag(gcf)*tf2[gm] \ +flip(real(gcf)*tf1[gm] + imag(gcf)*tf3[gm]) + tct[gm] else gcf = gcf*tcm[gm] + tct[gm] endif if real(gcf)gt gt = real(gcf) endif if imag(gcf)gv gv = imag(gcf) endif endif if @version>1 gn = ft repeat if rifs1[gm,gn] gcg = gcf if gn!=gi || gn!=gj || gn!=gk || gn!=gl || gn!=gm if f[gn] gcg = real(gcg)*tf0[gn] + imag(gcg)*tf2[gn] \ +flip(real(gcg)*tf1[gn] + imag(gcg)*tf3[gn]) + tct[gn] else gcg = gcg*tcm[gn] + tct[gn] endif if real(gcg)gt gt = real(gcg) endif if imag(gcg)gv gv = imag(gcg) endif endif endif until (gn=gn-1)<0 endif endif until (gm=gm-1)<0 endif endif until (gl=gl-1)<0 endif endif until (gk=gk-1)<0 endif endif until (gj=gj-1)<0 until (gi=gi-1)<0 gcc = 0.5*(gs + gt + flip(gu + gv)) ; Fractal 'centre of gravity' bail = 1.6*@bail*|gcc - gs - flip(gu)| ; Bailout radius^2 ; 1.6 is a fudge so the default user ; bailout of 1.0 will usually work else gcc = @fcentre if @uset && @adjust ; if requested adjust the user values by the if @fltt ; global transform gt = abs(gf0*gf3-gf1*gf2) else gt = |gcm| endif gcc = gcc*sqrt(gt) + @offsett bail = bail*gt endif endif if @showdim if gf print("Fractal dimension without RIFS flags = ",fd) print("Fractal dimension after RIFS flags = ",rfd) else print("Fractal dimension = ",fd) endif endif else ; Find the scales of the individual transforms gi = ft repeat if mod[gi]>0 tfs[gi] = tfx[gi] elseif f[gi] tfs[gi] = sqrt(abs(tf0[gi]*tf3[gi] - tf1[gi]*tf2[gi])) else tfs[gi] = cabs(tcm[gi]) endif if @warn if tfs[gi]>0.99 print("The scale of transform ",tn[gi]," is a bit large.") elseif tfs[gi]<0.01 print("The scale of transform ",tn[gi]," is a bit small.") endif endif until (gi=gi-1)<0 gcc = @fcentre if @uset && @adjust ; if requested adjust the user values by the if @fltt ; global transform gt = abs(gf0*gf3-gf1*gf2) else gt = |gcm| endif gcc = gcc*sqrt(gt) + @offsett bail = bail*gt endif endif if @showtrans gi = ft repeat if mod[gi]==0 print(" ") print("Transform ",tn[gi],":") if f[gi] print("Float:") print("Row 0 Column 0 : ",tf0[gi]) print("Row 0 Column 1 : ",tf1[gi]) print("Row 1 Column 0 : ",tf2[gi]) print("Row 1 Column 1 : ",tf3[gi]) print("X translation : ",real(tct[gi])) print("Y translation : ",imag(tct[gi])) gt = 1.0/(tf0[gi]*tf3[gi] - tf1[gi]*tf2[gi]) if abs(gt*(tf0[gi]-tf3[gi]))<1e-10 && abs(gt*(tf1[gi]+tf2[gi]))<1e-10 print("OR Complex:") print(gt) print("Multiplier : ",tf0[gi] + flip(tf1[gi])) print("Translation : ",tct[gi]) endif else print("Complex:") print("Multiplier : ",tcm[gi]) print("Translation : ",tct[gi]) endif endif until (gi=gi-1)<0 endif ; Now invert the transforms for using the escape-time method ; and set the mix1 values to 1.0-mix gi = ft repeat mix1[gi] = 1.0 - mix[gi] if f[gi] gt = 1.0/(tf0[gi]*tf3[gi] - tf1[gi]*tf2[gi]) gs = gt*tf0[gi] tf0[gi] = gt*tf3[gi] tf3[gi] = gs tf1[gi] = -gt*tf1[gi] tf2[gi] = -gt*tf2[gi] else tcm[gi] = 1.0/tcm[gi] endif until (gi=gi-1)<0 ; Now check any depth restrictions haven't completely disabled starting depths ; if they have then remove the unused depths gi = 0 gg = false repeat gj = ft repeat gg = df[gj,gi] until (gj=gj-1)<0 || gg if !gg gi = gi + 1 endif until gg if gi>0 gl = @depth if gl>216 gl = 216 endif gj = 0 repeat gk = ft repeat df[gk,gj] = df[gk,gj+gi] until (gk=gk-1)<0 until (gj=gj+1)>gl endif ; find the first transform at depth 0 gi = ft repeat gg = df[gi,0] if !gg gi = gi - 1 endif until gg gft = gi ; Set up colour values if needed if @colour==1 ; find largest colour value gt = -1e200 gu = 1e200 gi = ft repeat if tfc[gi]>gt gt = tfc[gi] endif if tfc[gi]=@depth gi = @depth-1 endif if (gj=gi+@numcodes1)>@depth gj = @depth endif repeat csc = csc + gs*gt cmin = cmin + gs*gu gs = @fade*gs until (gi=gi+1)>=gj if @sp csc = exp(csc) cmin = exp(cmin) endif if @version==0 csc = 1.0/csc cmin = 0.0 else csc = 1.0/(csc-cmin) ; Normalising value endif endif if @colouro==2 ; find largest colour value gt = -1e200 gu = 1e200 gi = ft repeat if tfco[gi]>gt gt = tfco[gi] endif if tfco[gi]=@depth gi = @depth-1 endif if (gj=gi+@numcodes1o)>@depth gj = @depth endif repeat csco = csco + gs*gt cmno = cmno + gs*gu gs = @fadeo*gs until (gi=gi+1)>=gj if @spo csco = exp(csco) cmno = exp(cmno) endif if @version==0 csco = 1.0/csco cmno = 0.0 else csco = 1.0/(csco-cmno) ; Normalising value endif endif if @colour==2 || @colouro==3 gi = ft gt = -1e200 gu = 1e200 repeat if tfp[gi]gt gt = tfp[gi] endif until (gi=gi-1)<0 if @version==0 pmin = pmno = gu psc = psco = 1.0/(gt - gu) else if @colour==2 ; compute largest and smallest possible fading probability result if @spp gt = log(gt) gu = log(gu) endif gs = 1.0 psc = 0.0 pmin = 0.0 gi = @oldcodep if gi>=@depth gi = @depth-1 endif if (gj=gi+@numcodesp)>@depth gj = @depth endif repeat psc = psc + gs*gt pmin = pmin + gs*gu gs = @fadep*gs until (gi=gi+1)>=gj if @spp psc = exp(psc) pmin = exp(pmin) endif psc = 1.0/(psc-pmin) ; Normalising value endif if @colouro==3 ; compute largest and smallest possible fading probability result if @sppo gt = log(gt) gu = log(gu) endif gs = 1.0 psco = 0.0 pmno = 0.0 gi = @oldcodepo if gi>=@depth gi = @depth-1 endif if (gj=gi+@numcodespo)>@depth gj = @depth endif repeat psco = psco + gs*gt pmno = pmno + gs*gu gs = @fadepo*gs until (gi=gi+1)>=gj if @sppo psco = exp(psco) pmno = exp(pmno) endif psco = 1.0/(psco-pmno) ; Normalising value endif endif endif if @fixbail minsc = minsc/sqrt(bail) endif init: complex zf[@depth] ; found z values complex zb[@depth] ; bailout z values float s[@depth] ; scales int t[@depth] ; transforms int tb[@depth] ; transforms on bailout complex z = #pixel ; start z complex z1 = (0,0) ; for non-linear functions float sc ; scale float ff ; temp and for the colour fade float cv ; for colour value float distest = 1e200 ; for distance estimator float m ; magnitude float minv = 1e200 ; initial min value on bailout float x float y int maxd = -1 ; initial max depth on bailout int depth = 0 ; start depth int i ; counter and temp int j ; counter and temp int k ; temp int trans = gft ; start with first transform at depth 0 int iter = 0 ; for the loop bool sf = true ; flag for traversing the tree sc = 1.0 repeat if (i=mod[t[depth]=trans])>1 ; pre-affine, mixer or only non-linear j = fnc[trans] if j<2 || j>=6 ; complex ? if j==0 || j==6 z1 = z^p[trans] else z1 = z endif if (k=fn[trans])>0 if k==1 z1 = sin(z1) elseif k==2 z1 = cos(z1) elseif k==3 z1 = tan(z1) elseif k==4 z1 = sinh(z1) elseif k==5 z1 = cosh(z1) elseif k==6 z1 = tanh(z1) elseif k==7 z1 = asin(z1) elseif k==8 z1 = acos(z1) elseif k==9 z1 = atan(z1) elseif k==10 z1 = asinh(z1) elseif k==11 z1 = acosh(z1) elseif k==12 z1 = atanh(z1) elseif k==13 z1 = log(z1) elseif k==14 z1 = exp(z1) elseif k==15 z1 = abs(z1) elseif k==16 z1 = conj(z1) elseif k==17 z1 = flip(z1) elseif k==18 z1 = ceil(z1) elseif k==19 z1 = floor(z1) elseif k==20 z1 = trunc(z1) else;if k==21 z1 = round(z1) endif endif if j==1 || j==7 z1 = z1^p[trans] endif z1 = a[trans]*z1 + b[trans] if j>=6 z1 = z1 + cc[trans]*z endif if fp[trans] z1 = z1 + #pixel endif else;if j<6 x = real(z) if j<4 if @pmode==1 z1 = x^px[trans] x = real(z1) elseif x<0 && @pmode==2 x = -(x^px[trans]) else x = x^px[trans] endif endif if (k=fnx[trans])>0 if k==1 x = sin(x) elseif k==2 x = cos(x) elseif k==3 x = tan(x) elseif k==4 x = sinh(x) elseif k==5 x = cosh(x) elseif k==6 x = tanh(x) elseif k==7 x = asin(x - trunc(x)) elseif k==8 x = acos(x - trunc(x)) elseif k==9 x = atan(x) elseif k==10 x = asinh(x) elseif k==11 if x<0.0 x = acosh(x-1.0) else x = acosh(x+1.0) endif elseif k==12 x = atanh(x) elseif k==13 x = log(1.0+abs(x)) elseif k==14 x = exp(x) elseif k==15 x = abs(x) elseif k==16 x = ceil(x) elseif k==17 x = floor(x) elseif k==18 x = trunc(x) else;if k==19 x = round(x) endif endif if j>3 if @pmode==1 z1 = x^px[trans] x = real(z1) elseif x<0 && @pmode==2 x = -(x^px[trans]) else x = x^px[trans] endif endif y = imag(z) if j==2 || j==4 if @pmode==1 z1 = y^py[trans] y = real(z1) elseif y<0 && @pmode==2 y = -(y^py[trans]) else y = y^py[trans] endif endif if (k=fny[trans])>0 if k==1 y = sin(y) elseif k==2 y = cos(y) elseif k==3 y = tan(y) elseif k==4 y = sinh(y) elseif k==5 y = cosh(y) elseif k==6 y = tanh(y) elseif k==7 y = asin(y - trunc(y)) elseif k==8 y = acos(y - trunc(y)) elseif k==9 y = atan(y) elseif k==10 y = asinh(y) elseif k==11 if y<0.0 y = acosh(y-1.0) else y = acosh(y+1.0) endif elseif k==12 y = atanh(y) elseif k==13 y = log(1.0+abs(y)) elseif k==14 y = exp(y) elseif k==15 y = abs(y) elseif k==16 y = ceil(y) elseif k==17 y = floor(y) elseif k==18 y = trunc(y) else;if k==19 y = round(y) endif endif if j==3 || j==5 if @pmode==1 z1 = y^py[trans] y = real(z1) elseif y<0 && @pmode==2 y = -(y^py[trans]) else y = y^py[trans] endif endif z1 = ax[trans]*x + bx[trans] + flip(ay[trans]*y + by[trans]) endif if i==2 z = z1 endif endif if i<4 ; not only non-linear z = z - tct[trans] if f[trans] ; if use float transform z = real(z)*tf0[trans] + imag(z)*tf2[trans] \ +flip(real(z)*tf1[trans] + imag(z)*tf3[trans]) else z = tcm[trans]*z endif endif if i==1 ; post-affine j = fnc[trans] if j<2 || j>=6 if j==0 || j==6 z1 = z^p[trans] else z1 = z endif if (k=fn[trans])>0 if k==1 z1 = sin(z1) elseif k==2 z1 = cos(z1) elseif k==3 z1 = tan(z1) elseif k==4 z1 = sinh(z1) elseif k==5 z1 = cosh(z1) elseif k==6 z1 = tanh(z1) elseif k==7 z1 = asin(z1) elseif k==8 z1 = acos(z1) elseif k==9 z1 = atan(z1) elseif k==10 z1 = asinh(z1) elseif k==11 z1 = acosh(z1) elseif k==12 z1 = atanh(z1) elseif k==13 z1 = log(z1) elseif k==14 z1 = exp(z1) elseif k==15 z1 = abs(z1) elseif k==16 z1 = conj(z1) elseif k==17 z1 = flip(z1) elseif k==18 z1 = ceil(z1) elseif k==19 z1 = floor(z1) elseif k==20 z1 = trunc(z1) else;if k==21 z1 = round(z1) endif endif if j==1 || j==7 z1 = z1^p[trans] endif z1 = a[trans]*z1 + b[trans] if j>=6 z1 = z1 + cc[trans]*z endif if fp[trans] z1 = z1 + #pixel endif else;if j<6 x = real(z) if j<4 if @pmode==1 z1 = x^px[trans] x = real(z1) elseif x<0 && @pmode==2 x = -(x^px[trans]) else x = x^px[trans] endif endif if (k=fnx[trans])>0 if k==1 x = sin(x) elseif k==2 x = cos(x) elseif k==3 x = tan(x) elseif k==4 x = sinh(x) elseif k==5 x = cosh(x) elseif k==6 x = tanh(x) elseif k==7 x = asin(x - trunc(x)) elseif k==8 x = acos(x - trunc(x)) elseif k==9 x = atan(x) elseif k==10 x = asinh(x) elseif k==11 if x<0.0 x = acosh(x-1.0) else x = acosh(x+1.0) endif elseif k==12 x = atanh(x) elseif k==13 x = log(1.0+abs(x)) elseif k==14 x = exp(x) elseif k==15 x = abs(x) elseif k==16 x = ceil(x) elseif k==17 x = floor(x) elseif k==18 x = trunc(x) else;if k==19 x = round(x) endif endif if j>3 if @pmode==1 z1 = x^px[trans] x = real(z1) elseif x<0 && @pmode==2 x = -(x^px[trans]) else x = x^px[trans] endif endif y = imag(z) if j==2 || j==4 if @pmode==1 z1 = y^py[trans] y = real(z1) elseif y<0 && @pmode==2 y = -(y^py[trans]) else y = y^py[trans] endif endif if (k=fny[trans])>0 if k==1 y = sin(y) elseif k==2 y = cos(y) elseif k==3 y = tan(y) elseif k==4 y = sinh(y) elseif k==5 y = cosh(y) elseif k==6 y = tanh(y) elseif k==7 y = asin(y - trunc(y)) elseif k==8 y = acos(y - trunc(y)) elseif k==9 y = atan(y) elseif k==10 y = asinh(y) elseif k==11 if y<0.0 y = acosh(y-1.0) else y = acosh(y+1.0) endif elseif k==12 y = atanh(y) elseif k==13 y = log(1.0+abs(y)) elseif k==14 y = exp(y) elseif k==15 y = abs(y) elseif k==16 y = ceil(y) elseif k==17 y = floor(y) elseif k==18 y = trunc(y) else;if k==19 y = round(y) endif endif if j==3 || j==5 if @pmode==1 z1 = y^py[trans] y = real(z1) elseif y<0 && @pmode==2 y = -(y^py[trans]) else y = y^py[trans] endif endif z1 = ax[trans]*x + bx[trans] + flip(ay[trans]*y + by[trans]) endif endif if i==4 z = z1 elseif i>0 z = z1*mix[trans] + z*mix1[trans] endif if pf[trans] && depth>0 if depth>1 z = z*zf[depth-2] else z = z*#pixel endif endif m = |z-gcc| zf[depth] = z sc = s[depth] = sc*tfs[trans] if m>bail if @colouro==0 ff = sc*sqrt(m) if ffmaxd maxd = depth minv = m i = 0 repeat zb[i] = zf[i] tb[i] = t[i] until (i=i+1)>depth elseif depth==maxd if mdepth endif endif sf = false repeat if (trans=trans-1)<0 if (depth=depth-1)<0 sf = true else trans = t[depth] endif elseif depth>0 if rifs1[trans,t[depth-1]] sf = df[trans,depth] endif else sf = df[trans,depth] endif until sf if depth==0 z = #pixel sc = 1.0 elseif depth>=0 z = zf[depth-1] sc = s[depth-1] endif elseif (depth=depth+1)<@depth && sc>minsc t[depth] = trans = ft if !rifs1[ft,t[depth-1]] || !df[trans,depth] sf = false repeat if (trans=trans-1)<0 if (depth=depth-1)<0 sf=true else trans = t[depth] endif elseif depth>0 if rifs1[t[depth],t[depth-1]] sf = df[trans,depth] endif else sf = df[trans,depth] endif until sf if depth==0 z = #pixel sc = 1.0 elseif depth>=0 z = zf[depth-1] sc = s[depth-1] endif endif endif until depth<0 || depth>=@depth || sc<=minsc ; If we stopped with a point 'on' the fractal based on scale rather than depth ; then fill out any remaining transform numbers from the earlier points. if sc<=minsc && depth>=0 && depth<@depth if @version>0 zf[depth] = z endif t[depth] = trans i = depth j = 0 while (i=i+1)<@depth if @version>0 zf[i] = zf[j] endif t[i] = t[j] if (j=j+1)>depth j = 0 endif endwhile endif ; Also fill out the bailout array in a similar manner i = maxd j = 0 while (i=i+1)<@depth zb[i] = zb[j] tb[i] = tb[j] if (j=j+1)>maxd j = 0 endif endwhile if depth>=0 && (@colmode==1 || @colmode==3) i = 0 repeat zb[i] = zf[i] tb[i] = t[i] until (i=i+1)>=@depth maxd = @depth depth = -1 elseif depth<0 && (@colmode==2 || @colmode==3) i = 0 repeat zf[i] = zb[i] t[i] = tb[i] until (i=i+1)>=@depth depth = @depth endif if depth>=0 if @colour==0 ;(genetic) cv = 0.0 if (i=@depth-1)>@oldcode + @numcodes - 1 i = @oldcode + @numcodes - 1 endif repeat cv = invnt*(cv + t[i]) until (i=i-1)<@oldcode z = cv elseif @colour==1 ;special transform colour values cv = 0.0 ff = 1.0 i = @oldcode1 if (j=i+@numcodes1)>@depth j = @depth endif repeat cv = cv + ff*tfc[t[i]] ff = ff*@fade ; (note @fade should be between 0 and 1) until (i=i+1)>=j if @sp z = csc*(exp(cv) - cmin) else z = csc*(cv - cmin) endif elseif @colour==2 i = 0 cv = 0.0 if @version==0 j = @pdepth if j>@depth j = @depth endif repeat cv = cv + tfp[t[i]] until (i=i+1)>=j z = psc*(cv/j - pmin) else cv = 0.0 ff = 1.0 i = @oldcodep if (j=i+@numcodesp)>@depth j = @depth endif repeat if @spp cv = cv + ff*log(tfp[t[i]]) else cv = cv + ff*tfp[t[i]] endif ff = ff*@fadep ; (note @fade should be between 0 and 1) until (i=i+1)>=j if @spp z = psc*(exp(cv) - pmin) else z = psc*(cv - pmin) endif endif else z = #pixel endif else if maxd>#maxiter-2 maxd=#maxiter-2 endif if @colouro==0 z = distest elseif @colouro==1 ;(genetic) cv = 0.0 if (i=@depth-1)>@oldcodeo + @numcodeso - 1 i = @oldcodeo + @numcodeso - 1 endif repeat cv = invnt*(cv + tb[i]) until (i=i-1)<@oldcodeo z = cv elseif @colouro==2 ;special transform colour values cv = 0.0 ff = 1.0 i = @oldcode1o if (j=i+@numcodes1o)>@depth j = @depth endif repeat cv = cv + ff*tfco[tb[i]] ff = ff*@fadeo ; (note @fadeo should be between 0 and 1) until (i=i+1)>=j if @spo z = csco*(exp(cv) - cmno) else z = csco*(cv - cmno) endif elseif @colouro==3 i = 0 cv = 0.0 if @version==0 j = @pdeptho if j>@depth j = @depth endif repeat cv = cv + tfp[tb[i]] until (i=i+1)>=j z = psco*(cv/j - pmno) else cv = 0.0 ff = 1.0 i = @oldcodepo if (j=i+@numcodespo)>@depth j = @depth endif repeat if @sppo cv = cv + ff*log(tfp[tb[i]]) else cv = cv + ff*tfp[tb[i]] endif ff = ff*@fadepo ; (note @fadeo should be between 0 and 1) until (i=i+1)>=j if @sppo z = psco*(exp(cv) - pmno) else z = psco*(cv - pmno) endif endif else z = #pixel endif endif iter=0 loop: if iter<@depth if depth<0 if iter<=maxd && @colouro==4 z = zb[iter] endif elseif @colour==3 z = zf[iter] endif endif iter=iter+1 bailout: depth>=0 || iter<=maxd+1 ; Note that the above line is using "maxd+1" because of the way UF colourings ; work - if bailout occurs then the loop: section of the outside colouring is ; not executed and for most formulas we want it to be executed when maxd is 0 ; therefore we have to test the count against maxd+1. ; This also means we need the above test for 'iter<=maxd' to make sure the ; formula also works with colourings that use the z value passed to the final: ; section of the colouring (i.e. when our bailout occurs). default: title = "Escape-time IFS" center = (0,0) magn = 0.75 maxiter = 20 method = multipass periodicity = 0 heading caption = "Information" text = "This is an IFS formula that renders an IFS using the escape-time \ method however you specify your IFS as if the formula was using \ the chaos-game or deterministic methods i.e. you specify the \ usual contractive transforms. You also have the facility to add \ non-linear modifications to your transforms but it should be noted \ that these will behave differently to when non-linear transforms \ are used in the chaos-game or deterministic methods. When choosing \ non-linear modifications you should note that the results will be \ related to the normal escape-time equivalents of the functions \ you choose i.e. think about what you get in Julia mode for the \ functions when choosing. You also have the facility to set \ forbidden combinations which allows you further control over the \ shape of your fractal. From the defaults transforms 0 and 1 \ produce the 'Harter-Heighway Dragon', transforms 2 and 3 produce \ the 'Twin Dragon', transform 4 to 7 produce a fern and transforms \ 8 to 15 produce the 'Sierpinski Carpet'." expanded = false endheading heading caption = "Feedback" text = "Choose what feedback, if any, you would like about your fractal. \ The feedback will appear in the 'Compiler Messages' window - if it \ doesn't then hit the fractal formula reload button. Note that when \ wanting feedback it's best to set 'Minimum number of threads' to 1 \ in the Ultrafractal Options as otherwise the compiler messages \ tend to get a bit messy." expanded = false endheading param warn caption = "Show warnings" default = false hint = "Shows any possible problems with your choice of parameters. Enable \ if you don't seem to be getting what you expected." endparam param showdim caption = "Show fractal dimension" default = false hint = "Tells you the fractal dimension of your fractal provided that \ the fractal is purely affine - the fractal dimension is not \ calculated when using any non-linear modifications." endparam param showtrans caption = "Show final transforms" default = false hint = "Gives you the final affine transforms as applied to produce your \ fractal after all adjustments. If possible the transforms are \ given in both float (2*2 matrix and translation) and complex \ (multplier and translation) forms. Note that transforms with \ non-linear modifiers will not be displayed." endparam heading caption = "Render control" endheading param version caption = "Formula version" enum = "1.0" "1.1" "1.2" "1.3" default = 3 hint = "Provided to help ensure future compatibility. Note that in version \ 1.3 the maximum value for 'Max. depth' has been reduced to 500 so \ in exceptional cases where you have an older parameter file for \ which the value was set higher than this you should change \ 'Max. depth' on affected layers to 500 after loading the UPR." endparam param pmode caption = "Float power mode" enum = "Original" "real(z^p)" "Negate" default = 1 hint = "A power is allowed in the non-linear float modifications. The \ problem with this is that say -1.56^2.56 gives a complex result. \ You can choose to either have the power calculation done in UFs \ standard mode which always takes the absolute value of the base, \ or have the calculation done in complex mode and the float result \ taken as the real part, or have the calculation done normally for \ positive base values and as -(abs(x)^p) for negative base values. \ Using UFs standard mode means the result is always positive but of \ the correct magnitude. Using real(z^p) means the result is correct \ for all positive base values and for negative base values if the \ power is an integer but if the base is negative and the power is \ not an integer then the result's magnitude is incorrect. Using \ negate is the same as UFs standard mode except all negative bases \ produce a negative result whatever the power." endparam param depth caption = "Max. depth" default = 40 min = 1 max = 500 hint = "Controls the maximum detail level along with 'Min. scale'. \ The deeper you go, the more detail but the slower the calculation. \ Set this to 500 if you wish to control the detail \ using 'Min. scale' only. Note that the effective minimum for this \ with respect to colouring is 'Maximum Iterations' minus one. 'Max. \ depth' has no effect if 'Min. scale' is too large." endparam param scale caption = "Min. scale" default = 1.0 min = 0.0 hint = "Controls the maximum detail level along with 'Max. depth'. The \ smaller you set the value the more detail you will see but the \ slower the calculations. Set this value to zero if you wish to \ control the detail using 'Max. depth' only. It has no effect if \ 'Max depth' is set too low." endparam param fixmag caption = "Auto scale (mag)" default = false hint = "When enabled your 'Min. scale' value is automatically adjusted \ based on changes in magnification i.e. if you magnify a fractal \ then the minimum scale value is automatically reduced to increase \ the detail level. Note that such a change may result in changes in \ the colouring. Has no effect if the 'Max. depth' is too low." endparam param fixsize caption = "Auto scale (size)" default = false hint = "When enabled your 'Min. scale' value is automatically adjusted \ based on changes in the width and height of your fractal i.e. if \ you increase the pixel size of your image then the minimum scale \ value is automatically reduced to increase the detail level. Note \ that such a change may result in changes in the colouring. Has no \ effect if 'Max. depth' is too low." endparam param fixbail caption = "Auto scale (bailout)" default = false hint = "When enabled your 'Min. scale' value is automatically adjusted \ based on changes in the bailout value for your fractal i.e. if \ the bailout increases then the minimum scale \ value is automatically reduced to increase the detail level. Note \ that such a change may result in changes in the colouring. Has no \ effect if 'Max. depth' is too low." endparam param bailout caption = "Bailout Method" enum = "Auto" "User-specified" default = 0 hint = "When using 'Auto' the formula attempts to find the best centre \ and radius for bailout testing. 'User-specified' lets you provide \ a centre and radius instead. 'Auto' still has a user adjustment \ since the method is only approximate." visible = @version<2 || ((@mod0==0 || (@mix0==0.0 && @mod0!=1)) \ && (@mod1==0 || (@mix1==0.0 && @mod1!=1)) \ && (@mod2==0 || (@mix2==0.0 && @mod2!=1)) \ && (@mod3==0 || (@mix3==0.0 && @mod3!=1)) \ && (@mod4==0 || (@mix4==0.0 && @mod4!=1)) \ && (@mod5==0 || (@mix5==0.0 && @mod5!=1)) \ && (@mod6==0 || (@mix6==0.0 && @mod6!=1)) \ && (@mod7==0 || (@mix7==0.0 && @mod7!=1)) \ && (@mod8==0 || (@mix8==0.0 && @mod8!=1)) \ && (@mod9==0 || (@mix9==0.0 && @mod9!=1)) \ && (@mod10==0 || (@mix10==0.0 && @mod10!=1)) \ && (@mod11==0 || (@mix11==0.0 && @mod11!=1)) \ && (@mod12==0 || (@mix12==0.0 && @mod12!=1)) \ && (@mod13==0 || (@mix13==0.0 && @mod13!=1)) \ && (@mod14==0 || (@mix14==0.0 && @mod14!=1)) \ && (@mod15==0 || (@mix15==0.0 && @mod15!=1))) endparam param bail caption = "Bailout adjustment" default = 1.0 min = 0.0 hint = "The formula attempts to find the most optimum circle containing \ the whole fractal. This circle is used for testing to see if a \ point is 'on' the fractal and the test calculation involves an \ approximate bailout radius. The default adjustment of 1.0 should \ work in most cases but for some fractals you may need to increase \ the value (if parts of the fractal seem to be missing i.e. \ rendered as 'Outside' when they should be 'Inside'). Also in \ some cases you may be able to reduce the value slightly to improve \ rendering times, but reduce it too much and parts of the fractal \ that should be 'Inside' will appear as 'Outside'. Note that \ increasing the bailout will reduce the detail level." visible = @bailout==0 && (@version<2 || \ ( (@mod0==0 || (@mix0==0.0 && @mod0!=1)) \ && (@mod1==0 || (@mix1==0.0 && @mod1!=1)) \ && (@mod2==0 || (@mix2==0.0 && @mod2!=1)) \ && (@mod3==0 || (@mix3==0.0 && @mod3!=1)) \ && (@mod4==0 || (@mix4==0.0 && @mod4!=1)) \ && (@mod5==0 || (@mix5==0.0 && @mod5!=1)) \ && (@mod6==0 || (@mix6==0.0 && @mod6!=1)) \ && (@mod7==0 || (@mix7==0.0 && @mod7!=1)) \ && (@mod8==0 || (@mix8==0.0 && @mod8!=1)) \ && (@mod9==0 || (@mix9==0.0 && @mod9!=1)) \ && (@mod10==0 || (@mix10==0.0 && @mod10!=1)) \ && (@mod11==0 || (@mix11==0.0 && @mod11!=1)) \ && (@mod12==0 || (@mix12==0.0 && @mod12!=1)) \ && (@mod13==0 || (@mix13==0.0 && @mod13!=1)) \ && (@mod14==0 || (@mix14==0.0 && @mod14!=1)) \ && (@mod15==0 || (@mix15==0.0 && @mod15!=1)))) endparam param fcentre caption = "Fractal centre" default = (0,0) hint = "The centre of the fractal for bailout testing purposes. If \ badly chosen then areas of the fractal that should be 'Inside' \ will appear as 'Outside'. Note that the centre you specify may not \ be best at the 'centre of gravity' of the fractal, rather it \ should be chosen in such a way that the smallest circle possible \ contains the whole fractal. For instance with the Cesaro Sweep \ triangle the chosen centre should not be the centre of the \ triangle but the centre of the longest side instead." visible = @bailout==1 || (@version>1 && \ !((@mod0==0 || (@mix0==0.0 && @mod0!=1)) \ && (@mod1==0 || (@mix1==0.0 && @mod1!=1)) \ && (@mod2==0 || (@mix2==0.0 && @mod2!=1)) \ && (@mod3==0 || (@mix3==0.0 && @mod3!=1)) \ && (@mod4==0 || (@mix4==0.0 && @mod4!=1)) \ && (@mod5==0 || (@mix5==0.0 && @mod5!=1)) \ && (@mod6==0 || (@mix6==0.0 && @mod6!=1)) \ && (@mod7==0 || (@mix7==0.0 && @mod7!=1)) \ && (@mod8==0 || (@mix8==0.0 && @mod8!=1)) \ && (@mod9==0 || (@mix9==0.0 && @mod9!=1)) \ && (@mod10==0 || (@mix10==0.0 && @mod10!=1)) \ && (@mod11==0 || (@mix11==0.0 && @mod11!=1)) \ && (@mod12==0 || (@mix12==0.0 && @mod12!=1)) \ && (@mod13==0 || (@mix13==0.0 && @mod13!=1)) \ && (@mod14==0 || (@mix14==0.0 && @mod14!=1)) \ && (@mod15==0 || (@mix15==0.0 && @mod15!=1)))) endparam param bradius caption = "Bailout radius" default = 4.0 min = 0.0 hint = "This is the radius of the circle centred at 'Fractal centre' to \ be used for bailout testing. If the radius is too small then parts \ of the fractal will appear as 'Outside' when they should be \ 'Inside'. If set too high then the fractal will take longer than \ necessary to calculate. Note that increasing the bailout will \ reduce the detail level." visible = @bailout==1 || (@version>1 && \ !((@mod0==0 || (@mix0==0.0 && @mod0!=1)) \ && (@mod1==0 || (@mix1==0.0 && @mod1!=1)) \ && (@mod2==0 || (@mix2==0.0 && @mod2!=1)) \ && (@mod3==0 || (@mix3==0.0 && @mod3!=1)) \ && (@mod4==0 || (@mix4==0.0 && @mod4!=1)) \ && (@mod5==0 || (@mix5==0.0 && @mod5!=1)) \ && (@mod6==0 || (@mix6==0.0 && @mod6!=1)) \ && (@mod7==0 || (@mix7==0.0 && @mod7!=1)) \ && (@mod8==0 || (@mix8==0.0 && @mod8!=1)) \ && (@mod9==0 || (@mix9==0.0 && @mod9!=1)) \ && (@mod10==0 || (@mix10==0.0 && @mod10!=1)) \ && (@mod11==0 || (@mix11==0.0 && @mod11!=1)) \ && (@mod12==0 || (@mix12==0.0 && @mod12!=1)) \ && (@mod13==0 || (@mix13==0.0 && @mod13!=1)) \ && (@mod14==0 || (@mix14==0.0 && @mod14!=1)) \ && (@mod15==0 || (@mix15==0.0 && @mod15!=1)))) endparam param fixdim caption = "Specify fractal dimension" default = false hint = "Allows you to specify a fractal dimension for your fractal, when \ enabled the transform scales are adjusted so that the fractal's \ dimension matches 'Fractal dimension'. Only works correctly when \ all the transforms are affine i.e. when none use non-linear \ modifications. Also the calculation ignores any RIFS flags and is \ based on the fractal dimension when all combinations are allowed." visible = @version<2 || ((@mod0==0 || (@mix0==0.0 && @mod0!=1)) \ && (@mod1==0 || (@mix1==0.0 && @mod1!=1)) \ && (@mod2==0 || (@mix2==0.0 && @mod2!=1)) \ && (@mod3==0 || (@mix3==0.0 && @mod3!=1)) \ && (@mod4==0 || (@mix4==0.0 && @mod4!=1)) \ && (@mod5==0 || (@mix5==0.0 && @mod5!=1)) \ && (@mod6==0 || (@mix6==0.0 && @mod6!=1)) \ && (@mod7==0 || (@mix7==0.0 && @mod7!=1)) \ && (@mod8==0 || (@mix8==0.0 && @mod8!=1)) \ && (@mod9==0 || (@mix9==0.0 && @mod9!=1)) \ && (@mod10==0 || (@mix10==0.0 && @mod10!=1)) \ && (@mod11==0 || (@mix11==0.0 && @mod11!=1)) \ && (@mod12==0 || (@mix12==0.0 && @mod12!=1)) \ && (@mod13==0 || (@mix13==0.0 && @mod13!=1)) \ && (@mod14==0 || (@mix14==0.0 && @mod14!=1)) \ && (@mod15==0 || (@mix15==0.0 && @mod15!=1))) endparam param dim caption = "Fractal dimension" default = 2.0 min = 0.0 hint = "The greater the dimension the larger and more solid the 'inside' \ area becomes." visible = @fixdim && (@version<2 || \ ((@mod0==0 || (@mix0==0.0 && @mod0!=1)) \ && (@mod1==0 || (@mix1==0.0 && @mod1!=1)) \ && (@mod2==0 || (@mix2==0.0 && @mod2!=1)) \ && (@mod3==0 || (@mix3==0.0 && @mod3!=1)) \ && (@mod4==0 || (@mix4==0.0 && @mod4!=1)) \ && (@mod5==0 || (@mix5==0.0 && @mod5!=1)) \ && (@mod6==0 || (@mix6==0.0 && @mod6!=1)) \ && (@mod7==0 || (@mix7==0.0 && @mod7!=1)) \ && (@mod8==0 || (@mix8==0.0 && @mod8!=1)) \ && (@mod9==0 || (@mix9==0.0 && @mod9!=1)) \ && (@mod10==0 || (@mix10==0.0 && @mod10!=1)) \ && (@mod11==0 || (@mix11==0.0 && @mod11!=1)) \ && (@mod12==0 || (@mix12==0.0 && @mod12!=1)) \ && (@mod13==0 || (@mix13==0.0 && @mod13!=1)) \ && (@mod14==0 || (@mix14==0.0 && @mod14!=1)) \ && (@mod15==0 || (@mix15==0.0 && @mod15!=1)))) endparam param adjust caption = "Global bailout adjust" default = true hint = "When enabled your specified 'Fractal centre' and 'Bailout radius' \ are automatically adjusted according to any specified 'Global \ transform'. However the values may need adjusting if your global \ transform introduces significant skewing or stretching." visible = @bailout==1 || (@version>1 && \ !((@mod0==0 || (@mix0==0.0 && @mod0!=1)) \ && (@mod1==0 || (@mix1==0.0 && @mod1!=1)) \ && (@mod2==0 || (@mix2==0.0 && @mod2!=1)) \ && (@mod3==0 || (@mix3==0.0 && @mod3!=1)) \ && (@mod4==0 || (@mix4==0.0 && @mod4!=1)) \ && (@mod5==0 || (@mix5==0.0 && @mod5!=1)) \ && (@mod6==0 || (@mix6==0.0 && @mod6!=1)) \ && (@mod7==0 || (@mix7==0.0 && @mod7!=1)) \ && (@mod8==0 || (@mix8==0.0 && @mod8!=1)) \ && (@mod9==0 || (@mix9==0.0 && @mod9!=1)) \ && (@mod10==0 || (@mix10==0.0 && @mod10!=1)) \ && (@mod11==0 || (@mix11==0.0 && @mod11!=1)) \ && (@mod12==0 || (@mix12==0.0 && @mod12!=1)) \ && (@mod13==0 || (@mix13==0.0 && @mod13!=1)) \ && (@mod14==0 || (@mix14==0.0 && @mod14!=1)) \ && (@mod15==0 || (@mix15==0.0 && @mod15!=1)))) endparam heading caption = "Colouring" endheading param colmode caption = "Colour control" enum = "Normal" "All 'Outside'" "All 'Inside'" "Flip" default = 0 hint = "Normally points 'on' the fractal are passed to the 'Inside' \ colouring formula and the rest passed to the 'Outside' colouring \ formula but you may choose to change this. Note that 'Distance \ Estimator' is only effective on the true 'outside' of a fractal." endparam param colouro caption = "Outside Colouring" enum = "Distance Estimator" "Genetic" "Transform vals." "Probability" \ "UF colouring" default = 4 hint = "'Distance Estimator' is a version of distance estimating for IFS \ fractals. It works best with higher bailout values than \ normal. 'Genetic' simply colours based on the genetic code for \ each pixel on the fractal i.e. the transforms that take you to \ that location. 'Transform vals.' lets you use colouring values for \ each transform which are then combined again based on the genetics \ but in such a way that you can control how much effect the older \ history has on the colouring by adjusting the 'Fade' value. \ 'Probability' colours based on the average probability for each \ point. For 'Genetic', 'Transform Vals.' and 'Probability' the \ values are normalised to range from 0 to 1 and for these and for \ 'Distance Estimator' you should use an 'Outside' colouring that \ colours based on real(z) or magnitude(z) such as LKM-Basic or \ MMF-3D colouring. 'UF colouring' simply lets you use any standard \ 'Outside' colouring and you can control the colouring detail by \ adjusting 'Maximum Iterations'." visible = @colmode!=2 endparam param oldcodeo caption = "Codes to skip" default = 0 min = 0 hint = "Ignores this many of the most recent codes giving detail from the \ older transform history of the point. The more codes skipped, the \ busier the colouring will be. The maximum effective number to skip \ is 'Max. depth' minus one." visible = @colouro==1 && @colmode!=2 endparam param numcodeso caption = "Codes to use" default = 20 min = 1 hint = "Gives you control over how much of the genetic history is used in \ the colour mix. The maximum effective number is 'Max. depth' minus \ one minus 'Codes to skip' (or in any case around 32 for a 2 \ transform fractal and less for fractals with more transforms)." visible = @colouro==1 && @colmode!=2 endparam param fadeo caption = "Fade" default = 0.8 min = 0.0 max = 1.0 hint = "The closer to zero you set this the less the effect of older \ genetic codes, the closer to 1 the greater the effect of older \ genetic codes." visible = @colouro==2 && @colmode!=2 endparam param spo caption = "Use product ?" default = false hint = "Normally the faded sum is used, enable to use the faded product \ instead." visible = @colouro==2 && @colmode!=2 endparam param oldcode1o caption = "Codes to skip" default = 0 min = 0 hint = "Ignores this many of the most recent codes giving detail from the \ older transform history of the point. The more codes skipped, the \ busier the colouring will be. The maximum effective number to skip \ is 'Max. depth' minus one." visible = @colouro==2 && @colmode!=2 endparam param numcodes1o caption = "Codes to use" default = 20 min = 1 hint = "Gives you control over how much of the genetic history is used in \ the colour mix. The maximum effective number is 'Max. depth' minus \ one minus 'Codes to skip' (or in any case around 32 or less)." visible = @colouro==2 && @colmode!=2 endparam param pdeptho caption = "Probability depth" default = 20 min = 1 hint = "Specifies the maximum depth to go into the history when \ calculating the probability colouring. The effective maximum is \ 'Max. depth'." visible = @colouro==3 && @colmode!=2 && @version==0 endparam param oldcodepo caption = "Depths to skip" default = 0 min = 0 hint = "Ignores this many of the most recent probabilities giving detail \ from the older transform history of the point. The more codes \ skipped, the busier the colouring will be. The maximum effective \ number to skip is 'Max. depth' minus one." visible = @colouro==3 && @colmode!=2 && @version>0 endparam param numcodespo caption = "Depths to use" default = 20 min = 1 hint = "Gives you control over how much of the genetic history is used in \ the probability mix. The maximum effective number is 'Max. depth' \ minus one minus 'Depths to skip'." visible = @colouro==3 && @colmode!=2 && @version>0 endparam param fadepo caption = "Probability Fade" default = 0.8 min = 0.0 max = 1.0 hint = "The closer to zero you set this the less the effect of older \ probabilities, the closer to 1 the greater the effect of older \ probabilities." visible = @colouro==3 && @colmode!=2 && @version>0 endparam param sppo caption = "Use product ?" default = false hint = "Normally the faded sum is used, enable to use the faded product \ instead." visible = @colouro==3 && @colmode!=2 && @version>0 endparam param tco0 caption = "Outside colour 0" default = 1.0 min = 1.0 hint = "The colour value for 'Transform vals.' 'Outside' colouring." visible = @colouro==2 && @colmode!=2 && @use0 && (@tv==0 || @tv==1) endparam param tco1 caption = "Outside colour 1" default = 2.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use1 && (@tv==0 || @tv==2) endparam param tco2 caption = "Outside colour 2" default = 3.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use2 && (@tv==0 || @tv==3) && @at>0 endparam param tco3 caption = "Outside colour 3" default = 4.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use3 && (@tv==0 || @tv==4) && @at>1 endparam param tco4 caption = "Outside colour 4" default = 5.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use4 && (@tv==0 || @tv==5) && @at>2 endparam param tco5 caption = "Outside colour 5" default = 6.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use5 && (@tv==0 || @tv==6) && @at>3 endparam param tco6 caption = "Outside colour 6" default = 7.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use6 && (@tv==0 || @tv==7) && @at>4 endparam param tco7 caption = "Outside colour 7" default = 8.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use7 && (@tv==0 || @tv==8) && @at>5 endparam param tco8 caption = "Outside colour 8" default = 9.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use8 && (@tv==0 || @tv==9) && @at>6 endparam param tco9 caption = "Outside colour 9" default = 10.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use9 && (@tv==0 || @tv==10) \ && @at>7 endparam param tco10 caption = "Outside colour 10" default = 9.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use10 && (@tv==0 || @tv==11) \ && @at>8 endparam param tco11 caption = "Outside colour 11" default = 12.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use11 && (@tv==0 || @tv==12) \ && @at>9 endparam param tco12 caption = "Outside colour 12" default = 13.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use12 && (@tv==0 || @tv==13) \ && @at>10 endparam param tco13 caption = "Outside colour 13" default = 14.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use13 && (@tv==0 || @tv==14) \ && @at>11 endparam param tco14 caption = "Outside colour 14" default = 15.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use14 && (@tv==0 || @tv==15) \ && @at>12 endparam param tco15 caption = "Outside colour 15" default = 16.0 min = 1.0 visible = @colouro==2 && @colmode!=2 && @use15 && (@tv==0 || @tv==16) \ && @at>13 endparam param colour caption = "Inside Colouring" enum = "Genetic" "Transform vals." "Probability" "UF colouring" default = 3 hint = "'Genetic' simply colours based on the genetic code for each pixel \ on the fractal i.e. the transforms that take you to that location. \ 'Transform vals.' lets you use colouring values for each transform \ which are then combined again based on the genetics but in such a \ way that you can control how much effect the older history has on \ the colouring by adjusting the 'Fade' value. 'Probability' colours \ based on the average probability for each point. For 'Genetic', \ 'Transform Vals.' and 'Probability' the values are normalised to \ range from 0 to 1 and you should use an 'Inside' colouring that \ colours based on real(z) or magnitude(z) such as LKM-Basic or \ MMF-3D colouring. 'UF colouring' simply lets you use any standard \ 'Inside' colouring and you can control the colouring detail by \ adjusting 'Maximum Iterations'." visible = @colmode!=1 endparam param oldcode caption = "Codes to skip" default = 0 min = 0 hint = "Ignores this many of the most recent codes giving detail from the \ older transform history of the point. The more codes skipped, the \ busier the colouring will be. The maximum effective number to skip \ is 'Max. depth' minus one." visible = @colour==0 && @colmode!=1 endparam param numcodes caption = "Codes to use" default = 20 min = 1 hint = "Gives you control over how much of the genetic history is used in \ the colour mix. The maximum effective number is 'Max. depth' minus \ one minus 'Codes to skip' (or in any case around 32 for a 2 \ transform fractal and less for fractals with more transforms)." visible = @colour==0 && @colmode!=1 endparam param fade caption = "Fade" default = 0.8 min = 0.0 max = 1.0 hint = "The closer to zero you set this the less the effect of older \ genetic codes, the closer to 1 the greater the effect of older \ genetic codes." visible = @colour==1 && @colmode!=1 endparam param sp caption = "Use product ?" default = false hint = "Normally the faded sum is used, enable to use the faded product \ instead." visible = @colour==1 && @colmode!=1 endparam param oldcode1 caption = "Codes to skip" default = 0 min = 0 hint = "Ignores this many of the most recent codes giving detail from the \ older transform history of the point. The more codes skipped, the \ busier the colouring will be. The maximum effective number to skip \ is 'Max. depth' minus one." visible = @colour==1 && @colmode!=1 endparam param numcodes1 caption = "Codes to use" default = 20 min = 1 hint = "Gives you control over how much of the genetic history is used in \ the colour mix. The maximum effective number is 'Max. depth' minus \ one minus 'Codes to skip' (or in any case around 32 or less)." visible = @colour==1 && @colmode!=1 endparam param pdepth caption = "Probability depth" default = 20 min = 1 hint = "Specifies the maximum depth to go into the history when \ calculating the probability colouring. The effective maximum is \ 'Max. depth'." visible = @colour==2 && @colmode!=1 && @version==0 endparam param oldcodep caption = "Depths to skip" default = 0 min = 0 hint = "Ignores this many of the most recent probabilities giving detail \ from the older transform history of the point. The more \ probabilities skipped, the busier the colouring will be. The \ maximum effective number to skip is 'Max. depth' minus one." visible = @colour==2 && @colmode!=1 && @version>0 endparam param numcodesp caption = "Depths to use" default = 20 min = 1 hint = "Gives you control over how much of the genetic history is used in \ the probability mix. The maximum effective number is 'Max. depth' \ minus one minus 'Depths to skip'." visible = @colour==2 && @colmode!=1 && @version>0 endparam param fadep caption = "Probability Fade" default = 0.8 min = 0.0 max = 1.0 hint = "The closer to zero you set this the less the effect of older \ probabilities, the closer to 1 the greater the effect of older \ probabilities." visible = @colour==2 && @colmode!=1 && @version>0 endparam param spp caption = "Use product ?" default = false hint = "Normally the faded sum is used, enable to use the faded product \ instead." visible = @colour==2 && @colmode!=1 && @version>0 endparam param tc0 caption = "Inside colour 0" default = 1.0 min = 1.0 hint = "The colour value for 'Transform vals.' 'Inside' colouring." visible = @colour==1 && @colmode!=1 && @use0 && (@tv==0 || @tv==1) endparam param tc1 caption = "Inside colour 1" default = 2.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use1 && (@tv==0 || @tv==2) endparam param tc2 caption = "Inside colour 2" default = 3.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use2 && (@tv==0 || @tv==3) && @at>0 endparam param tc3 caption = "Inside colour 3" default = 4.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use3 && (@tv==0 || @tv==4) && @at>1 endparam param tc4 caption = "Inside colour 4" default = 5.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use4 && (@tv==0 || @tv==5) && @at>2 endparam param tc5 caption = "Inside colour 5" default = 6.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use5 && (@tv==0 || @tv==6) && @at>3 endparam param tc6 caption = "Inside colour 6" default = 7.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use6 && (@tv==0 || @tv==7) && @at>4 endparam param tc7 caption = "Inside colour 7" default = 8.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use7 && (@tv==0 || @tv==8) && @at>5 endparam param tc8 caption = "Inside colour 8" default = 9.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use8 && (@tv==0 || @tv==9) && @at>6 endparam param tc9 caption = "Inside colour 9" default = 10.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use9 && (@tv==0 || @tv==10) && @at>7 endparam param tc10 caption = "Inside colour 10" default = 9.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use10 && (@tv==0 || @tv==11) \ && @at>8 endparam param tc11 caption = "Inside colour 11" default = 12.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use11 && (@tv==0 || @tv==12) \ && @at>9 endparam param tc12 caption = "Inside colour 12" default = 13.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use12 && (@tv==0 || @tv==13) \ && @at>10 endparam param tc13 caption = "Inside colour 13" default = 14.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use13 && (@tv==0 || @tv==14) \ && @at>11 endparam param tc14 caption = "Inside colour 14" default = 15.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use14 && (@tv==0 || @tv==15) \ && @at>12 endparam param tc15 caption = "Inside colour 15" default = 16.0 min = 1.0 visible = @colour==1 && @colmode!=1 && @use15 && (@tv==0 || @tv==16) \ && @at>13 endparam param tv0 caption = "Sort code 0" default = 0 min = 0 hint = "The sort codes control the order in which the transforms are \ executed which affects which genetic code has priority in areas \ of overlap. The smaller the sort code the greater the priority \ given to the transform in the colouring. If two sort codes are the \ same then priority is given to the smallest transform number." visible = @use0 && (@tv==0 || @tv==1) endparam param tv1 caption = "Sort code 1" default = 1 min = 0 visible = @use1 && (@tv==0 || @tv==2) endparam param tv2 caption = "Sort code 2" default = 2 min = 0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 endparam param tv3 caption = "Sort code 3" default = 3 min = 0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 endparam param tv4 caption = "Sort code 4" default = 4 min = 0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 endparam param tv5 caption = "Sort code 5" default = 5 min = 0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 endparam param tv6 caption = "Sort code 6" default = 6 min = 0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 endparam param tv7 caption = "Sort code 7" default = 7 min = 0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 endparam param tv8 caption = "Sort code 8" default = 8 min = 0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 endparam param tv9 caption = "Sort code 9" default = 9 min = 0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 endparam param tv10 caption = "Sort code 10" default = 10 min = 0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 endparam param tv11 caption = "Sort code 11" default = 11 min = 0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 endparam param tv12 caption = "Sort code 12" default = 12 min = 0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 endparam param tv13 caption = "Sort code 13" default = 13 min = 0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 endparam param tv14 caption = "Sort code 14" default = 14 min = 0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 endparam param tv15 caption = "Sort code 15" default = 15 min = 0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 endparam heading caption = "Transformation control" text = "The transformation parameters control the shape and size of the \ fractal." endheading heading caption = "Transformation sort order (open up to modify)" text = "This section allows you to specify the order in which \ the various transform parameters are combined, if you don't really \ care just leave it hidden and ignore it. Note that the rotation, \ scale and complex multiplier are always combined as a \ single transform - the 'Main transform'. Also note that the \ translation is always applied last. If two or more transform types \ have the same sort code then the default order applies to them \ i.e. they would be sorted as in the order of appearance below." expanded = false endheading param mainpri caption = "Main transform code" default = 2 hint = "This is the sorting priority of the main rotations/scalings for \ your fractal. It is used with the other codes to decide on the \ order in which the various transforms are combined to produce \ the actual transform used. The transform parameters/section \ with the lowest sort code is applied to the points first." endparam param xstpri caption = "Stretch x code" default = 3 hint = "This is the sorting priority of the stretchings in x for \ your fractal. It is used with the other codes to decide on the \ order in which the various transforms are combined to produce \ the actual transform used. The transform parameters/section \ with the lowest sort code is applied to the points first." endparam param ystpri caption = "Stretch y code" default = 4 hint = "This is the sorting priority of the stretchings in y for \ your fractal. It is used with the other codes to decide on the \ order in which the various transforms are combined to produce \ the actual transform used. The transform parameters/section \ with the lowest sort code is applied to the points first." endparam param xshpri caption = "Skew x code" default = 0 hint = "This is the sorting priority of the skewings in x for \ your fractal. It is used with the other codes to decide on the \ order in which the various transforms are combined to produce \ the actual transform used. The transform parameters/section \ with the lowest sort code is applied to the points first." endparam param yshpri caption = "Skew y code" default = 1 hint = "This is the sorting priority of the skewings in y for \ your fractal. It is used with the other codes to decide on the \ order in which the various transforms are combined to produce \ the actual transform used. The transform parameters/section \ with the lowest sort code is applied to the points first." endparam param genpri caption = "2*2 matrix code" default = 5 hint = "This is the sorting priority of the general 2*2 matrices for \ your fractal. It is used with the other codes to decide on the \ order in which the various transforms are combined to produce \ the actual transform used. The transform parameters/section \ with the lowest sort code is applied to the points first." endparam heading caption = "Global deformation" text = "Applied to all the transforms to deform the fractal. For example \ changing the rotation can change the Harter-Heighway dragon into \ the Levy dragon or Cesaro Sweep. Has no effect on transforms that \ are entirely non-linear." endheading param used caption = "Apply global deformation ?" default = false endparam param rotd caption = "Rotation (degrees)" default = 0.0 hint = "This angle is simply added to the rotation angles of all the \ normal transforms." visible = @used endparam param scaled caption = "Scale" default = 1.0 hint = "All the normal transform scales are multiplied by this value. \ Note that results will not be great if the combined scaling for \ one of the transforms becomes >=1." visible = @used endparam param gend caption = "Complex multiplier" default = (1,0) hint = "This is a complex value that produces both scaling and rotation. \ All the normal transform scaling and rotation values are adjusted \ by the relevant scale and rotation." visible = @used endparam param offsetd caption = "Translation" default = (0,0) hint = "This offset is simply added to the translations for all the \ normal transforms." visible = @used endparam param fltd caption = "Deform skew etc. ?" default = false hint = "Enable if you wish to add a deformation other than rotation, \ scaling and translation. Note that if one of the normal transforms \ does not already use these extra options then the values here will \ deform from the default values. Also note that adding other \ deformations will increase render times." visible = @used endparam param xscaled caption = "Stretch x" default = 1.0 hint = "The normal transform stretch in x value is multiplied by this." visible = @used && @fltd endparam param yscaled caption = "Stretch y" default = 1.0 hint = "The normal transform stretch in y value is multiplied by this." visible = @used && @fltd endparam param xsheard caption = "Skew x (degrees)" default = 0.0 hint = "Added to the normal transform x skew value. Note that combined \ shears of +/-90 degrees will make your fractal disappear." visible = @used && @fltd endparam param ysheard caption = "Skew y (degrees)" default = 0.0 hint = "Added to the normal transform y skew value. Note that combined \ skews of +/-90 degrees will make your fractal disappear." visible = @used && @fltd endparam param trowd caption = "2*2 Matrix top row" default = (1,0) hint = "The top row of a general 2*2 matrix to be used to deform the \ normal transforms." visible = @used && @fltd endparam param browd caption = "2*2 Matrix bottom row" default = (0,1) hint = "The bottom row of a general 2*2 matrix to be used to deform the \ normal transforms." visible = @used && @fltd endparam heading caption = "Global transform" text = "The parameters in this section are applied to all the transforms \ for the fractal. They allow you to manipulate the fractal without \ changing its basic character. Has no effect on transforms that are \ entirely non-linear." endheading param uset caption = "Apply global transform ?" default = false endparam param rott caption = "Rotation (degrees)" default = 0.0 hint = "Rotates the entire fractal." visible = @uset endparam param scalet caption = "Scale" default = 1.0 hint = "Scales the entire fractal." visible = @uset endparam param gent caption = "Complex multiplier" default = (1,0) hint = "This is a complex value that produces both scaling and rotation \ which is combined with the 'Rotation' and 'Scale' values." visible = @uset endparam param offsett caption = "Translation" default = (0,0) hint = "Moves the entire fractal." visible = @uset endparam param fltt caption = "Global skew etc. ?" default = false hint = "Enable if you wish to add global transformations other than \ rotation, scaling and translation. Note that adding other \ transformations will increase render times." visible = @uset endparam param xscalet caption = "Stretch x" default = 1.0 hint = "Stretches the whole fractal in x." visible = @uset && @fltt endparam param yscalet caption = "Stretch y" default = 1.0 hint = "Stretches the whole fractal in y." visible = @uset && @fltt endparam param xsheart caption = "Skew x (degrees)" default = 0.0 hint = "Skews the whole fractal in x. Note that a value of +/-90 \ degrees will make your fractal disappear." visible = @uset && @fltt endparam param ysheart caption = "Skew y (degrees)" default = 0.0 hint = "Skews the whole fractal in y. Note that a value of +/-90 \ degrees will make your fractal disappear." visible = @uset && @fltt endparam param trowt caption = "2*2 Matrix top row" default = (1,0) hint = "The top row of a general 2*2 matrix to be used to transform the \ whole fractal." visible = @uset && @fltt endparam param browt caption = "2*2 Matrix bottom row" default = (0,1) hint = "The bottom row of a general 2*2 matrix to be used to transform the \ whole fractal." visible = @uset && @fltt endparam heading caption = "Individual transforms" text = "The transforms that produce the basic fractal, adjusting them \ changes the shape of the fractal, each one controls a main \ area and all corresponding sub-areas in the areas of the other \ transforms. Note that hints are only available for transform 0." endheading param useskips caption = "Use Depth Restrictions" default = false hint = "When enabled you can limit at what depths the individual \ transforms are enabled. This allows you to manipulate your fractal \ in ways not possible using plain RIFS." endparam param at caption = "# active transforms" enum = "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" \ "14" "15" "16" ;"17" "18" "19" "20" "21" "22" "23" "24" "25" "26" \ ;"27" "28" "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" \ ;"40" "41" "42" "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" \ ;"53" "54" "55" "56" "57" "58" "59" "60" "61" "62" "63" default = 0 hint = "Provided to keep the parameter section tidy." endparam param tv caption = "Show transform/s" enum = "All" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" \ "14" "15" ;"16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" \ ;"27" "28" "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" \ ;"40" "41" "42" "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" \ ;"53" "54" "55" "56" "57" "58" "59" "60" "61" "62" "63" default = 0 hint = "Provided to keep the parameter section tidy." endparam heading caption = "Transform 0" enabled = true visible = @tv==0 || @tv==1 endheading param use0 caption = "Apply transform 0 ?" default = true hint = "Use to enable/disable the transform." visible = @tv==0 || @tv==1 endparam param skip1mask1 caption = "Depth Mask 0-30" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 0 to \ 30. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 0, +2 masks depth 1, +4 masks depth \ 2, +8 masks depth 3, up to +1073741824 which masks depth 30." visible = @use0 && (@tv==0 || @tv==1) && @useskips endparam param skip1mask2 caption = "Depth Mask 31-61" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 31 to \ 61. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 31, +2 masks depth 32, +4 masks depth \ 33, +8 masks depth 34, up to +1073741824 which masks depth 61." visible = @use0 && (@tv==0 || @tv==1) && @useskips \ && @depth>30 endparam param skip1mask3 caption = "Depth Mask 62-92" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 62 to \ 92. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 62, +2 masks depth 63, +4 masks depth \ 64, +8 masks depth 65, up to +1073741824 which masks depth 92." visible = @use0 && (@tv==0 || @tv==1) && @useskips \ && @depth>61 endparam param skip1mask4 caption = "Depth Mask 93-123" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 93 to \ 123. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 93, +2 masks depth 94, +4 masks depth \ 95, +8 masks depth 96, up to +1073741824 which masks depth 123." visible = @use0 && (@tv==0 || @tv==1) && @useskips \ && @depth>92 endparam param skip1mask5 caption = "Depth Mask 124-154" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 124 \ to 154. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 124, +2 masks depth 125, +4 masks \ depth 126, +8 masks depth 127, up to +1073741824 which masks \ depth 154." visible = @use0 && (@tv==0 || @tv==1) && @useskips \ && @depth>123 endparam param skip1mask6 caption = "Depth Mask 155-185" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 155 \ to 185. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 155, +2 masks depth 156, +4 masks \ depth 157, +8 masks depth 158, up to +1073741824 which masks \ depth 185." visible = @use0 && (@tv==0 || @tv==1) && @useskips \ && @depth>154 endparam param skip1mask7 caption = "Depth Mask 186-216" default = 0 min = 0 hint = "This is the depth restriction mask for this transform depths 186 \ to 216. Add a binary value for each depth you wish to disable the \ transform on. +1 masks depth 186, +2 masks depth 187, +4 masks \ depth 188, +8 masks depth 189, up to +1073741824 which masks \ depth 216." visible = @use0 && (@tv==0 || @tv==1) && @useskips \ && @depth>185 endparam param rot0 caption = "Rotation 0 (degrees)" default = 45.0 hint = "The rotation for the transform." visible = @use0 && (@tv==0 || @tv==1) \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param scale0 caption = "Scale 0" default = 0.70710678118654752440084436210485 hint = "The overall scale for the transform." visible = @use0 && (@tv==0 || @tv==1) \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param gen0 caption = "Complex multiplier 0" default = (1,0) hint = "This is a complex value that produces both scaling and rotation \ which is combined with the 'Rotation' and 'Scale' values. It \ should be noted that the results won't be great if your combined \ scaling is >1.0 - so the magnitude of this value is best kept \ small i.e. <1.0, when using the explore tool that means keeping \ within a circle of radius 1 from the origin." visible = @use0 && (@tv==0 || @tv==1) \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param offset0 caption = "Translation 0" default = (1,0) hint = "The translation for the transform." visible = @use0 && (@tv==0 || @tv==1) \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param flt0 caption = "Transform 0 skew etc. ?" default = false hint = "Enable if you wish to add transformations other than rotation, \ scaling and translation to the transform. Note that adding other \ transformations will increase render times." visible = @use0 && (@tv==0 || @tv==1) \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param xscale0 caption = "Stretch x 0" default = 1.0 hint = "Stretching in x." visible = @use0 && (@tv==0 || @tv==1) && @flt0 \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param yscale0 caption = "Stretch y 0" default = 1.0 hint = "Stretching in y." visible = @use0 && (@tv==0 || @tv==1) && @flt0 \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param xshear0 caption = "Skew x 0 (degrees)" default = 0.0 hint = "Skewing in x. Note that skews of +/-90 degrees will \ effectively disable the transform." visible = @use0 && (@tv==0 || @tv==1) && @flt0 \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param yshear0 caption = "Skew y 0 (degrees)" default = 0.0 hint = "Skewing in y. Note that skews of +/-90 degrees will \ effectively disable the transform." visible = @use0 && (@tv==0 || @tv==1) && @flt0 \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param trow0 caption = "2*2 Matrix top row 0" default = (1,0) hint = "The top row of a general 2*2 matrix to be used as part of the \ transform." visible = @use0 && (@tv==0 || @tv==1) && @flt0 \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param brow0 caption = "2*2 Matrix bottom row 0" default = (0,1) hint = "The bottom row of a general 2*2 matrix to be used as part of the \ transform." visible = @use0 && (@tv==0 || @tv==1) && @flt0 \ && (@mod0==0 || @mod0==2 || @mix0<1.0) endparam param mod0 caption = "Non-linear method 0" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 hint = "You can choose to have the non-linear modifiers applied prior to \ the affine transform or after the affine transform or mixed with \ the affine transform. Which one you choose affects how the \ 'Non-linear amount' is applied. If you choose 'Pre-affine' then \ the non-linear function is applied first and the result stored, \ then the affine transform is applied to the result and the stored \ value and the new result are mixed such that if the 'Non-linear \ amount' is 1.0 then the value used is entirely the result of the \ non-linear calculation (i.e. in this case if the value is 1.0 then \ the affine transform is skipped completely). Similarly if you \ choose 'Post-affine' then the affine transform is applied first \ and the result stored, then the non-linear function is applied to \ the result and the stored value and new result are mixed such that \ if the 'Non-linear amount' is 1 then the value used is entirely \ from the non-linear calculation. If you choose 'Mixer' then both \ the affine and non-linear calculations are performed on the \ current value of z, again the results being mixed in a similar \ manner such that 1.0 means use entirely the non-linear value." visible = @use0 && (@tv==0 || @tv==1) endparam param mix0 caption = "Non-linear amount 0" default = 0.0 min = 0.0 max = 1.0 hint = "Allows you to add non-linear modifiers to the fractal, note that \ these will behave in the manner of normal escape-time fractals \ rather than as non-linear modifiers applied in convergent IFS such \ as flames. If you use non-linear modifiers then you'll need to \ supply a user-estimated scale value for the transform. The amount \ you specify can be from 0 (no non-linear modification) to 1 (full \ modification)." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 endparam param fnc0 caption = "Non-linear function 0" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 hint = "Simply choose the function you wish to use. The choices involving \ z are standard complex functions, those involving x and y treat \ the values as general 2D numbers." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) endparam param a0 caption = "Complex scale (a) 0" default = (1,0) hint = "The scale factor in the complex function (a)." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && (@fnc0<2 || @fnc0>=6) endparam param b0 caption = "Complex constant (b) 0" default = (0,0) hint = "The additive constant in the complex function (b)." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && (@fnc0<2 || @fnc0>=6) endparam param pwr0 caption = "Complex power (p) 0" default = (2,0) hint = "The power/exponent in the complex function (p)." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && (@fnc0<2 || @fnc0>=6) endparam param cs0 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && @fnc0>=6 endparam param fn0 caption = "Complex function (fn) 0" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 hint = "The user-definable function in the complex function (fn)." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && (@fnc0<2 || @fnc0>=6) endparam param fp0 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && (@fnc0<2 || @fnc0>=6) endparam param ax0 caption = "x scale 0 (a)" default = 1.0 hint = "The scale factor for the x part of the 2D function." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && @fnc0>1 && @fnc0<6 endparam param bx0 caption = "x constant 0 (b)" default = 0.0 hint = "The additive constant for the x part of the 2D function." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && @fnc0>1 && @fnc0<6 endparam param pwrx0 caption = "x power 0 (p1)" default = 1.0 hint = "The power/exponent in the x part of the 2D function." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && @fnc0>1 && @fnc0<6 endparam param fnx0 caption = "x function 0 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 hint = "The user-definable function of x in the 2D function. Note that for \ asin and acos the fractional part of the x value is used, for \ acosh x values less than 0 have 1 subtracted from them and values \ greater than or equal to 0 have 1 added to them and for log the \ function used is actually log(1+abs(x))." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && @fnc0>1 && @fnc0<6 endparam param ay0 caption = "y scale 0 (c)" default = 1.0 hint = "The scale factor for the y part of the 2D function." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && @fnc0>1 && @fnc0<6 endparam param by0 caption = "y constant 0 (d)" default = 0.0 hint = "The additive constant for the y part of the 2D function." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && @fnc0>1 && @fnc0<6 endparam param pwry0 caption = "y power 0 (p2)" default = 1.0 hint = "The power/exponent in the y part of the 2D function." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && @fnc0>1 && @fnc0<6 endparam param fny0 caption = "y function 0 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 hint = "The user-definable function of y in the 2D function. Note that for \ asin and acos the fractional part of the y value is used, for \ acosh y values less than 0 have 1 subtracted from them and values \ greater than or equal to 0 have 1 added to them and for log the \ function used is actually log(1+abs(y))." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) && @fnc0>1 && @fnc0<6 endparam param sx0 caption = "Estimated scale 0" default = 0.5 min = 0.0 max = 1.0 hint = "When the non-linear modifier is active you must provide an \ estimate of the scale for the combined transform. In general the \ larger the area of your fractal that appears to be part of \ this transform then the larger you need to set the scale." visible = @use0 && (@tv==0 || @tv==1) && @mod0>0 \ && (@mix0>0.0 || @mod0==1) endparam param pf0 caption = "Phoenix 0" default = false hint = "When enabled the new z value is multiplied by the z value from \ the previous depth." visible = @use0 && (@tv==0 || @tv==1) endparam param user0 caption = "Use RIFS flags for transform 0 ?" default = false hint = "When enabled you can set flags to restrict which transform \ combinations are allowed, this allows you to control which areas \ are 'Inside' and 'Outside', effectively controlling the shape of \ the fractal." visible = @use0 && (@tv==0 || @tv==1) endparam param rifs0 caption = "RIFS 0 state" enum = "Normal" "Inverted" default = 0 hint = "This option allows you to control the meaning of the RIFS flags. \ Normally when the RIFS flag (such as '0 o 2 ?') is enabled it \ means that the relevant transform combination (such as 0 followed \ by 2) is allowed and if the RIFS flag is disabled then the \ transform combination is forbidden but you may reverse this state \ so that an enabled RIFS flag means that the relevant transform \ combination is forbidden and a disabled one means it is allowed." visible = @use0 && (@tv==0 || @tv==1) && @user0 endparam param rifs0_0 caption = "0 o 0 ?" default = true hint = "The state of this flag dictates whether transform 0 may be \ followed by transform 0 or not." visible = @use0 && (@tv==0 || @tv==1) && @user0 endparam param rifs0_1 caption = "0 o 1 ?" default = true hint = "The state of this flag dictates whether transform 0 may be \ followed by transform 1 or not." visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use1 endparam param rifs0_2 caption = "0 o 2 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use2 && @at>0 endparam param rifs0_3 caption = "0 o 3 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use3 && @at>1 endparam param rifs0_4 caption = "0 o 4 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use4 && @at>2 endparam param rifs0_5 caption = "0 o 5 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use5 && @at>3 endparam param rifs0_6 caption = "0 o 6 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use6 && @at>4 endparam param rifs0_7 caption = "0 o 7 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use7 && @at>5 endparam param rifs0_8 caption = "0 o 8 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use8 && @at>6 endparam param rifs0_9 caption = "0 o 9 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use9 && @at>7 endparam param rifs0_10 caption = "0 o 10 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use10 && @at>8 endparam param rifs0_11 caption = "0 o 11 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use11 && @at>9 endparam param rifs0_12 caption = "0 o 12 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use12 && @at>10 endparam param rifs0_13 caption = "0 o 13 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use13 && @at>11 endparam param rifs0_14 caption = "0 o 14 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use14 && @at>12 endparam param rifs0_15 caption = "0 o 15 ?" default = true visible = @use0 && (@tv==0 || @tv==1) && @user0 && @use15 && @at>13 endparam heading caption = "Transform 1" enabled = true visible = @tv==0 || @tv==2 endheading param use1 caption = "Apply transform 1 ?" default = true visible = @tv==0 || @tv==2 endparam param skip2mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use1 && (@tv==0 || @tv==2) && @useskips endparam param skip2mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use1 && (@tv==0 || @tv==2) && @useskips \ && @depth>30 endparam param skip2mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use1 && (@tv==0 || @tv==2) && @useskips \ && @depth>61 endparam param skip2mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use1 && (@tv==0 || @tv==2) && @useskips \ && @depth>92 endparam param skip2mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use1 && (@tv==0 || @tv==2) && @useskips \ && @depth>123 endparam param skip2mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use1 && (@tv==0 || @tv==2) && @useskips \ && @depth>154 endparam param skip2mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use1 && (@tv==0 || @tv==2) && @useskips \ && @depth>185 endparam param rot1 caption = "Rotation 1 (degrees)" default = 135.0 visible = @use1 && (@tv==0 || @tv==2) \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param scale1 caption = "Scale 1" default = 0.70710678118654752440084436210485 visible = @use1 && (@tv==0 || @tv==2) \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param gen1 caption = "Complex multiplier 1" default = (1,0) visible = @use1 && (@tv==0 || @tv==2) \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param offset1 caption = "Translation 1" default = (-1,0) visible = @use1 && (@tv==0 || @tv==2) \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param flt1 caption = "Transform 1 skew etc. ?" default = false visible = @use1 && (@tv==0 || @tv==2) \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param xscale1 caption = "Stretch x 1" default = 1.0 visible = @use1 && (@tv==0 || @tv==2) && @flt1 \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param yscale1 caption = "Stretch y 1" default = 1.0 visible = @use1 && (@tv==0 || @tv==2) && @flt1 \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param xshear1 caption = "Skew x 1 (degrees)" default = 0.0 visible = @use1 && (@tv==0 || @tv==2) && @flt1 \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param yshear1 caption = "Skew y 1 (degrees)" default = 0.0 visible = @use1 && (@tv==0 || @tv==2) && @flt1 \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param trow1 caption = "2*2 Matrix top row 1" default = (1,0) visible = @use1 && (@tv==0 || @tv==2) && @flt1 \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param brow1 caption = "2*2 Matrix bottom row 1" default = (0,1) visible = @use1 && (@tv==0 || @tv==2) && @flt1 \ && (@mod1==0 || @mod1==2 || @mix1<1.0) endparam param mod1 caption = "Non-linear method 1" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use1 && (@tv==0 || @tv==2) endparam param mix1 caption = "Non-linear amount 1" default = 0.0 min = 0.0 max = 1.0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 endparam param fnc1 caption = "Non-linear function 1" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) endparam param a1 caption = "Complex scale (a) 1" default = (1,0) visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && (@fnc1<2 || @fnc1>=6) endparam param b1 caption = "Complex constant (b) 1" default = (0,0) visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && (@fnc1<2 || @fnc1>=6) endparam param pwr1 caption = "Complex power (p) 1" default = (2,0) visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && (@fnc1<2 || @fnc1>=6) endparam param cs1 caption = "Second complex scale (c) 1" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && @fnc1>=6 endparam param fn1 caption = "Complex function (fn) 1" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && (@fnc1<2 || @fnc1>=6) endparam param fp1 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && (@fnc1<2 || @fnc1>=6) endparam param ax1 caption = "x scale 1 (a)" default = 1.0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && @fnc1>1 && @fnc1<6 endparam param bx1 caption = "x constant 1 (b)" default = 0.0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && @fnc1>1 && @fnc1<6 endparam param pwrx1 caption = "x power 1 (p1)" default = 1.0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && @fnc1>1 && @fnc1<6 endparam param fnx1 caption = "x function 1 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && @fnc1>1 && @fnc1<6 endparam param ay1 caption = "y scale 1 (c)" default = 1.0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && @fnc1>1 && @fnc1<6 endparam param by1 caption = "y constant 1 (d)" default = 0.0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && @fnc1>1 && @fnc1<6 endparam param pwry1 caption = "y power 1 (p2)" default = 1.0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && @fnc1>1 && @fnc1<6 endparam param fny1 caption = "y function 1 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) && @fnc1>1 && @fnc1<6 endparam param sx1 caption = "Estimated scale 1" default = 0.5 min = 0.0 max = 1.0 visible = @use1 && (@tv==0 || @tv==2) && @mod1>0 \ && (@mix1>0.0 || @mod1==1) endparam param pf1 caption = "Phoenix 1" default = false visible = @use1 && (@tv==0 || @tv==2) endparam param user1 caption = "Use RIFS flags for transform 1 ?" default = false visible = @use1 && (@tv==0 || @tv==2) endparam param rifs1 caption = "RIFS 1 state" enum = "Normal" "Inverted" default = 0 visible = @use1 && (@tv==0 || @tv==2) && @user1 endparam param rifs1_0 caption = "1 o 0 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use0 endparam param rifs1_1 caption = "1 o 1 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 endparam param rifs1_2 caption = "1 o 2 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use2 && @at>0 endparam param rifs1_3 caption = "1 o 3 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use3 && @at>1 endparam param rifs1_4 caption = "1 o 4 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use4 && @at>2 endparam param rifs1_5 caption = "1 o 5 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use5 && @at>3 endparam param rifs1_6 caption = "1 o 6 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use6 && @at>4 endparam param rifs1_7 caption = "1 o 7 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use7 && @at>5 endparam param rifs1_8 caption = "1 o 8 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use8 && @at>6 endparam param rifs1_9 caption = "1 o 9 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use9 && @at>7 endparam param rifs1_10 caption = "1 o 10 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use10 && @at>8 endparam param rifs1_11 caption = "1 o 11 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use11 && @at>9 endparam param rifs1_12 caption = "1 o 12 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use12 && @at>10 endparam param rifs1_13 caption = "1 o 13 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use13 && @at>11 endparam param rifs1_14 caption = "1 o 14 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use14 && @at>12 endparam param rifs1_15 caption = "1 o 15 ?" default = true visible = @use1 && (@tv==0 || @tv==2) && @user1 && @use15 && @at>13 endparam heading caption = "Transform 2" enabled = true visible = (@tv==0 || @tv==3) && @at>0 endheading param use2 caption = "Apply transform 2 ?" default = false visible = (@tv==0 || @tv==3) && @at>0 endparam param skip3mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use2 && (@tv==0 || @tv==3) && @useskips && @at>0 endparam param skip3mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use2 && (@tv==0 || @tv==3) && @useskips && @at>0 \ && @depth>30 endparam param skip3mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use2 && (@tv==0 || @tv==3) && @useskips && @at>0 \ && @depth>61 endparam param skip3mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use2 && (@tv==0 || @tv==3) && @useskips && @at>0 \ && @depth>92 endparam param skip3mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use2 && (@tv==0 || @tv==3) && @useskips && @at>0 \ && @depth>123 endparam param skip3mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use2 && (@tv==0 || @tv==3) && @useskips && @at>0 \ && @depth>154 endparam param skip3mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use2 && (@tv==0 || @tv==3) && @useskips && @at>0 \ && @depth>185 endparam param rot2 caption = "Rotation 2 (degrees)" default = 45.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param scale2 caption = "Scale 2" default = 0.70710678118654752440084436210485 visible = @use2 && (@tv==0 || @tv==3) && @at>0 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param gen2 caption = "Complex multiplier 2" default = (1,0) visible = @use2 && (@tv==0 || @tv==3) && @at>0 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param offset2 caption = "Translation 2" default = (1,0) visible = @use2 && (@tv==0 || @tv==3) && @at>0 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param flt2 caption = "Transform 2 skew etc. ?" default = false visible = @use2 && (@tv==0 || @tv==3) && @at>0 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param xscale2 caption = "Stretch x 2" default = 1.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @flt2 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param yscale2 caption = "Stretch y 2" default = 1.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @flt2 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param xshear2 caption = "Skew x 2 (degrees)" default = 0.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @flt2 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param yshear2 caption = "Skew y 2 (degrees)" default = 0.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @flt2 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param trow2 caption = "2*2 Matrix top row 2" default = (1,0) visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @flt2 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param brow2 caption = "2*2 Matrix bottom row 2" default = (0,1) visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @flt2 \ && (@mod2==0 || @mod2==2 || @mix2<1.0) endparam param mod2 caption = "Non-linear method 2" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 endparam param mix2 caption = "Non-linear amount 2" default = 0.0 min = 0.0 max = 1.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 endparam param fnc2 caption = "Non-linear function 2" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) endparam param a2 caption = "Complex scale (a) 2" default = (1,0) visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && (@fnc2<2 || @fnc2>=6) endparam param b2 caption = "Complex constant (b) 2" default = (0,0) visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && (@fnc2<2 || @fnc2>=6) endparam param pwr2 caption = "Complex power (p) 2" default = (2,0) visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && (@fnc2<2 || @fnc2>=6) endparam param cs2 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && @fnc2>=6 endparam param fn2 caption = "Complex function (fn) 2" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && (@fnc2<2 || @fnc2>=6) endparam param fp2 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && (@fnc2<2 || @fnc2>=6) endparam param ax2 caption = "x scale 2 (a)" default = 1.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && @fnc2>1 && @fnc2<6 endparam param bx2 caption = "x constant 2 (b)" default = 0.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && @fnc2>1 && @fnc2<6 endparam param pwrx2 caption = "x power 2 (p1)" default = 1.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && @fnc2>1 && @fnc2<6 endparam param fnx2 caption = "x function 2 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && @fnc2>1 && @fnc2<6 endparam param ay2 caption = "y scale 2 (c)" default = 1.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && @fnc2>1 && @fnc2<6 endparam param by2 caption = "y constant 2 (d)" default = 0.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && @fnc2>1 && @fnc2<6 endparam param pwry2 caption = "y power 2 (p2)" default = 1.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && @fnc2>1 && @fnc2<6 endparam param fny2 caption = "y function 2 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) && @fnc2>1 && @fnc2<6 endparam param sx2 caption = "Estimated scale 2" default = 0.5 min = 0.0 max = 1.0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @mod2>0 \ && (@mix2>0.0 || @mod2==1) endparam param pf2 caption = "Phoenix 2" default = false visible = @use2 && (@tv==0 || @tv==3) && @at>0 endparam param user2 caption = "Use RIFS flags for transform 2 ?" default = false visible = @use2 && (@tv==0 || @tv==3) && @at>0 endparam param rifs2 caption = "RIFS 2 state" enum = "Normal" "Inverted" default = 0 visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @user2 endparam param rifs2_0 caption = "2 o 0 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @user2 && @use0 endparam param rifs2_1 caption = "2 o 1 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @user2 && @use1 endparam param rifs2_2 caption = "2 o 2 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>0 && @user2 endparam param rifs2_3 caption = "2 o 3 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>1 && @user2 && @use3 endparam param rifs2_4 caption = "2 o 4 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>2 && @user2 && @use4 endparam param rifs2_5 caption = "2 o 5 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>3 && @user2 && @use5 endparam param rifs2_6 caption = "2 o 6 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>4 && @user2 && @use6 endparam param rifs2_7 caption = "2 o 7 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>5 && @user2 && @use7 endparam param rifs2_8 caption = "2 o 8 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>6 && @user2 && @use8 endparam param rifs2_9 caption = "2 o 9 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>7 && @user2 && @use9 endparam param rifs2_10 caption = "2 o 10 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>8 && @user2 && @use10 endparam param rifs2_11 caption = "2 o 11 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>9 && @user2 && @use11 endparam param rifs2_12 caption = "2 o 12 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>10 && @user2 && @use12 endparam param rifs2_13 caption = "2 o 13 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>11 && @user2 && @use13 endparam param rifs2_14 caption = "2 o 14 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>12 && @user2 && @use14 endparam param rifs2_15 caption = "2 o 15 ?" default = true visible = @use2 && (@tv==0 || @tv==3) && @at>13 && @user2 && @use15 endparam heading caption = "Transform 3" enabled = true visible = (@tv==0 || @tv==4) && @at>1 endheading param use3 caption = "Apply transform 3 ?" default = false visible = (@tv==0 || @tv==4) && @at>1 endparam param skip4mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use3 && (@tv==0 || @tv==4) && @useskips && @at>1 endparam param skip4mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use3 && (@tv==0 || @tv==4) && @useskips && @at>1 \ && @depth>30 endparam param skip4mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use3 && (@tv==0 || @tv==4) && @useskips && @at>1 \ && @depth>61 endparam param skip4mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use3 && (@tv==0 || @tv==4) && @useskips && @at>1 \ && @depth>92 endparam param skip4mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use3 && (@tv==0 || @tv==4) && @useskips && @at>1 \ && @depth>123 endparam param skip4mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use3 && (@tv==0 || @tv==4) && @useskips && @at>1 \ && @depth>154 endparam param skip4mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use3 && (@tv==0 || @tv==4) && @useskips && @at>1 \ && @depth>185 endparam param rot3 caption = "Rotation 3 (degrees)" default = 45.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param scale3 caption = "Scale 3" default = 0.70710678118654752440084436210485 visible = @use3 && (@tv==0 || @tv==4) && @at>1 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param gen3 caption = "Complex multiplier 3" default = (1,0) visible = @use3 && (@tv==0 || @tv==4) && @at>1 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param offset3 caption = "Translation 3" default = (-1,0) visible = @use3 && (@tv==0 || @tv==4) && @at>1 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param flt3 caption = "Transform 3 skew etc. ?" default = false visible = @use3 && (@tv==0 || @tv==4) && @at>1 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param xscale3 caption = "Stretch x 3" default = 1.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @flt3 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param yscale3 caption = "Stretch y 3" default = 1.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @flt3 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param xshear3 caption = "Skew x 3 (degrees)" default = 0.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @flt3 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param yshear3 caption = "Skew y 3 (degrees)" default = 0.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @flt3 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param trow3 caption = "2*2 Matrix top row 3" default = (1,0) visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @flt3 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param brow3 caption = "2*2 Matrix bottom row 3" default = (0,1) visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @flt3 \ && (@mod3==0 || @mod3==2 || @mix3<1.0) endparam param mod3 caption = "Non-linear method 3" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 endparam param mix3 caption = "Non-linear amount 3" default = 0.0 min = 0.0 max = 1.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 endparam param fnc3 caption = "Non-linear function 3" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) endparam param a3 caption = "Complex scale (a) 3" default = (1,0) visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && (@fnc3<2 || @fnc3>=6) endparam param b3 caption = "Complex constant (b) 3" default = (0,0) visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && (@fnc3<2 || @fnc3>=6) endparam param pwr3 caption = "Complex power (p) 3" default = (2,0) visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && (@fnc3<2 || @fnc3>=6) endparam param cs3 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && @fnc3>=6 endparam param fn3 caption = "Complex function (fn) 3" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && (@fnc3<2 || @fnc3>=6) endparam param fp3 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && (@fnc3<2 || @fnc3>=6) endparam param ax3 caption = "x scale 3 (a)" default = 1.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && @fnc3>1 && @fnc3<6 endparam param bx3 caption = "x constant 3 (b)" default = 0.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && @fnc3>1 && @fnc3<6 endparam param pwrx3 caption = "x power 3 (p1)" default = 1.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && @fnc3>1 && @fnc3<6 endparam param fnx3 caption = "x function 3 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && @fnc3>1 && @fnc3<6 endparam param ay3 caption = "y scale 3 (c)" default = 1.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && @fnc3>1 && @fnc3<6 endparam param by3 caption = "y constant 3 (d)" default = 0.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && @fnc3>1 && @fnc3<6 endparam param pwry3 caption = "y power 3 (p2)" default = 1.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && @fnc3>1 && @fnc3<6 endparam param fny3 caption = "y function 3 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) && @fnc3>1 && @fnc3<6 endparam param sx3 caption = "Estimated scale 3" default = 0.5 min = 0.0 max = 1.0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @mod3>0 \ && (@mix3>0.0 || @mod3==1) endparam param pf3 caption = "Phoenix 3" default = false visible = @use3 && (@tv==0 || @tv==4) && @at>1 endparam param user3 caption = "Use RIFS flags for transform 3 ?" default = false visible = @use3 && (@tv==0 || @tv==4) && @at>1 endparam param rifs3 caption = "RIFS 3 state" enum = "Normal" "Inverted" default = 0 visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @user3 endparam param rifs3_0 caption = "3 o 0 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @user3 && @use0 endparam param rifs3_1 caption = "3 o 1 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @user3 && @use1 endparam param rifs3_2 caption = "3 o 2 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @user3 && @use2 endparam param rifs3_3 caption = "3 o 3 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>1 && @user3 endparam param rifs3_4 caption = "3 o 4 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>2 && @user3 && @use4 endparam param rifs3_5 caption = "3 o 5 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>3 && @user3 && @use5 endparam param rifs3_6 caption = "3 o 6 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>4 && @user3 && @use6 endparam param rifs3_7 caption = "3 o 7 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>5 && @user3 && @use7 endparam param rifs3_8 caption = "3 o 8 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>6 && @user3 && @use8 endparam param rifs3_9 caption = "3 o 9 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>7 && @user3 && @use9 endparam param rifs3_10 caption = "3 o 10 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>8 && @user3 && @use10 endparam param rifs3_11 caption = "3 o 11 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>9 && @user3 && @use11 endparam param rifs3_12 caption = "3 o 12 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>10 && @user3 && @use12 endparam param rifs3_13 caption = "3 o 13 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>11 && @user3 && @use13 endparam param rifs3_14 caption = "3 o 14 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>12 && @user3 && @use14 endparam param rifs3_15 caption = "3 o 15 ?" default = true visible = @use3 && (@tv==0 || @tv==4) && @at>13 && @user3 && @use15 endparam heading caption = "Transform 4" enabled = true visible = (@tv==0 || @tv==5) && @at>2 endheading param use4 caption = "Apply transform 4 ?" default = false visible = (@tv==0 || @tv==5) && @at>2 endparam param skip5mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use4 && (@tv==0 || @tv==5) && @useskips && @at>2 endparam param skip5mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use4 && (@tv==0 || @tv==5) && @useskips && @at>2 \ && @depth>30 endparam param skip5mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use4 && (@tv==0 || @tv==5) && @useskips && @at>2 \ && @depth>61 endparam param skip5mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use4 && (@tv==0 || @tv==5) && @useskips && @at>2 \ && @depth>92 endparam param skip5mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use4 && (@tv==0 || @tv==5) && @useskips && @at>2 \ && @depth>123 endparam param skip5mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use4 && (@tv==0 || @tv==5) && @useskips && @at>2 \ && @depth>154 endparam param skip5mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use4 && (@tv==0 || @tv==5) && @useskips && @at>2 \ && @depth>185 endparam param rot4 caption = "Rotation 4 (degrees)" default = 357.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param scale4 caption = "Scale 4" default = 0.85 visible = @use4 && (@tv==0 || @tv==5) && @at>2 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param gen4 caption = "Complex multiplier 4" default = (1,0) visible = @use4 && (@tv==0 || @tv==5) && @at>2 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param offset4 caption = "Translation 4" default = (0.0654,0.25779) visible = @use4 && (@tv==0 || @tv==5) && @at>2 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param flt4 caption = "Transform 4 skew etc. ?" default = false visible = @use4 && (@tv==0 || @tv==5) && @at>2 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param xscale4 caption = "Stretch x 4" default = 1.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @flt4 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param yscale4 caption = "Stretch y 4" default = 1.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @flt4 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param xshear4 caption = "Skew x 4 (degrees)" default = 0.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @flt4 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param yshear4 caption = "Skew y 4 (degrees)" default = 0.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @flt4 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param trow4 caption = "2*2 Matrix top row 4" default = (1,0) visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @flt4 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param brow4 caption = "2*2 Matrix bottom row 4" default = (0,1) visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @flt4 \ && (@mod4==0 || @mod4==2 || @mix4<1.0) endparam param mod4 caption = "Non-linear method 4" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 endparam param mix4 caption = "Non-linear amount 4" default = 0.0 min = 0.0 max = 1.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 endparam param fnc4 caption = "Non-linear function 4" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) endparam param a4 caption = "Complex scale (a) 4" default = (1,0) visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && (@fnc4<2 || @fnc4>=6) endparam param b4 caption = "Complex constant (b) 4" default = (0,0) visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && (@fnc4<2 || @fnc4>=6) endparam param pwr4 caption = "Complex power (p) 4" default = (2,0) visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && (@fnc4<2 || @fnc4>=6) endparam param cs4 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && @fnc4>=6 endparam param fn4 caption = "Complex function (fn) 4" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && (@fnc4<2 || @fnc4>=6) endparam param fp4 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && (@fnc4<2 || @fnc4>=6) endparam param ax4 caption = "x scale 4 (a)" default = 1.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && @fnc4>1 && @fn4<6 endparam param bx4 caption = "x constant 4 (b)" default = 0.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && @fnc4>1 && @fn4<6 endparam param pwrx4 caption = "x power 4 (p1)" default = 1.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && @fnc4>1 && @fn4<6 endparam param fnx4 caption = "x function 4 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && @fnc4>1 && @fn4<6 endparam param ay4 caption = "y scale 4 (c)" default = 1.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && @fnc4>1 && @fn4<6 endparam param by4 caption = "y constant 4 (d)" default = 0.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && @fnc4>1 && @fn4<6 endparam param pwry4 caption = "y power 4 (p2)" default = 1.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && @fnc4>1 && @fn4<6 endparam param fny4 caption = "y function 4 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) && @fnc4>1 && @fn4<6 endparam param sx4 caption = "Estimated scale 4" default = 0.5 min = 0.0 max = 1.0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @mod4>0 \ && (@mix4>0.0 || @mod4==1) endparam param pf4 caption = "Phoenix 4" default = false visible = @use4 && (@tv==0 || @tv==5) && @at>2 endparam param user4 caption = "Use RIFS flags for transform 4 ?" default = false visible = @use4 && (@tv==0 || @tv==5) && @at>2 endparam param rifs4 caption = "RIFS 4 state" enum = "Normal" "Inverted" default = 0 visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @user4 endparam param rifs4_0 caption = "4 o 0 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @user4 && @use0 endparam param rifs4_1 caption = "4 o 1 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @user4 && @use1 endparam param rifs4_2 caption = "4 o 2 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @user4 && @use2 endparam param rifs4_3 caption = "4 o 3 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @user4 && @use3 endparam param rifs4_4 caption = "4 o 4 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>2 && @user4 endparam param rifs4_5 caption = "4 o 5 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>3 && @user4 && @use5 endparam param rifs4_6 caption = "4 o 6 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>4 && @user4 && @use6 endparam param rifs4_7 caption = "4 o 7 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>5 && @user4 && @use7 endparam param rifs4_8 caption = "4 o 8 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>6 && @user4 && @use8 endparam param rifs4_9 caption = "4 o 9 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>7 && @user4 && @use9 endparam param rifs4_10 caption = "4 o 10 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>8 && @user4 && @use10 endparam param rifs4_11 caption = "4 o 11 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>9 && @user4 && @use11 endparam param rifs4_12 caption = "4 o 12 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>10 && @user4 && @use12 endparam param rifs4_13 caption = "4 o 13 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>11 && @user4 && @use13 endparam param rifs4_14 caption = "4 o 14 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>12 && @user4 && @use14 endparam param rifs4_15 caption = "4 o 15 ?" default = true visible = @use4 && (@tv==0 || @tv==5) && @at>13 && @user4 && @use15 endparam heading caption = "Transform 5" enabled = true visible = (@tv==0 || @tv==6) && @at>3 endheading param use5 caption = "Apply transform 5 ?" default = false visible = (@tv==0 || @tv==6) && @at>3 endparam param skip6mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use5 && (@tv==0 || @tv==6) && @useskips && @at>3 endparam param skip6mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use5 && (@tv==0 || @tv==6) && @useskips && @at>3 \ && @depth>30 endparam param skip6mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use5 && (@tv==0 || @tv==6) && @useskips && @at>3 \ && @depth>61 endparam param skip6mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use5 && (@tv==0 || @tv==6) && @useskips && @at>3 \ && @depth>92 endparam param skip6mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use5 && (@tv==0 || @tv==6) && @useskips && @at>3 \ && @depth>123 endparam param skip6mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use5 && (@tv==0 || @tv==6) && @useskips && @at>3 \ && @depth>154 endparam param skip6mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use5 && (@tv==0 || @tv==6) && @useskips && @at>3 \ && @depth>185 endparam param rot5 caption = "Rotation 5 (degrees)" default = 60.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param scale5 caption = "Scale 5" default = 0.3 visible = @use5 && (@tv==0 || @tv==6) && @at>3 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param gen5 caption = "Complex multiplier 5" default = (1,0) visible = @use5 && (@tv==0 || @tv==6) && @at>3 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param offset5 caption = "Translation 5" default = (-0.3819,-1.1295) visible = @use5 && (@tv==0 || @tv==6) && @at>3 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param flt5 caption = "Transform 5 skew etc. ?" default = false visible = @use5 && (@tv==0 || @tv==6) && @at>3 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param xscale5 caption = "Stretch x 5" default = 1.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @flt5 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param yscale5 caption = "Stretch y 5" default = 1.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @flt5 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param xshear5 caption = "Skew x 5 (degrees)" default = 0.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @flt5 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param yshear5 caption = "Skew y 5 (degrees)" default = 0.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @flt5 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param trow5 caption = "2*2 Matrix top row 5" default = (1,0) visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @flt5 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param brow5 caption = "2*2 Matrix bottom row 5" default = (0,1) visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @flt5 \ && (@mod5==0 || @mod5==2 || @mix5<1.0) endparam param mod5 caption = "Non-linear method 5" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 endparam param mix5 caption = "Non-linear amount 5" default = 0.0 min = 0.0 max = 1.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 endparam param fnc5 caption = "Non-linear function 5" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) endparam param a5 caption = "Complex scale (a) 5" default = (1,0) visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && (@fnc5<2 || @fnc5>=6) endparam param b5 caption = "Complex constant (b) 5" default = (0,0) visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && (@fnc5<2 || @fnc5>=6) endparam param pwr5 caption = "Complex power (p) 5" default = (2,0) visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && (@fnc5<2 || @fnc5>=6) endparam param cs5 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && @fnc5>=6 endparam param fn5 caption = "Complex function (fn) 5" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && (@fnc5<2 || @fnc5>=6) endparam param fp5 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && (@fnc5<2 || @fnc5>=6) endparam param ax5 caption = "x scale 5 (a)" default = 1.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && @fnc5>1 && @fnc5<6 endparam param bx5 caption = "x constant 5 (b)" default = 0.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && @fnc5>1 && @fnc5<6 endparam param pwrx5 caption = "x power 5 (p1)" default = 1.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && @fnc5>1 && @fnc5<6 endparam param fnx5 caption = "x function 5 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && @fnc5>1 && @fnc5<6 endparam param ay5 caption = "y scale 5 (c)" default = 1.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && @fnc5>1 && @fnc5<6 endparam param by5 caption = "y constant 5 (d)" default = 0.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && @fnc5>1 && @fnc5<6 endparam param pwry5 caption = "y power 5 (p2)" default = 1.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && @fnc5>1 && @fnc5<6 endparam param fny5 caption = "y function 5 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) && @fnc5>1 && @fnc5<6 endparam param sx5 caption = "Estimated scale 5" default = 0.5 min = 0.0 max = 1.0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @mod5>0 \ && (@mix5>0.0 || @mod5==1) endparam param pf5 caption = "Phoenix 5" default = false visible = @use5 && (@tv==0 || @tv==6) && @at>3 endparam param user5 caption = "Use RIFS flags for transform 5 ?" default = false visible = @use5 && (@tv==0 || @tv==6) && @at>3 endparam param rifs5 caption = "RIFS 5 state" enum = "Normal" "Inverted" default = 0 visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @user5 endparam param rifs5_0 caption = "5 o 0 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @user5 && @use0 endparam param rifs5_1 caption = "5 o 1 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @user5 && @use1 endparam param rifs5_2 caption = "5 o 2 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @user5 && @use2 endparam param rifs5_3 caption = "5 o 3 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @user5 && @use3 endparam param rifs5_4 caption = "5 o 4 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @user5 && @use4 endparam param rifs5_5 caption = "5 o 5 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>3 && @user5 endparam param rifs5_6 caption = "5 o 6 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>4 && @user5 && @use6 endparam param rifs5_7 caption = "5 o 7 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>5 && @user5 && @use7 endparam param rifs5_8 caption = "5 o 8 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>6 && @user5 && @use8 endparam param rifs5_9 caption = "5 o 9 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>7 && @user5 && @use9 endparam param rifs5_10 caption = "5 o 10 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>8 && @user5 && @use10 endparam param rifs5_11 caption = "5 o 11 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>9 && @user5 && @use11 endparam param rifs5_12 caption = "5 o 12 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>10 && @user5 && @use12 endparam param rifs5_13 caption = "5 o 13 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>11 && @user5 && @use13 endparam param rifs5_14 caption = "5 o 14 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>12 && @user5 && @use14 endparam param rifs5_15 caption = "5 o 15 ?" default = true visible = @use5 && (@tv==0 || @tv==6) && @at>13 && @user5 && @use15 endparam heading caption = "Transform 6" enabled = true visible = (@tv==0 || @tv==7) && @at>4 endheading param use6 caption = "Apply transform 6 ?" default = false visible = (@tv==0 || @tv==7) && @at>4 endparam param skip7mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use6 && (@tv==0 || @tv==7) && @useskips && @at>4 endparam param skip7mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use6 && (@tv==0 || @tv==7) && @useskips && @at>4 \ && @depth>30 endparam param skip7mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use6 && (@tv==0 || @tv==7) && @useskips && @at>4 \ && @depth>61 endparam param skip7mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use6 && (@tv==0 || @tv==7) && @useskips && @at>4 \ && @depth>92 endparam param skip7mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use6 && (@tv==0 || @tv==7) && @useskips && @at>4 \ && @depth>123 endparam param skip7mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use6 && (@tv==0 || @tv==7) && @useskips && @at>4 \ && @depth>154 endparam param skip7mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use6 && (@tv==0 || @tv==7) && @useskips && @at>4 \ && @depth>185 endparam param rot6 caption = "Rotation 6 (degrees)" default = 300.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param scale6 caption = "Scale 6" default = 1.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param gen6 caption = "Complex multiplier 6" default = (1,0) visible = @use6 && (@tv==0 || @tv==7) && @at>4 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param offset6 caption = "Translation 6" default = (0.4584,-0.9054) visible = @use6 && (@tv==0 || @tv==7) && @at>4 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param flt6 caption = "Transform 6 skew etc. ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>4 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param xscale6 caption = "Stretch x 6" default = 0.33 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @flt6 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param yscale6 caption = "Stretch y 6" default = 0.36 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @flt6 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param xshear6 caption = "Skew x 6 (degrees)" default = 0.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @flt6 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param yshear6 caption = "Skew y 6 (degrees)" default = 180.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @flt6 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param trow6 caption = "2*2 Matrix top row 6" default = (1,0) visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @flt6 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param brow6 caption = "2*2 Matrix bottom row 6" default = (0,1) visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @flt6 \ && (@mod6==0 || @mod6==2 || @mix6<1.0) endparam param mod6 caption = "Non-linear method 6" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 endparam param mix6 caption = "Non-linear amount 6" default = 0.0 min = 0.0 max = 1.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 endparam param fnc6 caption = "Non-linear function 6" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) endparam param a6 caption = "Complex scale (a) 6" default = (1,0) visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && (@fnc6<2 || @fnc6>=6) endparam param b6 caption = "Complex constant (b) 6" default = (0,0) visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && (@fnc6<2 || @fnc6>=6) endparam param pwr6 caption = "Complex power (p) 6" default = (2,0) visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && (@fnc6<2 || @fnc6>=6) endparam param cs6 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && @fnc6>=6 endparam param fn6 caption = "Complex function (fn) 6" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && (@fnc6<2 || @fnc6>=6) endparam param fp6 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && (@fnc6<2 || @fnc6>=6) endparam param ax6 caption = "x scale 6 (a)" default = 1.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && @fnc6>1 && @fnc6<6 endparam param bx6 caption = "x constant 6 (b)" default = 0.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && @fnc6>1 && @fnc6<6 endparam param pwrx6 caption = "x power 6 (p1)" default = 1.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && @fnc6>1 && @fnc6<6 endparam param fnx6 caption = "x function 6 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && @fnc6>1 && @fnc6<6 endparam param ay6 caption = "y scale 6 (c)" default = 1.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && @fnc6>1 && @fnc6<6 endparam param by6 caption = "y constant 6 (d)" default = 0.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && @fnc6>1 && @fnc6<6 endparam param pwry6 caption = "y power 6 (p2)" default = 1.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && @fnc6>1 && @fnc6<6 endparam param fny6 caption = "y function 6 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) && @fnc6>1 && @fnc6<6 endparam param sx6 caption = "Estimated scale 6" default = 0.5 min = 0.0 max = 1.0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @mod6>0 \ && (@mix6>0.0 || @mod6==1) endparam param pf6 caption = "Phoenix 6" default = false visible = @use6 && (@tv==0 || @tv==7) && @at>4 endparam param user6 caption = "Use RIFS flags for transform 6 ?" default = false visible = @use6 && (@tv==0 || @tv==7) && @at>4 endparam param rifs6 caption = "RIFS 6 state" enum = "Normal" "Inverted" default = 0 visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @user6 endparam param rifs6_0 caption = "6 o 0 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @user6 && @use0 endparam param rifs6_1 caption = "6 o 1 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @user6 && @use1 endparam param rifs6_2 caption = "6 o 2 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @user6 && @use2 endparam param rifs6_3 caption = "6 o 3 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @user6 && @use3 endparam param rifs6_4 caption = "6 o 4 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @user6 && @use4 endparam param rifs6_5 caption = "6 o 5 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @user6 && @use5 endparam param rifs6_6 caption = "6 o 6 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>4 && @user6 endparam param rifs6_7 caption = "6 o 7 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>5 && @user6 && @use7 endparam param rifs6_8 caption = "6 o 8 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>6 && @user6 && @use8 endparam param rifs6_9 caption = "6 o 9 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>7 && @user6 && @use9 endparam param rifs6_10 caption = "6 o 10 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>8 && @user6 && @use10 endparam param rifs6_11 caption = "6 o 11 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>9 && @user6 && @use11 endparam param rifs6_12 caption = "6 o 12 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>10 && @user6 && @use12 endparam param rifs6_13 caption = "6 o 13 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>11 && @user6 && @use13 endparam param rifs6_14 caption = "6 o 14 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>12 && @user6 && @use14 endparam param rifs6_15 caption = "6 o 15 ?" default = true visible = @use6 && (@tv==0 || @tv==7) && @at>13 && @user6 && @use15 endparam heading caption = "Transform 7" enabled = true visible = (@tv==0 || @tv==8) && @at>5 endheading param use7 caption = "Apply transform 7 ?" default = false visible = (@tv==0 || @tv==8) && @at>5 endparam param skip8mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use7 && (@tv==0 || @tv==8) && @useskips && @at>5 endparam param skip8mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use7 && (@tv==0 || @tv==8) && @useskips && @at>5 \ && @depth>30 endparam param skip8mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use7 && (@tv==0 || @tv==8) && @useskips && @at>5 \ && @depth>61 endparam param skip8mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use7 && (@tv==0 || @tv==8) && @useskips && @at>5 \ && @depth>92 endparam param skip8mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use7 && (@tv==0 || @tv==8) && @useskips && @at>5 \ && @depth>123 endparam param skip8mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use7 && (@tv==0 || @tv==8) && @useskips && @at>5 \ && @depth>154 endparam param skip8mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use7 && (@tv==0 || @tv==8) && @useskips && @at>5 \ && @depth>185 endparam param rot7 caption = "Rotation 7 (degrees)" default = 0.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param scale7 caption = "Scale 7" default = 1.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param gen7 caption = "Complex multiplier 7" default = (1,0) visible = @use7 && (@tv==0 || @tv==8) && @at>5 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param offset7 caption = "Translation 7" default = (0,-1.194) visible = @use7 && (@tv==0 || @tv==8) && @at>5 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param flt7 caption = "Transform 7 skew etc. ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>5 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param xscale7 caption = "Stretch x 7" default = 0.01 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @flt7 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param yscale7 caption = "Stretch y 7" default = 0.2 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @flt7 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param xshear7 caption = "Skew x 7 (degrees)" default = 0.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @flt7 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param yshear7 caption = "Skew y 7 (degrees)" default = 0.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @flt7 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param trow7 caption = "2*2 Matrix top row 7" default = (1,0) visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @flt7 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param brow7 caption = "2*2 Matrix bottom row 7" default = (0,1) visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @flt7 \ && (@mod7==0 || @mod7==2 || @mix7<1.0) endparam param mod7 caption = "Non-linear method 7" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 endparam param mix7 caption = "Non-linear amount 7" default = 0.0 min = 0.0 max = 1.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 endparam param fnc7 caption = "Non-linear function 7" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) endparam param a7 caption = "Complex scale (a) 7" default = (1,0) visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && (@fnc7<2 || @fnc7>=6) endparam param b7 caption = "Complex constant (b) 7" default = (0,0) visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && (@fnc7<2 || @fnc7>=6) endparam param pwr7 caption = "Complex power (p) 7" default = (2,0) visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && (@fnc7<2 || @fnc7>=6) endparam param cs7 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && @fnc7>=6 endparam param fn7 caption = "Complex function (fn) 7" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && (@fnc7<2 || @fnc7>=6) endparam param fp7 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && (@fnc7<2 || @fnc7>=6) endparam param ax7 caption = "x scale 7 (a)" default = 1.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && @fnc7>1 && @fnc7<6 endparam param bx7 caption = "x constant 7 (b)" default = 0.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && @fnc7>1 && @fnc7<6 endparam param pwrx7 caption = "x power 7 (p1)" default = 1.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && @fnc7>1 && @fnc7<6 endparam param fnx7 caption = "x function 7 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && @fnc7>1 && @fnc7<6 endparam param ay7 caption = "y scale 7 (c)" default = 1.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && @fnc7>1 && @fnc7<6 endparam param by7 caption = "y constant 7 (d)" default = 0.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && @fnc7>1 && @fnc7<6 endparam param pwry7 caption = "y power 7 (p2)" default = 1.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && @fnc7>1 && @fnc7<6 endparam param fny7 caption = "y function 7 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) && @fnc7>1 && @fnc7<6 endparam param sx7 caption = "Estimated scale 7" default = 0.5 min = 0.0 max = 1.0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @mod7>0 \ && (@mix7>0.0 || @mod7==1) endparam param pf7 caption = "Phoenix 7" default = false visible = @use7 && (@tv==0 || @tv==8) && @at>5 endparam param user7 caption = "Use RIFS flags for transform 7 ?" default = false visible = @use7 && (@tv==0 || @tv==8) && @at>5 endparam param rifs7 caption = "RIFS 7 state" enum = "Normal" "Inverted" default = 0 visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @user7 endparam param rifs7_0 caption = "7 o 0 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @user7 && @use0 endparam param rifs7_1 caption = "7 o 1 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @user7 && @use1 endparam param rifs7_2 caption = "7 o 2 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @user7 && @use2 endparam param rifs7_3 caption = "7 o 3 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @user7 && @use3 endparam param rifs7_4 caption = "7 o 4 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @user7 && @use4 endparam param rifs7_5 caption = "7 o 5 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @user7 && @use5 endparam param rifs7_6 caption = "7 o 6 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @user7 && @use6 endparam param rifs7_7 caption = "7 o 7 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>5 && @user7 endparam param rifs7_8 caption = "7 o 8 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>6 && @user7 && @use8 endparam param rifs7_9 caption = "7 o 9 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>7 && @user7 && @use9 endparam param rifs7_10 caption = "7 o 10 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>8 && @user7 && @use10 endparam param rifs7_11 caption = "7 o 11 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>9 && @user7 && @use11 endparam param rifs7_12 caption = "7 o 12 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>10 && @user7 && @use12 endparam param rifs7_13 caption = "7 o 13 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>11 && @user7 && @use13 endparam param rifs7_14 caption = "7 o 14 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>12 && @user7 && @use14 endparam param rifs7_15 caption = "7 o 15 ?" default = true visible = @use7 && (@tv==0 || @tv==8) && @at>13 && @user7 && @use15 endparam heading caption = "Transform 8" enabled = true visible = (@tv==0 || @tv==9) && @at>6 endheading param use8 caption = "Apply transform 8 ?" default = false visible = (@tv==0 || @tv==9) && @at>6 endparam param skip9mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use8 && (@tv==0 || @tv==9) && @useskips && @at>6 endparam param skip9mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use8 && (@tv==0 || @tv==9) && @useskips && @at>6 \ && @depth>30 endparam param skip9mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use8 && (@tv==0 || @tv==9) && @useskips && @at>6 \ && @depth>61 endparam param skip9mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use8 && (@tv==0 || @tv==9) && @useskips && @at>6 \ && @depth>92 endparam param skip9mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use8 && (@tv==0 || @tv==9) && @useskips && @at>6 \ && @depth>123 endparam param skip9mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use8 && (@tv==0 || @tv==9) && @useskips && @at>6 \ && @depth>154 endparam param skip9mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use8 && (@tv==0 || @tv==9) && @useskips && @at>6 \ && @depth>185 endparam param rot8 caption = "Rotation 8 (degrees)" default = 0.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param scale8 caption = "Scale 8" default = 0.3333333333333333333333333333333333333333 visible = @use8 && (@tv==0 || @tv==9) && @at>6 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param gen8 caption = "Complex multiplier 8" default = (1,0) visible = @use8 && (@tv==0 || @tv==9) && @at>6 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param offset8 caption = "Translation 8" default = (-1,-1) visible = @use8 && (@tv==0 || @tv==9) && @at>6 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param flt8 caption = "Transform 8 skew etc. ?" default = false visible = @use8 && (@tv==0 || @tv==9) && @at>6 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param xscale8 caption = "Stretch x 8" default = 1.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @flt8 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param yscale8 caption = "Stretch y 8" default = 1.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @flt8 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param xshear8 caption = "Skew x 8 (degrees)" default = 0.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @flt8 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param yshear8 caption = "Skew y 8 (degrees)" default = 0.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @flt8 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param trow8 caption = "2*2 Matrix top row 8" default = (1,0) visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @flt8 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param brow8 caption = "2*2 Matrix bottom row 8" default = (0,1) visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @flt8 \ && (@mod8==0 || @mod8==2 || @mix8<1.0) endparam param mod8 caption = "Non-linear method 8" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 endparam param mix8 caption = "Non-linear amount 8" default = 0.0 min = 0.0 max = 1.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 endparam param fnc8 caption = "Non-linear function 8" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) endparam param a8 caption = "Complex scale (a) 8" default = (1,0) visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && (@fnc8<2 || @fnc8>=6) endparam param b8 caption = "Complex constant (b) 8" default = (0,0) visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && (@fnc8<2 || @fnc8>=6) endparam param pwr8 caption = "Complex power (p) 8" default = (2,0) visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && (@fnc8<2 || @fnc8>=6) endparam param cs8 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && @fnc8>=6 endparam param fn8 caption = "Complex function (fn) 8" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && (@fnc8<2 || @fnc8>=6) endparam param fp8 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && (@fnc8<2 || @fnc8>=6) endparam param ax8 caption = "x scale 8 (a)" default = 1.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && @fnc8>1 && @fnc8<6 endparam param bx8 caption = "x constant 8 (b)" default = 0.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && @fnc8>1 && @fnc8<6 endparam param pwrx8 caption = "x power 8 (p1)" default = 1.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && @fnc8>1 && @fnc8<6 endparam param fnx8 caption = "x function 8 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && @fnc8>1 && @fnc8<6 endparam param ay8 caption = "y scale 8 (c)" default = 1.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && @fnc8>1 && @fnc8<6 endparam param by8 caption = "y constant 8 (d)" default = 0.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && @fnc8>1 && @fnc8<6 endparam param pwry8 caption = "y power 8 (p2)" default = 1.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && @fnc8>1 && @fnc8<6 endparam param fny8 caption = "y function 8 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) && @fnc8>1 && @fnc8<6 endparam param sx8 caption = "Estimated scale 8" default = 0.5 min = 0.0 max = 1.0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @mod8>0 \ && (@mix8>0.0 || @mod8==1) endparam param pf8 caption = "Phoenix 8" default = false visible = @use8 && (@tv==0 || @tv==9) && @at>6 endparam param user8 caption = "Use RIFS flags for transform 8 ?" default = false visible = @use8 && (@tv==0 || @tv==9) && @at>6 endparam param rifs8 caption = "RIFS 8 state" enum = "Normal" "Inverted" default = 0 visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 endparam param rifs8_0 caption = "8 o 0 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 && @use0 endparam param rifs8_1 caption = "8 o 1 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 && @use1 endparam param rifs8_2 caption = "8 o 2 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 && @use2 endparam param rifs8_3 caption = "8 o 3 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 && @use3 endparam param rifs8_4 caption = "8 o 4 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 && @use4 endparam param rifs8_5 caption = "8 o 5 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 && @use5 endparam param rifs8_6 caption = "8 o 6 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 && @use6 endparam param rifs8_7 caption = "8 o 7 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 && @use7 endparam param rifs8_8 caption = "8 o 8 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>6 && @user8 endparam param rifs8_9 caption = "8 o 9 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>7 && @user8 && @use9 endparam param rifs8_10 caption = "8 o 10 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>8 && @user8 && @use10 endparam param rifs8_11 caption = "8 o 11 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>9 && @user8 && @use11 endparam param rifs8_12 caption = "8 o 12 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>10 && @user8 && @use12 endparam param rifs8_13 caption = "8 o 13 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>11 && @user8 && @use13 endparam param rifs8_14 caption = "8 o 14 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>12 && @user8 && @use14 endparam param rifs8_15 caption = "8 o 15 ?" default = true visible = @use8 && (@tv==0 || @tv==9) && @at>13 && @user8 && @use15 endparam heading caption = "Transform 9" enabled = true visible = (@tv==0 || @tv==10) && @at>7 endheading param use9 caption = "Apply transform 9 ?" default = false visible = (@tv==0 || @tv==10) && @at>7 endparam param skip10mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use9 && (@tv==0 || @tv==10) && @useskips && @at>7 endparam param skip10mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use9 && (@tv==0 || @tv==10) && @useskips && @at>7 \ && @depth>30 endparam param skip10mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use9 && (@tv==0 || @tv==10) && @useskips && @at>7 \ && @depth>61 endparam param skip10mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use9 && (@tv==0 || @tv==10) && @useskips && @at>7 \ && @depth>92 endparam param skip10mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use9 && (@tv==0 || @tv==10) && @useskips && @at>7 \ && @depth>123 endparam param skip10mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use9 && (@tv==0 || @tv==10) && @useskips && @at>7 \ && @depth>154 endparam param skip10mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use9 && (@tv==0 || @tv==10) && @useskips && @at>7 \ && @depth>185 endparam param rot9 caption = "Rotation 9 (degrees)" default = 0.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param scale9 caption = "Scale 9" default = 0.3333333333333333333333333333333333333333 visible = @use9 && (@tv==0 || @tv==10) && @at>7 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param gen9 caption = "Complex multiplier 9" default = (1,0) visible = @use9 && (@tv==0 || @tv==10) && @at>7 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param offset9 caption = "Translation 9" default = (0,-1) visible = @use9 && (@tv==0 || @tv==10) && @at>7 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param flt9 caption = "Transform 9 skew etc. ?" default = false visible = @use9 && (@tv==0 || @tv==10) && @at>7 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param xscale9 caption = "Stretch x 9" default = 1.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @flt9 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param yscale9 caption = "Stretch y 9" default = 1.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @flt9 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param xshear9 caption = "Skew x 9 (degrees)" default = 0.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @flt9 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param yshear9 caption = "Skew y 9 (degrees)" default = 0.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @flt9 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param trow9 caption = "2*2 Matrix top row 9" default = (1,0) visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @flt9 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param brow9 caption = "2*2 Matrix bottom row 9" default = (0,1) visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @flt9 \ && (@mod9==0 || @mod9==2 || @mix9<1.0) endparam param mod9 caption = "Non-linear method 9" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 endparam param mix9 caption = "Non-linear amount 9" default = 0.0 min = 0.0 max = 1.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 endparam param fnc9 caption = "Non-linear function 9" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) endparam param a9 caption = "Complex scale (a) 9" default = (1,0) visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && (@fnc9<2 || @fnc9>=6) endparam param b9 caption = "Complex constant (b) 9" default = (0,0) visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && (@fnc9<2 || @fnc9>=6) endparam param pwr9 caption = "Complex power (p) 9" default = (2,0) visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && (@fnc9<2 || @fnc9>=6) endparam param cs9 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && @fnc9>=6 endparam param fn9 caption = "Complex function (fn) 9" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && (@fnc9<2 || @fnc9>=6) endparam param fp9 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && (@fnc9<2 || @fnc9>=6) endparam param ax9 caption = "x scale 9 (a)" default = 1.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && @fnc9>1 && @fnc9<6 endparam param bx9 caption = "x constant 9 (b)" default = 0.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && @fnc9>1 && @fnc9<6 endparam param pwrx9 caption = "x power 9 (p1)" default = 1.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && @fnc9>1 && @fnc9<6 endparam param fnx9 caption = "x function 9 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && @fnc9>1 && @fnc9<6 endparam param ay9 caption = "y scale 9 (c)" default = 1.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && @fnc9>1 && @fnc9<6 endparam param by9 caption = "y constant 9 (d)" default = 0.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && @fnc9>1 && @fnc9<6 endparam param pwry9 caption = "y power 9 (p2)" default = 1.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && @fnc9>1 && @fnc9<6 endparam param fny9 caption = "y function 9 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) && @fnc9>1 && @fnc9<6 endparam param sx9 caption = "Estimated scale 9" default = 0.5 min = 0.0 max = 1.0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @mod9>0 \ && (@mix9>0.0 || @mod9==1) endparam param pf9 caption = "Phoenix 9" default = false visible = @use9 && (@tv==0 || @tv==10) && @at>7 endparam param user9 caption = "Use RIFS flags for transform 9 ?" default = false visible = @use9 && (@tv==0 || @tv==10) && @at>7 endparam param rifs9 caption = "RIFS 9 state" enum = "Normal" "Inverted" default = 0 visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 endparam param rifs9_0 caption = "9 o 0 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 && @use0 endparam param rifs9_1 caption = "9 o 1 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 && @use1 endparam param rifs9_2 caption = "9 o 2 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 && @use2 endparam param rifs9_3 caption = "9 o 3 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 && @use3 endparam param rifs9_4 caption = "9 o 4 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 && @use4 endparam param rifs9_5 caption = "9 o 5 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 && @use5 endparam param rifs9_6 caption = "9 o 6 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 && @use6 endparam param rifs9_7 caption = "9 o 7 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 && @use7 endparam param rifs9_8 caption = "9 o 8 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 && @use8 endparam param rifs9_9 caption = "9 o 9 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>7 && @user9 endparam param rifs9_10 caption = "9 o 10 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>8 && @user9 && @use10 endparam param rifs9_11 caption = "9 o 11 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>9 && @user9 && @use11 endparam param rifs9_12 caption = "9 o 12 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>10 && @user9 && @use12 endparam param rifs9_13 caption = "9 o 13 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>11 && @user9 && @use13 endparam param rifs9_14 caption = "9 o 14 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>12 && @user9 && @use14 endparam param rifs9_15 caption = "9 o 15 ?" default = true visible = @use9 && (@tv==0 || @tv==10) && @at>13 && @user9 && @use15 endparam heading caption = "Transform 10" enabled = true visible = (@tv==0 || @tv==11) && @at>8 endheading param use10 caption = "Apply transform 10 ?" default = false visible = (@tv==0 || @tv==11) && @at>8 endparam param skip11mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use10 && (@tv==0 || @tv==11) && @useskips && @at>8 endparam param skip11mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use10 && (@tv==0 || @tv==11) && @useskips && @at>8 \ && @depth>30 endparam param skip11mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use10 && (@tv==0 || @tv==11) && @useskips && @at>8 \ && @depth>61 endparam param skip11mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use10 && (@tv==0 || @tv==11) && @useskips && @at>8 \ && @depth>92 endparam param skip11mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use10 && (@tv==0 || @tv==11) && @useskips && @at>8 \ && @depth>123 endparam param skip11mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use10 && (@tv==0 || @tv==11) && @useskips && @at>8 \ && @depth>154 endparam param skip11mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use10 && (@tv==0 || @tv==11) && @useskips && @at>8 \ && @depth>185 endparam param rot10 caption = "Rotation 10 (degrees)" default = 0.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param scale10 caption = "Scale 10" default = 0.3333333333333333333333333333333333333333 visible = @use10 && (@tv==0 || @tv==11) && @at>8 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param gen10 caption = "Complex multiplier 10" default = (1,0) visible = @use10 && (@tv==0 || @tv==11) && @at>8 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param offset10 caption = "Translation 10" default = (1,-1) visible = @use10 && (@tv==0 || @tv==11) && @at>8 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param flt10 caption = "Transform 10 skew etc. ?" default = false visible = @use10 && (@tv==0 || @tv==11) && @at>8 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param xscale10 caption = "Stretch x 10" default = 1.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @flt10 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param yscale10 caption = "Stretch y 10" default = 1.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @flt10 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param xshear10 caption = "Skew x 10 (degrees)" default = 0.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @flt10 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param yshear10 caption = "Skew y 10 (degrees)" default = 0.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @flt10 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param trow10 caption = "2*2 Matrix top row 10" default = (1,0) visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @flt10 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param brow10 caption = "2*2 Matrix bottom row 10" default = (0,1) visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @flt10 \ && (@mod10==0 || @mod10==2 || @mix10<1.0) endparam param mod10 caption = "Non-linear method 10" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 endparam param mix10 caption = "Non-linear amount 10" default = 0.0 min = 0.0 max = 1.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 endparam param fnc10 caption = "Non-linear function 10" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) endparam param a10 caption = "Complex scale (a) 10" default = (1,0) visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && (@fnc10<2 || @fnc10>=6) endparam param b10 caption = "Complex constant (b) 10" default = (0,0) visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && (@fnc10<2 || @fnc10>=6) endparam param pwr10 caption = "Complex power (p) 10" default = (2,0) visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && (@fnc10<2 || @fnc10>=6) endparam param cs10 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && @fnc10>=6 endparam param fn10 caption = "Complex function (fn) 10" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && (@fnc10<2 || @fnc10>=6) endparam param fp10 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && (@fnc10<2 || @fnc10>=6) endparam param ax10 caption = "x scale 10 (a)" default = 1.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && @fnc10>1 && @fnc10<6 endparam param bx10 caption = "x constant 10 (b)" default = 0.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && @fnc10>1 && @fnc10<6 endparam param pwrx10 caption = "x power 10 (p1)" default = 1.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && @fnc10>1 && @fnc10<6 endparam param fnx10 caption = "x function 10 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && @fnc10>1 && @fnc10<6 endparam param ay10 caption = "y scale 10 (c)" default = 1.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && @fnc10>1 && @fnc10<6 endparam param by10 caption = "y constant 10 (d)" default = 0.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && @fnc10>1 && @fnc10<6 endparam param pwry10 caption = "y power 10 (p2)" default = 1.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && @fnc10>1 && @fnc10<6 endparam param fny10 caption = "y function 10 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) && @fnc10>1 && @fnc10<6 endparam param sx10 caption = "Estimated scale 10" default = 0.5 min = 0.0 max = 1.0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @mod10>0 \ && (@mix10>0.0 || @mod10==1) endparam param pf10 caption = "Phoenix 10" default = false visible = @use10 && (@tv==0 || @tv==11) && @at>8 endparam param user10 caption = "Use RIFS flags for transform 10 ?" default = false visible = @use10 && (@tv==0 || @tv==11) && @at>8 endparam param rifs10 caption = "RIFS 10 state" enum = "Normal" "Inverted" default = 0 visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 endparam param rifs10_0 caption = "10 o 0 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use0 endparam param rifs10_1 caption = "10 o 1 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use1 endparam param rifs10_2 caption = "10 o 2 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use2 endparam param rifs10_3 caption = "10 o 3 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use3 endparam param rifs10_4 caption = "10 o 4 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use4 endparam param rifs10_5 caption = "10 o 5 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use5 endparam param rifs10_6 caption = "10 o 6 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use6 endparam param rifs10_7 caption = "10 o 7 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use7 endparam param rifs10_8 caption = "10 o 8 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use8 endparam param rifs10_9 caption = "10 o 9 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 && @use9 endparam param rifs10_10 caption = "10 o 10 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>8 && @user10 endparam param rifs10_11 caption = "10 o 11 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>9 && @user10 && @use11 endparam param rifs10_12 caption = "10 o 12 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>10 && @user10 && @use12 endparam param rifs10_13 caption = "10 o 13 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>11 && @user10 && @use13 endparam param rifs10_14 caption = "10 o 14 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>12 && @user10 && @use14 endparam param rifs10_15 caption = "10 o 15 ?" default = true visible = @use10 && (@tv==0 || @tv==11) && @at>13 && @user10 && @use15 endparam heading caption = "Transform 11" enabled = true visible = (@tv==0 || @tv==12) && @at>9 endheading param use11 caption = "Apply transform 11 ?" default = false visible = (@tv==0 || @tv==12) && @at>9 endparam param skip12mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use11 && (@tv==0 || @tv==12) && @useskips && @at>9 endparam param skip12mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use11 && (@tv==0 || @tv==12) && @useskips && @at>9 \ && @depth>30 endparam param skip12mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use11 && (@tv==0 || @tv==12) && @useskips && @at>9 \ && @depth>61 endparam param skip12mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use11 && (@tv==0 || @tv==12) && @useskips && @at>9 \ && @depth>92 endparam param skip12mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use11 && (@tv==0 || @tv==12) && @useskips && @at>9 \ && @depth>123 endparam param skip12mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use11 && (@tv==0 || @tv==12) && @useskips && @at>9 \ && @depth>154 endparam param skip12mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use11 && (@tv==0 || @tv==12) && @useskips && @at>9 \ && @depth>185 endparam param rot11 caption = "Rotation 11 (degrees)" default = 0.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param scale11 caption = "Scale 11" default = 0.3333333333333333333333333333333333333333 visible = @use11 && (@tv==0 || @tv==12) && @at>9 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param gen11 caption = "Complex multiplier 11" default = (1,0) visible = @use11 && (@tv==0 || @tv==12) && @at>9 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param offset11 caption = "Translation 11" default = (-1,0) visible = @use11 && (@tv==0 || @tv==12) && @at>9 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param flt11 caption = "Transform 11 skew etc. ?" default = false visible = @use11 && (@tv==0 || @tv==12) && @at>9 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param xscale11 caption = "Stretch x 11" default = 1.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @flt11 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param yscale11 caption = "Stretch y 11" default = 1.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @flt11 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param xshear11 caption = "Skew x 11 (degrees)" default = 0.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @flt11 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param yshear11 caption = "Skew y 11 (degrees)" default = 0.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @flt11 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param trow11 caption = "2*2 Matrix top row 11" default = (1,0) visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @flt11 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param brow11 caption = "2*2 Matrix bottom row 11" default = (0,1) visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @flt11 \ && (@mod11==0 || @mod11==2 || @mix11<1.0) endparam param mod11 caption = "Non-linear method 11" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 endparam param mix11 caption = "Non-linear amount 11" default = 0.0 min = 0.0 max = 1.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 endparam param fnc11 caption = "Non-linear function 11" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) endparam param a11 caption = "Complex scale (a) 11" default = (1,0) visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && (@fnc11<2 || @fnc11>=6) endparam param b11 caption = "Complex constant (b) 11" default = (0,0) visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && (@fnc11<2 || @fnc11>=6) endparam param pwr11 caption = "Complex power (p) 11" default = (2,0) visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && (@fnc11<2 || @fnc11>=6) endparam param cs11 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && @fnc11>=6 endparam param fn11 caption = "Complex function (fn) 11" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && (@fnc11<2 || @fnc11>=6) endparam param fp11 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && (@fnc11<2 || @fnc11>=6) endparam param ax11 caption = "x scale 11 (a)" default = 1.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && @fnc11>1 && @fnc11<6 endparam param bx11 caption = "x constant 11 (b)" default = 0.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && @fnc11>1 && @fnc11<6 endparam param pwrx11 caption = "x power 11 (p1)" default = 1.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && @fnc11>1 && @fnc11<6 endparam param fnx11 caption = "x function 11 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && @fnc11>1 && @fnc11<6 endparam param ay11 caption = "y scale 11 (c)" default = 1.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && @fnc11>1 && @fnc11<6 endparam param by11 caption = "y constant 11 (d)" default = 0.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && @fnc11>1 && @fnc11<6 endparam param pwry11 caption = "y power 11 (p2)" default = 1.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && @fnc11>1 && @fnc11<6 endparam param fny11 caption = "y function 11 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) && @fnc11>1 && @fnc11<6 endparam param sx11 caption = "Estimated scale 11" default = 0.5 min = 0.0 max = 1.0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @mod11>0 \ && (@mix11>0.0 || @mod11==1) endparam param pf11 caption = "Phoenix 11" default = false visible = @use11 && (@tv==0 || @tv==12) && @at>9 endparam param user11 caption = "Use RIFS flags for transform 11 ?" default = false visible = @use11 && (@tv==0 || @tv==12) && @at>9 endparam param rifs11 caption = "RIFS 11 state" enum = "Normal" "Inverted" default = 0 visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 endparam param rifs11_0 caption = "11 o 0 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use0 endparam param rifs11_1 caption = "11 o 1 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use1 endparam param rifs11_2 caption = "11 o 2 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use2 endparam param rifs11_3 caption = "11 o 3 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use3 endparam param rifs11_4 caption = "11 o 4 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use4 endparam param rifs11_5 caption = "11 o 5 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use5 endparam param rifs11_6 caption = "11 o 6 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use6 endparam param rifs11_7 caption = "11 o 7 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use7 endparam param rifs11_8 caption = "11 o 8 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use8 endparam param rifs11_9 caption = "11 o 9 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use9 endparam param rifs11_10 caption = "11 o 10 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 && @use10 endparam param rifs11_11 caption = "11 o 11 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>9 && @user11 endparam param rifs11_12 caption = "11 o 12 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>10 && @user11 && @use12 endparam param rifs11_13 caption = "11 o 13 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>11 && @user11 && @use13 endparam param rifs11_14 caption = "11 o 14 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>12 && @user11 && @use14 endparam param rifs11_15 caption = "11 o 15 ?" default = true visible = @use11 && (@tv==0 || @tv==12) && @at>13 && @user11 && @use15 endparam heading caption = "Transform 12" enabled = true visible = (@tv==0 || @tv==13) && @at>10 endheading param use12 caption = "Apply transform 12 ?" default = false visible = (@tv==0 || @tv==13) && @at>10 endparam param skip13mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use12 && (@tv==0 || @tv==13) && @useskips && @at>10 endparam param skip13mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use12 && (@tv==0 || @tv==13) && @useskips && @at>10 \ && @depth>30 endparam param skip13mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use12 && (@tv==0 || @tv==13) && @useskips && @at>10 \ && @depth>61 endparam param skip13mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use12 && (@tv==0 || @tv==13) && @useskips && @at>10 \ && @depth>92 endparam param skip13mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use12 && (@tv==0 || @tv==13) && @useskips && @at>10 \ && @depth>123 endparam param skip13mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use12 && (@tv==0 || @tv==13) && @useskips && @at>10 \ && @depth>154 endparam param skip13mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use12 && (@tv==0 || @tv==13) && @useskips && @at>10 \ && @depth>185 endparam param rot12 caption = "Rotation 12 (degrees)" default = 0.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param scale12 caption = "Scale 12" default = 0.3333333333333333333333333333333333333333 visible = @use12 && (@tv==0 || @tv==13) && @at>10 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param gen12 caption = "Complex multiplier 12" default = (1,0) visible = @use12 && (@tv==0 || @tv==13) && @at>10 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param offset12 caption = "Translation 12" default = (1,0) visible = @use12 && (@tv==0 || @tv==13) && @at>10 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param flt12 caption = "Transform 12 skew etc. ?" default = false visible = @use12 && (@tv==0 || @tv==13) && @at>10 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param xscale12 caption = "Stretch x 12" default = 1.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @flt12 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param yscale12 caption = "Stretch y 12" default = 1.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @flt12 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param xshear12 caption = "Skew x 12 (degrees)" default = 0.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @flt12 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param yshear12 caption = "Skew y 12 (degrees)" default = 0.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @flt12 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param trow12 caption = "2*2 Matrix top row 12" default = (1,0) visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @flt12 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param brow12 caption = "2*2 Matrix bottom row 12" default = (0,1) visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @flt12 \ && (@mod12==0 || @mod12==2 || @mix12<1.0) endparam param mod12 caption = "Non-linear method 12" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 endparam param mix12 caption = "Non-linear amount 12" default = 0.0 min = 0.0 max = 1.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 endparam param fnc12 caption = "Non-linear function 12" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) endparam param a12 caption = "Complex scale (a) 12" default = (1,0) visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && (@fnc12<2 || @fnc12>=6) endparam param b12 caption = "Complex constant (b) 12" default = (0,0) visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && (@fnc12<2 || @fnc12>=6) endparam param pwr12 caption = "Complex power (p) 12" default = (2,0) visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && (@fnc12<2 || @fnc12>=6) endparam param cs12 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && @fnc12>=6 endparam param fn12 caption = "Complex function (fn) 12" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && (@fnc12<2 || @fnc12>=6) endparam param fp12 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && (@fnc12<2 || @fnc12>=6) endparam param ax12 caption = "x scale 12 (a)" default = 1.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && @fnc12>1 && @fnc12<6 endparam param bx12 caption = "x constant 12 (b)" default = 0.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && @fnc12>1 && @fnc12<6 endparam param pwrx12 caption = "x power 12 (p1)" default = 1.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && @fnc12>1 && @fnc12<6 endparam param fnx12 caption = "x function 12 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && @fnc12>1 && @fnc12<6 endparam param ay12 caption = "y scale 12 (c)" default = 1.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && @fnc12>1 && @fnc12<6 endparam param by12 caption = "y constant 12 (d)" default = 0.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && @fnc12>1 && @fnc12<6 endparam param pwry12 caption = "y power 12 (p2)" default = 1.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && @fnc12>1 && @fnc12<6 endparam param fny12 caption = "y function 12 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) && @fnc12>1 && @fnc12<6 endparam param sx12 caption = "Estimated scale 12" default = 0.5 min = 0.0 max = 1.0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @mod12>0 \ && (@mix12>0.0 || @mod12==1) endparam param pf12 caption = "Phoenix 12" default = false visible = @use12 && (@tv==0 || @tv==13) && @at>10 endparam param user12 caption = "Use RIFS flags for transform 12 ?" default = false visible = @use12 && (@tv==0 || @tv==13) && @at>10 endparam param rifs12 caption = "RIFS 12 state" enum = "Normal" "Inverted" default = 0 visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 endparam param rifs12_0 caption = "12 o 0 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use0 endparam param rifs12_1 caption = "12 o 1 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use1 endparam param rifs12_2 caption = "12 o 2 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use2 endparam param rifs12_3 caption = "12 o 3 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use3 endparam param rifs12_4 caption = "12 o 4 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use4 endparam param rifs12_5 caption = "12 o 5 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use5 endparam param rifs12_6 caption = "12 o 6 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use6 endparam param rifs12_7 caption = "12 o 7 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use7 endparam param rifs12_8 caption = "12 o 8 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use8 endparam param rifs12_9 caption = "12 o 9 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use9 endparam param rifs12_10 caption = "12 o 10 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use10 endparam param rifs12_11 caption = "12 o 11 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 && @use11 endparam param rifs12_12 caption = "12 o 12 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>10 && @user12 endparam param rifs12_13 caption = "12 o 13 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>11 && @user12 && @use13 endparam param rifs12_14 caption = "12 o 14 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>12 && @user12 && @use14 endparam param rifs12_15 caption = "12 o 15 ?" default = true visible = @use12 && (@tv==0 || @tv==13) && @at>13 && @user12 && @use15 endparam heading caption = "Transform 13" enabled = true visible = (@tv==0 || @tv==14) && @at>11 endheading param use13 caption = "Apply transform 13 ?" default = false visible = (@tv==0 || @tv==14) && @at>11 endparam param skip14mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use13 && (@tv==0 || @tv==14) && @useskips && @at>11 endparam param skip14mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use13 && (@tv==0 || @tv==14) && @useskips && @at>11 \ && @depth>30 endparam param skip14mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use13 && (@tv==0 || @tv==14) && @useskips && @at>11 \ && @depth>61 endparam param skip14mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use13 && (@tv==0 || @tv==14) && @useskips && @at>11 \ && @depth>92 endparam param skip14mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use13 && (@tv==0 || @tv==14) && @useskips && @at>11 \ && @depth>123 endparam param skip14mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use13 && (@tv==0 || @tv==14) && @useskips && @at>11 \ && @depth>154 endparam param skip14mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use13 && (@tv==0 || @tv==14) && @useskips && @at>11 \ && @depth>185 endparam param rot13 caption = "Rotation 13 (degrees)" default = 0.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param scale13 caption = "Scale 13" default = 0.3333333333333333333333333333333333333333 visible = @use13 && (@tv==0 || @tv==14) && @at>11 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param gen13 caption = "Complex multiplier 13" default = (1,0) visible = @use13 && (@tv==0 || @tv==14) && @at>11 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param offset13 caption = "Translation 13" default = (-1,1) visible = @use13 && (@tv==0 || @tv==14) && @at>11 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param flt13 caption = "Transform 13 skew etc. ?" default = false visible = @use13 && (@tv==0 || @tv==14) && @at>11 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param xscale13 caption = "Stretch x 13" default = 1.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @flt13 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param yscale13 caption = "Stretch y 13" default = 1.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @flt13 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param xshear13 caption = "Skew x 13 (degrees)" default = 0.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @flt13 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param yshear13 caption = "Skew y 13 (degrees)" default = 0.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @flt13 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param trow13 caption = "2*2 Matrix top row 13" default = (1,0) visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @flt13 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param brow13 caption = "2*2 Matrix bottom row 13" default = (0,1) visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @flt13 \ && (@mod13==0 || @mod13==2 || @mix13<1.0) endparam param mod13 caption = "Non-linear method 13" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 endparam param mix13 caption = "Non-linear amount 13" default = 0.0 min = 0.0 max = 1.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 endparam param fnc13 caption = "Non-linear function 13" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) endparam param a13 caption = "Complex scale (a) 13" default = (1,0) visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && (@fnc13<2 || @fnc13>=6) endparam param b13 caption = "Complex constant (b) 13" default = (0,0) visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && (@fnc13<2 || @fnc13>=6) endparam param pwr13 caption = "Complex power (p) 13" default = (2,0) visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && (@fnc13<2 || @fnc13>=6) endparam param cs13 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && @fnc13>=6 endparam param fn13 caption = "Complex function (fn) 13" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && (@fnc13<2 || @fnc13>=6) endparam param fp13 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && (@fnc13<2 || @fnc13>=6) endparam param ax13 caption = "x scale 13 (a)" default = 1.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && @fnc13>1 && @fnc13<6 endparam param bx13 caption = "x constant 13 (b)" default = 0.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && @fnc13>1 && @fnc13<6 endparam param pwrx13 caption = "x power 13 (p1)" default = 1.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && @fnc13>1 && @fnc13<6 endparam param fnx13 caption = "x function 13 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && @fnc13>1 && @fnc13<6 endparam param ay13 caption = "y scale 13 (c)" default = 1.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && @fnc13>1 && @fnc13<6 endparam param by13 caption = "y constant 13 (d)" default = 0.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && @fnc13>1 && @fnc13<6 endparam param pwry13 caption = "y power 13 (p2)" default = 1.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && @fnc13>1 && @fnc13<6 endparam param fny13 caption = "y function 13 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) && @fnc13>1 && @fnc13<6 endparam param sx13 caption = "Estimated scale 13" default = 0.5 min = 0.0 max = 1.0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @mod13>0 \ && (@mix13>0.0 || @mod13==1) endparam param pf13 caption = "Phoenix 13" default = false visible = @use13 && (@tv==0 || @tv==14) && @at>11 endparam param user13 caption = "Use RIFS flags for transform 13 ?" default = false visible = @use13 && (@tv==0 || @tv==14) && @at>11 endparam param rifs13 caption = "RIFS 13 state" enum = "Normal" "Inverted" default = 0 visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 endparam param rifs13_0 caption = "13 o 0 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use0 endparam param rifs13_1 caption = "13 o 1 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use1 endparam param rifs13_2 caption = "13 o 2 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use2 endparam param rifs13_3 caption = "13 o 3 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use3 endparam param rifs13_4 caption = "13 o 4 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use4 endparam param rifs13_5 caption = "13 o 5 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use5 endparam param rifs13_6 caption = "13 o 6 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use6 endparam param rifs13_7 caption = "13 o 7 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use7 endparam param rifs13_8 caption = "13 o 8 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use8 endparam param rifs13_9 caption = "13 o 9 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use9 endparam param rifs13_10 caption = "13 o 10 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use10 endparam param rifs13_11 caption = "13 o 11 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use11 endparam param rifs13_12 caption = "13 o 12 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 && @use12 endparam param rifs13_13 caption = "13 o 13 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>11 && @user13 endparam param rifs13_14 caption = "13 o 14 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>12 && @user13 && @use14 endparam param rifs13_15 caption = "13 o 15 ?" default = true visible = @use13 && (@tv==0 || @tv==14) && @at>13 && @user13 && @use15 endparam heading caption = "Transform 14" enabled = true visible = (@tv==0 || @tv==15) && @at>12 endheading param use14 caption = "Apply transform 14 ?" default = false visible = (@tv==0 || @tv==15) && @at>12 endparam param skip15mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use14 && (@tv==0 || @tv==15) && @useskips && @at>12 endparam param skip15mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use14 && (@tv==0 || @tv==15) && @useskips && @at>12 \ && @depth>30 endparam param skip15mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use14 && (@tv==0 || @tv==15) && @useskips && @at>12 \ && @depth>61 endparam param skip15mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use14 && (@tv==0 || @tv==15) && @useskips && @at>12 \ && @depth>92 endparam param skip15mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use14 && (@tv==0 || @tv==15) && @useskips && @at>12 \ && @depth>123 endparam param skip15mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use14 && (@tv==0 || @tv==15) && @useskips && @at>12 \ && @depth>154 endparam param skip15mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use14 && (@tv==0 || @tv==15) && @useskips && @at>12 \ && @depth>185 endparam param rot14 caption = "Rotation 14 (degrees)" default = 0.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param scale14 caption = "Scale 14" default = 0.3333333333333333333333333333333333333333 visible = @use14 && (@tv==0 || @tv==15) && @at>12 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param gen14 caption = "Complex multiplier 14" default = (1,0) visible = @use14 && (@tv==0 || @tv==15) && @at>12 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param offset14 caption = "Translation 14" default = (0,1) visible = @use14 && (@tv==0 || @tv==15) && @at>12 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param flt14 caption = "Transform 14 skew etc. ?" default = false visible = @use14 && (@tv==0 || @tv==15) && @at>12 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param xscale14 caption = "Stretch x 14" default = 1.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @flt14 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param yscale14 caption = "Stretch y 14" default = 1.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @flt14 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param xshear14 caption = "Skew x 14 (degrees)" default = 0.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @flt14 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param yshear14 caption = "Skew y 14 (degrees)" default = 0.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @flt14 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param trow14 caption = "2*2 Matrix top row 14" default = (1,0) visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @flt14 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param brow14 caption = "2*2 Matrix bottom row 14" default = (0,1) visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @flt14 \ && (@mod14==0 || @mod14==2 || @mix14<1.0) endparam param mod14 caption = "Non-linear method 14" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 endparam param mix14 caption = "Non-linear amount 14" default = 0.0 min = 0.0 max = 1.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 endparam param fnc14 caption = "Non-linear function 14" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) endparam param a14 caption = "Complex scale (a) 14" default = (1,0) visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && (@fnc14<2 || @fnc14>=6) endparam param b14 caption = "Complex constant (b) 14" default = (0,0) visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && (@fnc14<2 || @fnc14>=6) endparam param pwr14 caption = "Complex power (p) 14" default = (2,0) visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && (@fnc14<2 || @fnc14>=6) endparam param cs14 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && @fnc14>=6 endparam param fn14 caption = "Complex function (fn) 14" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && (@fnc14<2 || @fnc14>=6) endparam param fp14 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && (@fnc14<2 || @fnc14>=6) endparam param ax14 caption = "x scale 14 (a)" default = 1.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && @fnc14>1 && @fnc14<6 endparam param bx14 caption = "x constant 14 (b)" default = 0.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && @fnc14>1 && @fnc14<6 endparam param pwrx14 caption = "x power 14 (p1)" default = 1.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && @fnc14>1 && @fnc14<6 endparam param fnx14 caption = "x function 14 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && @fnc14>1 && @fnc14<6 endparam param ay14 caption = "y scale 14 (c)" default = 1.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && @fnc14>1 && @fnc14<6 endparam param by14 caption = "y constant 14 (d)" default = 0.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && @fnc14>1 && @fnc14<6 endparam param pwry14 caption = "y power 14 (p2)" default = 1.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && @fnc14>1 && @fnc14<6 endparam param fny14 caption = "y function 14 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) && @fnc14>1 && @fnc14<6 endparam param sx14 caption = "Estimated scale 14" default = 0.5 min = 0.0 max = 1.0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @mod14>0 \ && (@mix14>0.0 || @mod14==1) endparam param pf14 caption = "Phoenix 14" default = false visible = @use14 && (@tv==0 || @tv==15) && @at>12 endparam param user14 caption = "Use RIFS flags for transform 14 ?" default = false visible = @use14 && (@tv==0 || @tv==15) && @at>12 endparam param rifs14 caption = "RIFS 14 state" enum = "Normal" "Inverted" default = 0 visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 endparam param rifs14_0 caption = "14 o 0 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use0 endparam param rifs14_1 caption = "14 o 1 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use1 endparam param rifs14_2 caption = "14 o 2 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use2 endparam param rifs14_3 caption = "14 o 3 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use3 endparam param rifs14_4 caption = "14 o 4 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use4 endparam param rifs14_5 caption = "14 o 5 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use5 endparam param rifs14_6 caption = "14 o 6 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use6 endparam param rifs14_7 caption = "14 o 7 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use7 endparam param rifs14_8 caption = "14 o 8 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use8 endparam param rifs14_9 caption = "14 o 9 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use9 endparam param rifs14_10 caption = "14 o 10 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use10 endparam param rifs14_11 caption = "14 o 11 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use11 endparam param rifs14_12 caption = "14 o 12 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use12 endparam param rifs14_13 caption = "14 o 13 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 && @use13 endparam param rifs14_14 caption = "14 o 14 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>12 && @user14 endparam param rifs14_15 caption = "14 o 15 ?" default = true visible = @use14 && (@tv==0 || @tv==15) && @at>13 && @user14 && @use15 endparam heading caption = "Transform 15" enabled = true visible = (@tv==0 || @tv==16) && @at>13 endheading param use15 caption = "Apply transform 15 ?" default = false visible = (@tv==0 || @tv==16) && @at>13 endparam param skip16mask1 caption = "Depth Mask 0-30" default = 0 min = 0 visible = @use15 && (@tv==0 || @tv==16) && @useskips && @at>13 endparam param skip16mask2 caption = "Depth Mask 31-61" default = 0 min = 0 visible = @use15 && (@tv==0 || @tv==16) && @useskips && @at>13 \ && @depth>30 endparam param skip16mask3 caption = "Depth Mask 62-92" default = 0 min = 0 visible = @use15 && (@tv==0 || @tv==16) && @useskips && @at>13 \ && @depth>61 endparam param skip16mask4 caption = "Depth Mask 93-123" default = 0 min = 0 visible = @use15 && (@tv==0 || @tv==16) && @useskips && @at>13 \ && @depth>92 endparam param skip16mask5 caption = "Depth Mask 124-154" default = 0 min = 0 visible = @use15 && (@tv==0 || @tv==16) && @useskips && @at>13 \ && @depth>123 endparam param skip16mask6 caption = "Depth Mask 155-185" default = 0 min = 0 visible = @use15 && (@tv==0 || @tv==16) && @useskips && @at>13 \ && @depth>154 endparam param skip16mask7 caption = "Depth Mask 186-216" default = 0 min = 0 visible = @use15 && (@tv==0 || @tv==16) && @useskips && @at>13 \ && @depth>185 endparam param rot15 caption = "Rotation 15 (degrees)" default = 0.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param scale15 caption = "Scale 15" default = 0.3333333333333333333333333333333333333333 visible = @use15 && (@tv==0 || @tv==16) && @at>13 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param gen15 caption = "Complex multiplier 15" default = (1,0) visible = @use15 && (@tv==0 || @tv==16) && @at>13 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param offset15 caption = "Translation 15" default = (1,1) visible = @use15 && (@tv==0 || @tv==16) && @at>13 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param flt15 caption = "Transform 15 skew etc. ?" default = false visible = @use15 && (@tv==0 || @tv==16) && @at>13 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param xscale15 caption = "Stretch x 15" default = 1.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @flt15 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param yscale15 caption = "Stretch y 15" default = 1.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @flt15 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param xshear15 caption = "Skew x 15 (degrees)" default = 0.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @flt15 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param yshear15 caption = "Skew y 15 (degrees)" default = 0.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @flt15 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param trow15 caption = "2*2 Matrix top row 15" default = (1,0) visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @flt15 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param brow15 caption = "2*2 Matrix bottom row 15" default = (0,1) visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @flt15 \ && (@mod15==0 || @mod15==2 || @mix15<1.0) endparam param mod15 caption = "Non-linear method 15" enum = "None" "Pre-affine" "Post-affine" "Mixer" default = 0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 endparam param mix15 caption = "Non-linear amount 15" default = 0.0 min = 0.0 max = 1.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 endparam param fnc15 caption = "Non-linear function 15" enum = "a*fn(z^p)+b" "a*(fn(z)^p)+b" "a*fn1(x^p1)+b,c*fn2(y^p2)+d" \ "a*fn1(x^p1)+b,c*(fn2(y))^p2+d" "a*(fn1(x))^p1+b,c*fn2(y^p2)+d" \ "a*(fn1(x))^p1+b,c*(fn2(y))^p2+d" "a*fn(z^p)+c*z+b" \ "a*(fn(z)^p)+c*z+b" default = 0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) endparam param a15 caption = "Complex scale (a) 15" default = (1,0) visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && (@fnc15<2 || @fnc15>=6) endparam param b15 caption = "Complex constant (b) 15" default = (0,0) visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && (@fnc15<2 || @fnc15>=6) endparam param pwr15 caption = "Complex power (p) 15" default = (2,0) visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && (@fnc15<2 || @fnc15>=6) endparam param cs15 caption = "Second complex scale (c) 0" default = (1,0) hint = "The scale factor for plain z in the complex function (c)." visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && @fnc15>=6 endparam param fn15 caption = "Complex function (fn) 15" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "conj" "flip" "ceil" \ "floor" "trunc" "round" default = 0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && (@fnc15<2 || @fnc15>=6) endparam param fp15 caption = "Add #pixel ?" default = false hint = "When enabled the pixel value is added to the result of the \ complex calculation." visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && (@fnc15<2 || @fnc15>=6) endparam param ax15 caption = "x scale 15 (a)" default = 1.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && @fnc15>1 && @fnc15<6 endparam param bx15 caption = "x constant 15 (b)" default = 0.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && @fnc15>1 && @fnc15<6 endparam param pwrx15 caption = "x power 15 (p1)" default = 1.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && @fnc15>1 && @fnc15<6 endparam param fnx15 caption = "x function 15 (fn1)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && @fnc15>1 && @fnc15<6 endparam param ay15 caption = "y scale 15 (c)" default = 1.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && @fnc15>1 && @fnc15<6 endparam param by15 caption = "y constant 15 (d)" default = 0.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && @fnc15>1 && @fnc15<6 endparam param pwry15 caption = "y power 15 (p2)" default = 1.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && @fnc15>1 && @fnc15<6 endparam param fny15 caption = "y function 15 (fn2)" enum = "ident" "sin" "cos" "tan" "sinh" "cosh" "tanh" "asin" "acos" "atan" \ "asinh" "acosh" "atanh" "log" "exp" "abs" "ceil" "floor" "trunc" \ "round" default = 1 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) && @fnc15>1 && @fnc15<6 endparam param sx15 caption = "Estimated scale 15" default = 0.5 min = 0.0 max = 1.0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @mod15>0 \ && (@mix15>0.0 || @mod15==1) endparam param pf15 caption = "Phoenix 15" default = false visible = @use15 && (@tv==0 || @tv==16) && @at>13 endparam param user15 caption = "Use RIFS flags for transform 15 ?" default = false visible = @use15 && (@tv==0 || @tv==16) && @at>13 endparam param rifs15 caption = "RIFS 15 state" enum = "Normal" "Inverted" default = 0 visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 endparam param rifs15_0 caption = "15 o 0 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use0 endparam param rifs15_1 caption = "15 o 1 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use1 endparam param rifs15_2 caption = "15 o 2 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use2 endparam param rifs15_3 caption = "15 o 3 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use3 endparam param rifs15_4 caption = "15 o 4 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use4 endparam param rifs15_5 caption = "15 o 5 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use5 endparam param rifs15_6 caption = "15 o 6 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use6 endparam param rifs15_7 caption = "15 o 7 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use7 endparam param rifs15_8 caption = "15 o 8 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use8 endparam param rifs15_9 caption = "15 o 9 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use9 endparam param rifs15_10 caption = "15 o 10 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use10 endparam param rifs15_11 caption = "15 o 11 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use11 endparam param rifs15_12 caption = "15 o 12 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use12 endparam param rifs15_13 caption = "15 o 13 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use13 endparam param rifs15_14 caption = "15 o 14 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 && @use14 endparam param rifs15_15 caption = "15 o 15 ?" default = true visible = @use15 && (@tv==0 || @tv==16) && @at>13 && @user15 endparam } MMF4a-AttractorsPlus { global: if @showinfo $define debug endif complex pwr = -1.0/(@degree+2) if @formula==7 pwr = @power - 1.0 endif float gm = @srot*#pi/180.0 float rad2 = sqr(@iradius) complex sr = cos(gm) + flip(sin(gm)) complex isr = 1.0/sr float radh = 0.5*@iradius float rady = @rect*radh float cstart = @skip-@cdepth-@cold-1 float astart = @skip-@adepth-@aold-1 int cdp = @cdepth + 1 int adp = @adepth + 1 int iod = @iodepth if @version<2 if @csel==0 iod = @cdepth + 1 else iod = @adepth + 1 endif else iod = @iodepth + 1 endif if @besquare rad2 = sqr(radh) endif float rad2y = sqr(rady) if @noescape==2 rad2y = 2.0*rady endif gm = 0.0 if @useroot pwr = -1.0/@root endif if @orbit && !@julia complex gscreen[(#width+1)*(@os+1)+41,(#height+1)*(@os+1)+41] complex gval[(#width+1)*(@os+1)+41,(#height+1)*(@os+1)+41] ; complex gscreen[(@os+1)+41,(@os+1)+41] ; complex gval[(@os+1)+41,(@os+1)+41] complex ghistory[51] complex ghistory1[51] int gut = 0 ; calculate based on filtering int gwidth = #width*(@os+1) int gheight = #height*(@os+1) float gi = 0 int gj int gk int gl = 0 int gn = 0 int ghp = 0 int ghp1 = 0 int ghh float twopi = 2.0*#pi float gmaxfade = @cfade^(@cdepth+1) float gmaxfade1 = @afade^(@adepth+1) float gx float gy float gx0 float gy0 float gx1 float gy1 float gx2 float gy2 float gxo float gyo float gm0 float gm1 float gm2 float gm3 float gmira = 0.0 float gsin = sin(#angle) float gcos = cos(#angle) float gs2 = -tan(#skew) float gs3 = 1.0/#stretch if (4.0*#height<3.0*#width) gm = 3.0/(#magn*@mag*gheight) else gm = 4.0/(#magn*@mag*gwidth) endif gm0=gm*gcos*gs3 gm1=gm*gsin*gs3 gm2=gm*(gs2*gcos*gs3-gsin) gm3=gm*(gcos+gs2*gsin*gs3) gx=-0.5*gwidth gy=0.5*gheight gx0=gx*gm0+gy*gm2+real(#center)+real(@centre) gy0=gx*gm1+gy*gm3+imag(#center)+imag(@centre) gx=0.5*gwidth gx1=gx*gm0+gy*gm2+real(#center)+real(@centre) gy1=gx*gm1+gy*gm3+imag(#center)+imag(@centre) gx=-0.5*gwidth gy=-0.5*gheight gx2=gx*gm0+gy*gm2+real(#center)+real(@centre) gy2=gx*gm1+gy*gm3+imag(#center)+imag(@centre) ; print(gx0," ",gy0,":",gx2," ",gy2) gm=1.0/((gx1-gx0)*(gy2-gy0)-(gx2-gx0)*(gy1-gy0)) gm0=gwidth*(gy2-gy0)*gm gm1=-gheight*(gy1-gy0)*gm gm2=-gwidth*(gx2-gx0)*gm gm3=gheight*(gx1-gx0)*gm gxo=-(gm0*gx0+gm2*gy0)+gut+0.5*(@os+1) gyo=-(gm1*gx0+gm3*gy0)+gut+0.5*(@os+1) gwidth = gwidth + 2*gut gheight = gheight + 2*gut ; gx2 = gx0 ; gy2 = gy0 ; gx0=gx2*gm0+gy2*gm2+gxo ; gy0=gx2*gm1+gy2*gm3+gyo ; print(gx0," ",gy0) complex gz complex gz0 complex gz1 complex gz2 complex gz4 complex gzs = (0.0,0.0) complex gzp = (1.0,0.0) complex gc0 = @const complex gc1 = @const1 complex gc2 = @const2 complex gc3 = @const3 complex gc4 = @const4 complex gc5 = @const5 complex gc6 = @const6 complex gcp = 0.0 complex gap = 0.0 float gx2m1 = 0.0 float gy2m1 = 0.0 float gx3m1 = 0.0 float gy3m1 = 0.0 float gx2y2s = 0.0 float gx3y3s = 0.0 float gcmax = 0.0 float gamax = 0.0 float gcmin = 1e200 float gamin = 1e200 complex gc = (0,0) complex gzo = (0,0) complex gzo1 = (0,0) if ((@col==2 || @col==3) && @cselect==2) \ ||(@col>3 && @csel==0 && @rselect==2) \ ||((@col==1 || @col==3) && @aselect==2) \ ||(@col>3 && @csel==1 && @arselect==2) gl = (#width+1)*(@os+1)+41 gn = (#height+1)*(@os+1)+41 gj = 0 repeat gk = 0 repeat if @col==3 if @cselect==2 if @aselect==2 gval[gk,gj]=1e200+flip(1e200) else gval[gk,gj]=flip(1e200) endif elseif @aselect==2 gval[gk,gj]=1e200 endif else gscreen[gk,gj]=flip(1e200) endif until (gk=gk+1)>=gl until (gj=gj+1)>=gn gl = 0 gn = 0 endif if @cmethod==1 gcp = 1.0 endif if @amethod>2 gap = 1.0 endif if @formula==4 gc0 = @const/cabs(@const) gc1 = @const1/cabs(@const1) gc2 = @const2/cabs(@const2) gc3 = @const3/cabs(@const3) gc4 = @const4/cabs(@const4) gc5 = @const5/cabs(@const5) gc6 = @const6/cabs(@const6) endif float gcgx0 = real(@cg0) float gcgx1 = real(@cg1) float gcgx2 = real(@cg2) float gcgx3 = real(@cg3) float gcgx4 = real(@cg4) float gcgx5 = real(@cg5) float gcgx6 = real(@cg6) float gcgx7 = real(@cg7) float gcgx8 = real(@cg8) float gcgx9 = real(@cg9) float gcgx10 = real(@cg10) float gcgx11 = real(@cg11) float gcgx12 = real(@cg12) float gcgx13 = real(@cg13) float gcgx14 = real(@cg14) float gcgx15 = real(@cg15) float gcgx16 = real(@cg16) float gcgx17 = real(@cg17) float gcgx18 = real(@cg18) float gcgx19 = real(@cg19) float gcgx20 = real(@cg20) float gcgx21 = real(@cg21) float gcgx22 = real(@cg22) float gcgx23 = real(@cg23) float gcgx24 = real(@cg24) float gcgx25 = real(@cg25) float gcgx26 = real(@cg26) float gcgx27 = real(@cg27) float gcgy0 = imag(@cg0) float gcgy1 = imag(@cg1) float gcgy2 = imag(@cg2) float gcgy3 = imag(@cg3) float gcgy4 = imag(@cg4) float gcgy5 = imag(@cg5) float gcgy6 = imag(@cg6) float gcgy7 = imag(@cg7) float gcgy8 = imag(@cg8) float gcgy9 = imag(@cg9) float gcgy10 = imag(@cg10) float gcgy11 = imag(@cg11) float gcgy12 = imag(@cg12) float gcgy13 = imag(@cg13) float gcgy14 = imag(@cg14) float gcgy15 = imag(@cg15) float gcgy16 = imag(@cg16) float gcgy17 = imag(@cg17) float gcgy18 = imag(@cg18) float gcgy19 = imag(@cg19) float gcgy20 = imag(@cg20) float gcgy21 = imag(@cg21) float gcgy22 = imag(@cg22) float gcgy23 = imag(@cg23) float gcgy24 = imag(@cg24) float gcgy25 = imag(@cg25) float gcgy26 = imag(@cg26) float gcgy27 = imag(@cg27) bool gb = false bool gconv = false bool gdiv = false complex go = @odestep float gox = real(@odestep) float goy = imag(@odestep) float gp = 0.0 float gq = 0.0 float gr float gs float gt float gu float gv float gw float gh = 0.0 float gmin = 2.0 float gbase = 1e200 int gpv = 5 int gpi = 1 int gnum = 5 if @progress==1 gp = @count/5.0 gq = @maxhits/5.0 gnum = gpv = 5 elseif @progress==2 gp = @count/10.0 gq = @maxhits/10.0 gnum = gpv = 10 elseif @progress==3 gp = @count/50.0 gq = @maxhits/50.0 gnum = gpv = 50 elseif @progress==4 gp = @count/100.0 gq = @maxhits/100.0 gnum = gpv = 100 elseif @progress==5 gp = @count/1000.0 gq = @maxhits/1000.0 gnum = gpv = 1000 endif gp = gp - 1.0 gz = @start if @ode && @odeswitch go = @switch gox = real(@switch) goy = imag(@switch) elseif @formula==0 if @control==0 gc0 = @switch elseif @control==1 gc1 = @switch elseif @control==2 gc2 = @switch elseif @control==3 gc3 = @switch elseif @control==4 gc4 = @switch elseif @control==5 gc5 = @switch elseif @control==6 gc6 = @switch endif elseif @formula==4 if @control==0 gc0 = @switch/cabs(@switch) elseif @control==1 gc1 = @switch/cabs(@switch) elseif @control==2 gc2 = @switch/cabs(@switch) elseif @control==3 gc3 = @switch/cabs(@switch) elseif @control==4 gc4 = @switch/cabs(@switch) elseif @control==5 gc5 = @switch/cabs(@switch) elseif @control==6 gc6 = @switch/cabs(@switch) endif elseif @formula==6 if @controlx==0 gcgx0 = real(@switch) elseif @controlx==1 gcgx1 = real(@switch) elseif @controlx==2 gcgx2 = real(@switch) elseif @controlx==3 gcgx3 = real(@switch) elseif @controlx==4 gcgx4 = real(@switch) elseif @controlx==5 gcgx5 = real(@switch) elseif @controlx==6 gcgx6 = real(@switch) elseif @controlx==7 gcgx7 = real(@switch) elseif @controlx==8 gcgx8 = real(@switch) elseif @controlx==9 gcgx9 = real(@switch) elseif @controlx==10 gcgx0 = real(@switch) elseif @controlx==11 gcgx11 = real(@switch) elseif @controlx==12 gcgx12 = real(@switch) elseif @controlx==13 gcgx13 = real(@switch) elseif @controlx==14 gcgx14 = real(@switch) elseif @controlx==15 gcgx15 = real(@switch) elseif @controlx==16 gcgx16 = real(@switch) elseif @controlx==17 gcgx17 = real(@switch) elseif @controlx==18 gcgx18 = real(@switch) elseif @controlx==19 gcgx19 = real(@switch) elseif @controlx==20 gcgx20 = real(@switch) elseif @controlx==21 gcgx21 = real(@switch) elseif @controlx==22 gcgx22 = real(@switch) elseif @controlx==23 gcgx23 = real(@switch) elseif @controlx==24 gcgx24 = real(@switch) elseif @controlx==25 gcgx25 = real(@switch) elseif @controlx==26 gcgx26 = real(@switch) elseif @controlx==27 gcgx27 = real(@switch) elseif @controlx==28 gcgy0 = real(@switch) elseif @controlx==29 gcgy1 = real(@switch) elseif @controlx==30 gcgy2 = real(@switch) elseif @controlx==31 gcgy3 = real(@switch) elseif @controlx==32 gcgy4 = real(@switch) elseif @controlx==33 gcgy5 = real(@switch) elseif @controlx==34 gcgy6 = real(@switch) elseif @controlx==35 gcgy7 = real(@switch) elseif @controlx==36 gcgy8 = real(@switch) elseif @controlx==37 gcgy9 = real(@switch) elseif @controlx==38 gcgy10 = real(@switch) elseif @controlx==39 gcgy11 = real(@switch) elseif @controlx==40 gcgy12 = real(@switch) elseif @controlx==41 gcgy13 = real(@switch) elseif @controlx==42 gcgy14 = real(@switch) elseif @controlx==43 gcgy15 = real(@switch) elseif @controlx==44 gcgy16 = real(@switch) elseif @controlx==45 gcgy17 = real(@switch) elseif @controlx==46 gcgy18 = real(@switch) elseif @controlx==47 gcgy19 = real(@switch) elseif @controlx==48 gcgy20 = real(@switch) elseif @controlx==49 gcgy21 = real(@switch) elseif @controlx==50 gcgy22 = real(@switch) elseif @controlx==51 gcgy23 = real(@switch) elseif @controlx==52 gcgy24 = real(@switch) elseif @controlx==53 gcgy25 = real(@switch) elseif @controlx==54 gcgy26 = real(@switch) elseif @controlx==55 gcgy27 = real(@switch) endif if @controly==0 gcgx0 = imag(@switch) elseif @controly==1 gcgx1 = imag(@switch) elseif @controly==2 gcgx2 = imag(@switch) elseif @controly==3 gcgx3 = imag(@switch) elseif @controly==4 gcgx4 = imag(@switch) elseif @controly==5 gcgx5 = imag(@switch) elseif @controly==6 gcgx6 = imag(@switch) elseif @controly==7 gcgx7 = imag(@switch) elseif @controly==8 gcgx8 = imag(@switch) elseif @controly==9 gcgx9 = imag(@switch) elseif @controly==10 gcgx0 = imag(@switch) elseif @controly==11 gcgx11 = imag(@switch) elseif @controly==12 gcgx12 = imag(@switch) elseif @controly==13 gcgx13 = imag(@switch) elseif @controly==14 gcgx14 = imag(@switch) elseif @controly==15 gcgx15 = imag(@switch) elseif @controly==16 gcgx16 = imag(@switch) elseif @controly==17 gcgx17 = imag(@switch) elseif @controly==18 gcgx18 = imag(@switch) elseif @controly==19 gcgx19 = imag(@switch) elseif @controly==20 gcgx20 = imag(@switch) elseif @controly==21 gcgx21 = imag(@switch) elseif @controly==22 gcgx22 = imag(@switch) elseif @controly==23 gcgx23 = imag(@switch) elseif @controly==24 gcgx24 = imag(@switch) elseif @controly==25 gcgx25 = imag(@switch) elseif @controly==26 gcgx26 = imag(@switch) elseif @controly==27 gcgx27 = imag(@switch) elseif @controly==28 gcgy0 = imag(@switch) elseif @controly==29 gcgy1 = imag(@switch) elseif @controly==30 gcgy2 = imag(@switch) elseif @controly==31 gcgy3 = imag(@switch) elseif @controly==32 gcgy4 = imag(@switch) elseif @controly==33 gcgy5 = imag(@switch) elseif @controly==34 gcgy6 = imag(@switch) elseif @controly==35 gcgy7 = imag(@switch) elseif @controly==36 gcgy8 = imag(@switch) elseif @controly==37 gcgy9 = imag(@switch) elseif @controly==38 gcgy10 = imag(@switch) elseif @controly==39 gcgy11 = imag(@switch) elseif @controly==40 gcgy12 = imag(@switch) elseif @controly==41 gcgy13 = imag(@switch) elseif @controly==42 gcgy14 = imag(@switch) elseif @controly==43 gcgy15 = imag(@switch) elseif @controly==44 gcgy16 = imag(@switch) elseif @controly==45 gcgy17 = imag(@switch) elseif @controly==46 gcgy18 = imag(@switch) elseif @controly==47 gcgy19 = imag(@switch) elseif @controly==48 gcgy20 = imag(@switch) elseif @controly==49 gcgy21 = imag(@switch) elseif @controly==50 gcgy22 = imag(@switch) elseif @controly==51 gcgy23 = imag(@switch) elseif @controly==52 gcgy24 = imag(@switch) elseif @controly==53 gcgy25 = imag(@switch) elseif @controly==54 gcgy26 = imag(@switch) elseif @controly==55 gcgy27 = imag(@switch) endif else gc0 = @switch endif gm = 0.0 if @formula==12 gmira = real(gc0)*real(gz) - 2.0*(real(@one)-real(gc0))*sqr(real(gz)) \ /(imag(@one) + sqr(real(gz))) endif repeat gz0 = gz1 = gz if @matrix gz1 = real(gz)*real(@c0)+imag(gz)*imag(@c0) \ + flip(real(gz)*real(@c1)+imag(gz)*imag(@c1)) endif if @order<2 && @rot if (gx=|gz1|)>0.0 if @rotn==0 gz1 = gz1*gz1/sqrt(gx) elseif @rotn==1 gz1 = gz1^3/gx elseif @rotn==2 gz1 = gz1^4/gx^1.5 elseif @rotn==3 gz1 = gz1^5/gx^2 endif endif endif if (@order==0 || @order==2 || @order==3) && @sum gz1 = gzs = gzs + gz1 endif if @order!=2 && @product if |gz1|>0.0 gz1 = gzp = gzp*gz1 endif endif if (@order>1 && @order<5) && @rot if (gx=|gz1|)>0.0 if @rotn==0 gz1 = gz1*gz1/sqrt(gx) elseif @rotn==1 gz1 = gz1^3/gx elseif @rotn==2 gz1 = gz1^4/gx^1.5 elseif @rotn==3 gz1 = gz1^5/gx^2 endif endif endif if (@order==1 || @order>3) && @sum gz1 = gzs = gzs + gz1 endif if @order==2 && @product if |gz1|>0.0 gz1 = gzp = gzp*gz1 endif endif if @order==5 && @rot if (gx=|gz1|)>0.0 if @rotn==0 gz1 = gz1*gz1/sqrt(gx) elseif @rotn==1 gz1 = gz1^3/gx elseif @rotn==2 gz1 = gz1^4/gx^1.5 elseif @rotn==3 gz1 = gz1^5/gx^2 endif endif endif if @formula==0 gz2 = gz1*gz1 gz = gc2*gz2 + gc1*gz1 + gc0 if @degree>0 gz = gc3*gz2*gz1 + gz if @degree>1 gz4 = gz2*gz2 gz = gc4*gz4 + gz if @degree>2 gz = gc5*gz4*gz1 + gz if @degree>3 gz = gc6*gz4*gz2 + gz endif endif endif endif gz = gz^pwr if @ode gz = gz0 + go*gz endif elseif @formula==1 gz = flip(real(gz1)*imag(gz1)) - imag(gz1)^2 + gc0 if @ode gz = gz0 + gox*real(gz) + flip(goy*imag(gz)) endif elseif @formula==2 gz = gc0*fn1(gz1) + gz1 if @ode gz = gz0 + go*gz endif elseif @formula==3 gz = real(gc0)-real(gz1)*real(gz1)+imag(gc0)*imag(gz1)+flip(real(gz1)) ; gz = imag(gz1) + flip((real(gz1)-real(gc0)+sqr(imag(gz1)))/imag(gc0)) if @ode gz = gz0 + gox*real(gz) + flip(goy*imag(gz)) endif elseif @formula==4 if @newrot gx = 1.0/|gz1| gz2 = gz1*gz1 gz = gc0 + gc1*gz1 + gc2*gz2*sqrt(gx) if @degree>0 gz2 = gz2*gz1 gz = gz + gc3*gz2*gx if @degree>1 gz2 = gz2*gz1 gz = gz + gc4*gz2*gx^1.5 if @degree>2 gz2 = gz2*gz1 gz = gz + gc5*gz2*gx^2 if @degree>3 gz2 = gz2*gz1 gz = gz + gc6*gz2*gx^2.5 endif endif endif endif else gz2 = gz1/cabs(gz1) gz4 = gz1*gz2 gz = gc2*gz4 + gc1*gz2 + gc0 if @degree>0 gz4 = gz4*gz2 gz = gc3*gz4 + gz if @degree>1 gz4 = gz4*gz2 gz = gc4*gz4 + gz if @degree>2 gz4 = gz4*gz2 gz = gc5*gz4 + gz if @degree>3 gz4 = gz4*gz2 gz = gc6*gz4 + gz endif endif endif endif endif if @ode gz = gz0 + go*gz endif elseif @formula==5 gz = gz1^@power + gc0 if @ode gz = gz0 + go*gz endif elseif @formula==6 gx = real(gz1) gy = imag(gz1) gx0 = gcgx2*gy + gcgx1*gx + gcgx0 gy0 = gcgy2*gy + gcgy1*gx + gcgy0 if @gdeg>0 gr = gy*gy ; y2 gs = gx*gy ; xy gt = gx*gx ; x2 gx0 = gcgx5*gr + gcgx4*gs + gcgx3*gt + gx0 gy0 = gcgy5*gr + gcgy4*gs + gcgy3*gt + gy0 if @gdeg>1 gs = gx*gr ; xy2 gr = gy*gr ; y3 gt = gx*gs ; x2y gu = gx*gt ; x3 gx0 = gcgx9*gr + gcgx8*gs + gcgx7*gt + gcgx6*gu + gx0 gy0 = gcgy9*gr + gcgy8*gs + gcgy7*gt + gcgy6*gu + gy0 if @gdeg>2 gs = gx*gr ; x1y3 gr = gy*gr ; y4 gt = gx*gs ; x2y2 gu = gx*gt ; x3y gv = gx*gu ; x4 gx0 = gcgx14*gr + gcgx13*gs + gcgx12*gt + gcgx11*gu + gcgx10*gv \ + gx0 gy0 = gcgy14*gr + gcgy13*gs + gcgy12*gt + gcgy11*gu + gcgy10*gv \ + gy0 if @gdeg>3 gs = gx*gr ; x1y4 gr = gy*gr ; y5 gt = gx*gs ; x2y3 gu = gx*gt ; x3y2 gv = gx*gu ; x4y gw = gx*gv ; x5 gx0 = gcgx20*gr + gcgx19*gs + gcgx18*gt + gcgx17*gu \ + gcgx16*gv + gcgx15*gw + gx0 gy0 = gcgy20*gr + gcgy19*gs + gcgy18*gt + gcgy17*gu \ + gcgy16*gv + gcgy15*gw + gy0 if @gdeg>4 gs = gx*gr ; x1y5 gr = gy*gr ; y6 gt = gx*gs ; x2y4 gu = gx*gt ; x3y3 gv = gx*gu ; x4y2 gw = gx*gv ; x5y gx = gx*gw ; x6 gx0 = gcgx27*gr + gcgx26*gs + gcgx25*gt + gcgx24*gu \ + gcgx23*gv + gcgx22*gw + gcgx21*gx + gx0 gy0 = gcgy27*gr + gcgy26*gs + gcgy25*gt + gcgy24*gu \ + gcgy23*gv + gcgy22*gw + gcgy21*gx + gy0 endif endif endif endif endif gz = gx0 + flip(gy0) if @ode gz = gz0 + gox*gx0 + flip(goy*gy0) else gz = gx0 + flip(gy0) endif elseif @formula==7 gz = gc0*gz1*(1.0-gz1)^pwr if @ode gz = gz0 + go*gz endif elseif @formula==8 if real(gz1)>=0.0 gz = (gz1-1.0)*gc0 else gz = (gz1+1.0)*gc0 endif if @ode gz = gz0 + go*gz endif elseif @formula==9 if real(gz1)*imag(gc0)+imag(gz1)*real(gc0)>=0.0 gz = (gz1-1.0)*gc0 else gz = (gz1+1.0)*gc0 endif if @ode gz = gz0 + go*gz endif elseif @formula==10 gz = gz1^@power - 1.0 if real(gz1)<=0.0 gz = gz + gc0*real(gz1) endif if @ode gz = gz0 + go*gz endif elseif @formula==11 if @op==0 gz = @a*fn1(gz1^@power) + @b*fn2(gz1^@power2) + gc0 elseif @op==1 gz = @a*fn1(gz1^@power) - @b*fn2(gz1^@power2) + gc0 elseif @op==2 gz = @a*fn1(gz1^@power) * @b*fn2(gz1^@power2) + gc0 elseif @op==3 gz = @a*fn1(gz1^@power) / @b*fn2(gz1^@power2) + gc0 endif if @ode gz = gz0 + go*gz endif elseif @formula==12 ; gx0 = imag(gz1) + imag(gc0)*real(gz1) - 2.0*(1.0-real(gc0))*sqr(real(gz1)) \ ; /(1.0 + sqr(real(gz1))) ; gy0 = -real(gz1) + imag(gc0)*gx0 - 2.0*(1.0-real(gc0))*sqr(gx0) \ ; /(1.0 + sqr(gx0)) gx0 = (1.0 + imag(gc0)*real(@mirax) + imag(gc0)*imag(@mirax)*sqr(imag(gz1)))*imag(gz1) + gmira gmira = real(gc0)*gx0 - 2.0*(real(@one)-real(gc0))*sqr(gx0) \ /(imag(@one) + sqr(gx0)) gz = gx0 + flip(gmira-real(gz1)) if @ode gz = gz0 + gox*real(gz) + flip(goy*imag(gz)) endif endif if @noescape>0 if @noescape==3 gx0 = cabs(gz=gz-@icentre) gz = @icentre+gz/(@iiradius+gx0) elseif @besquare gz = sr*(gz-@icentre) if @noescape==1 gx0 = real(gz) if gx0<-radh || gx0>radh gz = rad2/gx0 + flip(imag(gz)) endif gx0 = imag(gz) if gx0<-rady || gx0>rady gz = real(gz) + flip(rad2y/gx0) endif else;if @noescape==2 gx0 = real(gz) if gx0<-radh || gx0>radh gz = @iradius - gx0 + flip(imag(gz)) endif gx0 = imag(gz) if gx0<-rady || gx0>rady gz = real(gz) + flip(rad2y - gx0) endif endif gz = @icentre+isr*gz elseif (gx0=|gz-@icentre|)>rad2 if @noescape==1 gz = @icentre + (gz-@icentre)*rad2/gx0 else;if @noescape==2 if @fixreflect gz = @icentre + (2.0*@iradius-sqrt(gx0))*(gz-@icentre)/sqrt(gx0) else gz = (2.0*@iradius-sqrt(gx0))*gz/cabs(gz) endif endif endif endif if @col>0 ghistory[ghp] = gz1 = gz - @ccentre if @col==2 || @col==3 || (@col>3 && @csel==0) if gi>=cstart if @cold>0 gk = ghp - @cold if gk<0 gk = gk + 51 endif gz1 = ghistory[gk] else gk = ghp endif if @cmethod==0 gcp = @cfade*gcp + gz1 if gi>=@skip-@cold if (gk=gk-cdp)<0 gk = 51 + gk endif if !@cuseall gcp = gcp - gmaxfade*ghistory[gk] endif endif else;if @cmethod==1 if @cuseall gcp = gz1*gcp^@cfade else gcp = gz1*gcp endif if gi>=@skip-@cold if (gk=gk-cdp)<0 gk = 51 + gk endif if !@cuseall gcp = gcp/ghistory[gk] endif endif endif endif endif if @col==1 || @col==3 || (@col>3 && @csel==1) gz1 = gz - @acentre if gi>=astart if @amethod==0 || @amethod==3 if @aangle==0 gx2m1 = atan2((gz1-gzo-@acentre)/(gzo-gzo1-@acentre)) elseif @aangle==1 gx2m1 = atan2(gz1/gzo) endif if @atype==1 if gx2m1<0 gc = gx2m1 + twopi endif else gc = 2*abs(gx2m1) endif else gx2m1 = real(gzo) - real(gz1) gy2m1 = imag(gzo) - imag(gz1) gx3m1 = real(gzo1) - real(gz1) gy3m1 = imag(gzo1) - imag(gz1) gx2y2s = gx2m1*(real(gzo) + real(gz1)) + gy2m1*(imag(gzo) \ + imag(gz1)) gx3y3s = gx3m1*(real(gzo1) + real(gz1)) + gy3m1*(imag(gzo1) \ + imag(gz1)) gc = gy3m1*gx2y2s - gy2m1*gx3y3s \ + flip(gx2m1*gx3y3s - gx3m1*gx2y2s) gx2m1 = 2.0*(gx2m1*gy3m1-gx3m1*gy2m1) if abs(gx2m1)<1e-5 if abs(gx2m1)*1e1000 gk = ghp1 - @aold if gk<0 gk = gk + 51 endif gc = ghistory1[gk] else gk = ghp1 endif if @amethod<3 gap = @afade*gap + gc if gi>=@skip-@aold if (gk=gk-adp)<0 gk = 51 + gk endif if !@auseall gap = gap - gmaxfade1*ghistory1[gk] endif endif else;if @amethod>2 if @auseall gap = gc*gap^@afade else gap = gap*gc endif if gi>=@skip-@aold if (gk=gk-adp)<0 gk = 51 + gk endif if !@auseall gap = gap/ghistory1[gk] endif endif endif if (ghp1=ghp1+1)>50 ghp1 = 0 endif endif endif if (ghp=ghp+1)>50 ghp = 0 endif endif if gi>=@skip gx = real(gz) gy = imag(gz) if (gj = round(gx*gm0+gy*gm2+gxo))>=0 if gj=0 if gk=gm gm = gv if !@fix && gv>=@maxhits gb = true endif endif if @fix if gv==1.0 gh = gh + 1.0 if gbase==1e200 && (gh>=100 && gm>=10) gbase = gm/gh gbase = gbase - (@balance-gbase)/gnum endif endif if gm/gh>=@balance && gh>=50.0 gb = true endif endif if @usemin && !@fix if gv0 && gx>gamax gamax = gx endif if @normalise==2 && gxgy) \ || (@aselect==2 && gx0 && gx>gcmax gcmax = gx endif if @normalise==2 && gxgy) \ || (@cselect==2 && gx0 && gx>gamax gamax = gx endif if @normalise==2 && gxgv) \ || (@aselect==2 && gx0 && gx>gcmax gcmax = gx endif if @normalise==2 && gxgy) \ || (@cselect==2 && gx3 && @csel==0 gx = cabs(@cfn(gcp)) gy = imag(gscreen[gj,gk]) if @rselect==0 || (@rselect==1 && gx>gy) \ || (@rselect==2 && gx3 && @csel==1 if @amethod==0 || @amethod==3 gx = cabs(@afn(gap)) else gx = log(1.0+cabs(@afn(gap))^0.25) endif gy = imag(gscreen[gj,gk]) if @arselect==0 || (@arselect==1 && gx>gy) \ || (@arselect==2 && gx0 && @bailtest<3 && |gz|>@bailout) gb = true gdiv = true endif if @progress>0 && (gi>=gp || (!@fix && gm>=gq) \ || (@fix && gm/gh>=gbase && gm>0.0)) print(gpi,"/",gpv," completed.") if !@fix && !gb && gm>=@maxhits print("Minimum hits not yet reached.") endif gp = (gpi=gpi+1)*@count/gpv - 1.0 if !@fix gq = gpi*@maxhits/gpv else gbase = gm/gh gbase = gbase + (@balance-gbase)/(gnum=gnum-1) endif endif gzo1 = gzo gzo = gz - @acentre until (gi=gi+1)>=@count || gb if gconv print("Orbit is Convergent based on current settings.") elseif gdiv print("Orbit is Divergent based on current settings.") else print("Orbit is either Strange or Periodic based on current settings.") endif if !@fix && gm<@maxhits print("'Max. Hits' was not reached, to do so try increasing 'Max. #Orbit \ Iterations'.") elseif @fix if gm/gh<@balance print("The 'Fix Value' was not reached.") endif print(gh," pixels were 'on' the fractal.") endif print(gi," iterations were performed") if @normalise>0 if @normalise==2 gamax = gamax-gamin gcmax = gcmax-gcmin endif gamax = 1.0/gamax gcmax = 1.0/gcmax gl = (#width+1)*(@os+1)+41 gn = (#height+1)*(@os+1)+41 gj = 0 repeat gk = 0 repeat if @col==0 gscreen[gk,gj]=real(gscreen[gk,gj])+flip(imag(gscreen[gk,gj])/gi) elseif @col==1 if @normalise==1 gscreen[gk,gj]=real(gscreen[gk,gj]) \ +flip(imag(gscreen[gk,gj])*gamax) else gscreen[gk,gj]=real(gscreen[gk,gj]) \ +flip((imag(gscreen[gk,gj])-gamin)*gamax) endif elseif @col==2 if @normalise==1 gscreen[gk,gj]=real(gscreen[gk,gj]) \ +flip(imag(gscreen[gk,gj])*gcmax) else gscreen[gk,gj]=real(gscreen[gk,gj]) \ +flip((imag(gscreen[gk,gj])-gcmin)*gcmax) endif elseif @col==3 if @normalise==1 gval[gk,gj]=real(gval[gk,gj])*gamax+flip(imag(gval[gk,gj])*gcmax) else gval[gk,gj]=(real(gval[gk,gj])-gamin)*gamax \ +flip((imag(gval[gk,gj])-gcmin)*gcmax) endif endif until (gk=gk+1)>=gl until (gj=gj+1)>=gn endif gm = log(gm) endif float il2 = 1.0/log(2.0) init: if @orbit && @julia #z = #pixel endif bool first = true complex zl = (0,0) complex zls = (0,0) complex zlp = (1,0) complex zz = (0,0) complex zzs = (0,0) complex zzp = (1,0) complex zs = (0,0) complex zp = (1,0) complex c0 = @const complex c1 = @const1 complex c2 = @const2 complex c3 = @const3 complex c4 = @const4 complex c5 = @const5 complex c6 = @const6 if @formula==4 c0 = c0/cabs(@const) c1 = c1/cabs(@const1) c2 = c2/cabs(@const2) c3 = c3/cabs(@const3) c4 = c4/cabs(@const4) c5 = c5/cabs(@const5) c6 = c6/cabs(@const6) endif float cgx0 = real(@cg0) float cgx1 = real(@cg1) float cgx2 = real(@cg2) float cgx3 = real(@cg3) float cgx4 = real(@cg4) float cgx5 = real(@cg5) float cgx6 = real(@cg6) float cgx7 = real(@cg7) float cgx8 = real(@cg8) float cgx9 = real(@cg9) float cgx10 = real(@cg10) float cgx11 = real(@cg11) float cgx12 = real(@cg12) float cgx13 = real(@cg13) float cgx14 = real(@cg14) float cgx15 = real(@cg15) float cgx16 = real(@cg16) float cgx17 = real(@cg17) float cgx18 = real(@cg18) float cgx19 = real(@cg19) float cgx20 = real(@cg20) float cgx21 = real(@cg21) float cgx22 = real(@cg22) float cgx23 = real(@cg23) float cgx24 = real(@cg24) float cgx25 = real(@cg25) float cgx26 = real(@cg26) float cgx27 = real(@cg27) float cgy0 = imag(@cg0) float cgy1 = imag(@cg1) float cgy2 = imag(@cg2) float cgy3 = imag(@cg3) float cgy4 = imag(@cg4) float cgy5 = imag(@cg5) float cgy6 = imag(@cg6) float cgy7 = imag(@cg7) float cgy8 = imag(@cg8) float cgy9 = imag(@cg9) float cgy10 = imag(@cg10) float cgy11 = imag(@cg11) float cgy12 = imag(@cg12) float cgy13 = imag(@cg13) float cgy14 = imag(@cg14) float cgy15 = imag(@cg15) float cgy16 = imag(@cg16) float cgy17 = imag(@cg17) float cgy18 = imag(@cg18) float cgy19 = imag(@cg19) float cgy20 = imag(@cg20) float cgy21 = imag(@cg21) float cgy22 = imag(@cg22) float cgy23 = imag(@cg23) float cgy24 = imag(@cg24) float cgy25 = imag(@cg25) float cgy26 = imag(@cg26) float cgy27 = imag(@cg27) float x float y complex o = @odestep float ox = real(@odestep) float oy = imag(@odestep) float ls = 0.0 float lsx = 0.0 float lsy = 0.0 float sc = 1.0/@loff float ly = @lbail float lyx = @fbail float lyy = @fbail float mira = 0.0 int i = 0 int j int k = 0 int kx = 0 int l = 0 float x0 = 1.0 if !@orbit || @col>3 || @julia complex z0 complex z1 complex z2 complex z4 float r float s float t float u float v float w float y0 if !@orbit || !@julia #z = @start endif if @orbit z0 = @switch else z0 = #pixel endif if @ode && @odeswitch o = z0 ox = real(z0) oy = imag(z0) elseif @formula==0 if @control==0 c0 = z0 elseif @control==1 c1 = z0 elseif @control==2 c2 = z0 elseif @control==3 c3 = z0 elseif @control==4 c4 = z0 elseif @control==5 c5 = z0 elseif @control==6 c6 = z0 endif elseif @formula==4 if @control==0 c0 = z0/cabs(z0) elseif @control==1 c1 = z0/cabs(z0) elseif @control==2 c2 = z0/cabs(z0) elseif @control==3 c3 = z0/cabs(z0) elseif @control==4 c4 = z0/cabs(z0) elseif @control==5 c5 = z0/cabs(z0) elseif @control==6 c6 = z0/cabs(z0) endif elseif @formula==6 if @controlx==0 cgx0 = real(z0) elseif @controlx==1 cgx1 = real(z0) elseif @controlx==2 cgx2 = real(z0) elseif @controlx==3 cgx3 = real(z0) elseif @controlx==4 cgx4 = real(z0) elseif @controlx==5 cgx5 = real(z0) elseif @controlx==6 cgx6 = real(z0) elseif @controlx==7 cgx7 = real(z0) elseif @controlx==8 cgx8 = real(z0) elseif @controlx==9 cgx9 = real(z0) elseif @controlx==10 cgx0 = real(z0) elseif @controlx==11 cgx11 = real(z0) elseif @controlx==12 cgx12 = real(z0) elseif @controlx==13 cgx13 = real(z0) elseif @controlx==14 cgx14 = real(z0) elseif @controlx==15 cgx15 = real(z0) elseif @controlx==16 cgx16 = real(z0) elseif @controlx==17 cgx17 = real(z0) elseif @controlx==18 cgx18 = real(z0) elseif @controlx==19 cgx19 = real(z0) elseif @controlx==20 cgx20 = real(z0) elseif @controlx==21 cgx21 = real(z0) elseif @controlx==22 cgx22 = real(z0) elseif @controlx==23 cgx23 = real(z0) elseif @controlx==24 cgx24 = real(z0) elseif @controlx==25 cgx25 = real(z0) elseif @controlx==26 cgx26 = real(z0) elseif @controlx==27 cgx27 = real(z0) elseif @controlx==28 cgy0 = real(z0) elseif @controlx==29 cgy1 = real(z0) elseif @controlx==30 cgy2 = real(z0) elseif @controlx==31 cgy3 = real(z0) elseif @controlx==32 cgy4 = real(z0) elseif @controlx==33 cgy5 = real(z0) elseif @controlx==34 cgy6 = real(z0) elseif @controlx==35 cgy7 = real(z0) elseif @controlx==36 cgy8 = real(z0) elseif @controlx==37 cgy9 = real(z0) elseif @controlx==38 cgy10 = real(z0) elseif @controlx==39 cgy11 = real(z0) elseif @controlx==40 cgy12 = real(z0) elseif @controlx==41 cgy13 = real(z0) elseif @controlx==42 cgy14 = real(z0) elseif @controlx==43 cgy15 = real(z0) elseif @controlx==44 cgy16 = real(z0) elseif @controlx==45 cgy17 = real(z0) elseif @controlx==46 cgy18 = real(z0) elseif @controlx==47 cgy19 = real(z0) elseif @controlx==48 cgy20 = real(z0) elseif @controlx==49 cgy21 = real(z0) elseif @controlx==50 cgy22 = real(z0) elseif @controlx==51 cgy23 = real(z0) elseif @controlx==52 cgy24 = real(z0) elseif @controlx==53 cgy25 = real(z0) elseif @controlx==54 cgy26 = real(z0) elseif @controlx==55 cgy27 = real(z0) endif if @controly==0 cgx0 = imag(z0) elseif @controly==1 cgx1 = imag(z0) elseif @controly==2 cgx2 = imag(z0) elseif @controly==3 cgx3 = imag(z0) elseif @controly==4 cgx4 = imag(z0) elseif @controly==5 cgx5 = imag(z0) elseif @controly==6 cgx6 = imag(z0) elseif @controly==7 cgx7 = imag(z0) elseif @controly==8 cgx8 = imag(z0) elseif @controly==9 cgx9 = imag(z0) elseif @controly==10 cgx0 = imag(z0) elseif @controly==11 cgx11 = imag(z0) elseif @controly==12 cgx12 = imag(z0) elseif @controly==13 cgx13 = imag(z0) elseif @controly==14 cgx14 = imag(z0) elseif @controly==15 cgx15 = imag(z0) elseif @controly==16 cgx16 = imag(z0) elseif @controly==17 cgx17 = imag(z0) elseif @controly==18 cgx18 = imag(z0) elseif @controly==19 cgx19 = imag(z0) elseif @controly==20 cgx20 = imag(z0) elseif @controly==21 cgx21 = imag(z0) elseif @controly==22 cgx22 = imag(z0) elseif @controly==23 cgx23 = imag(z0) elseif @controly==24 cgx24 = imag(z0) elseif @controly==25 cgx25 = imag(z0) elseif @controly==26 cgx26 = imag(z0) elseif @controly==27 cgx27 = imag(z0) elseif @controly==28 cgy0 = imag(z0) elseif @controly==29 cgy1 = imag(z0) elseif @controly==30 cgy2 = imag(z0) elseif @controly==31 cgy3 = imag(z0) elseif @controly==32 cgy4 = imag(z0) elseif @controly==33 cgy5 = imag(z0) elseif @controly==34 cgy6 = imag(z0) elseif @controly==35 cgy7 = imag(z0) elseif @controly==36 cgy8 = imag(z0) elseif @controly==37 cgy9 = imag(z0) elseif @controly==38 cgy10 = imag(z0) elseif @controly==39 cgy11 = imag(z0) elseif @controly==40 cgy12 = imag(z0) elseif @controly==41 cgy13 = imag(z0) elseif @controly==42 cgy14 = imag(z0) elseif @controly==43 cgy15 = imag(z0) elseif @controly==44 cgy16 = imag(z0) elseif @controly==45 cgy17 = imag(z0) elseif @controly==46 cgy18 = imag(z0) elseif @controly==47 cgy19 = imag(z0) elseif @controly==48 cgy20 = imag(z0) elseif @controly==49 cgy21 = imag(z0) elseif @controly==50 cgy22 = imag(z0) elseif @controly==51 cgy23 = imag(z0) elseif @controly==52 cgy24 = imag(z0) elseif @controly==53 cgy25 = imag(z0) elseif @controly==54 cgy26 = imag(z0) elseif @controly==55 cgy27 = imag(z0) endif else c0 = z0 endif if !@orbit && (@lyapunov || @fdim) zl = #z + @loff i = 2 zz = #z if @version==0 zzs = zs zzp = zp endif else i = 1 endif endif bool inout = true if @orbit && !@julia && @col>3 k = round(real(#screenpixel)*(@os+1)) j = round(imag(#screenpixel)*(@os+1)) if real(gscreen[k,j])>0.0 inout = false endif #z = gval[k,j] + @ccentre endif bool bail = true loop: if @orbit && !@julia && inout if first first = false if @col<4 x = real(#screenpixel)*(@os+1) y = imag(#screenpixel)*(@os+1) i = round(x) j = round(y) if real(gscreen[i,j])>0.0 if (@col==2 && @cselect==3) || (@col==1 && @aselect==3) #z = log(real(gscreen[i,j]))/gm \ + flip(imag(gscreen[i,j]))/real(gscreen[i,j]) elseif @col==3 #z = gval[i,j] else #z = log(real(gscreen[i,j]))/gm + flip(imag(gscreen[i,j])) endif bail = false endif endif endif else j = i if !@orbit && (@lyapunov || @fdim) #z = zz zs = zzs zp = zzp if @version==0 zls = zzs zlp = zzp endif endif if @formula==12 mira = real(c0)*real(#z) - 2.0*(real(@one)-real(c0))*sqr(real(#z)) \ /(imag(@one) + sqr(real(#z))) endif repeat z1 = z0 = #z if @matrix z1 = real(#z)*real(@c0)+imag(#z)*imag(@c0) \ + flip(real(#z)*real(@c1)+imag(#z)*imag(@c1)) endif if @order<2 && @rot if (x=|z1|)>0.0 if @rotn==0 z1 = z1*z1/sqrt(x) elseif @rotn==1 z1 = z1^3/x elseif @rotn==2 z1 = z1^4/x^1.5 elseif @rotn==3 z1 = z1^5/x^2.0 endif endif endif if (@order==0 || @order==2 || @order==3) && @sum z1 = zs = zs + z1 endif if @order!=2 && @product if |z1|>0.0 z1 = zp = zp*z1 endif endif if (@order>1 && @order<5) && @rot if (x=|z1|)>0.0 if @rotn==0 z1 = z1*z1/sqrt(x) elseif @rotn==1 z1 = z1^3/x elseif @rotn==2 z1 = z1^4/x^1.5 elseif @rotn==3 z1 = z1^5/x^2.0 endif endif endif if (@order==1 || @order>3) && @sum z1 = zs = zs + z1 endif if @order==2 && @product if |z1|>0.0 z1 = zp = zp*z1 endif endif if @order==5 && @rot if (x=|z1|)>0.0 if @rotn==0 z1 = z1*z1/sqrt(x) elseif @rotn==1 z1 = z1^3/x elseif @rotn==2 z1 = z1^4/x^1.5 elseif @rotn==3 z1 = z1^5/x^2.0 endif endif endif if @formula==0 z2 = z1*z1 #z = c2*z2 + c1*z1 + c0 if @degree>0 #z = c3*z2*z1 + #z if @degree>1 z4 = z2*z2 #z = c4*z4 + #z if @degree>2 #z = c5*z4*z1 + #z if @degree>3 #z = c6*z4*z2 + #z endif endif endif endif #z = #z^pwr if @ode #z = z0 + o*#z endif elseif @formula==1 #z = flip(real(z1)*imag(z1)) - imag(z1)^2 + c0 if @ode #z = z0 + ox*real(#z) + flip(oy*imag(#z)) endif elseif @formula==2 #z = c0*@fn1(z1) + z1 if @ode #z = z0 + o*#z endif elseif @formula==3 #z = real(c0)-real(z1)*real(z1)+imag(c0)*imag(z1)+flip(real(z1)) ; #z = imag(z1) + flip((real(z1)-real(c0)+sqr(imag(z1)))/imag(c0)) if @ode #z = z0 + ox*real(#z) + flip(oy*imag(#z)) endif elseif @formula==4 if @newrot x0 = 1.0/|z1| z2 = z1*z1 #z = c0 + c1*z1 + c2*z2*sqrt(x0) if @degree>0 z2 = z2*z1 #z = #z + c3*z2*x0 if @degree>1 z2 = z2*z1 #z = #z + c4*z2*x0^1.5 if @degree>2 z2 = z2*z1 #z = #z + c5*z2*x0^2 if @degree>3 z2 = z2*z1 #z = #z + c6*z2*x0^2.5 endif endif endif endif else z2 = z1/cabs(z1) z4 = z1*z2 #z = c2*z4 + c1*z2 + c0 if @degree>0 z4 = z4*z2 #z = c3*z4 + #z if @degree>1 z4 = z4*z2 #z = c4*z4 + #z if @degree>2 z4 = z4*z2 #z = c5*z4 + #z if @degree>3 z4 = z4*z2 #z = c6*z4 + #z endif endif endif endif endif if @ode #z = z0 + o*#z endif elseif @formula==5 #z = z1^@power + c0 if @ode #z = z0 + o*#z endif elseif @formula==6 x = real(z1) y = imag(z1) x0 = cgx2*y + cgx1*x + cgx0 y0 = cgy2*y + cgy1*x + cgy0 if @gdeg>0 r = y*y ; y2 s = x*y ; xy t = x*x ; x2 x0 = cgx5*r + cgx4*s + cgx3*t + x0 y0 = cgy5*r + cgy4*s + cgy3*t + y0 if @gdeg>1 s = x*r ; xy2 r = y*r ; y3 t = x*s ; x2y u = x*t ; x3 x0 = cgx9*r + cgx8*s + cgx7*t + cgx6*u + x0 y0 = cgy9*r + cgy8*s + cgy7*t + cgy6*u + y0 if @gdeg>2 s = x*r ; x1y3 r = y*r ; y4 t = x*s ; x2y2 u = x*t ; x3y v = x*u ; x4 x0 = cgx14*r + cgx13*s + cgx12*t + cgx11*u + cgx10*v + x0 y0 = cgy14*r + cgy13*s + cgy12*t + cgy11*u + cgy10*v + y0 if @gdeg>3 s = x*r ; x1y4 r = y*r ; y5 t = x*s ; x2y3 u = x*t ; x3y2 v = x*u ; x4y w = x*v ; x5 x0 = cgx20*r + cgx19*s + cgx18*t + cgx17*u + cgx16*v + cgx15*w +x0 y0 = cgy20*r + cgy19*s + cgy18*t + cgy17*u + cgy16*v + cgy15*w +y0 if @gdeg>4 s = x*r ; x1y5 r = y*r ; y6 t = x*s ; x2y4 u = x*t ; x3y3 v = x*u ; x4y2 w = x*v ; x5y x = x*w ; x6 x0 = cgx27*r + cgx26*s + cgx25*t + cgx24*u + cgx23*v \ + cgx22*w + cgx21*x + x0 y0 = cgy27*r + cgy26*s + cgy25*t + cgy24*u + cgy23*v \ + cgy22*w + cgy21*x + y0 endif endif endif endif endif if @ode #z = z0 + ox*x0 + flip(oy*y0) else #z = x0 + flip(y0) endif elseif @formula==7 #z = c0*z1*(1.0-z1)^pwr if @ode #z = z0 + o*#z endif elseif @formula==8 if real(z1)>=0.0 #z = (z1-1.0)*c0 else #z = (z1+1.0)*c0 endif if @ode #z = z0 + o*#z endif elseif @formula==9 if real(z1)*imag(c0)+imag(z1)*real(c0)>=0.0 #z = (z1-1.0)*c0 else #z = (z1+1.0)*c0 endif if @ode #z = z0 + o*#z endif elseif @formula==10 #z = z1^@power - 1.0 if real(z1)<=0.0 #z = #z + c0*real(z1) endif if @ode #z = z0 + o*#z endif elseif @formula==11 if @op==0 #z = @a*fn1(z1^@power) + @b*fn2(z1^@power2) + c0 elseif @op==1 #z = @a*fn1(z1^@power) - @b*fn2(z1^@power2) + c0 elseif @op==2 #z = @a*fn1(z1^@power) * @b*fn2(z1^@power2) + c0 elseif @op==3 #z = @a*fn1(z1^@power) / @b*fn2(z1^@power2) + c0 endif if @ode #z = z0 + o*#z endif elseif @formula==12 ; x0 = imag(z1) + imag(c0)*real(z1) - 2.0*(1.0-real(c0))*sqr(real(z1)) \ ; /(1.0 + sqr(real(z1))) ; y0 = -real(z1) + imag(c0)*x0 - 2.0*(1.0-real(c0))*sqr(x0) \ ; /(1.0 + sqr(x0)) x0 = (1.0 + imag(c0)*real(@mirax) + imag(c0)*imag(@mirax)*sqr(imag(z1)))*imag(z1) + mira mira = real(c0)*x0 - 2.0*(real(@one)-real(c0))*sqr(x0) \ /(imag(@one) + sqr(x0)) #z = x0 + flip(mira-real(z1)) if @ode #z = z0 + ox*real(#z) + flip(oy*imag(#z)) endif endif if @noescape>0 if @noescape==3 x0 = cabs(#z=#z-@icentre) #z = @icentre+#z/(@iiradius+x0) elseif @besquare #z = sr*(#z-@icentre) if @noescape==1 x0 = real(#z) if x0<-radh || x0>radh #z = rad2/x0 + flip(imag(#z)) endif x0 = imag(#z) if x0<-rady || x0>rady #z = real(#z) + flip(rad2y/x0) endif else;if @noescape==2 if real(#z)<-radh || real(#z)>radh #z = @iradius - real(#z) + flip(imag(#z)) endif if imag(#z)<-rady || imag(#z)>rady #z = real(#z) + flip(rad2y - imag(#z)) endif endif #z = @icentre+isr*#z elseif (x0=|#z-@icentre|)>rad2 if @noescape==1 #z = @icentre + (#z-@icentre)*rad2/x0 else;if @noescape==2 if @fixreflect #z = @icentre + (2.0*@iradius-sqrt(x0))*(#z-@icentre)/sqrt(x0) else #z = (2.0*@iradius-sqrt(x0))*#z/cabs(#z) endif endif endif endif if (j==2 || @orbit || (!@lyapunov && !@fdim)) && \ @bailtest!=3 && ((@bailtest!=1 && |#z-z0|<@smallbail) \ || (@bailtest>0 && |#z|>@bailout)) bail = false if !@orbit && (@lyapunov || @fdim) #z = 0.0 endif j = 0 elseif !@orbit && (@lyapunov || @fdim) if j==2 zz = #z zzs = zs zzp = zp #z = zl zs = zls zp = zlp else if @version>0 zl = #z zls = zs zlp = zp endif if @fdim z0 = #z-zz endif r=|#z-zz| if r>0.0 r = 1.0/(sc*sqrt(r)) k = k + 1 zl = zz + r*(#z-zz) if @lyapunov ls = ls - log(r) ly = il2*ls/k if (ly<@lbail || ly>@lbail1) && k>100 bail = false j = 0 if ly<@lbail #z = 0.0 else #z = 1.0 endif else #z = (ly-@lbail)/(@lbail1-@lbail) endif endif if @fdim && bail r = abs(real(z0)) s = abs(imag(z0)) if r>0.0 && s>0.0 kx = kx + 1 lsx = lsx + log(sc*r) lsy = lsy + log(sc*s) lyx = il2*lsx/kx lyy = il2*lsy/kx lyx = abs(lyx) lyy = abs(lyy) if lyx>lyy lyx = ly + lyy/lyx else lyx = ly + lyx/lyy endif if (lyx<@fbail || lyx>@fbail1) && kx>100 bail = false j = 0 if lyx<@fbail #z = 0.0 else #z = 1.0 endif else #z = (lyx-@fbail)/(@fbail1-@fbail) endif endif endif endif endif endif until (j=j-1)<=0 l = l + 1 if (@orbit && !@julia) && @col>3 && l>=#maxiter bail = false endif endif bailout: bail == true default: title = "Attractors" render = false center = (0,0) method = multipass periodicity = 0 param version caption = "Formula Version" enum = "1" "2" "3" default = 2 hint = "Included to ensure future compatability. In version 3 some extra \ options were added for colouring attractors (orbit mode) including \ separating the depth relating to inside/outside from the depth for \ the location or curvature calculations. In version 2 a bug in \ rendering using 'Iterate the Sum' or 'Iterate the Product' with \ the Lyapunov or 'Dimension' bailouts enabled was fixed and \ extra options were added for 'Self-Rotation'." endparam heading caption = "Information" text = "This was initially a version of an Inverse Roots formula intended \ to be used for the discovery of Strange Attractors, or at least \ Periodic Attractors with extremely large periods but it worked \ so well I extended it to other formulas. To find interesting \ Attractors one way of viewing in Mandelbrot mode is to have \ 'Bailout Testing' set to 'Both', 'Inside' colouring set to \ MMF3-Periodicity (set to detect true periodicity based on final \ z), 'Outside' colouring set to say MMF4 Attractor Colouring or a \ similar colouring formula and 'Maximum Iterations' set to 2000 or \ more. With things set up this way interesting Attractors may be \ found when switching from areas of the Mandelbrot that remain in \ the solid 'Inside' colour. In Orbit mode by default you are given \ compiler messages if the Orbit is found to be Divergent, \ Convergent or otherwise (i.e. Strange/Periodic) and if the current \ 'Max. #Orbit Iterations' is set too low for 'Max. Hits' to be \ reached. If a render finishes but you don't get any compiler \ messages then check you haven't disabled 'Show Info.' and you may \ need to hit the reload button in Ultrafractal's 'Formula' section. \ You can investigate by using Ultrafractal's explore feature or by \ using the switch method. For some main formulas you can use the \ switch method repeatedly. For instance for 'Inverse Roots' find an \ interesting Orbit, switch to it then copy the 'Switch Value' to \ the control coefficient then switch again (back to the Mandelbrot) \ then select a different 'Control Coefficient' and repeat \ the process. When viewing an Orbit you should set 'Maximum \ Iterations' in the Ultrafractal Location section to 1 but remember \ to set it back to a 'normal' value (e.g. 2000) if you switch back \ to Mandelbrot mode. Note that in Orbit mode by default the real \ part passed to the Outside colouring carries the hit count for \ each pixel and the imaginary part carries the last orbit iteration \ count when that pixel was hit. The latter can help guide you to \ Strange Attractors by giving some indication as to whether the \ Orbit is Strange or just slowly Periodically convergent. You can \ also tell if it's Strange or Periodic using the fact that Periodic \ Orbits will not fill in 'gaps' when you increase 'Max. Hits' and \ 'Max. #Orbit Iterations' but Strange Attractors will i.e. Periodic \ Orbits are ultimately a finite collection of disconnected points \ but Strange Attractors are either an infinite collection of \ disconnected points or one or more lines or areas that are in \ themselves connected (i.e. there may be more than one distinct \ line or area)." endheading param mandy default = true visible = false endparam param orbit default = false visible = false endparam param showinfo caption = "Show Info." default = true hint = "By default the formula returns information about the current \ attractor in orbit mode, this causes some reduction in speed of \ calculation so this parameter lets you disable the compiler \ messages if you wish." endparam heading caption = "Currently viewing Mandelbrot mode." visible = @mandy endheading heading caption = "Currently viewing an Orbit (or a Julia)." text = "For optimum performance when viewing an Orbit you should set the \ value of 'Maximum Iterations' in Ultrafractal's Location section \ to 1 except when using this formula's 'Outside' or 'Inside' \ 'Colouring' options when you should set 'Maximum Iterations' to \ the number of orbit values you wish to pass to the selected UF \ colouring formula." visible = @orbit endheading param julia caption = "Julia instead of Orbit" default = false hint = "Enable to view in Julia mode instead of Orbit mode." endparam param progress caption = "Progress report" enum = "None" "/5" "/10" "/50" "/100" "/1000" hint = "You may set this to report progress at the completion of every \ one fifth, one tenth, one fiftieth, one hundredth or one \ thousandth of the 'Max. #Orbit Iterations' or the 'Max. Hits' \ (whichever occurs first) when in orbit mode. The progress report \ is given as compiler messages. If compiler messages do not seem to \ be appearing then either the current render is very slow (in which \ case try a larger number of progress updates) or Ultrafractal's \ messaging is not set to this UFM in which case hit the formula \ reload button in the Ultrafractal 'Formula' section. Note this \ option only works when 'Show Info.' is enabled." visible = @orbit && !@julia && @showinfo endparam heading caption = "Bailout Control" endheading param bailtest caption = "Bailout Testing" enum = "Convergent" "Divergent" "Both" "Neither" default = 2 hint = "It's best to leave this set to 'Both' when hunting for interesting \ attractors as this helps eliminate areas that are divergent and \ areas that converge to a point." endparam param smallbail caption = "Convergent Bailout" default = 1e-9 max = 1.0 min = 0.0 hint = "The small bailout test value for point convergence testing." visible = @bailtest!=1 endparam param bailout caption = "Divergent Bailout" default = 65536.0 min = 4.0 hint = "The divergent bailout test value." visible = @bailtest>0 endparam heading caption = "Lyapunov Bailout Information" text = "When using the Lyapunov and/or 'Dimension' bailouts you can either \ set 'Inside' colouring to 'None' with transfer method 'none' or to \ MMF4 Attractor Colouring or a similar formula and set the \ 'Outside' colouring to MMF4 Attractor Colouring or a similar \ formula. If you set the 'Inside' colouring to 'None' and 'none' \ then interesting attractors will be found when switching from \ areas of the Mandelbrot coloured in the 'Solid' 'Inside' colour. \ If you set the 'Inside' colouring to MMF4 Attractor Colouring then \ interesting attractors will be found in areas of the Mandelbrot \ coloured in colours other than palette colour 0." expanded = false visible = !@orbit endheading heading caption = "Lyapunov Bailouts" visible = !@orbit endheading param lyapunov caption = "Lyapunov Bailout" default = false hint = "Normally bailout is only controlled by the usual bailouts but you \ can enable bailout based on an estimation of the Lyapunov value as \ calcuated by the method of Sprott which can detect when the Orbit \ is Periodic or Strange. When the Lyapunov calculation is enabled \ then the colouring formulas are passed the Lyapunov value as z \ except when bailout occurs. Use 'MMF4-Attractor Colouring' \ or a similar formula for the colourings. Note that \ when hunting for Strange Attractors you should have 'Repeat \ Gradient' in the colourings disabled. When this option is enabled \ then if normal convergent or divergent bailout occurs then zero is \ passed to the 'Outside' colouring." visible = !@orbit endparam param lbail caption = "Lyapunov Minimum" default = 0.05 hint = "Specifies the Lyapunov value that is used as the threshold between \ periodicity (=value). If the \ value found is less than this minimum at any time then the formula \ will assume there is no Strange Attractor for the current pixel \ and bail out (colouring as 'Outside' with z set to zero)." visible = !@orbit && @lyapunov endparam param lbail1 caption = "Lyapunov Maximum" default = 1.0 hint = "Specifies a maximum limit Lyapunov value, if the value is greater \ than this at any time then the formula will bail out (colouring as \ 'Outside' with z set to 1)." visible = !@orbit && @lyapunov endparam param fdim caption = "'Dimension' Bailout" default = false hint = "Enabling this instructs the formula to add bailout testing based \ on the calculation of a value based on the single dimension \ Lyapunov values as well as the 2D one. When enabled you can set \ minimum and maximum 'dimension' values outside of which range the \ formula will bailout and colour as 'Outside'." visible = !@orbit endparam param fbail caption = "Minimum 'Dimension'" default = 0.0 min = 0.0 hint = "Sets the minimum 'dimension' to be coloured as 'Inside'. If \ the 'dimension' calculated as less than this at any time then \ zero is passed to the 'Outside' colouring." visible = !@orbit && @fdim endparam param fbail1 caption = "Maximum 'Dimension'" default = 2.0 hint = "Sets the maximum 'dimension' to be coloured as 'Inside'. If \ the 'dimension' calculated is greater than this at any time then \ 1 is passed to the 'Outside' colouring." visible = !@orbit && @fdim endparam param loff caption = "Lyapunov offset" default = 1e-6 min = 1e-20 max = 0.1 hint = "The Lyapunov value and 'dimension' are calculated based on a small \ variation in initial conditions, this parameter lets you control \ the difference." visible = !@orbit && (@lyapunov || @fdim) endparam heading caption = "Modifiers" endheading param matrix caption = "Apply Matrix Multiply" default = false hint = "Enable to multiply z by a 2*2 matrix at the start of each \ iteration." endparam param c0 caption = "Matrix Column 0" default = (1,0) hint = "(1,0) is the value of column 0 for the identity matrix." visible = @matrix endparam param c1 caption = "Matrix Column 1" default = (0,1) hint = "(0,1) is the value of column 1 for the identity matrix." visible = @matrix endparam param rot caption = "Self-Rotation" default = false hint = "Rotates z by itself to give z1=f(rot(z0)), z2=f(rot(z1)) etc." endparam param rotn caption = "Amount of Self-Rotation" enum = "*1" "*2" "*3" "*4" default = 0 hint = "Allows you to choose to rotate z by it's natural angle '*1', twice \ it's natural angle '*2' etc." visible = @rot endparam param sum caption = "Iterate the Sum" default = false hint = "When enabled, instead of z1=f(z0), z2=f(z1), z3=f(z2) etc. the \ formula uses z1=f(z0), z2=f(z0+z1), z3=f(z0+z1+z2) etc." endparam param product caption = "Iterate the Product" default = false hint = "When enabled, instead of z1=f(z0), z2=f(z1), z3=f(z2) etc. the \ formula uses z1=f(z0), z2=f(z0*z1), z3=f(z0*z1*z2) etc." endparam param order caption = "Rot/Sum/Product order" enum = "Rot+Sum+Product" "Rot+Product+Sum" "Sum+Rot+Product" \ "Sum+Product+Rot" "Product+Rot+Sum" "Product+Sum+Rot" hint = "Allows you to select the order in which the modifiers are applied. \ They are always applied prior to plugging z into the main formula." visible = @sum && (@rot || @product) endparam param noescape caption = "No Escape" enum = "Off" "Invert" "Reflect" "Full Inverse" default = 0 hint = "These options were inspired by options available in Chaoscope by \ Nicolas Desprez. 'Invert' causes an orbit never to diverge by \ inverting points outside a given radius from a given centre, this \ means that the orbit can only be periodic or strange. 'Reflect' is \ an alternative method that reflects locations outside a given \ radius from a given centre around the circle (or rectangle) \ described by that radius and centre and will generally increase \ the likelyhood of periodic or strange attractors without \ completely ruling out the possibility of divergence." endparam param besquare caption = "Be Square" default = false hint = "Normally the object used for inversion/reflection is a circle but \ you may choose to use a rectangle instead." visible = @noescape>0 && @noescape<3 endparam param srot caption = "Rotation (degrees)" default = 0.0 hint = "You can put the inversion/reflection rectangle at any angle." visible = @noescape>0 && @noescape<3 && @besquare endparam param fixreflect caption = "Fix Circle Reflection" default = false hint = "Fixes an error in the circular reflection calculation. By default \ it is disabled to avoid compatibility problems." visible = @noescape==2 && @noescape<3 && !@besquare endparam param icentre caption = "Invert/Reflect Centre" default = (0,0) hint = "Specifies the centre of the Inversion or Reflection." visible = @noescape>0 endparam param iradius caption = "Invert/Reflect Radius" default = 2.0 min = 1e-5 hint = "Specifies the radius of the Inversion or Reflection circle or the \ width of the Inversion or Reflection rectangle." visible = @noescape>0 && @noescape<3 endparam param iiradius caption = "Full invert fudge" default = 1.0 hint = "Modifies the full invert." visible = @noescape==3 endparam param rect caption = "Invert/Reflect Aspect" default = 1.0 hint = "Scales the height of the Inversion or Reflection rectangle \ relative to its width, use 1.0 for a square." visible = @noescape>0 && @noescape<3 && @besquare endparam param ode caption = "Convert to 'ODE'" default = false hint = "When enabled the current calculations are changed to the method \ used by Sprott in 'Strange Attractors:Creating Patterns in Chaos' \ for the calculation of ODE's. I added this to verify that no \ Strange Attractors will be found for ODE's less than 3 dimensions \ but as usual extended the possibilities and found that if the \ 'ODE Step Size' is other than a small real number then interesting \ Strange Attractors result, though they are just normal iterated \ maps and not true ODE's." endparam param odestep caption = "ODE Step Size" default = (0.1,0.1) hint = "(0.1,0.1) is the default value used by Sprott for a general \ two-valued number but this should be (0.1,0) for the formulas that \ are complex such as 'Inverse Roots' or 'c*Fn1(z)+z'. However using \ (0.1,0.1) for the general 2D formulas or (0.1,0) or (0,0.1) for \ the complex formulas will not result in Strange Attracters but \ using general 'complex' values often produces results, e.g. using \ (0.05,0.05) for a complex formula. You can investigate in more \ detail by enabling 'ODE Step Switch' where #pixel is used as the \ 'ODE Step Size' in Mandelbrot mode." visible = @ode endparam param odeswitch caption = "ODE Step Switch" default = false hint = "When enabled this overrides the current display method such that \ the 'ODE Step Size' is taken from #pixel in Mandelbrot mode and \ from 'Switch Value' in Orbit mode. After switching from a \ Mandelbrot to an Orbit when using this method it's good practice \ to copy the 'Switch Value' to 'ODE Step Size' after switching." visible = @ode endparam heading caption = "Orbit Settings" text = "You can change the parameters in the 'Orbit Control', 'Orbit \ Colouring', 'Curvature Settings', 'Location Settings' and 'Switch \ Control' when in Mandelbrot mode in order to control the switched \ view." visible = !@julia endheading heading caption = "Orbit Control" text = "This section allows you to control the number of orbit iterations \ performed, the intention being to make the colourings consistent \ on resizing the image." visible = !@julia endheading param os caption = "Oversampling" enum = "none" ;"*2" "*3" "*4" default = 0 hint = "Allows oversampling for improved rendering, only useful for \ Orbit views when using filtering and/or doing disk renders with \ anti-aliasing. Currently not used." visible = !@julia endparam param skip caption = "#Iterations to Skip" default = 1000.0 min = 60.0 max = 1e16 hint = "Only used for orbit views. Ignores this many iterations to avoid \ rendering the approach to any attractor." visible = !@julia endparam param fix caption = "Colour Fix" default = false hint = "When enabled you can specify a colour balance value, using this \ method should mean that your image will not change colour as much \ when resized in Ultrafractal or when rendered large using 'Render \ to Disk'." visible = !@julia endparam param balance caption = "Fix value" default = 1.0 min = 2e-2 max = 1e5 hint = "This is a balance factor that controls when to stop iterating an \ Orbit. The ratio of the max. single pixel hits to the number of \ pixels hit is compared to this value and iteration is only stopped \ when the ratio is greater than the given value or 'Max. #Orbit \ Iterations' is reached. In practice you should find the default \ of 1.0 works most of the time but you may need a much larger value \ when using the Location or Curvature colourings. Smaller \ values will reduce rendering time but decrease the quality of the \ results. The minimum value is 0.02. If your image \ has unwanted 'speckles' then to remove them you need to increase \ the value, the absolute maximum is 1e5." visible = !@julia && @fix endparam param maxhits caption = "Max. Hits" default = 100.0 min = 10.0 max = 1e10 hint = "Only used for Orbit views. The Orbit iteration will stop when any \ point reaches this hit count. Use larger values for more correct \ results." visible = !@julia && !@fix endparam param count caption = "Max. #Orbit Iterations" default = 100000.0 min = 100.0 max = 1e16 hint = "Only used for Orbit views. This controls the absolute iteration \ limit when calculating an Orbit. Even if 'Max. Hits' or other \ termination conditions are not met then calculation will stop \ after this many iterations. A compiler message will be printed if \ this limit is reached before other conditions are met. You may \ need to increase this value quite a lot, the absolute maximum is \ 1e16." visible = !@julia endparam param usemin caption = "Use Min. Hits" default = false hint = "Forces iterations to continue until the minimum hit count of any \ point hit reaches this value. See 'Min. Hits' when enabled for \ more hints." visible = !@julia && !@fix endparam param minhits caption = "Min. Hits" default = 2.0 min = 2.0 hint = "Ensures every point hit gets hit at least this many times before \ iterations stop. Can be useful to ensure quality of image is \ preserved when doing large disk renders. The higher you set the \ value the more consistent the results under resizing but the \ longer it's likely to take. Typically you shouldn't need a value \ >4. Whatever value you use, the absolute maximum iterations \ performed is still limited by 'Max. #Orbit Iterations'." visible = !@julia && @usemin && !@fix endparam heading caption = "Orbit Colouring" text = "Here you can choose to colour the orbit using #hits, iteration \ count, location, curvature or even any normal 'Outside' or \ 'Inside' colouring." visible = !@julia endheading param col caption = "Colouring" enum = "#Hits/Iteration" "#Hits/Curvature" "#Hits/Location" \ "Curvature/Location" "'Outside'" "'Inside'" default = 0 hint = "With IFS fractals it's possible to colour based on the 'genetics' \ of the attractor i.e. based on the recent history of the \ transforms used to reach a given point. Using the recent history \ of the locations prior to a given point gives much the same \ information/colouring in both IFS and Strange Attractors. That's \ how the 'Location' colouring works. The Curvature colouring allows \ the choice of various methods also involving the recent history of \ locations to a given point but associated with angle changes in \ the orbit. Both methods also provide a way of priorotizing \ different routes to a given pixel when there is more than one, \ this allows the use of the 'Outside' and 'Inside' colouring \ methods. For these the Location or Curvature method is used to \ select which route is chosen for a given pixel and the normal loop \ section of the main formula is passed the location at the \ 'Location Depth' or 'Curvature Depth' prior to hitting the actual \ pixel on the chosen route, then the formula is iterated starting \ from that point as if it were a normal escape-time fractal which \ allows you to use any of the 'Outside' or 'Inside' colourings \ available for Ultrafractal to colour the attractor. The higher the \ value you use for 'Maximum Iterations' the more detail you'll get, \ however there is a maximum limit of 49 internally in this formula \ for 'Location Depth' and 'Curvature Depth' and of 50 for 'Depth \ for inside/outside'. You can use the values \ of 'Maximum Iterations' and 'Depth for inside/outside' \ such that the colouring is all from positions prior to the pixel \ position or from subsequent values or both." visible = !@julia endparam param iodepth caption = "Depth for inside/outside" default = 0 min = 0 hint = "Allows you to specify how far back in the iteration history to \ pass values to the inside or outside colourings. The effective \ maximum depth is 50." visible = @version>1 && @col>3 endparam param normalise caption = "Normalse values" enum = "Off" "Max. only" "Max. and Min." default = 0 hint = "When enabled this normalises the iteration count or location value \ and/or curvature value to range (from a minimum of 0) to a maximum \ of 1. #Hits is always normalised to a maximum of 1 and the \ the iteration count will not be normalised to a minimum of 0." visible = !@julia endparam param csel caption = "Inside/Outside Selection" enum = "Location" "Curvature" default = 0 hint = "Allows you to choose whether route selection for the 'Outside' or \ 'Inside' colouring is based on the Location or Curvature \ calculations." visible = @col>2 visible = !@julia endparam heading caption = "Curvature Settings" visible = !@julia && (@col==1 || @col==3 || (@col>3 && @csel==1)) endheading param acentre caption = "Curvature Centre" default = (0,0) hint = "Use this to modify the values used for the curvature colourings." visible = !@julia && (@col==1 || @col==3 || (@col>3 && @csel==1)) endparam param amethod caption = "Curvature Method" enum = "Curvature Sum" "Centre Sum" "Offset Sum" "Curvature Product" \ "Centre Product" "Offset Product" default = 1 visible = !@julia && (@col==1 || @col==3 || (@col>3 && @csel==1)) endparam param aangle caption = "Angle" enum = "Change" "Centre of Gravity" default = 0 hint = "These are just non-specific alternatives, changing the 'Centre of \ Gravity' will affect either." visible = !@julia && (@col==1 || @col==3 || (@col>3 && @csel==1)) \ && (@amethod==0 || @amethod==3) endparam param atype caption = "Angle Type" enum = "All Angles" "Absolute" default = 0 visible = !@julia && (@col==1 || @col==3 || (@col>3 && @csel==1)) \ && (@amethod==0 || @amethod==3) endparam param auseall caption = "Full Fade" default = false visible = !@julia && (@col==1 || @col==3 || (@col>3 && @csel==1)) endparam param afade caption = "Curvature Fade" default = 0.9 hint = "Fades out the effect of older curvatures. Designed for use of \ values between 0 and 1, the closer to zero the less the effect of \ older curvatures." visible = !@julia && (@col==1 || @col==3 || (@col>3 && @csel==1)) \ && (@amethod<3 || @auseall) endparam param adepth caption = "Curvature Depth" default = 3 min = 0 hint = "Specifies how far back through the iterations to go when \ calculating a colouring based on the curvature. Using zero \ colours solely on the 'final' curvature. Note that the greater \ the depth then the more iterations required to avoid a speckled \ result - of course you can use this to get a form of random \ texturing when using a larger depth value. The effective maximum \ depth is 49." visible = !@julia && \ ( ((@col==1 || @col==3 || (@col>3 && @csel==1)) && !@auseall) \ || (@col>3 && @csel==1 && @version<2) ) endparam param aold caption = "Curvature Age" default = 0 min = 0 max = 49 hint = "Allows you to colour based on older curvature values - skipping \ the specified number of recent ones. The effective maximum age is \ 49." visible = !@julia && (@col==1 || @col==3 || (@col>3 && @csel==1)) endparam heading caption = "Sum of 'Curvature Depth' and 'Curvature Age' TOO LARGE." text = "The total value of 'Curvature Depth' and 'Curvature Age' should \ not exceed 50." visible = !@julia && \ ( ((@col==1 || @col==3 || (@col>3 && @csel==1)) && !@auseall) \ || (@col>3 && @csel==1 && @version<2) ) && @adepth+@aold>50 endheading param aselect caption = "Route selection" enum = "None" "Max." "Min." "Average" default = 1 hint = "On strange attractors a single pixel can often be hit by more than \ one 'route'. This gives you the option to choose which route the \ colouring is taken from. 'None' applies no selection and some \ areas may appear speckly. 'Max.' or 'Min.' colour by a specific \ route and 'Average' colours by the average route all of which give \ consistency to the colouring." visible = !@julia && (@col==1 || @col==3) endparam param arselect caption = "Route Selection" enum = "None" "Max." "Min." default = 1 hint = "On strange attractors a single pixel can often be hit by more than \ one 'route'. This gives you the option to choose which route the \ colouring is taken from. 'None' applies no selection and some \ areas may appear speckly. 'Max.' or 'Min.' colour by a specific \ route which gives consistency to the colouring." visible = !@julia && (@col>3 && @csel==1) endparam func afn caption = "Curvature Function" default = ident() hint = "The function applied to the curvature colouring value prior to \ application of cabs()." visible = @col==1 || @col==3 || (@col>3 && @csel==1) endfunc heading caption = "Location Settings" visible = !@julia && (@col==2 || @col==3 || (@col>3 && @csel==0)) endheading param ccentre caption = "Location Centre" default = (0,0) hint = "Use this to position the location from which offsets are taken for \ the location colourings." visible = !@julia && (@col==2 || @col==3 || (@col>3 && @csel==0)) endparam param cmethod caption = "Location Method" enum = "Sum" "Product" default = 1 visible = !@julia && (@col==2 || @col==3 || (@col>3 && @csel==0)) endparam param cuseall caption = "Full Fade" default = false visible = !@julia && (@col==2 || @col==3 || (@col>3 && @csel==0)) endparam param cfade caption = "Location Fade" default = 0.9 hint = "Fades out the effect of older locations. Designed for use of \ values between 0 and 1, the closer to zero the less the effect of \ older locations." visible = !@julia && (@col==2 || @col==3 || (@col>3 && @csel==0)) \ && (@cmethod==0 || @cuseall) endparam param cdepth caption = "Location Depth" default = 3 min = 0 hint = "Specifies how far back through the iterations to go when \ calculating a colouring based on the orbit locations. Using zero \ colours solely on the location of the pixel. Note that the greater \ the depth then the more iterations required to avoid a speckled \ result - of course you can use this to get a form of random \ texturing when using a larger depth value. The effective maximum \ depth is 49." visible = !@julia && \ ( ((@col==2 || @col==3 || (@col>3 && @csel==0)) && !@cuseall) \ || (@col>3 && @csel==0 && @version<2) ) endparam param cold caption = "Location Age" default = 0 min = 0 hint = "Allows you to colour based on older location values - skipping \ the specified number of recent ones. The effective maximum age is \ 49." visible = !@julia && (@col==2 || @col==3 || (@col>3 && @csel==0)) endparam heading caption = "Sum of 'Location Depth' and 'Location Age' TOO LARGE." text = "The total value of 'Location Depth' and 'Location Age' should \ not exceed 50." visible = !@julia && \ ( ((@col==2 || @col==3 || (@col>3 && @csel==0)) && !@cuseall) \ || (@col>3 && @csel==0 && @version<2) ) && @cdepth+@cold>50 endheading param cselect caption = "Route selection" enum = "None" "Max." "Min." "Average" default = 1 hint = "On strange attractors a single pixel can often be hit by more than \ one 'route'. This gives you the option to choose which route the \ colouring is taken from. 'None' applies no selection and some \ areas may appear speckly. 'Max.' or 'Min.' colour by a specific \ route and 'Average' colours by the average route all of which give \ consistency to the colouring." visible = !@julia && (@col==2 || @col==3) endparam param rselect caption = "Route Selection" enum = "None" "Max." "Min." default = 1 hint = "On strange attractors a single pixel can often be hit by more than \ one 'route'. This gives you the option to choose which route the \ colouring is taken from. 'None' applies no selection and some \ areas may appear speckly. 'Max.' or 'Min.' colour by a specific \ route which gives consistency to the colouring." visible = !@julia && (@col>3 && @csel==0) endparam func cfn caption = "Location Function" default = ident() hint = "The function applied to the location colouring value prior to \ application of cabs()." visible = !@julia && (@col==2 || @col==3 || (@col>3 && @csel==0)) endfunc heading caption = "Switch Control" text = "Here you can control the location and magnification of the \ switched view. Note that after switching for Ultrafractal's \ normal relocation/zoom to work correctly you must first reset the \ 'Adjust' parameters back to their default values." endheading param mag caption = "Magnification Adjust" default = 1.0 min = 0.0 hint = "Allows you to adjust the magnification of the switched view, \ useful when using the switch method for investigation. It's good \ practice to reset this to 1.0 after switching and use \ Ultrafractal's standard location mechanism for positioning." endparam param centre caption = "Centre Adjust" default = (0,0) hint = "Allows you to adjust the centre of the switched view, useful when \ using the switch method for investigation. It's good practice to \ reset this to (0,0) after switching and use Ultrafractal's \ standard location mechanism for positioning." endparam heading caption = "Formula Control" endheading param formula caption = "Main Formula" enum = "Inverse Roots" "Fastdraw" "c*Fn1(z)+z" "Henon" "Rotate" "Power" \ "General" "Lambda" "Barnsley 1" "Barnsley 2" "Barnsley 3" "Custom" \ "Mira" hint = "Choose any formula and investigate its Attractors ! Note that for \ some formulas/settings you may need to use a non-zero value for \ 'Z Start'." endparam param one caption = "Mira Function Constants" default = (1,1) hint = "The real part is used as the constant in the numerator of the \ Mira function and the imaginary part is used as the constant \ in the denominator of the Mira function. Normally both values \ are 1.0" visible = @formula==12 endparam param mirax caption = "Mira New x Constants" default = (1,-0.005) hint = "The real and imaginary parts are used as separate floats in the \ calculation on the new x value of the Mira calculations." visible = @formula==12 endparam param newrot caption = "Use Rotate version 2" default = false hint = "Changes the nature of the 'Rotate' formula." visible = @formula==4 endparam param a caption = "(Custom) a" default = (1,0) hint = "The coefficient a in 'a*fn1(z^p) op b*fn2(z^q) + c'." visible = @formula==11 endparam param b caption = "(Custom) b" default = (1,0) hint = "The coefficient b in 'a*fn1(z^p) op b*fn2(z^q) + c'." visible = @formula==11 endparam param power caption = "Power" default = (1.75,-0.5) hint = "The power, p, in the formulas that use it: 'Power' z^p+c, \ 'Lambda' c*z^p, 'Custom' 'a*fn1(z^p) op b*fn2(z^q) + c'." visible = @formula==5 || @formula==7 || @formula==10 || @formula==11 endparam param power2 caption = "Power 2" default = (1,0) hint = "The power q in 'a*fn1(z^p) op b*fn2(z^q) + c'." visible = @formula==11 endparam func fn1 caption = "Fn1 and (Custom) fn1" default = acos() hint = "Fn1 in 'c*Fn1(z)+z' and fn1 in 'a*fn1(z^p) op b*fn2(z^q) + c'." visible = @formula==2 || @formula==11 endfunc func fn2 caption = "(Custom) fn2" default = flip() hint = "The function fn2 in 'a*fn1(z^p) op b*fn2(z^q) + c'." visible = @formula==11 endfunc param op caption = "(Custom) op" enum = "+" "-" "*" "/" default = 0 hint = "The operation op in 'a*fn1(z^p) op b*fn2(z^q) + c'." visible = @formula==11 endparam param gdeg caption = "Degree of Formula" enum = "1" "2" "3" "4" "5" "6" default = 1 hint = "Specifies the maximum degree of the terms in x and y used in the \ calculations. For instance x^3, x^2y, xy^2 and y^3 are all degree \ 3." visible = @formula==6 endparam param controlx caption = "Control Coefficient (x)" enum = "x:Const" "x:x coeff." "x:y coeff." "x:x^2 coeff." "x:xy coeff." \ "x:y^2 coeff." "x:x^3 coeff." "x:x^2y coeff." "x:xy^2 coeff." \ "x:y^3 coeff." "x:x^4 coeff." "x:x^3y coeff." "x:x^2y^2 coeff" \ "x:xy^3 coeff." "x:y^4 coeff." "x:x^5 coeff." "x:x^4y coeff." \ "x:x^3y^2 coeff." "x:x^2y^3 coeff." "x:xy^4 coeff." "x:y^5 coeff." \ "x:x^6 coeff." "x:x^5y coeff." "x:x^4y^2 coeff." "x:x^3y^3 coeff." \ "x:x^2y^4 coeff." "x:xy^5 coeff." "x:y^6 coeff." \ "y:Const" "y:x coeff." "y:y coeff." "y:x^2 coeff." "y:xy coeff." \ "y:y^2 coeff." "y:x^3 coeff." "y:x^2y coeff." "y:xy^2 coeff." \ "y:y^3 coeff." "y:x^4 coeff." "y:x^3y coeff." "y:x^2y^2 coeff" \ "y:xy^3 coeff." "y:y^4 coeff." "y:x^5 coeff." "y:x^4y coeff." \ "y:x^3y^2 coeff." "y:x^2y^3 coeff." "y:xy^4 coeff." "y:y^5 coeff." \ "y:x^6 coeff." "y:x^5y coeff." "y:x^4y^2 coeff." "y:x^3y^3 coeff." \ "y:x^2y^4 coeff." "y:xy^5 coeff." "y:y^6 coeff." default = 0 hint = "Specifies which coefficient is the one taken from real(#pixel) in \ Mandelbrot mode and the one taken from the real part of the switch \ coordinate in the switch to viewing an Orbit. It's good practice \ to copy the 'Switch Value' parts to the parts of the control \ coefficient/s they are replacing after switching from a Mandelbrot \ to an Orbit. Note that the real parts of the coefficients are used \ to calculate the new x and the imaginary parts are used to \ calculate the new y." visible = @formula==6 && !(@ode && @odeswitch) endparam param controly caption = "Control Coefficient (y)" enum = "x:Const" "x:x coeff." "x:y coeff." "x:x^2 coeff." "x:xy coeff." \ "x:y^2 coeff." "x:x^3 coeff." "x:x^2y coeff." "x:xy^2 coeff." \ "x:y^3 coeff." "x:x^4 coeff." "x:x^3y coeff." "x:x^2y^2 coeff" \ "x:xy^3 coeff." "x:y^4 coeff." "x:x^5 coeff." "x:x^4y coeff." \ "x:x^3y^2 coeff." "x:x^2y^3 coeff." "x:xy^4 coeff." "x:y^5 coeff." \ "x:x^6 coeff." "x:x^5y coeff." "x:x^4y^2 coeff." "x:x^3y^3 coeff." \ "x:x^2y^4 coeff." "x:xy^5 coeff." "x:y^6 coeff." \ "y:Const" "y:x coeff." "y:y coeff." "y:x^2 coeff." "y:xy coeff." \ "y:y^2 coeff." "y:x^3 coeff." "y:x^2y coeff." "y:xy^2 coeff." \ "y:y^3 coeff." "y:x^4 coeff." "y:x^3y coeff." "y:x^2y^2 coeff" \ "y:xy^3 coeff." "y:y^4 coeff." "y:x^5 coeff." "y:x^4y coeff." \ "y:x^3y^2 coeff." "y:x^2y^3 coeff." "y:xy^4 coeff." "y:y^5 coeff." \ "y:x^6 coeff." "y:x^5y coeff." "y:x^4y^2 coeff." "y:x^3y^3 coeff." \ "y:x^2y^4 coeff." "y:xy^5 coeff." "y:y^6 coeff." default = 2 hint = "Specifies which coefficient is the one taken from imag(#pixel) in \ Mandelbrot mode and the one taken from the imaginary part of the \ switch coordinate in the switch to viewing an Orbit. It's good \ practice to copy the 'Switch Value' parts to the parts of the \ control coefficient/s they are replacing after switching from a \ Mandelbrot to an Orbit. Note that the real parts of the \ coefficients are used to calculate the new x and the imaginary \ parts are used to calculate the new y." visible = @formula==6 && !(@ode && @odeswitch) endparam heading caption = "'Control Coefficient (x)' TOO LARGE." text = "This is a warning/error message - the degree of the term you have \ specified as 'Control Coefficient (x)' is too large - it must be \ at most the 'Degree of Formula'. You need to increase 'Degree of \ Formula' or choose a 'Control Coefficient (x)' of lower degree." visible = @formula==6 && ((@controlx<28 && ((@controlx>2 && @gdeg<1) \ ||(@controlx>5 && @gdeg<2)||(@controlx>9 && @gdeg<3) \ ||(@controlx>14 && @gdeg<4)||(@controlx>20 && @gdeg<5))) \ ||((@controlx>30 && @gdeg<1)||(@controlx>33 && @gdeg<2) \ ||(@controlx>37 && @gdeg<3)||(@controlx>42 && @gdeg<4) \ ||(@controlx>48 && @gdeg<5))) && !(@ode && @odeswitch) endheading heading caption = "'Control Coefficient (y)' TOO LARGE." text = "This is a warning/error message - the degree of the term you have \ specified as 'Control Coefficient (y)' is too large - it must be \ at most the 'Degree of Formula'. You need to increase 'Degree of \ Formula' or choose a 'Control Coefficient (y)' of lower degree." visible = @formula==6 && ((@controly<28 && ((@controly>2 && @gdeg<1) \ ||(@controly>5 && @gdeg<2)||(@controly>9 && @gdeg<3) \ ||(@controly>14 && @gdeg<4)||(@controly>20 && @gdeg<5))) \ ||((@controly>30 && @gdeg<1)||(@controly>33 && @gdeg<2) \ ||(@controly>37 && @gdeg<3)||(@controly>42 && @gdeg<4) \ ||(@controly>48 && @gdeg<5))) && !(@ode && @odeswitch) endheading param degree caption = "Degree of Polynomial" enum = "2" "3" "4" "5" "6" hint = "Specifies the maximum degree of the polynomial Pn. (and the exact \ degree of the root taken for 'Inverse Roots' i.e. n in \ z=Pn(z)^(-1.0/n) ). Note that with 'Inverse Roots' it is possible \ to have a polynomial of lower degree than the root taken by \ setting appropriate coefficients to zero." visible = @formula==0 || @formula==4 endparam param control caption = "Control Coefficient" enum = "Constant" "z coeff." "z^2 coeff." "z^3 coeff." "z^4 coeff." \ "z^5 coeff." "z^6 coeff." hint = "Specifies which coefficient is used as the 'control' or 'active' \ coefficient. Should be set to any value from zero to \ the 'Degree of Polynomial'. The 'control' or 'active' coefficient \ is the one taken from #pixel in Mandelbrot mode and the one taken \ from the switch coordinate in the switch to viewing an Orbit. It's \ good practice to copy the 'Switch Value' to the control \ coefficient after switching from a Mandelbrot to an Orbit." visible = (@formula==0 || @formula==4) && !(@ode && @odeswitch) endparam heading caption = "'Control Coefficient' TOO LARGE" text = "This is a warning/error message - the value you have specified for \ the 'Control Coefficient' is too large - it must be at most \ the value of 'Degree of Polynomial'. You need to \ increase 'Degree of Polynomial' or reduce 'Control Coefficient'." visible = (@formula==0 || @formula==4) && @control>@degree+2 \ && !(@ode && @odeswitch) endheading param useroot caption = "Custom Root" default = false hint = "By default the degree of root used matches the maximum degree of \ the polynomial but that limits possibilities to real integers from \ two to six. Enabling this over-rides the degree of the root with a \ value you specify, note that it's designed with use of values \ where the real part is >=1 but you could try any value." visible = @formula==0 endparam param root caption = "Degree of Root" default = (1.55,-0.3) hint = "This degree of root is used i.e. p in Pn(z)^(-1/p) where Pn(z) is \ the polynomial in z." visible = @formula==0 && @useroot endparam param switch caption = "Switch Value" default = (1,0) hint = "In Orbit mode this value is used as the active constant value. \ For example in 'Inverse Roots' it is used as the value of the \ control coefficient. The value is not used in Mandelbrot mode. \ It's good practice to copy the 'Switch Value' to the value it is \ replacing after switching from a Mandelbrot to an Orbit e.g. copy \ it to the control coefficient when using 'Inverse Roots'. You can \ also investigate changes to the value using Ultrafractal's explore \ feature." visible = @orbit endparam param start caption = "Z Start" default = (0.01,0) hint = "The start value of z. Default is non-zero as this is required for \ some formulas/settings." endparam param const caption = "Constant" default = (1,0) hint = "The constant term in the current formula. If 'Control Coefficient' \ is zero when using 'Inverse Roots' as the 'Main Formula' or when \ using another main formula then #pixel is used instead in \ Mandelbrot mode and 'Switch Value' is used instead when viewing an \ Orbit except when 'Convert to ODE' and 'ODE Step Switch' are \ enabled." visible = @formula<6 endparam param const1 caption = "Coefficient of z" default = (-0.84615,-0.54438) hint = "The coefficient of z in the polynomial Pn. If 'Control \ Coefficient' is one then #pixel is used instead in Mandelbrot \ mode and 'Switch Value' is used instead when viewing an Orbit \ except when 'Convert to ODE' and 'ODE Step Switch' are enabled." visible = @formula==0 || @formula==4 endparam param const2 caption = "Coefficient of z^2" default = (1.47337,0.61538) hint = "The coefficient of z^2 in the polynomial Pn. If 'Control \ Coefficient' is two then #pixel is used instead in Mandelbrot \ mode and 'Switch Value' is used instead when viewing an Orbit \ except when 'Convert to ODE' and 'ODE Step Switch' are enabled." visible = @formula==0 || @formula==4 endparam param const3 caption = "Coefficient of z^3" default = (1,0) hint = "The coefficient of z^3 in the polynomial Pn. If 'Control \ Coefficient' is three then #pixel is used instead in \ Mandelbrot mode and 'Switch Value' is used instead when viewing an \ Orbit except when 'Convert to ODE' and 'ODE Step Switch' are \ enabled." visible = (@formula==0 || @formula==4) && @degree>0 endparam param const4 caption = "Coefficient of z^4" default = (1,0) hint = "The coefficient of z^4 in the polynomial Pn. If 'Control \ Coefficient' is four then #pixel is used instead in \ Mandelbrot mode and 'Switch Value' is used instead when viewing an \ Orbit except when 'Convert to ODE' and 'ODE Step Switch' are \ enabled." visible = (@formula==0 || @formula==4) && @degree>1 endparam param const5 caption = "Coefficient of z^5" default = (1,0) hint = "The coefficient of z^5 in the polynomial Pn. If 'Control \ Coefficient' is five then #pixel is used instead in \ Mandelbrot mode and 'Switch Value' is used instead when viewing an \ Orbit except when 'Convert to ODE' and 'ODE Step Switch' are \ enabled." visible = (@formula==0 || @formula==4) && @degree>2 endparam param const6 caption = "Coefficient of z^6" default = (1,0) hint = "The coefficient of z^6 in the polynomial Pn. If 'Control \ Coefficient' is six then #pixel is used instead in \ Mandelbrot mode and 'Switch Value' is used instead when viewing an \ Orbit except when 'Convert to ODE' and 'ODE Step Switch' are \ enabled." visible = (@formula==0 || @formula==4) && @degree>3 endparam param cg0 caption = "Constants" default = (1,0) hint = "The constants for calculating new x and y." visible = @formula==6 endparam param cg1 caption = "Coeffs. of x" default = (0,1) hint = "The coeffs. of x for calculating new x and y." visible = @formula==6 endparam param cg2 caption = "Coeffs. of y" default = (1,0) hint = "The coeffs. of y for calculating new x and y." visible = @formula==6 endparam param cg3 caption = "Coeffs. of x^2" default = (-1,0) hint = "The coeffs. of x^2 for calculating new x and y." visible = @formula==6 && @gdeg>0 endparam param cg4 caption = "Coeffs. of xy" default = (0,0) hint = "The coeffs. of xy for calculating new x and y." visible = @formula==6 && @gdeg>0 endparam param cg5 caption = "Coeffs. of y^2" default = (0,0) hint = "The coeffs. of y^2 for calculating new x and y." visible = @formula==6 && @gdeg>0 endparam param cg6 caption = "Coeffs. of x^3" default = (1,0) hint = "The coeffs. of x^3 for calculating new x and y." visible = @formula==6 && @gdeg>1 endparam param cg7 caption = "Coeffs. of x^2y" default = (1,0) hint = "The coeffs. of x^2y for calculating new x and y." visible = @formula==6 && @gdeg>1 endparam param cg8 caption = "Coeffs. of xy^2" default = (0,0) hint = "The coeffs. of xy^2 for calculating new x and y." visible = @formula==6 && @gdeg>1 endparam param cg9 caption = "Coeffs. of y^3" default = (0,0) hint = "The coeffs. of y^3 for calculating new x and y." visible = @formula==6 && @gdeg>1 endparam param cg10 caption = "Coeffs. of x^4" default = (1,0) hint = "The coeffs. of x^4 for calculating new x and y." visible = @formula==6 && @gdeg>2 endparam param cg11 caption = "Coeffs. of x^3y" default = (1,0) hint = "The coeffs. of x^3y for calculating new x and y." visible = @formula==6 && @gdeg>2 endparam param cg12 caption = "Coeffs. of x^2y^2" default = (0,0) hint = "The coeffs. of x^2y^2 for calculating new x and y." visible = @formula==6 && @gdeg>2 endparam param cg13 caption = "Coeffs. of xy^3" default = (0,0) hint = "The coeffs. of xy^3 for calculating new x and y." visible = @formula==6 && @gdeg>2 endparam param cg14 caption = "Coeffs. of y^4" default = (0,0) hint = "The coeffs. of y^4 for calculating new x and y." visible = @formula==6 && @gdeg>2 endparam param cg15 caption = "Coeffs. of x^5" default = (1,0) hint = "The coeffs. of x^5 for calculating new x and y." visible = @formula==6 && @gdeg>3 endparam param cg16 caption = "Coeffs. of x^4y" default = (1,0) hint = "The coeffs. of x^4y for calculating new x and y." visible = @formula==6 && @gdeg>3 endparam param cg17 caption = "Coeffs. of x^3y^2" default = (0,0) hint = "The coeffs. of x^3y^2 for calculating new x and y." visible = @formula==6 && @gdeg>3 endparam param cg18 caption = "Coeffs. of x^2y^3" default = (0,0) hint = "The coeffs. of x^2y^3 for calculating new x and y." visible = @formula==6 && @gdeg>3 endparam param cg19 caption = "Coeffs. of xy^4" default = (0,0) hint = "The coeffs. of xy^4 for calculating new x and y." visible = @formula==6 && @gdeg>3 endparam param cg20 caption = "Coeffs. of y^5" default = (0,0) hint = "The coeffs. of y^5 for calculating new x and y." visible = @formula==6 && @gdeg>3 endparam param cg21 caption = "Coeffs. of x^6" default = (1,0) hint = "The coeffs. of x^6 for calculating new x and y." visible = @formula==6 && @gdeg>4 endparam param cg22 caption = "Coeffs. of x^5y" default = (1,0) hint = "The coeffs. of x^5y for calculating new x and y." visible = @formula==6 && @gdeg>4 endparam param cg23 caption = "Coeffs. of x^4y^2" default = (0,0) hint = "The coeffs. of x^4y^2 for calculating new x and y." visible = @formula==6 && @gdeg>4 endparam param cg24 caption = "Coeffs. of x^3y^3" default = (0,0) hint = "The coeffs. of x^3y^3 for calculating new x and y." visible = @formula==6 && @gdeg>4 endparam param cg25 caption = "Coeffs. of x^2y^4" default = (0,0) hint = "The coeffs. of x^2y^4 for calculating new x and y." visible = @formula==6 && @gdeg>4 endparam param cg26 caption = "Coeffs. of xy^5" default = (0,0) hint = "The coeffs. of xy^5 for calculating new x and y." visible = @formula==6 && @gdeg>4 endparam param cg27 caption = "Coeffs. of y^6" default = (0,0) hint = "The coeffs. of y^6 for calculating new x and y." visible = @formula==6 && @gdeg>4 endparam switch: type = "MMF4a-AttractorsPlus" version = version mandy = orbit orbit = mandy julia = julia showinfo = showinfo progress = progress bailtest = bailtest smallbail = smallbail bailout = bailout lyapunov = lyapunov lbail = lbail lbail1 = lbail1 fdim = fdim fbail = fbail fbail1 = fbail1 loff = loff matrix = matrix c0 = c0 c1 = c1 rot = rot rotn = rotn sum = sum product = product order = order noescape = noescape besquare = besquare srot = srot fixreflect = fixreflect icentre = icentre iradius = iradius iiradius = iiradius rect = rect ode = ode odestep = odestep odeswitch = odeswitch os = os skip = skip fix = fix balance = balance maxhits = maxhits count = count usemin = usemin minhits = minhits col = col iodepth = iodepth normalise = normalise csel = csel acentre = acentre amethod = amethod aangle = aangle atype = atype auseall = auseall afade = afade adepth = adepth aold = aold aselect = aselect arselect = arselect afn = afn ccentre = ccentre cmethod = cmethod cuseall = cuseall cfade = cfade cdepth = cdepth cold = cold cselect = cselect rselect = rselect cfn = cfn mag = mag centre = centre formula = formula one = one mirax = mirax newrot = newrot a = a b = b power = power power2 = power2 fn1 = fn1 fn2 = fn2 op = op gdeg = gdeg controlx = controlx controly = controly degree = degree control = control useroot = useroot root = root switch = #pixel start = start const = const const1 = const1 const2 = const2 const3 = const3 const4 = const4 const5 = const5 const6 = const6 cg0 = cg0 cg1 = cg1 cg2 = cg2 cg3 = cg3 cg4 = cg4 cg5 = cg5 cg6 = cg6 cg7 = cg7 cg8 = cg8 cg9 = cg9 cg10 = cg10 cg11 = cg11 cg12 = cg12 cg13 = cg13 cg14 = cg14 cg15 = cg15 cg16 = cg16 cg17 = cg17 cg18 = cg18 cg19 = cg19 cg20 = cg20 cg21 = cg21 cg22 = cg22 cg23 = cg23 cg24 = cg24 cg25 = cg25 cg26 = cg26 cg27 = cg27 }