Fix #696. Account for multiple coincident edges when looking for naked edges.
This commit is contained in:
parent
d8f5a8da32
commit
e74185b639
@ -971,10 +971,16 @@ void SKdNode::MakeCertainEdgesInto(SEdgeList *sel, EdgeKind how, bool coplanarIs
|
|||||||
|
|
||||||
switch(how) {
|
switch(how) {
|
||||||
case EdgeKind::NAKED_OR_SELF_INTER:
|
case EdgeKind::NAKED_OR_SELF_INTER:
|
||||||
|
// there should be one anti-parllel edge
|
||||||
if(info.count != 1) {
|
if(info.count != 1) {
|
||||||
|
// but there may be multiple parallel coincident edges
|
||||||
|
SKdNode::EdgeOnInfo parallelInfo = {};
|
||||||
|
FindEdgeOn(b, a, -cnt, coplanarIsInter, ¶llelInfo);
|
||||||
|
if (info.count != parallelInfo.count) {
|
||||||
sel->AddEdge(a, b, auxA);
|
sel->AddEdge(a, b, auxA);
|
||||||
if(leaky) *leaky = true;
|
if(leaky) *leaky = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if(info.intersectsMesh) {
|
if(info.intersectsMesh) {
|
||||||
sel->AddEdge(a, b, auxA);
|
sel->AddEdge(a, b, auxA);
|
||||||
if(inter) *inter = true;
|
if(inter) *inter = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user