private bool ContainsVert(Site face, DualSite2d target) { if (face == null || face.Vertices == null) { return(false); } for (int i = 0; i < face.Vertices.Length; i++) { if (face.Vertices[i] == target) { return(true); } } return(false); }
private List <Site> TouchingFaces(DualSite2d site, Site startingFace) { List <Site> list = new List <Site>(); Stack <Site> stack = new Stack <Site>(); stack.Push(startingFace); while (stack.Count > 0) { Site site2 = stack.Pop(); if (ContainsVert(site2, site) && !list.Contains(site2)) { list.Add(site2); for (int i = 0; i < site2.Adjacency.Length; i++) { if (ContainsVert(site2.Adjacency[i], site)) { stack.Push(site2.Adjacency[i]); } } } } return(list); }