From db453edb9834f1fd17e90d3eae94bba3a9371ae9 Mon Sep 17 00:00:00 2001 From: kgv Date: Wed, 15 Jun 2016 19:48:20 +0300 Subject: [PATCH] fix index of degenerated vertex within multiple faces --- src/StdPrs/StdPrs_ShadedShape.cxx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/StdPrs/StdPrs_ShadedShape.cxx b/src/StdPrs/StdPrs_ShadedShape.cxx index 7923d182f9..bea9e8d37b 100644 --- a/src/StdPrs/StdPrs_ShadedShape.cxx +++ b/src/StdPrs/StdPrs_ShadedShape.cxx @@ -360,15 +360,25 @@ namespace : -1; if (aDegenInTri != -1) { + aPoint = aNodes (anIndex[aDegenInTri]); + if (!aLoc.IsIdentity()) + { + aPoint.Transform (aTrsf); + aV1.Transform (aTrsf); + if (aV1.SquareMagnitude() > aPreci) + { + aV1.Normalize(); + } + } if (theHasTexels && aUVNodes.Upper() == aNodes.Upper()) { const gp_Pnt2d aTexel = gp_Pnt2d ((-theUVOrigin.X() + (theUVRepeat.X() * (aUVNodes (anIndex[aDegenInTri]).X() - aUmin)) / dUmax) / theUVScale.X(), (-theUVOrigin.Y() + (theUVRepeat.Y() * (aUVNodes (anIndex[aDegenInTri]).Y() - aVmin)) / dVmax) / theUVScale.Y()); - anIndex[aDegenInTri] = anArray->AddVertex (aNodes (anIndex[aDegenInTri]), aV1, aTexel); + anIndex[aDegenInTri] = anArray->AddVertex (aPoint, aV1, aTexel) - aDecal; } else { - anIndex[aDegenInTri] = anArray->AddVertex (aNodes (anIndex[aDegenInTri]), aV1); + anIndex[aDegenInTri] = anArray->AddVertex (aPoint, aV1) - aDecal; } } -- 2.39.5