editor › Globals › BendRenderer
Class: BendRenderer
This class helps with rendering bends. It is embedded into the PlatePipeline and modifies the visual representation at different stages in the pipeline.
Hierarchy
- BendRenderer
Index
Constructors
Properties
- curveOffsetFactor
- dashLength
- distanceBetweenCutLines
- elongationFactors
- fabricationConfig
- gapLength
- isBent
- plate
- rasterizedOutline
- sectionsJointWithCurves
- stretchFactor
- subdivisions
- unjoinedSections
Methods
- _getCurveLengths
- _getElongationFactors
- _getInterlacedCutlines
- _getNumberOfCutLines
- _getSteps
- _getSubdivisions
- _isCutLineCuttingPlateBorder
- _mapElongatedPositionToPointParameters
- _mapPointParametersTo3DPosition
- _mapPositionInQuadToUnitQuad
- _subdivideLines
- _subdivideLinestrip
- adjustRasterizedOutline
- bendSurfaceVertices
- getCutLines
- getFingerJointConstraints
- getFlexCutlines
- getIsBentPlate
- getSubdivisions
- setPlate
- subdividePolygon
Constructors
constructor
+ new BendRenderer(plate?: Plate, fabricationConfig?: FabricationConfig): BendRenderer
Defined in src/model/visualization/Plates/BendRenderer.ts:88
Parameters:
| Name | Type |
|---|---|
plate? |
Plate |
fabricationConfig? |
FabricationConfig |
Returns: BendRenderer
Properties
Private Readonly curveOffsetFactor
• curveOffsetFactor: number = Config.get("modelLimits.curveOffsetFactor", 0.5)
Defined in src/model/visualization/Plates/BendRenderer.ts:88
Private Readonly dashLength
• dashLength: number = 40
Defined in src/model/visualization/Plates/BendRenderer.ts:86
Private Readonly distanceBetweenCutLines
• distanceBetweenCutLines: number = Config.get("modelLimits.distanceBetweenCutLines", 1.5)
Defined in src/model/visualization/Plates/BendRenderer.ts:84
Private elongationFactors
• elongationFactors: [IElongationInformation, IElongationInformation]
Defined in src/model/visualization/Plates/BendRenderer.ts:79
Private Readonly fabricationConfig
• fabricationConfig: FabricationConfig
Defined in src/model/visualization/Plates/BendRenderer.ts:82
Private Readonly gapLength
• gapLength: number = 2
Defined in src/model/visualization/Plates/BendRenderer.ts:85
Private isBent
• isBent: boolean
Defined in src/model/visualization/Plates/BendRenderer.ts:75
Private plate
• plate: Plate
Defined in src/model/visualization/Plates/BendRenderer.ts:81
Private rasterizedOutline
• rasterizedOutline: RasterizedOutline
Defined in src/model/visualization/Plates/BendRenderer.ts:76
Private sectionsJointWithCurves
• sectionsJointWithCurves: OutlineSection[]
Defined in src/model/visualization/Plates/BendRenderer.ts:77
Private Readonly stretchFactor
• stretchFactor: number = Config.get("modelLimits.stretchFactor", 0.02)
Defined in src/model/visualization/Plates/BendRenderer.ts:87
Private subdivisions
• subdivisions: ArrayLine2[]
Defined in src/model/visualization/Plates/BendRenderer.ts:80
Private unjoinedSections
• unjoinedSections: OutlineSection[]
Defined in src/model/visualization/Plates/BendRenderer.ts:78
Methods
Private _getCurveLengths
▸ _getCurveLengths(outlineSpline: OutlineSpline): ICurveLengthInformation
Defined in src/model/visualization/Plates/BendRenderer.ts:420
Calculates the real curve lengths (used in practice) given the exact spline curve.
Parameters:
| Name | Type | Description |
|---|---|---|
outlineSpline |
OutlineSpline | Exact spline curve (outside) |
Returns: ICurveLengthInformation
Private _getElongationFactors
▸ _getElongationFactors(plate: Plate): [IElongationInformation, IElongationInformation]
Defined in src/model/visualization/Plates/BendRenderer.ts:382
Parameters:
| Name | Type |
|---|---|
plate |
Plate |
Returns: [IElongationInformation, IElongationInformation]
Private _getInterlacedCutlines
▸ _getInterlacedCutlines(getOffsets: function, interlace: number, solid: boolean): Line3[][]
Defined in src/model/visualization/Plates/BendRenderer.ts:331
Parameters:
▪ getOffsets: function
Function returning distance after start / before end of subdivision at which cutline should start. If null is returned, the line will not be cut.
▸ (line: Line3, lineCutsBorder: boolean): [number, number] | null
Parameters:
| Name | Type |
|---|---|
line |
Line3 |
lineCutsBorder |
boolean |
▪ interlace: number
Number of groups into which the cutlines should be partitioned in an interlaced manner to reduce burning.
▪Default value solid: boolean= false
If true, draws a single line, otherwise a dashed one.
Returns: Line3[][]
Private _getNumberOfCutLines
▸ _getNumberOfCutLines(curvedLength: number): number
Defined in src/model/visualization/Plates/BendRenderer.ts:521
Parameters:
| Name | Type |
|---|---|
curvedLength |
number |
Returns: number
Private _getSteps
▸ _getSteps(numberOfSteps: number, offset: number): number[]
Defined in src/model/visualization/Plates/BendRenderer.ts:506
Divides [0,1] into numberOfSteps + 2 many steps. The first step is located at offset, the last one at 1-offset. Create two extra steps. One very close to the beginning and one very close to the end. This is used to circumvent rendering errors later on. These extra steps are ignored by getCutLines.
Parameters:
| Name | Type | Default |
|---|---|---|
numberOfSteps |
number | - |
offset |
number | 0 |
Returns: number[]
Private _getSubdivisions
▸ _getSubdivisions(plate: Plate, factors: [IElongationInformation, IElongationInformation]): ArrayLine2[]
Defined in src/model/visualization/Plates/BendRenderer.ts:451
Parameters:
| Name | Type |
|---|---|
plate |
Plate |
factors |
[IElongationInformation, IElongationInformation] |
Returns: ArrayLine2[]
Private _isCutLineCuttingPlateBorder
▸ _isCutLineCuttingPlateBorder(index: number): boolean
Defined in src/model/visualization/Plates/BendRenderer.ts:378
Parameters:
| Name | Type |
|---|---|
index |
number |
Returns: boolean
Private _mapElongatedPositionToPointParameters
▸ _mapElongatedPositionToPointParameters(elongatedPoint: ArrayPoint3, normalizationQuaternion: Quaternion, target: Vector3): Vector3
Defined in src/model/visualization/Plates/BendRenderer.ts:604
Parameters:
| Name | Type |
|---|---|
elongatedPoint |
ArrayPoint3 |
normalizationQuaternion |
Quaternion |
target |
Vector3 |
Returns: Vector3
Private _mapPointParametersTo3DPosition
▸ _mapPointParametersTo3DPosition(point: Vector3, target: ArrayPoint3): ArrayPoint3
Defined in src/model/visualization/Plates/BendRenderer.ts:651
Parameters:
| Name | Type | Default |
|---|---|---|
point |
Vector3 | - |
target |
ArrayPoint3 | [0, 0, 0] |
Returns: ArrayPoint3
Private _mapPositionInQuadToUnitQuad
▸ _mapPositionInQuadToUnitQuad(position: ReadonlyVector3, quad1: ReadonlyVector3, quad2: ReadonlyVector3, quad3: ReadonlyVector3, quad4: ReadonlyVector3, target: Vector3): Vector3
Defined in src/model/visualization/Plates/BendRenderer.ts:690
Maps positions from any quadrilateral to the unit square following the method from here https://www.particleincell.com/2012/quad-interpolation/
Parameters:
| Name | Type | Description |
|---|---|---|
position |
ReadonlyVector3 | - |
quad1 |
ReadonlyVector3 | - |
quad2 |
ReadonlyVector3 | - |
quad3 |
ReadonlyVector3 | - |
quad4 |
ReadonlyVector3 | - |
target |
Vector3 | Vector the result will be written to. Will be returned. |
Returns: Vector3
Private _subdivideLines
▸ _subdivideLines(lines: ArrayLine2[], subdivisions: ArrayLine2[], target: ArrayLine2[]): ArrayLine2[]
Defined in src/model/visualization/Plates/BendRenderer.ts:544
Parameters:
| Name | Type | Default |
|---|---|---|
lines |
ArrayLine2[] | - |
subdivisions |
ArrayLine2[] | - |
target |
ArrayLine2[] | [] |
Returns: ArrayLine2[]
Private _subdivideLinestrip
▸ _subdivideLinestrip(linestrip: ArrayPoint2[], subdivisions: ArrayLine2[]): ArrayPoint2[]
Defined in src/model/visualization/Plates/BendRenderer.ts:525
Parameters:
| Name | Type |
|---|---|
linestrip |
ArrayPoint2[] |
subdivisions |
ArrayLine2[] |
Returns: ArrayPoint2[]
adjustRasterizedOutline
▸ adjustRasterizedOutline(): RasterizedOutline
Defined in src/model/visualization/Plates/BendRenderer.ts:149
Stretches this.rasterizedOutline so that it has the right dimensions for being bent afterwards.
Returns: RasterizedOutline
The elongated rasterized outline
bendSurfaceVertices
▸ bendSurfaceVertices(vertices: PlateRenderSurfaceVertex[]): void
Defined in src/model/visualization/Plates/BendRenderer.ts:305
Takes an array of surface vertices and sets their position so that they follow the bent surface of the plate.
Parameters:
| Name | Type |
|---|---|
vertices |
PlateRenderSurfaceVertex[] |
Returns: void
getCutLines
▸ getCutLines(polygon: Polygon | MultiPolygon, __namedParameters: object): ArrayLine2[]
Defined in src/model/visualization/Plates/BendRenderer.ts:206
Constructs the cut lines that have to be cut into the plate to make it bendable.
Parameters:
▪ polygon: Polygon | MultiPolygon
▪Default value __namedParameters: object= {}
| Name | Type | Default | Description |
|---|---|---|---|
interlace |
number | 4 | Cut every nth cutline in n passes to reduce burning |
useSolidLines |
boolean | false | Do not add gaps for foamcore |
Returns: ArrayLine2[]
getFingerJointConstraints
▸ getFingerJointConstraints(): Map‹OutlineSection, number[]›
Defined in src/model/visualization/Plates/BendRenderer.ts:166
Return a Map of arrays of positions, where fingers may alternate. In-between those, there may be no finger joints.
Returns: Map‹OutlineSection, number[]›
getFlexCutlines
▸ getFlexCutlines(useSolidLines: boolean, transformMatrix?: Matrix4, interlace: number): IFlexCutlines
Defined in src/model/visualization/Plates/BendRenderer.ts:253
Constructs the flex cut lines that have to be cut into the plate to make it bendable.
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
useSolidLines |
boolean | false | Do not add gaps for foamcore |
transformMatrix? |
Matrix4 | - | optional matrix to apply to the cutlines |
interlace |
number | 2 | Cut every nth cutline in each group (inset or not) in n passes to reduce burning |
Returns: IFlexCutlines
getIsBentPlate
▸ getIsBentPlate(): boolean
Defined in src/model/visualization/Plates/BendRenderer.ts:113
Returns: boolean
true, if the supplied plate is actually bent
getSubdivisions
▸ getSubdivisions(): ArrayLine2[]
Defined in src/model/visualization/Plates/BendRenderer.ts:141
Returns: ArrayLine2[]
setPlate
▸ setPlate(plate: Plate): void
Defined in src/model/visualization/Plates/BendRenderer.ts:120
Sets the plate of this BendRenderer instance, recomputes all properties, that are derived from the plate.
Parameters:
| Name | Type |
|---|---|
plate |
Plate |
Returns: void
subdividePolygon
▸ subdividePolygon‹T›(inputPolygon: T): T
Defined in src/model/visualization/Plates/BendRenderer.ts:286
Adds collinear points where lines in the polygon intersect with lines in subdivisions. Only looks at the outline and the holes. CutLines are not modified.
Type parameters:
▪ T: Polygon | MultiPolygon
Parameters:
| Name | Type | Description |
|---|---|---|
inputPolygon |
T | the polygon to modify |
Returns: T
the modified polygon (the same instance as the supplied one)