mesh-graph 0.6.0

Fast halfedge triangle mesh graph in pure Rust
Documentation
mod add;
mod cleanup;
mod collapse;
mod edit;
mod merge_one_ring;
mod query;
mod remove;
mod subdivide;
mod transform;

pub use add::*;
use hashbrown::HashMap;
pub use merge_one_ring::*;

use crate::{HalfedgeId, MeshGraph, utils::unwrap_or_return};

impl MeshGraph {
    pub fn halfedges_map(&mut self, predicate: impl Fn(f32) -> bool) -> HashMap<HalfedgeId, f32> {
        let mut halfedges_map = HashMap::new();

        for (he_id, he) in &self.halfedges {
            let twin_id = unwrap_or_return!(he.twin, "Twin missing", halfedges_map);

            let id = he_id.min(twin_id);

            if halfedges_map.contains_key(&id) {
                continue;
            }
            let len_sqr = he.length_squared(self);

            if predicate(len_sqr) {
                halfedges_map.insert(id, len_sqr);
            }
        }

        halfedges_map
    }
}