tilezz 0.2.0

Utilities to work with perfect-precision polygonal tiles built on top of cyclotomic integer rings.
Documentation
//! Cell-table geometry: a precomputed automaton that turns "does this
//! unit-edge chain cross itself?" into table lookups, with all the
//! multiplication done once, offline.
//!
//! Lay the plane out as a grid of unit cells centered on lattice points.
//! Because both the fold-into-a-cell and a unit step are translation
//! invariant, a walk becomes a finite automaton and every segment
//! crossing is witnessed locally, in the single cell that owns the
//! crossing point:
//!
//! * [`states`] -- the finite state alphabet (each lattice vertex folded
//!   into the origin-centered base cell) and the position-independent
//!   `(state, direction) -> (next state, cell delta)` transition table.
//!   Tracking `(cell, state)` incrementally replaces `cell_floor`.
//! * [`fragments`] -- each unit edge cut into its per-cell pieces
//!   ("fragments"), plus an offline `intersect`-built conflict table:
//!   two edges cross iff two fragments share a cell and `conflict`. That
//!   bit lookup replaces the exact-arithmetic orientation test in the
//!   hot loop.
//!
//! Generic over any [`IsRing`](crate::cyclotomic::IsRing): the fundamental
//! cell is the parallelogram spanned by `1` and the unit direction closest
//! to 90 degrees, so the fold is exact for every ring (higher-rank rings
//! just have larger cell tables). The multiplication-free rat-enumeration
//! backend [`crate::enumerate::boundary::DominoBoundary`] is built on it.

pub mod fragments;
pub mod states;

pub use fragments::{FragId, FragShape, FragmentAlphabet, Placement};
pub use states::{StateAlphabet, StateId};