moonlight-planar

Native packed hexagonal cell regions and Delaunay and constrained Delaunay triangulation as lawful finite-set algebras, together with exact rational planar regions, labelled common refinement, intrinsic valuations, and polygonal Minkowski morphology. A mesh is a value of its site set, so union, intersection and difference return triangulations and refinement composes after them rather than replacing them. One structure-of-arrays half-edge mesh carries the constrained and unconstrained layers. Private finite-DCEL and construction kernels own trusted representations and admitted fast paths. Public dcel and build sublibraries expose their lawful immutable observations, typed queries, construction, incremental edits, constraint recovery, and refinement without duplicating those owners. Further opt-in sublibraries expose the exact scalar core, Voronoi and natural-neighbour dual, bounded concurrent join interpreter, and versioned serialization surface beside the broad main facade. The dependency-light hex component provides axial elements, arithmetic neighbours, wordwise Boolean algebra, restriction, and overlap-compatible gluing without DCEL or polygon construction. On GHC 9.14, a public cell-complex component interprets admitted exact cell selections for Homology and Category and lowers exact Delaunay alpha filtrations into persistent homology; an opt-in zigzag component tracks exact topology across independently sampled, non-nested labelled depths. Failure is values: every refusal names its witness.


Keywords
Geometry, Math
License
MIT
Install
cabal install moonlight-planar-1.0.0.0

Documentation

Moonlight

Public source mirror of the Moonlight foundation packages published or staged for Hackage, generated from the private Pale Meridian monorepo with Josh.

workspace.josh owns the exact package cut. Package release tags in this repository are generated views of their authoritative monorepo source.

Fetch one package

Each Moonlight package has its own Cabal source distribution. To inspect one package without fetching every public source blob, use Git's sparse partial clone and select its directory:

git clone --depth 1 --filter=blob:none --sparse https://github.com/PaleRoses/moonlight.git
cd moonlight
git sparse-checkout set moonlight-core