[orx-noise] Fix bug in List<Triangle>.uniform

This commit is contained in:
Edwin Jakobs
2024-10-19 16:54:49 +02:00
parent 6e5eb282bc
commit 8a18546ef1
2 changed files with 32 additions and 1 deletions

View File

@@ -17,7 +17,7 @@ fun List<Triangle>.uniform(count: Int, random: Random = Random.Default): List<Ve
var sum = 0.0
for (t in this) {
sum += t.area
while (idx < randoms.lastIndex && sum > randoms[idx]) {
while (idx <= randoms.lastIndex && sum > randoms[idx]) {
result.add(t.randomPoint(random))
idx++
}

View File

@@ -0,0 +1,31 @@
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.noise.uniform
import org.openrndr.shape.Triangle
import kotlin.random.Random
/**
* Demonstrate the generation of uniformly distributed points inside a list of triangles
* @see <img src="https://raw.githubusercontent.com/openrndr/orx/media/orx-noise/images/DemoTriangleNoise01Kt.png">
*/
fun main() {
application {
configure {
width = 720
height = 720
}
program {
val r = drawer.bounds.offsetEdges(-100.0)
val triangle = Triangle(r.position(0.5, 0.0), r.position(0.0, 1.0), r.position(1.0, 1.0))
val pts = listOf(triangle).uniform(1000, Random(0))
extend {
drawer.clear(ColorRGBa.PINK)
drawer.stroke = null
drawer.contour(triangle.contour)
drawer.fill = ColorRGBa.BLACK
drawer.circles(pts, 5.0)
}
}
}
}