void Remove(GraphTriangle face) { // Break adjacent edge relationships and // unregister the face. foreach (var edge in face.edges) { if (edge.adj != null) { adjEdges.Remove(edge); adjEdges.Remove(edge.adj); edge.adj.adj = null; edge.adj = null; } } faces.Remove(face); }
void Add(GraphTriangle tri) { // Register the face and look up if we made any // new adjacent edge relationships. faces.Add(tri); foreach (var face in faces) { if (face.Plane.Approx(tri.Plane)) { foreach (var ei in face.edges) { foreach (var ej in tri.edges) { if (ei.TryJoin(ej)) { adjEdges.Add(ei); adjEdges.Add(ej); } } } } } }
public GraphEdge(GraphTriangle aFace, GraphVertex a0, GraphVertex a1, GraphVertex a2) { face = aFace; v0 = a0; v1 = a1; opposingVertex = a2; }