32 lines
1001 B
Kotlin
32 lines
1001 B
Kotlin
package alphashape
|
|
|
|
import org.openrndr.application
|
|
import org.openrndr.color.ColorRGBa
|
|
import org.openrndr.extra.shapes.alphashape.AlphaShape
|
|
import org.openrndr.math.Vector2
|
|
import kotlin.random.Random
|
|
|
|
/**
|
|
* Demonstrates the use of [AlphaShape] to create a [org.openrndr.shape.ShapeContour] out
|
|
* of a collection of random [Vector2] points. Unlike the convex hull, an Alpha shape can be concave.
|
|
*
|
|
* More details in [WikiPedia](https://en.wikipedia.org/wiki/Alpha_shape)
|
|
*/
|
|
fun main() = application {
|
|
program {
|
|
val points = List(40) {
|
|
Vector2(
|
|
Random.nextDouble(width * 0.25, width * 0.75),
|
|
Random.nextDouble(height * 0.25, height * 0.75)
|
|
)
|
|
}
|
|
val alphaShape = AlphaShape(points)
|
|
val c = alphaShape.createContour()
|
|
extend {
|
|
drawer.fill = ColorRGBa.PINK
|
|
drawer.contour(c)
|
|
drawer.fill = ColorRGBa.WHITE
|
|
drawer.circles(points, 4.0)
|
|
}
|
|
}
|
|
} |