public class PlanarTriSchnyderWood extends EdgeOrientation
Modifier and Type | Field and Description |
---|---|
private boolean[] |
isChord |
private boolean[] |
isOnCutBorder |
private DLinkedList<Halfedge<Point_>> |
outerCycle |
Halfedge<Point_> |
rootEdge |
Vertex<Point_> |
v0 |
Vertex<Point_> |
v1 |
Vertex<Point_> |
v2 |
edgeColor, isWellOriented, polyhedron
Constructor and Description |
---|
PlanarTriSchnyderWood(Polyhedron_3<Point_> polyhedron,
Halfedge<Point_> rootEdge)
Construct the cut-border starting from the root edge (v0, v1)
At the beginning the cut-border contains edges (v2, v0) and (v1, v2)
Edges are ccw oriented around faces
|
Modifier and Type | Method and Description |
---|---|
void |
addToCutBorder(Halfedge<Point_> e,
DListNode<Halfedge<Point_>> node)
Add a half-edge to the cut-border, at a given position (in the cut-border)
Update all concerned information (colors, existent chords, boundary vertices, ...)
|
Halfedge<Point_> |
getFirstIncomingRedEdge(Vertex<Point_> v)
Return the first (half)edge oriented toward vertex v and having color 0 (red)
Edges (v0, v1) and (v2, v0) are assumed to be red colored
Return null, if such an edge does not exist
|
Halfedge<Point_> |
getNextIncomingRedEdge(Halfedge<Point_> e)
Return the next edge of color 0, after edge e (turning in ccw direction), oriented toward its target vertex (denoted by v).
|
int[] |
getOriginalVertexOrdering()
Return an array of indices representing the original vertex ordering
|
private boolean |
hasIncidentChords(DListNode<Halfedge<Point_>> node)
Check whether a vertex has incident chords
In that case it cannot be removed from the cut-border
|
java.lang.String[] |
originalVertexOrderingToString() |
void |
performTraversal()
Perform all steps of the vertex conquest, computing the Schnyder wood
|
java.lang.String |
SchnyderWoodToString()
Return a string representing the Schnyder wood
|
private void |
setIngoingEdge2(Halfedge<Point_> e) |
private void |
setOutgoingEdge0(Halfedge<Point_> e) |
private void |
setOutgoingEdge1(Halfedge<Point_> e) |
void |
setToCutBorder(Halfedge<Point_> e)
Add a half-edge to the cut-border, at a given position (in the cut-border)
Update all concerned information (colors, existent chords, boundary vertices, ...)
|
java.lang.String |
toString() |
private DListNode<Halfedge<Point_>> |
triangleRemoval(DListNode<Halfedge<Point_>> node)
It removes a vertex incident to one triangle from the boundary cycle
|
DListNode<Halfedge<Point_>> |
vertexRemoval(DListNode<Halfedge<Point_>> node)
It removes a vertex from the cut-border (vertex conquest)
It updates the cut-border, assigning color and orientation to edges
|
getEdgeColoration, getEdgeColors, getEdgeOrientation, orientationToString
private DLinkedList<Halfedge<Point_>> outerCycle
private boolean[] isChord
private boolean[] isOnCutBorder
public PlanarTriSchnyderWood(Polyhedron_3<Point_> polyhedron, Halfedge<Point_> rootEdge)
public DListNode<Halfedge<Point_>> vertexRemoval(DListNode<Halfedge<Point_>> node)
node
- The node in the list storing the given half-edge (whose vertex will be removed)private DListNode<Halfedge<Point_>> triangleRemoval(DListNode<Halfedge<Point_>> node)
node
- the list node storing the halfedge whose vertex will be removedprivate boolean hasIncidentChords(DListNode<Halfedge<Point_>> node)
public void addToCutBorder(Halfedge<Point_> e, DListNode<Halfedge<Point_>> node)
public void setToCutBorder(Halfedge<Point_> e)
public void performTraversal()
public int[] getOriginalVertexOrdering()
public Halfedge<Point_> getFirstIncomingRedEdge(Vertex<Point_> v)
public Halfedge<Point_> getNextIncomingRedEdge(Halfedge<Point_> e)
public java.lang.String[] originalVertexOrderingToString()
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String SchnyderWoodToString()