Esempio n. 1
0
 internal static void BuildTriangles(NativeArray <float2> vertices, int vertexCount, NativeArray <int> indices, int indexCount, ref NativeArray <UTriangle> triangles, ref int triangleCount, ref float maxArea)
 {
     // Check if there are invalid triangles or segments.
     for (int i = 0; i < indexCount; i += 3)
     {
         UTriangle tri = new UTriangle();
         var       i0  = indices[i + 0];
         var       i1  = indices[i + 1];
         var       i2  = indices[i + 2];
         tri.va   = vertices[i0];
         tri.vb   = vertices[i1];
         tri.vc   = vertices[i2];
         tri.c    = UTess.CircumCircle(tri);
         tri.area = UTess.TriangleArea(tri.va, tri.vb, tri.vc);
         maxArea  = math.max(tri.area, maxArea);
         triangles[triangleCount++] = tri;
     }
 }
Esempio n. 2
0
        internal static void BuildTrianglesAndEdges(NativeArray <float2> vertices, int vertexCount, NativeArray <int> indices, int indexCount, ref NativeArray <UTriangle> triangles, ref int triangleCount, ref NativeArray <int4> delaEdges, ref int delaEdgeCount, ref float maxArea)
        {
            // Check if there are invalid triangles or segments.
            for (int i = 0; i < indexCount; i += 3)
            {
                UTriangle tri = new UTriangle();
                var       i0  = indices[i + 0];
                var       i1  = indices[i + 1];
                var       i2  = indices[i + 2];
                tri.va      = vertices[i0];
                tri.vb      = vertices[i1];
                tri.vc      = vertices[i2];
                tri.c       = UTess.CircumCircle(tri);
                tri.area    = UTess.TriangleArea(tri.va, tri.vb, tri.vc);
                maxArea     = math.max(tri.area, maxArea);
                tri.indices = new int3(i0, i1, i2);

                // Outputs.
                delaEdges[delaEdgeCount++] = new int4(math.min(i0, i1), math.max(i0, i1), triangleCount, -1);
                delaEdges[delaEdgeCount++] = new int4(math.min(i1, i2), math.max(i1, i2), triangleCount, -1);
                delaEdges[delaEdgeCount++] = new int4(math.min(i2, i0), math.max(i2, i0), triangleCount, -1);
                triangles[triangleCount++] = tri;
            }
        }