import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.noise.poissonDiskSampling
import org.openrndr.math.Vector2
import org.openrndr.shape.Circle

fun main() {
    application {
        program {
            var points = poissonDiskSampling(200.0, 200.0, 5.0, 10)
            val rectPoints = points.map { Circle(Vector2(100.0, 100.0) + it, 3.0) }

            points = poissonDiskSampling(200.0, 200.0, 5.0, 10, true) { w: Double, h: Double, v: Vector2 ->
                Circle(Vector2(w, h) / 2.0, 100.0).contains(v)
            }

            val circlePoints = points.map { Circle(Vector2(350.0, 100.0) + it, 3.0) }

            extend {
                drawer.clear(ColorRGBa.BLACK)
                drawer.stroke = null
                drawer.fill = ColorRGBa.PINK
                drawer.circles(rectPoints)
                drawer.circles(circlePoints)
            }
        }
    }
}