module FilletExample ( filletExample ) where import Waterfall.Solids( Solid, centeredCube ) import Waterfall.Transforms (translate) import Waterfall.Fillet(roundFillet, roundConditionalFillet, roundIndexedConditionalFillet) import Control.Lens ((^.)) import Linear (V3 (..), _z) import Control.Monad (guard) filletExample :: Solid filletExample = mconcat $ zipWith (\i -> translate (V3 i 0 0 )) [0, 2 ..] -- round every edge [ roundFillet 0.1 centeredCube -- round horizontal edges , roundConditionalFillet (\(s, e) -> if s ^. _z == e ^._z then Nothing else Just 0.1) centeredCube -- round edges with odd indices by a variable radius depending on the edge index , roundIndexedConditionalFillet (\i _ -> (fromIntegral i * 0.04) <$ guard (odd i)) centeredCube ]