/// <summary> /// Detaches all outgoing halfedges from the given vertex /// </summary> /// <param name="vertex"></param> public void DetachVertex(TV vertex) { Vertices.ContainsCheck(vertex); vertex.UnusedCheck(); DetachVertexImpl(vertex); }
/// <summary> /// /// </summary> /// <param name="vertex"></param> public void RemoveVertex(TV vertex) { Vertices.ContainsCheck(vertex); vertex.UnusedCheck(); RemoveVertexImpl(vertex); }
/// <summary> /// Transfers halfedges from the first to the second given vertex. /// The first vertex is flagged as unused. /// </summary> /// <param name="v0"></param> /// <param name="v1"></param> public void MergeVertices(TV v0, TV v1) { Vertices.ContainsCheck(v0); Vertices.ContainsCheck(v1); v0.UnusedCheck(); v1.UnusedCheck(); MergeVerticesImpl(v0, v1); }
/// <summary> /// Transfers halfedges leaving each vertex to the first vertex in the collection. /// All vertices except the first are flagged as unused. /// </summary> /// <param name="vertices"></param> public void MergeVertices(IEnumerable <TV> vertices) { var v0 = vertices.First(); Vertices.ContainsCheck(v0); v0.UnusedCheck(); foreach (var v1 in vertices.Skip(1)) { Vertices.ContainsCheck(v1); v1.UnusedCheck(); MergeVerticesImpl(v1, v0); } }
/// <summary> /// Adds a new edge between the given nodes. /// Returns the first halfedge in the pair. /// </summary> /// <param name="v0"></param> /// <param name="v1"></param> /// <returns></returns> public TE AddEdge(TV v0, TV v1) { Vertices.ContainsCheck(v0); Vertices.ContainsCheck(v1); return(AddEdgeImpl(v0, v1)); }