Fix 3d simplex noise

This commit is contained in:
Edwin Jakobs
2020-03-12 15:09:04 +01:00
parent 1938cbcce3
commit 49d139a33f

View File

@@ -1,6 +1,10 @@
package org.openrndr.extra.noise package org.openrndr.extra.noise
private const val F3 = (1.0 / 3.0).toFloat()
private const val G3 = (1.0 / 6.0).toFloat()
private const val G33 = G3 * 3 - 1
fun simplex(seed: Int, x: Double, y: Double, z: Double): Double { fun simplex(seed: Int, x: Double, y: Double, z: Double): Double {
val t = (x + y + z) / 3.0 val t = (x + y + z) / 3.0
@@ -46,13 +50,13 @@ fun simplex(seed: Int, x: Double, y: Double, z: Double): Double {
val x2 = x0 - i2 + 1.0 / 3.0 val x2 = x0 - i2 + 1.0 / 3.0
val y2 = y0 - j2 + 1.0 / 3.0 val y2 = y0 - j2 + 1.0 / 3.0
val z2 = z0 - k2 + 1.0 / 3.0 val z2 = z0 - k2 + 1.0 / 3.0
val x3 = x0 + ((1.0 / 6.0) * 3.0 - 1.0) val x3 = x0 + G33
val y3 = y0 + ((1.0 / 6.0) * 3.0 - 1.0) val y3 = y0 + G33
val z3 = z0 + ((1.0 / 6.0) * 3.0 - 1.0) val z3 = z0 + G33
val n0: Double val n0: Double
run { run {
var t = 0.6 * x0 * x0 - y0 * y0 - z0 * z0 var t = 0.6 - x0 * x0 - y0 * y0 - z0 * z0
if (t < 0) { if (t < 0) {
n0 = 0.0 n0 = 0.0
} else { } else {
@@ -62,7 +66,7 @@ fun simplex(seed: Int, x: Double, y: Double, z: Double): Double {
} }
val n1: Double val n1: Double
run { run {
var t = 0.6 * x1 * x1 - y1 * y1 - z1 * z1 var t = 0.6 - x1 * x1 - y1 * y1 - z1 * z1
if (t < 0) { if (t < 0) {
n1 = 0.0 n1 = 0.0
} else { } else {
@@ -72,7 +76,7 @@ fun simplex(seed: Int, x: Double, y: Double, z: Double): Double {
} }
val n2: Double val n2: Double
run { run {
var t = 0.6 * x2 * x2 - y2 * y2 - z2 * z2 var t = 0.6 - x2 * x2 - y2 * y2 - z2 * z2
if (t < 0) { if (t < 0) {
n2 = 0.0 n2 = 0.0
} else { } else {