-
Feature/manifolds
#168 -
Changed: Refactors Gram determinant calculation with LDLT
#167 -
feat: add public topology traversal API
#164 -
Added: Topology-only manifold validation module
10abbe1Introduces a new module for topology-only manifold validation,
independent of geometry and Delaunay predicates. This includes
functions for validating facet degree and closed boundary
conditions, enhancing triangulation validation. -
Added: PL-manifold validation mode to triangulation
10abbe1Introduces a
ManifoldValidationModeto control Level 3 topology
validation, enabling stricter PL-manifold invariants (ridge-link
validation) in addition to pseudomanifold checks. This allows users
to opt into stronger topological guarantees. Adds associated methods
to set and get manifold validation mode. Adds internal helpers for
computing ridge stars and links and validating link graphs. Adds
comprehensive unit tests. -
Adding connectedness validation to conflict region checks.
561a259 -
Adding codimension-2 boundary manifoldness validation
561a259("no boundary of boundary") to triangulation's `is_valid` method. -
Ensuring that strict Level 3 validation is enabled during
561a259batch construction in debug builds. -
feat: add public topology traversal API
3748ebb- API
- Added: Expose public topology traversal API
- Tests
- Add integration tests for topology traversal and adjacency index invariants
- Other
- Introduce canonical `EdgeKey` and read-only topology traversal helpers on `Triangulation`
- Add opt-in `AdjacencyIndex` builder for faster repeated adjacency queries
- API
-
Changed: Refactors manifold validation mode to topology guarantee
10abbe1Renames
ManifoldValidationModetoTopologyGuaranteefor clarity.Updates Level 3 validation configuration and documentation to
reflect the change. The purpose is to clarify that this setting
controls the level of topological guarantees provided, rather than
just a validation mode. -
Changed: Refactors and adds manifold validation tests
10abbe1Refactors internal neighbor buffer initialization for potential
future use. Adds comprehensive tests for manifold validation
logic, including constructors, and ridge link conditions,
ensuring robust topology guarantees. -
Changed: Refactors Gram determinant calculation with LDLT
561a259Refactors the Gram determinant calculation to use LDLT factorization from the
la-stackcrate for improved efficiency and numerical stability by exploiting
symmetry.Also, updates the
la-stackdependency version. -
Changed: Rename SimplexCounts to FVector for clarity
561a259Renames the
SimplexCountsstruct toFVectorto better reflect
its mathematical meaning as the f-vector in topology, representing
the counts of simplices of different dimensions.This change improves code readability and aligns the naming
convention with standard topological terminology.
(Internal refactoring, no API change.) -
Changed: Improves simplex generation algorithm
561a259Improves the algorithm for generating simplex combinations in
the Euler characteristic calculation. This change enhances
efficiency by using a lexicographic approach to generate
combinations, reducing unnecessary computations. -
Changed: Improve simplex generation by pre-sorting vertex keys
561a259Speeds up simplex generation within Euler characteristic calculation by
pre-sorting vertex keys for cells and facets. This eliminates
per-combination sorting during simplex insertion, as combinations are
generated in sorted order from sorted input. Adds a test case for
insert_simplices_of_size. -
Changed: Updates serde_json dependency to v1.0.149
561a259Updates the serde_json dependency from v1.0.148 to v1.0.149.
Also, fixes a bug in the
insert_simplices_of_sizefunction in
euler.rs, where the loop condition was incorrect, causing
potential issues when generating combinations.Adds tests for classifying a closed 2D surface (sphere) and counting
boundary simplices to verify correct topological classification and
boundary detection. -
Refresh repo tooling/CI configs and supporting scripts/tests
3748ebb -
Changed: Exposes public topology traversal API
3748ebbMakes topology traversal APIs public for external use.
Exposes
edges(),incident_edges(), andcell_neighbors()on the
DelaunayTriangulationstruct as convenience wrappers. Updates
documentation, examples, and benchmarks to use new API.This allows external users to traverse the triangulation's topology
without needing to access internal implementation details. -
Changed: Expose topology query APIs on DelaunayTriangulation
3748ebbExposes cell and vertex query APIs on
DelaunayTriangulationfor zero-allocation topology traversal.Also includes internal refactoring to improve vertex incidence
validation and ensure more robust handling of invalid key references.
Now TDS validation detects isolated vertices. -
refactor: rename DelaunayTriangulation triangulation accessors
3748ebb -
Rename DelaunayTriangulation::{triangulation, triangulation_mut} -> {as_triangulation, as_triangulation_mut}
3748ebb -
Update all in-tree call sites (core, geometry, tests, docs, examples, benches) to use the new names
3748ebb -
Refresh validation/docs snippets to match the new API
3748ebbBREAKING CHANGE: DelaunayTriangulation::triangulation() is now as_triangulation(); triangulation_mut() is now as_triangulation_mut().
-
Changed: Clarifies TDS validation and API docs
3748ebbUpdates documentation to clarify isolated vertex handling during
triangulation data structure (TDS) validation levels.Also enhances API documentation for the public topology API.
Changed descriptions for better user understanding. -
Changed: Updates CHANGELOG.md for unreleased changes
271353f -
Fixed: Improves manifold validation and error reporting
10abbe1Addresses several issues in manifold validation, including facet
multiplicity checks, boundary facet handling, and ridge link
validation.Improves error reporting by including facet keys in error messages
for easier debugging. Also resets the topology guarantee to
Pseudomanifoldwhen constructing fromfrom_tds. Adds
deduplication of parallel edges to increase robustness against
corrupted data. -
Fixed: Improves robustness of incremental insertion
561a259Addresses rare topological invalidations during incremental
insertion by: