@@ -312,6 +312,7 @@ void Manifold::Impl::CreateHalfedges(const Vec<ivec3>& triVerts) {
312
312
// which are removed later by RemoveUnreferencedVerts() and Finish().
313
313
const int numEdge = numHalfedge / 2 ;
314
314
315
+ constexpr int removedHalfedge = -2 ;
315
316
const auto body = [&](int i, int consecutiveStart, int segmentEnd) {
316
317
const int pair0 = ids[i];
317
318
Halfedge& h0 = halfedge_[pair0];
@@ -322,18 +323,29 @@ void Manifold::Impl::CreateHalfedges(const Vec<ivec3>& triVerts) {
322
323
if (h0.startVert != h1.endVert || h0.endVert != h1.startVert ) break ;
323
324
if (halfedge_[NextHalfedge (pair0)].endVert ==
324
325
halfedge_[NextHalfedge (pair1)].endVert ) {
325
- h0.pairedHalfedge = h1.pairedHalfedge = - 2 ;
326
+ h0.pairedHalfedge = h1.pairedHalfedge = removedHalfedge ;
326
327
// Reorder so that remaining edges pair up
327
328
if (k != i + numEdge) std::swap (ids[i + numEdge], ids[k]);
328
329
break ;
329
330
}
330
331
++k;
331
332
if (k >= segmentEnd + numEdge) break ;
332
333
}
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
+ }
334
341
Halfedge& h1 = halfedge_[ids[i + 1 ]];
335
342
if (h0.startVert == h1.startVert && h0.endVert == h1.endVert )
336
343
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);
337
349
return i + 1 ;
338
350
};
339
351
@@ -374,7 +386,7 @@ void Manifold::Impl::CreateHalfedges(const Vec<ivec3>& triVerts) {
374
386
for_each_n (policy, countAt (0 ), numEdge, [this , &ids, numEdge](int i) {
375
387
const int pair0 = ids[i];
376
388
const int pair1 = ids[i + numEdge];
377
- if (halfedge_[pair0].pairedHalfedge != - 2 ) {
389
+ if (halfedge_[pair0].pairedHalfedge != removedHalfedge ) {
378
390
halfedge_[pair0].pairedHalfedge = pair1;
379
391
halfedge_[pair1].pairedHalfedge = pair0;
380
392
} else {
0 commit comments