Files
orx/orx-noise/src/jvmDemo/kotlin/DemoScatter01.kt
2025-08-30 13:56:01 +02:00

42 lines
1.3 KiB
Kotlin

import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.noise.scatter
import org.openrndr.math.Vector2
import org.openrndr.shape.Ellipse
import kotlin.math.cos
import kotlin.random.Random
/**
* Demonstrates how to create an animated visualization of scattered points.
*
* The program creates an animated ellipse with increasing and decreasing height.
* Then, scatters points inside it with a placementRadius of 20.0.
*
* The animation reveals that the scattering positions are somewhat stable between
* animation frames.
*
* The ellipse's contour is revealed and hidden every other second.
*/
fun main() = application {
configure {
width = 720
height = 540
}
program {
extend {
val shape = Ellipse(Vector2(width / 2.0, height / 2.0), 200.0, 150.0 + cos(seconds) * 125.0).shape
val points = shape.scatter(20.0, random = Random(0))
drawer.clear(ColorRGBa.BLACK)
drawer.stroke = null
drawer.fill = ColorRGBa.PINK
drawer.circles(points, 4.0)
if (seconds.mod(2.0) < 1.0) {
drawer.stroke = ColorRGBa.PINK
drawer.fill = null
drawer.shape(shape)
}
}
}
}