-- | Mecha Examples
module Language.Mecha.Examples
  ( example
  ) where

import Language.Mecha.Assembly
import Language.Mecha.Primitives
import Language.Mecha.Types

-- | A simple design example.
example :: IO ()
example = view design

design :: Asm ()
design = do
  a <- part 1   0.06 8 $ difference sphereCube cyl3
  b <- part 1   0.08 8 $ sphereCube
  c <- part 1.5 0.08 8 $ cyl3
  color (0, 0, 0.8) $ place a
  move (-4, 0, 0) $ color (0.8, 0, 0) $ place b
  move ( 0, 4, 0) $ color (0, 0.8, 0) $ place c

sphereCube = intersection sphere $ scaleXYZ 0.75 cube
cyl = scale (0.5, 0.5, 1.2) $ cylinder
cyl3 = unions [cyl, rotateX (pi / 2) cyl, rotateY (pi / 2) cyl]