Skip to content

Commit 5ae22f0

Browse files
authored
edge_op: quit CollapseEdge early if possible (#1152)
1 parent a97b150 commit 5ae22f0

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/edge_op.cpp

+11-8
Original file line numberDiff line numberDiff line change
@@ -581,16 +581,9 @@ bool Manifold::Impl::CollapseEdge(const int edge, std::vector<int>& edges) {
581581
const vec3 delta = pNew - pOld;
582582
const bool shortEdge = la::dot(delta, delta) < epsilon_ * epsilon_;
583583

584-
// Orbit endVert
585-
int current = halfedge_[tri0edge[1]].pairedHalfedge;
586-
while (current != tri1edge[2]) {
587-
current = NextHalfedge(current);
588-
edges.push_back(current);
589-
current = halfedge_[current].pairedHalfedge;
590-
}
591-
592584
// Orbit startVert
593585
int start = halfedge_[tri1edge[1]].pairedHalfedge;
586+
int current = tri1edge[2];
594587
if (!shortEdge) {
595588
current = start;
596589
TriRef refCheck = triRef[toRemove.pairedHalfedge / 3];
@@ -620,6 +613,16 @@ bool Manifold::Impl::CollapseEdge(const int edge, std::vector<int>& edges) {
620613
}
621614
}
622615

616+
// Orbit endVert
617+
{
618+
int current = halfedge_[tri0edge[1]].pairedHalfedge;
619+
while (current != tri1edge[2]) {
620+
current = NextHalfedge(current);
621+
edges.push_back(current);
622+
current = halfedge_[current].pairedHalfedge;
623+
}
624+
}
625+
623626
// Remove toRemove.startVert and replace with endVert.
624627
vertPos_[toRemove.startVert] = vec3(NAN);
625628
CollapseTri(tri1edge);

0 commit comments

Comments
 (0)