editor › Globals › PolygonReconstructor
Class: PolygonReconstructor
Given a triangle mesh, this class reconstructs polygons and their holes. Produces holes touching the outlines (if applicable). Those need to be converted to outlines touching itself when used in the editor.
Hierarchy
- PolygonReconstructor
Index
Constructors
Properties
Methods
- _categorizeOutlinesAndHoles
- _createPolygons
- _generatePointOutlineMap
- _holePointsInsideOrOnOutline
- _reconstructOutlines
- getTriangleMesh
- keepWithLabel
- reconstructPolygons
- removeWithLabel
Constructors
constructor
+ new PolygonReconstructor(triangleMesh: TriangleMesh2D, convertHolesTouchingOutline: boolean): PolygonReconstructor
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:28
Parameters:
| Name | Type | Default |
|---|---|---|
triangleMesh |
TriangleMesh2D | - |
convertHolesTouchingOutline |
boolean | true |
Returns: PolygonReconstructor
Properties
Private convertHolesTouchingOutline
• convertHolesTouchingOutline: boolean
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:28
Private Readonly distanceEpsilon
• distanceEpsilon: number = Config.get("approximateSolutions.polygonClippingDistanceEpsilon") as number
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:27
Private Readonly triangleMesh
• triangleMesh: TriangleMesh2D
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:26
Methods
Private _categorizeOutlinesAndHoles
▸ _categorizeOutlinesAndHoles(outlineArray: Vector3[][]): object[]
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:182
Parameters:
| Name | Type |
|---|---|
outlineArray |
Vector3[][] |
Returns: object[]
Private _createPolygons
▸ _createPolygons(outlinesAndHoles: Array‹object›): Polygon[]
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:250
Parameters:
| Name | Type |
|---|---|
outlinesAndHoles |
Array‹object› |
Returns: Polygon[]
Private _generatePointOutlineMap
▸ _generatePointOutlineMap(triangleMesh: TriangleMesh2D): Map‹Vector3, Vector3[]›
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:153
Parameters:
| Name | Type |
|---|---|
triangleMesh |
TriangleMesh2D |
Returns: Map‹Vector3, Vector3[]›
Private _holePointsInsideOrOnOutline
▸ _holePointsInsideOrOnOutline(holeCandidate: ICycle, currentOutline: ICycle): boolean
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:235
The hole might touch the outline in one or more points. Comparision with === must be true, it's not sufficient that they are close together.
Parameters:
| Name | Type | Description |
|---|---|---|
holeCandidate |
ICycle | - |
currentOutline |
ICycle | - |
Returns: boolean
Private _reconstructOutlines
▸ _reconstructOutlines(pointOutlineMap: Map‹Vector3, Vector3[]›): VectorCycle3D[]
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:89
Parameters:
| Name | Type |
|---|---|
pointOutlineMap |
Map‹Vector3, Vector3[]› |
Returns: VectorCycle3D[]
getTriangleMesh
▸ getTriangleMesh(): TriangleMesh2D
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:35
Returns: TriangleMesh2D
keepWithLabel
▸ keepWithLabel(label: string): void
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:57
Only keeps triangles in the dataset that have the given label
Parameters:
| Name | Type | Description |
|---|---|---|
label |
string | the label to be looked for |
Returns: void
reconstructPolygons
▸ reconstructPolygons(): Polygon[]
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:76
Reconstructs the triangle array into a list of polygons General idea: 0. Polygon outlines go counter-clockwise, so outlines go into left direction seen from the inside of each triangle. 1. An outline part is a side of a triangle without neighbor 2. for each point, collect leaving outline parts of all adjacent triangles 3. Pick a random outline part, walk along it, always pick leftmost next part 4. Do until all outline parts have been considered
Returns: Polygon[]
removeWithLabel
▸ removeWithLabel(label: string): void
Defined in src/util/polygon/triangulatingClipper/PolygonReconstructor.ts:44
Removes all triangles from the dataset that have the given label. Modifies the underlying mesh.
Parameters:
| Name | Type | Description |
|---|---|---|
label |
string | the label to be looked for |
Returns: void