/// <summary> /// Adds an <see cref="Edge" /> to the subgraph. /// The associated <see cref="DirectedEdge" />s and <see cref="Node" />s are also added. /// </summary> /// <param name="e">The <see cref="Edge" /> to add.</param> public virtual void Add(Edge e) { if (Edges.Contains(e)) return; Edges.Add(e); DirEdges.Add(e.GetDirEdge(0)); DirEdges.Add(e.GetDirEdge(1)); NodeMap.Add(e.GetDirEdge(0).FromNode); NodeMap.Add(e.GetDirEdge(1).FromNode); }
/// <summary> /// Tests whether an <see cref="Edge" /> is contained in this subgraph. /// </summary> /// <param name="e">The <see cref="Edge" /> to test.</param> /// <returns><c>true</c> if the <see cref="Edge" /> is contained in this subgraph.</returns> public virtual bool Contains(Edge e) { return Edges.Contains(e); }
/// <summary> /// Returns the zero-based index of the given Edge, after sorting in ascending order /// by angle with the positive x-axis. /// </summary> /// <param name="edge"></param> /// <returns></returns> public virtual int GetIndex(Edge edge) { SortEdges(); for (int i = 0; i < _outEdges.Count; i++) { DirectedEdge de = (DirectedEdge)_outEdges[i]; if (de.Edge == edge) return i; } return -1; }
/// <summary> /// Returns the zero-based index of the given Edge, after sorting in ascending order /// by angle with the positive x-axis. /// </summary> /// <param name="edge"></param> /// <returns></returns> public virtual int GetIndex(Edge edge) { return DeStar.GetIndex(edge); }
/// <summary> /// Removes an Edge and its associated DirectedEdges from their from-Nodes and /// from this PlanarGraph. Notice: This method does not remove the Nodes associated /// with the Edge, even if the removal of the Edge reduces the degree of a /// Node to zero. /// </summary> /// <param name="edge"></param> public virtual void Remove(Edge edge) { Remove(edge.GetDirEdge(0)); Remove(edge.GetDirEdge(1)); _edges.Remove(edge); edge.Remove(); }
/// <summary> /// Adds the Edge and its DirectedEdges with this PlanarGraph. /// Assumes that the Edge has already been created with its associated DirectEdges. /// Only subclasses can add Edges, to ensure the edges added are of the right class. /// </summary> /// <param name="edge"></param> protected virtual void Add(Edge edge) { _edges.Add(edge); Add(edge.GetDirEdge(0)); Add(edge.GetDirEdge(1)); }
/// <summary> /// Adds the Edge and its DirectedEdges with this PlanarGraph. /// Assumes that the Edge has already been created with its associated DirectEdges. /// Only subclasses can add Edges, to ensure the edges added are of the right class. /// </summary> /// <param name="edge"></param> protected virtual void Add(Edge edge) { _edges.Add(edge); Add(edge.GetDirEdge(0)); Add(edge.GetDirEdge(1)); }