Fixed face-varying tagging bug affecting refinement for patches:

- correctly tag sharpened boundaries as irregular
    - distinguish the single-value case between dart and boundary
This commit is contained in:
barry 2016-09-27 19:42:10 -07:00
parent 9a82ba67eb
commit b3b0a93a9d

View File

@ -540,7 +540,7 @@ FVarLevel::completeTopologyFromFaceValues(int regularBoundaryValence) {
valueTag._infSharpEdges = (vSpan._infSharpEdgeCount > 0);
valueTag._infIrregular = vSpan._infSharpEdgeCount ? ((vSpan._size - vSpan._infSharpEdgeCount) > 1)
: valueTag._xordinary;
: (isInfSharp ? (vSpan._size > 1) : valueTag._xordinary);
if (!isInfSharp) {
if (vSpan._semiSharpEdgeCount || vTag._semiSharp) {
@ -950,7 +950,7 @@ FVarLevel::gatherValueSpans(Index vIndex, ValueSpan * vValueSpans) const {
vValueSpans[i]._size = 0;
vValueSpans[i]._disctsEdgeCount = 1;
}
} else if (vHasSingleValue) {
} else if (vHasSingleValue && !vIsBoundary) {
// Mark an interior dart disjoint if more than one discts edge:
vValueSpans[0]._size = 0;
vValueSpans[0]._start = 0;