Skip to content

v0.7.0

Latest

Choose a tag to compare

@acgetchell acgetchell released this 13 Jan 08:08
· 30 commits to main since this release
dfdba5a
  • Feature/manifolds #168

  • Changed: Refactors Gram determinant calculation with LDLT #167

  • feat: add public topology traversal API #164

  • Added: Topology-only manifold validation module 10abbe1

    Introduces 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 10abbe1

    Introduces a ManifoldValidationMode to 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 561a259

    batch 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
  • Changed: Refactors manifold validation mode to topology guarantee 10abbe1

    Renames ManifoldValidationMode to TopologyGuarantee for 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 10abbe1

    Refactors 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 561a259

    Refactors the Gram determinant calculation to use LDLT factorization from the la-stack crate for improved efficiency and numerical stability by exploiting
    symmetry.

    Also, updates the la-stack dependency version.

  • Changed: Rename SimplexCounts to FVector for clarity 561a259

    Renames the SimplexCounts struct to FVector to 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 561a259

    Improves 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 561a259

    Speeds 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 561a259

    Updates the serde_json dependency from v1.0.148 to v1.0.149.

    Also, fixes a bug in the insert_simplices_of_size function 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 3748ebb

    Makes topology traversal APIs public for external use.

    Exposes edges(), incident_edges(), and cell_neighbors() on the
    DelaunayTriangulation struct 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 3748ebb

    Exposes cell and vertex query APIs on DelaunayTriangulation for 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 3748ebb

    BREAKING CHANGE: DelaunayTriangulation::triangulation() is now as_triangulation(); triangulation_mut() is now as_triangulation_mut().

  • Changed: Clarifies TDS validation and API docs 3748ebb

    Updates 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 10abbe1

    Addresses 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
    Pseudomanifold when constructing from from_tds. Adds
    deduplication of parallel edges to increase robustness against
    corrupted data.

  • Fixed: Improves robustness of incremental insertion 561a259

    Addresses rare topological invalidations during incremental
    insertion by: