editor › Globals › SurfaceTessellation
Class: SurfaceTessellation
This class manages the position of all the tessellation lines on one surface. The position and the rotation of the cutting lines are given by a PointOnEdgeAnchor, which is laying exactly on the edge of two cutlines.
Hierarchy
- SurfaceTessellation
Index
Properties
Methods
- _generatePlaneObjects
- _getSurfaceAnchor
- _onEdgeChange
- _onEdgeTransformsChange
- _pointNearCenter
- _refindEdgeWithSurface
- _setSurfaceAnchor
- _updateSavedEdgeSignatures
- clone
- cutPlate
- destroy
- getAnchor
- getApproximatedSurfaceIntersectionLines
- getAreCutlinesOnlyInOneDirection
- getAssemblyCutPlanes
- getLastTranslation
- getMeshCutPlanes
- getMovedByUser
- getSurfaceIntersectionpoints
- getTessellationSize
- getTileSize
- jump
- moveCutlinesToBeInOnlyOneDirection
- setAnchor
- setMovedByUser
- setTileSize
Properties
Private anchor
• anchor: PointOnEdgeAnchor
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:31
This uses two anchors to define it's position. As long as the PointOnEdgeAnchor stays valid, this is the source of truth. When it get's invalid, which can happen (f.e. with some AddBoxel-Operations), the surfaceAnchor and the signatureInformation are used, to find a new edge for the tessellation, for which then the PointOnEdgeAnchor is newly initialized.
Private lastAssemblyPosition
• lastAssemblyPosition: Vector3
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:40
Private lastTranslation
• lastTranslation: Vector3 = new Vector3()
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:41
Private movedByUser
• movedByUser: boolean = false
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:39
Private signatureInformation
• signatureInformation: ISavedEdgeObject = undefined
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:33
Private surfaceAnchor
• surfaceAnchor: MeshSurfaceAnchor
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:32
Private tileSize
• tileSize: Vector2
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:38
TessellationSize in mm
Methods
Private _generatePlaneObjects
▸ _generatePlaneObjects(): Array‹object›
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:352
Returns: Array‹object›
Private _getSurfaceAnchor
▸ _getSurfaceAnchor(): MeshSurfaceAnchor
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:99
For serialization purpose
Returns: MeshSurfaceAnchor
Private _onEdgeChange
▸ _onEdgeChange(event: any): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:303
Parameters:
| Name | Type |
|---|---|
event |
any |
Returns: void
Private _onEdgeTransformsChange
▸ _onEdgeTransformsChange(): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:344
Returns: void
Private _pointNearCenter
▸ _pointNearCenter(position: Vector3, upVector: Vector3, rightVector: Vector3, center: Vector3): Vector3
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:397
Parameters:
| Name | Type |
|---|---|
position |
Vector3 |
upVector |
Vector3 |
rightVector |
Vector3 |
center |
Vector3 |
Returns: Vector3
Private _refindEdgeWithSurface
▸ _refindEdgeWithSurface(): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:313
Returns: void
Private _setSurfaceAnchor
▸ _setSurfaceAnchor(anchor: MeshSurfaceAnchor): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:90
For serialization purpose
Parameters:
| Name | Type | Description |
|---|---|---|
anchor |
MeshSurfaceAnchor | - |
Returns: void
Private _updateSavedEdgeSignatures
▸ _updateSavedEdgeSignatures(): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:331
Returns: void
clone
▸ clone(): SurfaceTessellation
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:47
Returns: SurfaceTessellation
cutPlate
▸ cutPlate(originalPlate: Plate): Promise‹void›
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:135
This will split the plate accordingly to the SurfaceTessellation
Parameters:
| Name | Type | Description |
|---|---|---|
originalPlate |
Plate | The plate supposed to get cut Todo: This might be better to move into a SurfaceTessellationRealizer, as the SurfaceTessellation should more be an Todo: abstract structure keeping only the data. |
Returns: Promise‹void›
destroy
▸ destroy(): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:73
Returns: void
getAnchor
▸ getAnchor(): PointOnEdgeAnchor
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:81
Returns: PointOnEdgeAnchor
getApproximatedSurfaceIntersectionLines
▸ getApproximatedSurfaceIntersectionLines(): Line3[]
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:202
Return approximated lines we will later cut this surfaceTessellation with. Approximated means that we don't care about holes, or concave inlets in the shape. By convention, the start of the line will be the vector sorted after x, y, z.
Returns: Line3[]
getAreCutlinesOnlyInOneDirection
▸ getAreCutlinesOnlyInOneDirection(): boolean
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:291
Returns true, if in the current position of the tessellation all the cutLines are having the same direction
Returns: boolean
getAssemblyCutPlanes
▸ getAssemblyCutPlanes(): Plane[]
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:156
Returns: Plane[]
getLastTranslation
▸ getLastTranslation(): Vector3
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:282
in assembly space
Returns: Vector3
getMeshCutPlanes
▸ getMeshCutPlanes(): Plane[]
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:165
Returns: Plane[]
getMovedByUser
▸ getMovedByUser(): boolean
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:69
Returns: boolean
getSurfaceIntersectionpoints
▸ getSurfaceIntersectionpoints(): Vector3[]
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:179
Returns the intersection points in mesh-local space
Returns: Vector3[]
getTessellationSize
▸ getTessellationSize(): Vector2
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:60
Returns: Vector2
getTileSize
▸ getTileSize(): Vector2‹›
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:193
Returns: Vector2‹›
jump
▸ jump(width: number, direction?: Vector3): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:225
Parameters:
| Name | Type |
|---|---|
width |
number |
direction? |
Vector3 |
Returns: void
moveCutlinesToBeInOnlyOneDirection
▸ moveCutlinesToBeInOnlyOneDirection(tessellationSize: Vector2): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:245
Tries to find a position for the tessellation, that only has cutLines in one direction. When the object is not bigger than the long edge of the tessellationSize, this is the desired tessellation, as cutLines in 2 directions are too many then
Parameters:
| Name | Type | Description |
|---|---|---|
tessellationSize |
Vector2 | - |
Returns: void
setAnchor
▸ setAnchor(positionAnchor: PointOnEdgeAnchor): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:103
Parameters:
| Name | Type |
|---|---|
positionAnchor |
PointOnEdgeAnchor |
Returns: void
setMovedByUser
▸ setMovedByUser(moved: boolean): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:65
Parameters:
| Name | Type |
|---|---|
moved |
boolean |
Returns: void
setTileSize
▸ setTileSize(size: Vector2): void
Defined in src/modules/kyub.core.tessellate/src/SurfaceTessellation.ts:43
Parameters:
| Name | Type |
|---|---|
size |
Vector2 |
Returns: void