module RevolutionExample 
( revolutionExample 
) where

import Waterfall.Solids (Solid)
import qualified Waterfall.TwoD.Path2D as Path2D
import Waterfall.Revolution (revolution)
import Linear (V2 (..))

revolutionExample :: Solid
revolutionExample :: Solid
revolutionExample = 
    Path2D -> Solid
revolution (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
0 Double
0)
            [ 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
0)
            , V2 Double -> V2 Double -> (V2 Double, Path2D)
forall point path.
(AnyPath point path, Num point) =>
point -> point -> (point, path)
Path2D.lineRelative (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 Double
0.1 Double
0.16)
            , 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
0.2)
            , Sense -> Double -> V2 Double -> V2 Double -> (V2 Double, Path2D)
Path2D.arcRelative Sense
Path2D.Clockwise Double
0.1 (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 Double
0 Double
0.2)
            , V2 Double
-> V2 Double -> V2 Double -> V2 Double -> (V2 Double, Path2D)
forall point path.
(AnyPath point path, Num point) =>
point -> point -> point -> point -> (point, path)
Path2D.bezierRelative (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 (-Double
0.6) Double
0.0) (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 (-Double
0.8) Double
2.2) (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 (-Double
0.8) Double
2.6)
            , 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
0.5 Double
3.0)
            , V2 Double -> V2 Double -> (V2 Double, Path2D)
forall point path.
(AnyPath point path, Num point) =>
point -> point -> (point, path)
Path2D.lineRelative (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 Double
0.1 Double
0.16)
            , V2 Double -> V2 Double -> (V2 Double, Path2D)
forall point path.
(AnyPath point path, Num point) =>
point -> point -> (point, path)
Path2D.lineRelative (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 (-Double
0.2) Double
0.04)
            , 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
0.1 Double
3.2)
            , V2 Double -> V2 Double -> V2 Double -> (V2 Double, Path2D)
forall point path.
(AnyPath point path, Num point) =>
point -> point -> point -> (point, path)
Path2D.arcViaRelative (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 Double
0.5 Double
0.6) (Double -> Double -> V2 Double
forall a. a -> a -> V2 a
V2 (-Double
0.1) Double
1.2)
            ]