From ae32838d1ab1b45b73d74248623d5172a3c956ae Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Thu, 5 Mar 2020 20:23:17 +0800 Subject: [PATCH] user can define his own xs --- src/experimental/_impl/_pnoise1.scad | 6 +++--- src/experimental/pnoise1.scad | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/experimental/_impl/_pnoise1.scad b/src/experimental/_impl/_pnoise1.scad index 29e24cff..9e115457 100644 --- a/src/experimental/_impl/_pnoise1.scad +++ b/src/experimental/_impl/_pnoise1.scad @@ -1,10 +1,10 @@ -function _pnoise1(x, n, slopes) = +function _pnoise1(x, n, gradients) = let( lo = floor(x), hi = (lo + 1) % n, dist = x - lo, - loPos = slopes[lo] * dist, - hiPos = -slopes[hi] * (1 - dist), + loPos = gradients[lo] * dist, + hiPos = -gradients[hi] * (1 - dist), u = pow(dist, 3) * (dist * (dist * 6 - 15) + 10) ) loPos * (1 - u) + hiPos * u; \ No newline at end of file diff --git a/src/experimental/pnoise1.scad b/src/experimental/pnoise1.scad index 0c9f9c32..8032c5bb 100644 --- a/src/experimental/pnoise1.scad +++ b/src/experimental/pnoise1.scad @@ -1,11 +1,13 @@ use ; -function pnoise1(from, to, step = 0.5) = +function pnoise1(xs, gradients) = let( + from = floor(min(xs)), + to = ceil(max(xs)), n = to - from + 1, - slopes = rands(-1, 1, n) + grads = is_undef(gradients) ? rands(-1, 1, n) : gradients ) [ - for(x = [0:step:n - 1]) - [from + x, _pnoise1(x, n, slopes)] + for(x = xs) + _pnoise1(x, n, grads) ]; \ No newline at end of file