/***************************************************************************** * Visitors ****************************************************************************/ public void VisitTriangles(ITriangleVisitor triVisitor, bool includeFrame) { _visitedKey++; // visited flag is used to record visited edges of triangles // setVisitedAll(false); var edgeStack = new Stack <QuadEdge>(); edgeStack.Push(_startingEdge); var visitedEdges = new HashSet <QuadEdge>(); while (edgeStack.Count > 0) { var edge = edgeStack.Pop(); if (!visitedEdges.Contains(edge)) { var triEdges = FetchTriangleToVisit(edge, edgeStack, includeFrame, visitedEdges); if (triEdges != null) { triVisitor.Visit(triEdges); } } } }
/***************************************************************************** * Visitors ****************************************************************************/ public void VisitTriangles(ITriangleVisitor triVisitor, bool includeFrame) { _visitedKey++; // visited flag is used to record visited edges of triangles // setVisitedAll(false); var edgeStack = new Stack<QuadEdge>(); edgeStack.Push(_startingEdge); var visitedEdges = new HashSetQ(); while (edgeStack.Count > 0) { var edge = edgeStack.Pop(); if (!visitedEdges.Contains(edge)) { QuadEdge[] triEdges = FetchTriangleToVisit(edge, edgeStack, includeFrame, visitedEdges); if (triEdges != null) triVisitor.Visit(triEdges); } } }