]> OCCT Git - occt-copy.git/commitdiff
fix index of degenerated vertex within multiple faces CR21753
authorkgv <kgv@opencascade.com>
Wed, 15 Jun 2016 16:48:20 +0000 (19:48 +0300)
committerkgv <kgv@opencascade.com>
Wed, 15 Jun 2016 16:48:20 +0000 (19:48 +0300)
src/StdPrs/StdPrs_ShadedShape.cxx

index 7923d182f9dead8a98d5ded39418b38ac811c321..bea9e8d37ba307cb69596f9aab97dcfd40193d32 100644 (file)
@@ -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;
           }
         }