From c480111624d17829d681c78d9d6cc0588a402bd5 Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Fri, 18 Aug 2023 22:37:21 +0200 Subject: [PATCH] Display mesh edges --- src/layout.rs | 11 +++++++++++ src/main.rs | 11 +++++++++++ src/mesh.rs | 12 ++++++++++++ src/shape.rs | 19 +++++++++++++++---- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/layout.rs b/src/layout.rs index 0260f98..bbcc3c8 100644 --- a/src/layout.rs +++ b/src/layout.rs @@ -402,4 +402,15 @@ impl Layout { .nodes() .map(|ni| untag!(ni, self.mesh.primitive(ni).shape())) } + + pub fn edges(&self) -> impl Iterator + '_ { + self.mesh.edges().map(|endpoints| { + let index0 = endpoints.0; + let index1 = endpoints.1; + ( + untag!(index0, self.mesh.primitive(index0).shape().center()), + untag!(index1, self.mesh.primitive(index1).shape().center()), + ) + }) + } } diff --git a/src/main.rs b/src/main.rs index 4ceb0af..fe49767 100644 --- a/src/main.rs +++ b/src/main.rs @@ -412,6 +412,17 @@ fn render_times( Color::RGB(100, 100, 100), ); } + + for edge in layout.edges() { + dbg!(edge); + let _ = canvas.line( + edge.0.x() as i16, + edge.0.y() as i16, + edge.1.x() as i16, + edge.1.y() as i16, + Color::RGB(250, 250, 250), + ); + } }); if let Err(err) = result { diff --git a/src/mesh.rs b/src/mesh.rs index a234cea..ecd088e 100644 --- a/src/mesh.rs +++ b/src/mesh.rs @@ -213,6 +213,18 @@ impl Mesh { self.rtree.iter().map(|wrapper| wrapper.data) } + pub fn edges(&self) -> impl Iterator + '_ { + self.graph.edge_indices().map(|edge| { + let endpoints = self.graph.edge_endpoints(edge).unwrap(); + ( + Index::