Skip to content

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

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