module PrismExample
( prismExample
) where 

import qualified Waterfall.Solids as Solids
import qualified Waterfall.TwoD.Shape as Shape
import qualified Waterfall.TwoD.Path2D as Path2D
import Linear (V2 (..))

prismExample :: Solids.Solid
prismExample :: Solid
prismExample = Double -> Shape -> Solid
Solids.prism Double
1 (Shape -> Solid) -> (Path2D -> Shape) -> Path2D -> Solid
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path2D -> Shape
Shape.fromPath (Path2D -> Solid) -> Path2D -> Solid
forall a b. (a -> b) -> a -> b
$
    V2 Double -> [V2 Double -> (V2 Double, Path2D)] -> Path2D
forall path point.
Monoid path =>
point -> [point -> (point, path)] -> path
Path2D.pathFrom (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 (-Double
1) (-Double
1)) 
        [ V2 Double -> V2 Double -> V2 Double -> (V2 Double, Path2D)
forall point path.
AnyPath point path =>
point -> point -> point -> (point, path)
Path2D.arcViaTo (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 (-Double
1.5) Double
0) (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 (-Double
1) Double
1)
        , V2 Double -> V2 Double -> (V2 Double, Path2D)
forall point path.
AnyPath point path =>
point -> point -> (point, path)
Path2D.lineTo (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 Double
1 Double
1)
        , V2 Double
-> V2 Double -> V2 Double -> V2 Double -> (V2 Double, Path2D)
forall point path.
AnyPath point path =>
point -> point -> point -> point -> (point, path)
Path2D.bezierTo (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 Double
1.5 Double
1) (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 Double
1.5 (-Double
1)) (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 Double
1 (-Double
1))
        , V2 Double -> V2 Double -> (V2 Double, Path2D)
forall point path.
AnyPath point path =>
point -> point -> (point, path)
Path2D.lineTo (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 (-Double
1) (-Double
1))
        ]