mod float_helpers;
pub mod circular_stats;
pub mod global_step;
pub mod graph;
pub mod graph_cleanup;
pub mod hex;
pub mod homography;
pub mod local_step;
pub mod square;
pub mod traverse;
pub mod validators {
pub use crate::square::validators::{SpatialSquareValidator, XJunctionValidator};
}
pub trait Float: nalgebra::RealField + Copy {}
impl<T: nalgebra::RealField + Copy> Float for T {}
pub use global_step::{estimate_global_cell_size, GlobalStepEstimate, GlobalStepParams};
pub use graph::{GridGraph, GridGraphParams, NeighborCandidate, NeighborValidator};
pub use graph_cleanup::{
enforce_symmetry, prune_by_edge_straightness, prune_crossing_edges, prune_isolated_pairs,
segments_properly_cross,
};
pub use homography::{estimate_homography, homography_from_4pt, Homography};
pub use local_step::{estimate_local_steps, LocalStep, LocalStepParams, LocalStepPointData};
pub use traverse::{assign_grid_coordinates, connected_components};
pub use square::alignment::{GridAlignment, GridTransform, GRID_TRANSFORMS_D4};
pub use square::direction::{NeighborDirection, NodeNeighbor};
pub use square::index::GridIndex;
pub use square::mesh::GridHomographyMesh;
pub use square::rectify::GridHomography;
pub use square::smoothness::{
find_inconsistent_corners, find_inconsistent_corners_step_aware, predict_grid_position,
};
pub use square::validators::{SpatialSquareValidator, XJunctionValidator};