55 lines
1.6 KiB
Kotlin
55 lines
1.6 KiB
Kotlin
import org.openrndr.application
|
|
import org.openrndr.color.ColorRGBa
|
|
import org.openrndr.draw.*
|
|
import org.openrndr.extra.jumpfill.*
|
|
import kotlin.math.cos
|
|
|
|
fun main() = application {
|
|
configure {
|
|
width = 512
|
|
height = 512
|
|
}
|
|
program {
|
|
val rt = renderTarget(512, 512, 1.0) {
|
|
colorBuffer(type = ColorType.FLOAT32)
|
|
}
|
|
|
|
val flowfield = colorBuffer(512, 512, type = ColorType.FLOAT32)
|
|
val cluster = ClusteredField(decodeMode = DecodeMode.DISTANCE, outputDistanceToContours = true)
|
|
|
|
|
|
cluster.normalizedDistance = true
|
|
|
|
extend {
|
|
fun plot(x: Double, y: Double, id: Double) {
|
|
drawer.fill = ColorRGBa(id, 0.0, 0.0, 1.0)
|
|
drawer.point(x, y)
|
|
}
|
|
|
|
drawer.isolatedWithTarget(rt) {
|
|
drawer.clear(ColorRGBa(-1.0, -1.0, -1.0, 0.0))
|
|
val o = cos(seconds) * 200.0 + 200.0
|
|
|
|
for (i in 0 until 20) {
|
|
plot(o + 100.0 + i * 4, 100.0, 0.25)
|
|
}
|
|
|
|
for (i in 0 until 20) {
|
|
plot(200.0 + i * 4, 150.0 + i, 0.5)
|
|
}
|
|
for (i in 0 until 20) {
|
|
plot(300.0 + i * 4, 250.0 + i, 0.7)
|
|
}
|
|
|
|
for (i in 0 until 20) {
|
|
plot(400.0 + i * 4, 250.0 + i, 0.75)
|
|
}
|
|
}
|
|
cluster.apply(rt.colorBuffer(0), flowfield)
|
|
drawer.drawStyle.colorMatrix = tint(ColorRGBa(10.0, 10.0, 1.0))
|
|
drawer.image(flowfield)
|
|
|
|
|
|
}
|
|
}
|
|
} |