Merge pull request #1207 from hannobraun/cycle

Fix `SurfaceVertex` duplication when creating circle
This commit is contained in:
Hanno Braun 2022-10-11 17:12:16 +02:00 committed by GitHub
commit da2ccbd9b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 13 deletions

View File

@ -53,6 +53,7 @@ impl Cycle {
"Edges in cycle do not connect" "Edges in cycle do not connect"
); );
} }
}
// Verify that the edges form a cycle // Verify that the edges form a cycle
if let Some(first) = half_edges.first() { if let Some(first) = half_edges.first() {
@ -67,7 +68,6 @@ impl Cycle {
); );
} }
} }
}
Self { Self {
surface, surface,

View File

@ -93,14 +93,19 @@ impl PartialHalfEdge {
let [a_curve, b_curve] = let [a_curve, b_curve] =
[Scalar::ZERO, Scalar::TAU].map(|coord| Point::from([coord])); [Scalar::ZERO, Scalar::TAU].map(|coord| Point::from([coord]));
let global_vertex = Handle::<GlobalVertex>::partial() let global_form = Handle::<GlobalVertex>::partial()
.from_curve_and_position(curve.clone(), a_curve); .from_curve_and_position(curve.clone(), a_curve);
let path = curve.path.expect("Expected path that was just created");
let surface_form = SurfaceVertex::partial()
.with_position(Some(path.point_from_path_coords(a_curve)))
.with_global_form(Some(global_form));
[a_curve, b_curve].map(|point_curve| { [a_curve, b_curve].map(|point_curve| {
Vertex::partial() Vertex::partial()
.with_position(Some(point_curve)) .with_position(Some(point_curve))
.with_curve(Some(curve.clone())) .with_curve(Some(curve.clone()))
.with_global_form(Some(global_vertex.clone())) .with_surface_form(Some(surface_form.clone()))
}) })
}; };