private DelaunayTreeNode <T> FindNode(EuclideanGraphTriangle <T> triangle) { foreach (DelaunayTreeNode <T> node in Nodes) { if (node.Triangle == triangle) { return(node); } } return(null); }
public void Subdivide(EuclideanGraphTriangle <T> parent, EuclideanGraphTriangle <T>[] children) { DelaunayTreeNode <T> parentNode = FindNode(parent); foreach (EuclideanGraphTriangle <T> child in children) { DelaunayTreeNode <T> newNode = new DelaunayTreeNode <T>(child); parentNode.Children.Add(newNode); Nodes.Add(newNode); } parentNode.Old = true; }
public void GetTrianglesOnEdge(EuclideanGraphNode <T>[] edge, ref EuclideanGraphTriangle <T> triangle1, ref EuclideanGraphTriangle <T> triangle2) { bool foundFirst = false; foreach (DelaunayTreeNode <T> node in Nodes) { if (!node.Old && node.Triangle.HasEdge(edge)) { if (!foundFirst) { triangle1 = node.Triangle; foundFirst = true; } else { triangle2 = node.Triangle; } } } }
public DelaunayTreeNode(EuclideanGraphTriangle <T> triangle) { Triangle = triangle; Children = new List <DelaunayTreeNode <T> >(); Old = false; }