Convert Face::from_sketch into Sketch::to_face

This commit is contained in:
Hanno Braun 2025-01-21 19:32:02 +01:00
parent fa3da9acad
commit ef061b4e16
3 changed files with 30 additions and 22 deletions

View File

@ -1,9 +1,36 @@
use crate::math::Point;
use crate::{
math::{Plane, Point},
storage::Store,
topology::{Face, Vertex},
};
use super::Handle;
pub struct Sketch {
pub points: Vec<Point<2>>,
}
impl Sketch {
pub fn to_face(
&self,
surface: Handle<Plane>,
vertices: &mut Store<Vertex>,
) -> Face {
let vertices = self
.points
.iter()
.copied()
.map(|point| {
let point = surface.point_from_local(point);
let vertex = Vertex::from(point);
vertices.insert(vertex)
})
.collect::<Vec<_>>();
Face::new(surface, vertices)
}
}
impl<I, P> From<I> for Sketch
where
I: IntoIterator<Item = P>,

View File

@ -22,7 +22,7 @@ pub fn model(shape: &mut Shape) {
},
});
Face::from_sketch(&sketch, surface, stores.get())
sketch.to_face(surface, stores.get())
};
let bottom = top.flip(stores.get()).translate([0., 0., -1.], &mut stores);

View File

@ -1,7 +1,7 @@
use spade::Triangulation;
use crate::{
geometry::{AnyOp, Handle, Operation, Sketch, TriMesh, Triangle},
geometry::{AnyOp, Handle, Operation, TriMesh, Triangle},
math::{Plane, Point, Vector},
storage::{Store, Stores},
};
@ -25,25 +25,6 @@ impl Face {
}
}
pub fn from_sketch(
sketch: &Sketch,
surface: Handle<Plane>,
vertices: &mut Store<Vertex>,
) -> Self {
let vertices = sketch
.points
.iter()
.copied()
.map(|point| {
let point = surface.point_from_local(point);
let vertex = Vertex::from(point);
vertices.insert(vertex)
})
.collect::<Vec<_>>();
Self::new(surface, vertices)
}
pub fn vertices(&self) -> impl Iterator<Item = &Handle<Vertex>> {
self.vertices.iter()
}