module PlatonicSolidsExample
( platonicSolidsExample
) where
import qualified Waterfall.Transforms as Transforms
import qualified Waterfall.Solids as Solids
import Linear ((^*), unit, _y)
platonicSolidsExample :: Solids.Solid
platonicSolidsExample :: Solid
platonicSolidsExample =
[Solid] -> Solid
forall a. Monoid a => [a] -> a
mconcat ([Solid] -> Solid) -> ([Solid] -> [Solid]) -> [Solid] -> Solid
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Double -> Solid -> Solid) -> [Double] -> [Solid] -> [Solid]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith (V3 Double -> Solid -> Solid
forall a. Transformable a => V3 Double -> a -> a
Transforms.translate (V3 Double -> Solid -> Solid)
-> (Double -> V3 Double) -> Double -> Solid -> Solid
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ASetter' (V3 Double) Double -> V3 Double
forall (t :: * -> *) a.
(Additive t, Num a) =>
ASetter' (t a) a -> t a
unit ASetter' (V3 Double) Double
forall a. Lens' (V3 a) a
forall (t :: * -> *) a. R2 t => Lens' (t a) a
_y V3 Double -> Double -> V3 Double
forall (f :: * -> *) a. (Functor f, Num a) => f a -> a -> f a
^*)) [Double
0, -Double
2.5 ..] ([Solid] -> Solid) -> [Solid] -> Solid
forall a b. (a -> b) -> a -> b
$
[ Solid
Solids.tetrahedron
, Solid
Solids.centeredCube
, Solid
Solids.octahedron
, Solid
Solids.icosahedron
, Solid
Solids.dodecahedron
]