Skip to main content

geop_core_rasterize/debug/
mod.rs

1//! Rendering a model for a person to look at while debugging: a
2//! [`PrimitiveScene`] of points, lines, triangles and labels, saved as an
3//! interactive HTML file — the shape as rasterized ([`RasterizedModel::scene`])
4//! or its raw topology, every entity labelled ([`rasterize_topology`]).
5
6mod color;
7mod scene;
8mod topology;
9
10pub use color::Color10;
11pub use scene::PrimitiveScene;
12pub use topology::rasterize_topology;
13
14use geop_core_topology::FaceId;
15
16use crate::RasterizedModel;
17
18impl RasterizedModel {
19    /// As a scene: vertices dark gray, edges gray, each face in the color
20    /// `face_color` gives it.
21    pub fn scene(&self, face_color: impl Fn(FaceId) -> Color10) -> PrimitiveScene {
22        let mut scene = PrimitiveScene::new();
23        for &point in self.vertices.values() {
24            scene.add_point(point, Color10::DarkGray);
25        }
26        for polyline in self.edges.values() {
27            scene.add_polyline(polyline, Color10::Gray);
28        }
29        for (&id, triangles) in &self.faces {
30            for t in triangles {
31                scene.add_triangle(t.clone(), face_color(id));
32            }
33        }
34        scene
35    }
36}