fj-core 0.49.0

Early-stage b-rep CAD kernel.
Documentation
use fj_math::Aabb;

use crate::{geometry::Geometry, objects::Shell};

impl super::BoundingVolume<3> for Shell {
    fn aabb(&self, geometry: &Geometry) -> Option<Aabb<3>> {
        let mut aabb: Option<Aabb<3>> = None;

        for face in self.faces() {
            let new_aabb = face.aabb(geometry);
            aabb = aabb.map_or(new_aabb, |aabb| match new_aabb {
                Some(new_aabb) => Some(aabb.merged(&new_aabb)),
                None => Some(aabb),
            });
        }

        aabb
    }
}