From d54c146ef57c28e5db8631fc48e59a64c826f86f Mon Sep 17 00:00:00 2001 From: Charlotte Pabst Date: Sat, 9 Mar 2024 18:31:38 +0100 Subject: --- src/main.rs | 62 +++++++++++++++++++++++++------------------------------------ 1 file changed, 25 insertions(+), 37 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index a1f968b..ba345f8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,6 +39,9 @@ pub use mevvlfs::*; mod mekh; pub use mekh::*; +mod msev; +pub use msev::*; + pub trait ReflAsRef { fn as_ref(&self) -> &T; } @@ -919,7 +922,7 @@ impl<'brand, 'arena, V> Dcel<'brand, 'arena, V> { let [v1, v2] = old_edge.vertices(self); let mut a3 = a1.next(self); - let mut b3 = b2.prev(self); + let mut b3 = b1.prev(self); if a3.eq(b1, self) { a3 = b2; @@ -937,6 +940,9 @@ impl<'brand, 'arena, V> Dcel<'brand, 'arena, V> { self.follow(b3, b2); self.follow(b2, b1); + a2.set_loop_(a1.loop_(self), self); + b2.set_loop_(b1.loop_(self), self); + Mve { shell, old_edge, @@ -966,44 +972,26 @@ impl<'brand, 'arena, V> Dcel<'brand, 'arena, V> { Kemh::new(shell, edge, loop_, hole_vertex).apply(self) } - /* pub fn mekh( + pub fn msev( &mut self, - ) -> Result, MekhError> { - let face = loops[0].0.face(self); - assert!(loops[1].0.lens(self).face().eq(face)); - - let outer = loops.map(|(l, _)| face.lens(self).outer_loop().eq(l)); - if outer[0] && outer[1] { - panic!("cannot connect outer loops"); - } - if outer[1] { - loops = [loops[1], loops[0]]; - } - - let [b0, a2] = loops.map(|(l, v)| v.find_outgoing(l, self).unwrap()); - - let (edge, [a1, b1]) = self.new_edge(shell); - - let a0 = b0.prev(self); - let b2 = a2.prev(self); - - self.origin(loops[0].1, a1); - self.follow(a0, a1); - self.follow(a1, a2); - - self.origin(loops[1].1, b1); - self.follow(b2, b1); - self.follow(b1, b0); - - loops[0] - .0 - .iter_mut_half_edges(self, |x, dcel| x.set_loop_(loops[0].0, dcel)); - - face.remove_inner_loop(loops[1].0, self); - from_loop.free(self); + shell: ptr!(Shell), + vertex: ptr!(Vertex), + loops: [ptr!(Loop); 2], + data: V, + ) -> Result, OperatorErr, MsevError>> { + Msev::new(shell, vertex, loops, data).apply(self) + } - Ok(Mekh { shell }) - } */ + pub fn ksev( + &mut self, + shell: ptr!(Shell), + loops: [ptr!(Loop); 2], + old_vertex: ptr!(Vertex), + new_vertex: own!(Vertex), + edge: own!(Edge), + ) -> Result, OperatorErr, KsevError>> { + Ksev::new(shell, loops, old_vertex, new_vertex, edge).apply(self) + } } use std::io::Write; -- cgit v1.2.3