packages feed

moonlight-triangulation-1.4.0.2: docs/examples/Moonlight/Triangulation/Example/SetAlgebra.hs

module Moonlight.Triangulation.Example.SetAlgebra
  ( siteCounts
  ) where

import qualified Data.Vector as Vector
import Moonlight.Triangulation

-- | Join and meet two overlapping site sets through the public facade.
siteCounts :: Either BuildError (Int, Int)
siteCounts = do
  left <- unitSquareAt 0
  right <- unitSquareAt 1
  joined <- left `union` right
  shared <- intersection left right
  pure (numVertices joined, numVertices shared)

unitSquareAt :: Double -> Either BuildError (DelaunayTriangulation ())
unitSquareAt minimumX =
  delaunayGeometry
    ( Vector.fromList
        [ Point minimumX 0
        , Point (minimumX + 1) 0
        , Point (minimumX + 1) 1
        , Point minimumX 1
        ]
    )