module Language.Mecha.Examples
( example
) where
import Language.Mecha.Assembly
import Language.Mecha.Solid
import Language.Mecha.Types
example :: IO ()
example = view "example.pov" (6, 6, 5) (0, 0, 0) design
design :: Asm
design = assemble
[ move ( 0, 0, 0) $ color (0.2, 0.2, 1) $ part $ difference sphereCube cyl3
, move (4, 0, 0) $ color (0.8, 0, 0) $ part $ sphereCube
, move (8, 0, 0) $ color (0.8, 0, 0) $ part $ sphere
, move (4, 4, 0) $ color (0.8, 0, 0) $ part $ cube'
, move ( 0, 4, 0) $ color (0, 0.8, 0) $ part $ cyl3
, move ( 0, 8, 0) $ color (0, 0.8, 0) $ part $ cyl
, move ( 0,12, 0) $ color (0, 0.8, 0) $ part $ rotateX (pi/2) cyl
, move ( 0,16, 0) $ color (0, 0.8, 0) $ part $ rotateY (pi/2) cyl
]
cube' = scaleAll 0.75 cube
sphereCube = intersection sphere $ scaleAll 0.75 cube
cyl = scale (0.5, 0.5, 1) $ cylinder
cyl3 = unions [cyl, rotateX (pi / 2) cyl, rotateY (pi / 2) cyl]