Exemple #1
0
        private IEnumerable<Triangle> GetMeshTriangles(TriangleNet.Mesh mesh)
        {
            List<Vector3> vertices = new List<Vector3>();
            foreach (var vertex in mesh.Vertices)
            {
                vertices.Add(TransformTo3D(new IntPoint((long)vertex.X, (long)vertex.Y)));
            }

            foreach (var triangle in mesh.Triangles)
            {
                yield return new Triangle(vertices[triangle.P0], vertices[triangle.P1], vertices[triangle.P2]);
            }
        }
Exemple #2
0
    public static List<Point> GetTriangleAsPoints(ref TriangleNet.Data.Triangle triangle)
    {
        Vertex v1 = triangle.GetVertex(0);
        Vertex v2 = triangle.GetVertex(1);
        Vertex v3 = triangle.GetVertex(2);

        List<Point> points = new List<Point>();

        points.Add(new Point(v1.X, v1.Y, v1.Attributes[0]));
        points.Add(new Point(v2.X, v2.Y, v2.Attributes[0]));
        points.Add(new Point(v3.X, v3.Y, v3.Attributes[0]));

        return points;
    }
Exemple #3
0
    public static bool Contains(ref TriangleNet.Data.Triangle triangle, double x, double y)
    {
        Vertex v1 = triangle.GetVertex(0);
        Vertex v2 = triangle.GetVertex(1);
        Vertex v3 = triangle.GetVertex(2);
        Vertex pt = new Vertex(x, y);
        bool b1, b2, b3;

        b1 = Sign(ref pt, ref v1, ref v2) < 0.0f;
        b2 = Sign(ref pt, ref v2, ref v3) < 0.0f;
        b3 = Sign(ref pt, ref v3, ref v1) < 0.0f;

        return ((b1 == b2) && (b2 == b3));
    }
Exemple #4
0
    public static Polygon GetPolygon(ref TriangleNet.Data.Triangle triangle)
    {
        List<Coordinate> coords = new List<Coordinate>();
        Vertex v1 = triangle.GetVertex(0);
        coords.Add(new Coordinate(v1.X, v1.Y));
        v1 = triangle.GetVertex(1);
        coords.Add(new Coordinate(v1.X, v1.Y));
        v1 = triangle.GetVertex(2);
        coords.Add(new Coordinate(v1.X, v1.Y));

        return new Polygon(coords);
    }
        List<Vertex> IndexVertices(TriangleNet.Data.Triangle triangle, Dictionary<int, int> indexDict, ref int highestIndex, out int[] newIndices)
        {
            var newVertices = new List<Vertex>();
            newIndices = new int[3];

            if (indexDict.ContainsKey(triangle.P0))
            {
                newIndices[0] = indexDict[triangle.P0];
            }
            else
            {
                TriangleNet.Data.Vertex vertex0 = triangle.GetVertex(0);
                newVertices.Add(new Vertex((float)vertex0.X, (float)vertex0.Y));
                indexDict.Add(vertex0.ID, highestIndex);
                newIndices[0] = highestIndex;
                highestIndex++;
            }

            if (indexDict.ContainsKey(triangle.P1))
            {
                newIndices[1] = indexDict[triangle.P1];
            }
            else
            {
                TriangleNet.Data.Vertex vertex1 = triangle.GetVertex(1);
                newVertices.Add(new Vertex((float)vertex1.X, (float)vertex1.Y));
                indexDict.Add(vertex1.ID, highestIndex);
                newIndices[1] = highestIndex;
                highestIndex++;
            }

            if (indexDict.ContainsKey(triangle.P2))
            {
                newIndices[2] = indexDict[triangle.P2];
            }
            else
            {
                TriangleNet.Data.Vertex vertex2 = triangle.GetVertex(2);
                newVertices.Add(new Vertex((float)vertex2.X, (float)vertex2.Y));
                indexDict.Add(vertex2.ID, highestIndex);
                newIndices[2] = highestIndex;
                highestIndex++;
            }

            return newVertices;
        }