implicit-0.0.2: Graphics/Implicit/ExtOpenScad/Default.hs
-- Implicit CAD. Copyright (C) 2011, Christopher Olah (chris@colah.ca)
-- Released under the GNU GPL, see LICENSE
-- We'd like to parse openscad code, with some improvements, for backwards compatability.
module Graphics.Implicit.ExtOpenScad.Default where
import Graphics.Implicit.Definitions
import Graphics.Implicit.ExtOpenScad.Definitions
import Graphics.Implicit.ExtOpenScad.Primitives
import Data.Map (Map, fromList)
defaultObjects :: VariableLookup -- = Map String OpenscadObj
defaultObjects = fromList $
defaultConstants
++ defaultFunctions
++ defaultFunctions2
++ defaultFunctionsSpecial
++ defaultModules
-- Missing standard ones:
-- rand, lookup,
defaultConstants = map (\(a,b) -> (a, toOObj (b::ℝ) ))
[("pi", pi)]
defaultFunctions = map (\(a,b) -> (a, toOObj ( b :: ℝ -> ℝ)))
[
("sin", sin),
("cos", cos),
("tan", tan),
("asin", asin),
("acos", acos),
("atan", atan),
("abs", abs),
("sign", signum),
("floor", fromIntegral . floor ),
("ceil", fromIntegral . ceiling ),
("round", fromIntegral . round ),
("exp", exp),
("ln", log),
("log", log),
("sign", signum),
("sqrt", sqrt)
]
defaultFunctions2 = map (\(a,b) -> (a, toOObj (b :: ℝ -> ℝ -> ℝ) ))
[
("max", max),
("min", min),
("atan2", atan2),
("pow", (**))
]
defaultFunctionsSpecial =
[
("map", toOObj $ flip $
(map :: (OpenscadObj -> OpenscadObj) -> [OpenscadObj] -> [OpenscadObj] )
)
]
defaultModules =
map (\(a,b) -> (a, OModule b)) primitives