Lines Matching refs:edge

92     // Stages (4) and (5) use an active edge list -- a list of all edges for which the
101 // not exact and may violate the mesh topology or active edge list ordering. We
105 // A) Intersections may cause a shortened edge to no longer be ordered with respect to its
108 // B) Intersections may cause an edge to violate the left-to-right ordering of the
109 // active edge list. This is handled by detecting potential violations and rewinding
110 // the active edge list to the vertex before they occur (rewind() during merging,
115 // currently uses a linked list for the active edge list, rather than a 2-3 tree as the
120 // are O(1), since we know the adjacent edge in the active edge list based on the topology.
144 void setTop(Edge* edge, Vertex* v, EdgeList* activeEdges, Vertex** current,
146 void setBottom(Edge* edge, Vertex* v, EdgeList* activeEdges, Vertex** current,
148 void mergeEdgesAbove(Edge* edge, Edge* other, EdgeList* activeEdges, Vertex** current,
150 void mergeEdgesBelow(Edge* edge, Edge* other, EdgeList* activeEdges, Vertex** current,
156 void mergeCollinearEdges(Edge* edge, EdgeList* activeEdges, Vertex** current,
158 bool splitEdge(Edge* edge, Vertex* v, EdgeList* activeEdges, Vertex** current,
192 // The breadcrumb triangles track all the edge splits that led from the original inner polygon
193 // edges to the final triangulation. Every time an edge splits, we emit a razor-thin breadcrumb
194 // triangle consisting of the edge's original endpoints and the split point. (We also add
257 * circularly-linked list of Vertices for each contour. After edge construction, the same Vertices
286 Edge* fLeftEnclosingEdge; // Nearest edge in the AEL left of this vertex.
287 Edge* fRightEnclosingEdge; // Nearest edge in the AEL right of this vertex.
362 * "edge below" a vertex as well as for the active edge list is handled by isLeftOf()/isRightOf().
400 int fWinding; // 1 == edge goes downward; -1 = edge goes upward.
404 Edge* fLeft; // The linked list of edges in the active edge list.
410 Poly* fLeftPoly; // The Poly to the left of this edge, if any.
411 Poly* fRightPoly; // The Poly to the right of this edge, if any.
439 void insert(Edge* edge, Edge* prev, Edge* next);
440 void insert(Edge* edge, Edge* prev);
442 void remove(Edge* edge);
454 bool contains(Edge* edge) const { return edge->fLeft || edge->fRight || fHead == edge; }
458 MonotonePoly(Edge* edge, Side side, int winding)
465 this->addEdge(edge);