-- | Various 'LSystem's. -- For 'l0' through 'lB' see . -- For 'lC' see . -- For 'lD' see . module LSystem.Systems where import Graphics.PS import LSystem.LSystem import LSystem.Render.PS -- * 'LSystem' definitions l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,lA,lB :: LSystem l0 = lSystem "F+F+F+F" [('F',"F+F-F-FF+F+F-F")] l1 = lSystem "F+F+F+F" [('F',"FF+F-F+F+FF")] l2 = lSystem "X" [('F',"FF") ,('X',"F-[[X]+X]+F[+FX]-X")] l3 = lSystem "a" [('F',">F<") ,('a',"F[+x]Fb") ,('b',"F[-y]Fa") ,('x',"a") ,('y',"b")] l4 = lSystem "Y" [('X',"X[-FFF][+FFF]FX") ,('Y',"YFX[+Y][-Y]")] l5 = lSystem "F" [('F',"FF+[+F-F-F]-[-F+F+F]")] l6 = lSystem "X" [('F',"FF") ,('X',"F[+X]F[-X]+X")] l7 = lSystem "F" [('F',"F[+FF][-FF]F[-F][+F]F")] l8 = lSystem "F" [('F',"FFF-[XY]+[XY]") ,('X',"+FY") ,('Y',"-FX")] l9 = lSystem "FX" [('X',">[-FX]+FX")] lA = lSystem "FX" [('Y',"-FX-Y") ,('X',"X+YF+")] lB = lSystem "F+F+F" [('F',"F-F+F")] lC :: LSystem lC = lSystem "[7]++[7]++[7]++[7]++[7]" [('6',"8F++9F----7F[-8F----6F]++") ,('7',"+8F--9F[---6F--7F]+") ,('8',"-6F++7F[+++8F++9F]-") ,('9',"--8F++++6F[+9F++++7F]--7F") ,('F',"")] lD :: LSystem lD = lSystem "F+F+F+F+F+F" [('F',"F-F++F-F")] -- * With turning angle and line scalar l0d,l1d,l2d,l3d,l4d,l5d,l6d,l7d,l8d,l9d,lAd,lBd,lCd,lDd :: (LSystem,Double,Double) l0d = (l0,90.0,1) l1d = (l1,90.0,1) l2d = (l2,22.5,1) l3d = (l3,45.0,1.36) l4d = (l4,25.7,1) l5d = (l5,22.5,1) l6d = (l6,20.0,1) l7d = (l7,35.0,1) l8d = (l8,22.5,1) l9d = (l9,40.0,0.6) lAd = (lA,90.0,1) lBd = (lB,120.0,1) lCd = (lC,36.0,1) lDd = (lD,60.0,1) -- * Line sets l0l,l1l,l2l,l3l,l4l,l5l,l6l,l7l,l8l,l9l,lAl,lBl,lCl,lDl :: [Ln R] l0l = renderL l0d 3 5 l1l = renderL l1d 3 5 l2l = renderL l2d 5 5 l3l = renderL l3d 12 5 l4l = renderL l4d 6 5 l5l = renderL l5d 4 5 l6l = renderL l6d 7 5 l7l = renderL l7d 4 5 l8l = renderL l8d 6 5 l9l = renderL l9d 10 40 lAl = renderL lAd 11 5 lBl = renderL lBd 6 5 lCl = renderL lCd 5 5 lDl = renderL lDd 5 1 -- > map (wn_from_extent . l_extent) systems_l systems_l :: [[Ln R]] systems_l = [l0l,l1l,l2l,l3l,l4l,l5l,l6l,l7l,l8l,l9l,lAl,lBl,lCl,lDl] -- * PS Images -- > map imageStatistics systems_i systems_i :: [Image] systems_i = map (draw 25 750) systems_l -- | Generate postscript file with drawings of 'l0' through 'lD'. -- -- > systems_ps "/tmp/hls.ps" -- > System.Process.system "gv /tmp/hls.ps" systems_ps :: FilePath -> IO () systems_ps fn = ps fn (Paper 285 285) systems_i -- Local Variables: -- truncate-lines:t -- End: