Constructor
new Face()
- Source:
Example
// Face implements "next" iterator which enables to iterate edges in for loop:
for (let edge of face) {
console.log(edge.shape.length) // do something
}
// Instead, it is possible to iterate edges as linked list, starting from face.first:
let edge = face.first;
do {
console.log(edge.shape.length); // do something
edge = edge.next;
} while (edge != face.first)
Classes
Members
Methods
append(edge) → {Face}
Append edge after the last edge of the face (and before the first edge).
- Source:
Parameters:
Name | Type | Description |
---|---|---|
edge |
Edge
|
Edge to be appended to the linked list |
Returns:
- Type:
-
Face
area() → {number}
Returns the absolute value of the area of the face
- Source:
Returns:
- Type:
-
number
findEdgeByPoint(pt) → {Edge}
Returns edge which contains given point
- Source:
Parameters:
Name | Type | Description |
---|---|---|
pt |
Point
|
test point |
Returns:
- Type:
-
Edge
insert(newEdge, edgeBefore) → {Face}
Insert edge newEdge into the linked list after the edge edgeBefore
- Source:
Parameters:
Name | Type | Description |
---|---|---|
newEdge |
Edge
|
Edge to be inserted into linked list |
edgeBefore |
Edge
|
Edge to insert newEdge after it |
Returns:
- Type:
-
Face
isSimple(edges) → {boolean}
Returns true if face of the polygon is simple (no self-intersection points found)
NOTE: this method is incomplete because it does not exclude touching points.
Self intersection test should check if polygon change orientation in the test point.
- Source:
Parameters:
Name | Type | Description |
---|---|---|
edges |
PlanarSet
|
reference to polygon edges to provide search index |
Returns:
- Type:
-
boolean
merge_with_next_edge(edge) → {Face}
Merge current edge with the next edge. Given edge will be extended,
next edge after it will be removed. The distortion of the polygon
is on the responsibility of the user of this method
- Source:
Parameters:
Name | Type | Description |
---|---|---|
edge |
Edge
|
edge to be extended |
Returns:
- Type:
-
Face
orientation() → {number}
Return face orientation: one of Flatten.ORIENTATION.CCW, Flatten.ORIENTATION.CW, Flatten.ORIENTATION.NOT_ORIENTABLE
According to Green theorem the area of a closed curve may be calculated as double integral, and the sign of the integral will be defined by the direction of the curve. When the integral ("signed area") will be negative, direction is counterclockwise, when positive - clockwise and when it is zero, polygon is not orientable. See https://mathinsight.org/greens_theorem_find_area
According to Green theorem the area of a closed curve may be calculated as double integral, and the sign of the integral will be defined by the direction of the curve. When the integral ("signed area") will be negative, direction is counterclockwise, when positive - clockwise and when it is zero, polygon is not orientable. See https://mathinsight.org/greens_theorem_find_area
- Source:
Returns:
- Type:
-
number
pointAtLength(length) → {Point}
Get point on face boundary at given length
- Source:
Parameters:
Name | Type | Description |
---|---|---|
length |
number
|
The length along the face boundary |
Returns:
- Type:
-
Point
remove(edge) → {Face}
Remove the given edge from the linked list of the face
- Source:
Parameters:
Name | Type | Description |
---|---|---|
edge |
Edge
|
Edge to be removed |
Returns:
- Type:
-
Face
reverse()
Reverse orientation of the face: first edge become last and vice a verse,
all edges starts and ends swapped, direction of arcs inverted. If face was oriented
clockwise, it becomes counterclockwise and vice versa
- Source:
setArcLength()
Set arc_length property for each of the edges in the face.
Arc_length of the edge it the arc length from the first edge of the face
- Source:
signedArea() → {number}
Returns signed area of the simple face.
Face is simple if it has no self intersections that change its orientation.
Then the area will be positive if the orientation of the face is clockwise,
and negative if orientation is counterclockwise.
It may be zero if polygon is degenerated.
- Source:
Returns:
- Type:
-
number
svg() → {string}
Returns string to be assigned to "d" attribute inside defined "path"
- Source:
Returns:
- Type:
-
string