示例#1
0
    public void Continue()
    {
        while (pointlist.Count > 0)
        {
            VertexWE v = wingededge.AddVertex(pointlist[0].x, pointlist[0].y, pointlist[0].z);
            pointlist.RemoveAt(0);

            FaceWE        currentFace = wingededge.PointInTriangle(v);
            List <FaceWE> newFaces    = wingededge.AddVertex(currentFace, v);
        }

        CheckEdge(wingededge);

        List <FaceWE> faceToRemove = new List <FaceWE>();

        for (int i = wingededge.Faces.Count - 1; i >= 0; i--)
        {
            if (wingededge.IsFaceBorder(wingededge.Faces[i]))
            {
                faceToRemove.Add(wingededge.Faces[i]);
            }
        }

        for (int i = 0; i < faceToRemove.Count; i++)
        {
            wingededge.RemoveFace(faceToRemove[i]);
        }

        List <Vector3> VoronoiVertices = new List <Vector3>();

        for (int i = 0; i < wingededge.Faces.Count; i++)
        {
            List <VertexWE> vertices = wingededge.GetFaceVertices(wingededge.Faces[i]);

            wingededge.Faces[i].FaceCircumcenter = CalculateCircumscribedCircumference(vertices[0], vertices[1], vertices[2]);
        }

        GrahamScan();
        TriangulatorGenerator meshGen = GetComponent <TriangulatorGenerator>();

        meshGen.GenerateMesh(wingededge);
    }