--------------------------------------------------------------------------- -- | -- Module : Main -- Copyright : (c) alpheccar, 2007 -- License : BSD-style -- -- Maintainer : misc@alpheccar.org -- Stability : experimental -- Portability : non-portable (multi-parameter type classes) -- -- Description -- -- Example IFS -- ----------------------------------------------------------------------------- module Graphics.IFS.Examples( -- * Example IFS sierpinski , square , fern -- * Example of use -- $Example ) where import Graphics.IFS.Geometry import Graphics.IFS sierpinski :: IFS Double sierpinski = 0.33 linearIFS (scaling 0.5 0.5) <+> 0.33 linearIFS (translation 0.5 0 * scaling 0.5 0.5) <+> 0.33 linearIFS (translation 0 0.5 * scaling 0.5 0.5) square :: IFS Double square = 0.25 linearIFS (scaling 0.5 0.5) <+> 0.25 linearIFS (translation 0.5 0 * scaling 0.5 0.5) <+> 0.25 linearIFS (translation 0 0.5 * scaling 0.5 0.5) <+> 0.25 linearIFS (translation 0.5 0.5 * scaling 0.5 0.5) fern :: IFS Double fern = (0.01 linearIFS(linear 0 0 0 0.16 0 0) <+> 0.08 linearIFS(linear 0.2 (-0.26) 0.23 0.22 0 1.6) <+> 0.08 linearIFS(linear (-0.15) 0.28 0.26 0.24 0 0.44) <+> 0.74 linearIFS(linear 0.75 0.04 (-0.04) 0.85 0 1.6)) {- $Example [Generating the fractal for the Sierpinski IFS:] > createPict "essai.ppm" 600 600 1.0 200000 (binaryColor white blue) sierpinski [Combining square and sierpinski:] > createPict "essai.ppm" 600 600 1.0 200000 (binaryColor white blue) (0.5 square <+> 0.5 sierpinski) [Definitions of the examples:] > sierpinski :: IFS Double > sierpinski = 0.33 linearIFS (scaling 0.5 0.5) > <+> 0.33 linearIFS (translation 0.5 0 * scaling 0.5 0.5) > <+> 0.33 linearIFS (translation 0 0.5 * scaling 0.5 0.5) > > square :: IFS Double > square = 0.25 linearIFS (scaling 0.5 0.5) > <+> 0.25 linearIFS (translation 0.5 0 * scaling 0.5 0.5) > <+> 0.25 linearIFS (translation 0 0.5 * scaling 0.5 0.5) > <+> 0.25 linearIFS (translation 0.5 0.5 * scaling 0.5 0.5) -}