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); }
public bool SharesEdgeWith(VirtualTriangle triangle) { int sharedVertices = Vertices.Where(o => triangle.Vertices.Contains(o)).Count(); return(sharedVertices == 2); }