mirror of
https://github.com/hannobraun/Fornjot
synced 2025-01-15 04:37:47 +00:00
Merge pull request #1220 from hannobraun/duplication
Fix more `SurfaceVertex` duplication issues
This commit is contained in:
commit
c4d866f8e1
@ -181,8 +181,9 @@ mod tests {
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
algorithms::{reverse::Reverse, sweep::Sweep},
|
algorithms::{reverse::Reverse, sweep::Sweep},
|
||||||
objects::{Cycle, Face, HalfEdge, Objects},
|
objects::{Cycle, Face, HalfEdge, Objects, SurfaceVertex, Vertex},
|
||||||
partial::HasPartial,
|
partial::HasPartial,
|
||||||
|
storage::Handle,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -203,22 +204,46 @@ mod tests {
|
|||||||
.with_surface(Some(surface.clone()))
|
.with_surface(Some(surface.clone()))
|
||||||
.as_line_segment_from_points([[0., 0.], [1., 0.]])
|
.as_line_segment_from_points([[0., 0.], [1., 0.]])
|
||||||
.build(&objects);
|
.build(&objects);
|
||||||
|
let side_up = HalfEdge::partial()
|
||||||
|
.with_surface(Some(surface.clone()))
|
||||||
|
.with_back_vertex(Some(Vertex::partial().with_surface_form(
|
||||||
|
Some(bottom.front().surface_form().clone()),
|
||||||
|
)))
|
||||||
|
.with_front_vertex(Some(
|
||||||
|
Vertex::partial().with_surface_form(Some(
|
||||||
|
Handle::<SurfaceVertex>::partial()
|
||||||
|
.with_position(Some([1., 1.])),
|
||||||
|
)),
|
||||||
|
))
|
||||||
|
.as_line_segment()
|
||||||
|
.build(&objects);
|
||||||
let top = HalfEdge::partial()
|
let top = HalfEdge::partial()
|
||||||
.with_surface(Some(surface.clone()))
|
.with_surface(Some(surface.clone()))
|
||||||
.as_line_segment_from_points([[0., 1.], [1., 1.]])
|
.with_back_vertex(Some(
|
||||||
|
Vertex::partial().with_surface_form(Some(
|
||||||
|
Handle::<SurfaceVertex>::partial()
|
||||||
|
.with_position(Some([0., 1.])),
|
||||||
|
)),
|
||||||
|
))
|
||||||
|
.with_front_vertex(Some(Vertex::partial().with_surface_form(
|
||||||
|
Some(side_up.front().surface_form().clone()),
|
||||||
|
)))
|
||||||
|
.as_line_segment()
|
||||||
.build(&objects)
|
.build(&objects)
|
||||||
.reverse();
|
.reverse();
|
||||||
let left = HalfEdge::partial()
|
let side_down = HalfEdge::partial()
|
||||||
.with_surface(Some(surface.clone()))
|
.with_surface(Some(surface.clone()))
|
||||||
.as_line_segment_from_points([[0., 0.], [0., 1.]])
|
.with_back_vertex(Some(Vertex::partial().with_surface_form(
|
||||||
|
Some(bottom.back().surface_form().clone()),
|
||||||
|
)))
|
||||||
|
.with_front_vertex(Some(Vertex::partial().with_surface_form(
|
||||||
|
Some(top.front().surface_form().clone()),
|
||||||
|
)))
|
||||||
|
.as_line_segment()
|
||||||
.build(&objects)
|
.build(&objects)
|
||||||
.reverse();
|
.reverse();
|
||||||
let right = HalfEdge::partial()
|
|
||||||
.with_surface(Some(surface.clone()))
|
|
||||||
.as_line_segment_from_points([[1., 0.], [1., 1.]])
|
|
||||||
.build(&objects);
|
|
||||||
|
|
||||||
let cycle = Cycle::new(surface, [bottom, right, top, left]);
|
let cycle = Cycle::new(surface, [bottom, side_up, top, side_down]);
|
||||||
|
|
||||||
Face::from_exterior(cycle)
|
Face::from_exterior(cycle)
|
||||||
};
|
};
|
||||||
|
@ -48,8 +48,8 @@ impl Cycle {
|
|||||||
let [next, _] = b.vertices();
|
let [next, _] = b.vertices();
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
prev.surface_form(),
|
prev.surface_form().id(),
|
||||||
next.surface_form(),
|
next.surface_form().id(),
|
||||||
"Edges in cycle do not connect"
|
"Edges in cycle do not connect"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user