MeshCreation

Added in 1.0.0-alpha03

public final class MeshCreation


Summary

Public methods

static final @NonNull PartitionedMesh

Creates a PartitionedMesh of the shape enclosed by the given StrokeInputBatch input points.

Public methods

createClosedShape

public static final @NonNull PartitionedMesh createClosedShape(@NonNull StrokeInputBatch receiver)

Creates a PartitionedMesh of the shape enclosed by the given StrokeInputBatch input points. A typical use case is selecting a region of the scene and performing hit testing with the resulting PartitionedMesh.

For a given stroke this algorithm aims to:

  1. Identify and create any connections that the user may have intended to make but did not fully connect.

  2. Trim any extra end points that the user did not intend to be part of the selected area.

Example usage:

fun onStrokeFinished(stroke: Stroke) {
val selectionRegion = stroke.inputs.createClosedShape()
for (stroke in myScene.strokes) {
if (stroke.shape.intersects(selectionRegion)) {
myScene.setSelected(stroke, true)
}
}
}
Parameters
@NonNull StrokeInputBatch receiver

The StrokeInputBatch to create a closed shape from.

Returns
@NonNull PartitionedMesh

The PartitionedMesh of the closed shape. If there are fewer than 3 input points, or if there are fewer than 3 points remaining after removing points with the same (x,y) coordinates as the previous point, this function will return a PartitionedMesh that is point-like (1 point remaining) or segment-like (2 points remaining). The resulting mesh will have an area of 0 but can still be used for hit testing via intersection.