new GluHalfEdge(opt_nextEdgeopt)
The fundamental data structure is the "half-edge". Two half-edges
go together to make an edge, but they point in opposite directions.
Each half-edge has a pointer to its mate (the "symmetric" half-edge sym),
its origin vertex (org), the face on its left side (lFace), and the
adjacent half-edges in the CCW direction around the origin vertex
(oNext) and around the left face (lNext). There is also a "next"
pointer for the global edge list (see below).
The notation used for mesh navigation:
sym = the mate of a half-edge (same edge, but opposite direction)
oNext = edge CCW around origin vertex (keep same origin)
dNext = edge CCW around destination vertex (keep same dest)
lNext = edge CCW around left face (dest becomes new origin)
rNext = edge CCW around right face (origin becomes new dest)
"prev" means to substitute CW for CCW in the definitions above.
The circular edge list is special; since half-edges always occur
in pairs (e and e.sym), each half-edge stores a pointer in only
one direction. Starting at eHead and following the e.next pointers
will visit each *edge* once (ie. e or e.sym, but not both).
e.sym stores a pointer in the opposite direction, thus it is
always true that e.sym.next.sym.next === e.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
opt_nextEdge |
libtess.GluHalfEdge |
<optional> |
- Source:
Members
activeRegion :libtess.ActiveRegion
a region with this upper edge (see sweep.js)
Type:
- Source:
lFace :libtess.GluFace
left face
Type:
- Source:
lNext :libtess.GluHalfEdge
next edge CCW around left face
Type:
- Source:
(non-null) next :libtess.GluHalfEdge
doubly-linked list (prev==sym->next)
Type:
- Source:
oNext :libtess.GluHalfEdge
next edge CCW around origin
Type:
- Source:
org :libtess.GluVertex
origin vertex (oVertex too long)
Type:
- Source:
sym :libtess.GluHalfEdge
same edge, opposite direction
Type:
- Source:
winding :number
change in winding number when crossing from the right face to the left face
Type:
- number
- Source:
Methods
dNext() → {libtess.GluHalfEdge}
[dNext description]
- Source:
Returns:
[description].
- Type
- libtess.GluHalfEdge
dPrev() → {libtess.GluHalfEdge}
The edge clockwise around destination vertex (keep same dest).
- Source:
Returns:
- Type
- libtess.GluHalfEdge
dst() → {libtess.GluVertex}
[dst description]
- Source:
Returns:
[description].
- Type
- libtess.GluVertex
lPrev() → {libtess.GluHalfEdge}
[lPrev description]
- Source:
Returns:
[description].
- Type
- libtess.GluHalfEdge
oPrev() → {libtess.GluHalfEdge}
[oPrev description]
- Source:
Returns:
[description].
- Type
- libtess.GluHalfEdge
rFace() → {libtess.GluFace}
[rFace description]
- Source:
Returns:
[description].
- Type
- libtess.GluFace
rNext() → {libtess.GluHalfEdge}
The edge CCW around the right face (origin of this becomes new dest).
- Source:
Returns:
- Type
- libtess.GluHalfEdge
rPrev() → {libtess.GluHalfEdge}
[rPrev description]
- Source:
Returns:
[description].
- Type
- libtess.GluHalfEdge