diff --git a/experiments/2024-12-09/src/geometry/sketch.rs b/experiments/2024-12-09/src/geometry/sketch.rs index 8749f5c07..acc1df86c 100644 --- a/experiments/2024-12-09/src/geometry/sketch.rs +++ b/experiments/2024-12-09/src/geometry/sketch.rs @@ -1,7 +1,7 @@ use crate::{ math::{Plane, Point}, object::Handle, - topology::{face::Face, vertex::Vertex}, + topology::{face::Face, half_edge::HalfEdge, vertex::Vertex}, }; pub struct Sketch { @@ -10,11 +10,16 @@ pub struct Sketch { impl Sketch { pub fn to_face(&self, surface: Plane) -> Face { - let vertices = self.points.iter().copied().map(|point| { - let point = surface.point_from_local(point); - let vertex = Vertex::new(point); - Handle::new(vertex) - }); + let vertices = self + .points + .iter() + .copied() + .map(|point| { + let point = surface.point_from_local(point); + let vertex = Vertex::new(point); + Handle::new(vertex) + }) + .map(|vertex| Handle::new(HalfEdge::new(vertex))); Face::new(surface, vertices) } diff --git a/experiments/2024-12-09/src/operations/connect.rs b/experiments/2024-12-09/src/operations/connect.rs index 737793f75..69c2c552d 100644 --- a/experiments/2024-12-09/src/operations/connect.rs +++ b/experiments/2024-12-09/src/operations/connect.rs @@ -1,7 +1,7 @@ use crate::{ math::Plane, object::Handle, - topology::{face::Face, solid::Solid}, + topology::{face::Face, half_edge::HalfEdge, solid::Solid}, }; pub trait ConnectExt { @@ -40,7 +40,9 @@ impl ConnectExt for Handle { Plane::from_points([q, r, s].map(|vertex| vertex.point)); let face = Face::new( surface, - [q, r, s, t].map(|vertex| vertex.clone()), + [q, r, s, t].map(|vertex| { + Handle::new(HalfEdge::new(vertex.clone())) + }), ); Handle::new(face) }) diff --git a/experiments/2024-12-09/src/operations/flip.rs b/experiments/2024-12-09/src/operations/flip.rs index 5743b493b..5c4dbe5a8 100644 --- a/experiments/2024-12-09/src/operations/flip.rs +++ b/experiments/2024-12-09/src/operations/flip.rs @@ -6,11 +6,6 @@ pub trait FlipExt { impl FlipExt for &Face { fn flip(self) -> Face { - Face::new( - self.surface().flip(), - self.half_edges() - .cloned() - .map(|half_edge| half_edge.start().clone()), - ) + Face::new(self.surface().flip(), self.half_edges().cloned()) } } diff --git a/experiments/2024-12-09/src/operations/translate.rs b/experiments/2024-12-09/src/operations/translate.rs index d0c35d7eb..f9c501af5 100644 --- a/experiments/2024-12-09/src/operations/translate.rs +++ b/experiments/2024-12-09/src/operations/translate.rs @@ -1,7 +1,7 @@ use crate::{ math::Vector, object::Handle, - topology::{face::Face, vertex::Vertex}, + topology::{face::Face, half_edge::HalfEdge, vertex::Vertex}, }; pub trait TranslateExt { @@ -15,7 +15,9 @@ impl TranslateExt for Face { Face::new( self.surface().translate(offset), self.half_edges().map(|half_edge| { - Handle::new(half_edge.start().translate(offset)) + Handle::new(HalfEdge::new(Handle::new( + half_edge.start().translate(offset), + ))) }), ) } diff --git a/experiments/2024-12-09/src/topology/face.rs b/experiments/2024-12-09/src/topology/face.rs index 8c6f88331..27301989e 100644 --- a/experiments/2024-12-09/src/topology/face.rs +++ b/experiments/2024-12-09/src/topology/face.rs @@ -20,12 +20,9 @@ pub struct Face { impl Face { pub fn new( surface: Plane, - vertices: impl IntoIterator>, + vertices: impl IntoIterator>, ) -> Self { - let half_edges = vertices - .into_iter() - .map(|vertex| Handle::new(HalfEdge::new(vertex))) - .collect(); + let half_edges = vertices.into_iter().collect(); Self { surface, half_edges,