diff --git a/crates/fj-interop/src/debug.rs b/crates/fj-interop/src/debug.rs deleted file mode 100644 index 035d1a23a..000000000 --- a/crates/fj-interop/src/debug.rs +++ /dev/null @@ -1,50 +0,0 @@ -//! Debug information definitions for the Fornjot ecosystem -//! -//! Defines debug information that is used by other crates within the Fornjot -//! ecosystem. The types in here aren't very useful in themselves, but they -//! define an interface that other crates use to communicate between each other. - -use fj_math::{Point, Segment}; - -/// Debug info from the CAD kernel that can be visualized -#[derive(Clone, Debug, Default)] -pub struct DebugInfo { - /// Rays being used during face triangulation - pub triangle_edge_checks: Vec, -} - -impl DebugInfo { - /// Construct an empty instance of `DebugInfo` - pub fn new() -> Self { - Self::default() - } - - /// Clear all information within this instance - /// - /// The resulting instance is the same, as if created by [`DebugInfo::new`], - /// but calling `clear` might be more efficient in regard to heap - /// allocations. - pub fn clear(&mut self) { - self.triangle_edge_checks.clear(); - } -} - -/// Record of a check to determine if a triangle edge is within a face -#[derive(Clone, Debug)] -pub struct TriangleEdgeCheck { - /// The origin of the ray used to perform the check - pub origin: Point<3>, - - /// The points where the ray hit edges of the face - pub hits: Vec>, -} - -impl TriangleEdgeCheck { - /// Construct a new instance - pub fn new(origin: Point<3>) -> Self { - Self { - origin, - hits: Vec::new(), - } - } -} diff --git a/crates/fj-interop/src/lib.rs b/crates/fj-interop/src/lib.rs index e2f455476..afc1b93d8 100644 --- a/crates/fj-interop/src/lib.rs +++ b/crates/fj-interop/src/lib.rs @@ -11,7 +11,6 @@ #![warn(missing_docs)] -pub mod debug; pub mod ext; pub mod mesh; -pub mod processed_shape; +pub mod model; diff --git a/crates/fj-interop/src/model.rs b/crates/fj-interop/src/model.rs new file mode 100644 index 000000000..3ea622da9 --- /dev/null +++ b/crates/fj-interop/src/model.rs @@ -0,0 +1,15 @@ +//! An approximated model + +use fj_math::{Aabb, Point}; + +use crate::mesh::Mesh; + +/// An approximated model +#[derive(Clone, Debug)] +pub struct Model { + /// The triangle mesh that approximates the model + pub mesh: Mesh>, + + /// The axis-aligned bounding box of the model + pub aabb: Aabb<3>, +} diff --git a/crates/fj-interop/src/processed_shape.rs b/crates/fj-interop/src/processed_shape.rs deleted file mode 100644 index 6a112bd7d..000000000 --- a/crates/fj-interop/src/processed_shape.rs +++ /dev/null @@ -1,18 +0,0 @@ -//! A processed shape - -use fj_math::{Aabb, Point}; - -use crate::{debug::DebugInfo, mesh::Mesh}; - -/// A processed shape -#[derive(Clone, Debug)] -pub struct ProcessedShape { - /// The axis-aligned bounding box of the shape - pub aabb: Aabb<3>, - - /// The triangle mesh that approximates the original shape - pub mesh: Mesh>, - - /// The debug info generated while processing the shape - pub debug_info: DebugInfo, -} diff --git a/crates/fj-viewer/src/camera.rs b/crates/fj-viewer/src/camera.rs index 5cb41ed40..5f328f186 100644 --- a/crates/fj-viewer/src/camera.rs +++ b/crates/fj-viewer/src/camera.rs @@ -1,7 +1,7 @@ //! Viewer camera module use std::f64::consts::FRAC_PI_2; -use fj_interop::{mesh::Mesh, processed_shape::ProcessedShape}; +use fj_interop::{mesh::Mesh, model::Model}; use fj_math::{Aabb, Point, Scalar, Transform, Vector}; use crate::screen::NormalizedScreenPosition; @@ -82,7 +82,7 @@ impl Camera { pub fn focus_point( &self, cursor: Option, - shape: &ProcessedShape, + shape: &Model, ) -> FocusPoint { self.calculate_focus_point(cursor, &shape.mesh) .unwrap_or_else(|| FocusPoint(shape.aabb.center())) diff --git a/crates/fj-viewer/src/viewer.rs b/crates/fj-viewer/src/viewer.rs index b99936d6d..24cbc25e7 100644 --- a/crates/fj-viewer/src/viewer.rs +++ b/crates/fj-viewer/src/viewer.rs @@ -1,4 +1,4 @@ -use fj_interop::processed_shape::ProcessedShape; +use fj_interop::model::Model; use fj_math::Aabb; use tracing::warn; @@ -28,7 +28,7 @@ pub struct Viewer { pub renderer: Renderer, /// The shape - pub shape: Option, + pub shape: Option, } impl Viewer { @@ -60,7 +60,7 @@ impl Viewer { } /// Handle the shape being updated - pub fn handle_shape_update(&mut self, shape: ProcessedShape) { + pub fn handle_shape_update(&mut self, shape: Model) { self.renderer.update_geometry((&shape.mesh).into()); let aabb = shape.aabb; diff --git a/crates/fj-window/src/display.rs b/crates/fj-window/src/display.rs index 93fd1fab0..fb9ca48aa 100644 --- a/crates/fj-window/src/display.rs +++ b/crates/fj-window/src/display.rs @@ -1,6 +1,4 @@ -use fj_interop::{ - debug::DebugInfo, mesh::Mesh, processed_shape::ProcessedShape, -}; +use fj_interop::{mesh::Mesh, model::Model}; use fj_math::{Aabb, Point}; use fj_viewer::{ InputEvent, NormalizedScreenPosition, RendererInitError, Screen, @@ -24,10 +22,9 @@ pub fn display(mesh: Mesh>, invert_zoom: bool) -> Result<(), Error> { let window = Window::new(&event_loop)?; let mut viewer = block_on(Viewer::new(&window))?; - viewer.handle_shape_update(ProcessedShape { + viewer.handle_shape_update(Model { aabb: Aabb::<3>::from_points(mesh.vertices()), mesh, - debug_info: DebugInfo::new(), }); let mut held_mouse_button = None;