Revert "* Bug #8310 - Wrong triangulation of non-convex polygons" 75/18075/2
Clément DAVID [Tue, 12 Apr 2016 09:01:19 +0000 (11:01 +0200)]
This reverts commit c1f149b53cf0821a1d0ed01a60aab0af7e186591 as a
regression is present on :

 exec modules/hdf5/demos/resonator.dem.sce

Change-Id: I81f03d695c0822da9df1cc9e7919633bfa33107f

scilab/CHANGES
scilab/modules/graphic_objects/src/cpp/Fac3DDecomposer.cpp

index c9973f1..b2f734f 100644 (file)
@@ -330,8 +330,6 @@ In 6.0.0:
 
 * Bug #8210 fixed  - Added UMFPACK examples to the Demo gui
 
-* Bug #8310        - Wrong triangulation of non-convex polygons, now it is working for planar polygons with Z coordinates constant, for non-planar polygons a new triangulator is needed.
-
 * Bug #9456 fixed  - bench_run did not work on a path or in a toolbox
 
 * Bug #11625 fixed - uicontrol table would not update object strings when edited interactively in the plot window
index 3497428..985b56f 100644 (file)
@@ -17,7 +17,6 @@
 #include "ColorComputer.hxx"
 #include "Fac3DColorComputer.hxx"
 #include "Fac3DDecomposer.hxx"
-#include "Triangulator.hxx"
 
 extern "C"
 {
@@ -484,9 +483,6 @@ int Fac3DDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logM
     for (int i = 0; i < numGons; i++)
     {
         int isValid = 1;
-        double lz = z[vertexOffset];
-        bool isZconst = true;
-        Triangulator triangulator;
 
         for (int j = 0; j < numVerticesPerGon; j++)
         {
@@ -494,14 +490,11 @@ int Fac3DDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logM
             yc = y[vertexOffset + j];
             zc = z[vertexOffset + j];
 
-            isZconst = isZconst && (lz == zc);
-
             if (!DecompositionUtils::isValid(xc, yc, zc) || !DecompositionUtils::isLogValid(xc, yc, zc, logMask))
             {
                 isValid = 0;
                 break;
             }
-            triangulator.addPoint(xc, yc, zc);
         }
 
         if (isValid == 0 || colorComputer.isFacetColorValid(i) == 0)
@@ -510,46 +503,16 @@ int Fac3DDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logM
             continue;
         }
 
-        if (isZconst)
-        {
-            triangulator.initialize();
-            triangulator.triangulate();
-            int numTriangles = triangulator.getNumberTriangles();
-
-            //Failed to triangulate
-            if (numTriangles < 1)
-            {
-                vertexOffset += numVerticesPerGon;
-                continue;
-            }
-
-            int * indices = triangulator.getIndices();
-
-
-            for (int j = 0; j < numTriangles; j++)
-            {
-                buffer[bufferOffset] = indices[3 * j];
-                buffer[bufferOffset + 1] = indices[3 * j + 1];
-                buffer[bufferOffset + 2] = indices[3 * j + 2];
-
-                bufferOffset += 3;
-            }
-        }
-        else
+        /* Performs a fan decomposition, vertices are ordered counter-clockwise. */
+        for (int j = 0; j < numVerticesPerGon - 2; j++)
         {
-            /* Performs a fan decomposition, vertices are ordered counter-clockwise. */
-            for (int j = 0; j < numVerticesPerGon - 2; j++)
-            {
-                buffer[bufferOffset] = vertexOffset;
-                buffer[bufferOffset + 1] = vertexOffset + j + 2;
-                buffer[bufferOffset + 2] = vertexOffset + j + 1;
+            buffer[bufferOffset] = vertexOffset;
+            buffer[bufferOffset + 1] = vertexOffset + j + 2;
+            buffer[bufferOffset + 2] = vertexOffset + j + 1;
 
-                bufferOffset += 3;
-            }
+            bufferOffset += 3;
         }
 
-        triangulator.clear();
-
         vertexOffset += numVerticesPerGon;
     }