fj_core/algorithms/approx/
solid.rs1use std::collections::BTreeSet;
4
5use crate::{objects::Solid, Core};
6
7use super::{edge::HalfEdgeApproxCache, face::FaceApprox, Approx, Tolerance};
8
9impl Approx for &Solid {
10 type Approximation = BTreeSet<FaceApprox>;
11 type Cache = HalfEdgeApproxCache;
12
13 fn approx_with_cache(
14 self,
15 tolerance: impl Into<Tolerance>,
16 cache: &mut Self::Cache,
17 core: &mut Core,
18 ) -> Self::Approximation {
19 let tolerance = tolerance.into();
20
21 self.shells()
22 .iter()
23 .flat_map(|shell| shell.approx_with_cache(tolerance, cache, core))
24 .collect()
25 }
26}