moonlight-triangulation-1.4.0.2: docs/examples/Moonlight/Triangulation/Example/ConstrainedRegion.hs
module Moonlight.Triangulation.Example.ConstrainedRegion
( constrainedRegionCounts
) where
import qualified Data.Vector as Vector
import Moonlight.Triangulation
-- | Count every face and only the bounded odd-depth domain faces of an annulus.
constrainedRegionCounts :: Either CdtError (Int, Int)
constrainedRegionCounts = do
result <-
constrainedDelaunay
unitElementDefaults
(Vector.fromList annulusPoints)
(Vector.fromList (closedLoop 0 <> closedLoop 4))
let annulus = buildTriangulation result
pure (numFaces annulus, length (boundedRegionFaces annulus))
annulusPoints :: [Point]
annulusPoints =
[ Point (-2) (-2)
, Point 2 (-2)
, Point 2 2
, Point (-2) 2
, Point (-1) (-1)
, Point 1 (-1)
, Point 1 1
, Point (-1) 1
]
closedLoop :: Int -> [(Int, Int)]
closedLoop offset =
[ (offset, offset + 1)
, (offset + 1, offset + 2)
, (offset + 2, offset + 3)
, (offset + 3, offset)
]