Skip to content

Commit b2427e6

Browse files
committed
use named constant
1 parent 5500e0b commit b2427e6

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/impl.cpp

+15-3
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ void Manifold::Impl::CreateHalfedges(const Vec<ivec3>& triVerts) {
312312
// which are removed later by RemoveUnreferencedVerts() and Finish().
313313
const int numEdge = numHalfedge / 2;
314314

315+
constexpr int removedHalfedge = -2;
315316
const auto body = [&](int i, int consecutiveStart, int segmentEnd) {
316317
const int pair0 = ids[i];
317318
Halfedge& h0 = halfedge_[pair0];
@@ -322,18 +323,29 @@ void Manifold::Impl::CreateHalfedges(const Vec<ivec3>& triVerts) {
322323
if (h0.startVert != h1.endVert || h0.endVert != h1.startVert) break;
323324
if (halfedge_[NextHalfedge(pair0)].endVert ==
324325
halfedge_[NextHalfedge(pair1)].endVert) {
325-
h0.pairedHalfedge = h1.pairedHalfedge = -2;
326+
h0.pairedHalfedge = h1.pairedHalfedge = removedHalfedge;
326327
// Reorder so that remaining edges pair up
327328
if (k != i + numEdge) std::swap(ids[i + numEdge], ids[k]);
328329
break;
329330
}
330331
++k;
331332
if (k >= segmentEnd + numEdge) break;
332333
}
333-
if (i + 1 == segmentEnd) return consecutiveStart;
334+
if (i + 1 == segmentEnd) {
335+
int count = 0;
336+
for (int j = consecutiveStart; j < i + 1; j++)
337+
count += halfedge_[ids[j]].pairedHalfedge == -1;
338+
if (count > 1) printf("Warning: %d ambiguous edges in manifold\n", count);
339+
return consecutiveStart;
340+
}
334341
Halfedge& h1 = halfedge_[ids[i + 1]];
335342
if (h0.startVert == h1.startVert && h0.endVert == h1.endVert)
336343
return consecutiveStart;
344+
345+
int count = 0;
346+
for (int j = consecutiveStart; j < i + 1; j++)
347+
count += halfedge_[ids[j]].pairedHalfedge == -1;
348+
if (count > 1) printf("Warning: %d ambiguous edges in manifold\n", count);
337349
return i + 1;
338350
};
339351

@@ -374,7 +386,7 @@ void Manifold::Impl::CreateHalfedges(const Vec<ivec3>& triVerts) {
374386
for_each_n(policy, countAt(0), numEdge, [this, &ids, numEdge](int i) {
375387
const int pair0 = ids[i];
376388
const int pair1 = ids[i + numEdge];
377-
if (halfedge_[pair0].pairedHalfedge != -2) {
389+
if (halfedge_[pair0].pairedHalfedge != removedHalfedge) {
378390
halfedge_[pair0].pairedHalfedge = pair1;
379391
halfedge_[pair1].pairedHalfedge = pair0;
380392
} else {

0 commit comments

Comments
 (0)