Пример #1
0
    public HashSet <VirtualTriangle> BowyerWatson()
    {
        HashSet <VirtualTriangle> res = new HashSet <VirtualTriangle>(Selvage);

        foreach (var p in ListOfPoints)
        {
            var badTriangles = FindBadTriangles(p, res);
            var polygon      = FindHoleBoundaries(badTriangles);

            foreach (var tr in badTriangles)
            {
                foreach (var v in tr.Vertices)
                {
                    v.AdjacentTriangles.Remove(tr);
                }
            }
            res.RemoveWhere(o => badTriangles.Contains(o));

            foreach (var ed in polygon.Where(possibleEdge => possibleEdge.Point1 != p && possibleEdge.Point2 != p))
            {
                var Triangle = new VirtualTriangle(p, ed.Point1, ed.Point2, Prefab);
                res.Add(Triangle);
            }
        }
        return(res);
    }
Пример #2
0
    public bool SharesEdgeWith(VirtualTriangle triangle)
    {
        int sharedVertices = Vertices.Where(o => triangle.Vertices.Contains(o)).Count();

        return(sharedVertices == 2);
    }