voronoi-go 1.0.1

Core rules and engine for Voronoi Go.
Documentation
//! The dimensional constants the whole engine is expressed in.
//!
//! Board coordinates are measured in stone radii: a board "n stones across" is
//! `n * STONE_DIAMETER` units wide. Nothing here is tunable — these numbers are
//! the rules of the game, not configuration.

/// Radius of a stone, and the unit all board coordinates are expressed in.
pub const STONE_RADIUS: f64 = 1.0;

/// Centre-to-centre distance below which two stones cannot both exist: a stone
/// carves a disc of this radius out of the playable area.
pub const STONE_DIAMETER: f64 = 2.0 * STONE_RADIUS;

/// Slack for magnitude comparisons that guard a genuine degeneracy — a
/// near-tangency whose square root would otherwise go negative, or a divisor
/// whose sign is noise.
///
/// It is **never** an identity tolerance. Two points are the same point when
/// their [`PointKey`](crate::PointKey) matches, and there is no epsilon in that
/// comparison anywhere in the crate.
pub const EPSILON: f64 = 1e-7;