/// <summary> /// For each edge in stack /// (which must originate at a node) /// extracts the line it initiates. /// </summary> private void BuildLines() { while (_nodeEdgeStack.Count > 0) { HalfEdge e = _nodeEdgeStack.Pop(); if (MarkHalfEdge.IsMarked(e)) { continue; } BuildLine(e); } }
/// <summary> /// Adds edges around this node to the stack. /// </summary> /// <param name="node"></param> private void StackEdges(HalfEdge node) { HalfEdge e = node; do { if (!MarkHalfEdge.IsMarked(e)) { _nodeEdgeStack.Push(e); } e = e.ONext; } while (e != node); }
private void ComputeResult() { IEnumerable <HalfEdge> edges = _graph.GetVertexEdges(); foreach (HalfEdge e in edges) { if (MarkHalfEdge.IsMarked(e)) { continue; } Process(e); } _result = _factory.BuildGeometry(_lines); }