Skip to content

editorGlobalsPolygonReconstructor

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