mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-14 02:34:12 +02:00
user can define his own xs
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
function _pnoise1(x, n, slopes) =
|
function _pnoise1(x, n, gradients) =
|
||||||
let(
|
let(
|
||||||
lo = floor(x),
|
lo = floor(x),
|
||||||
hi = (lo + 1) % n,
|
hi = (lo + 1) % n,
|
||||||
dist = x - lo,
|
dist = x - lo,
|
||||||
loPos = slopes[lo] * dist,
|
loPos = gradients[lo] * dist,
|
||||||
hiPos = -slopes[hi] * (1 - dist),
|
hiPos = -gradients[hi] * (1 - dist),
|
||||||
u = pow(dist, 3) * (dist * (dist * 6 - 15) + 10)
|
u = pow(dist, 3) * (dist * (dist * 6 - 15) + 10)
|
||||||
)
|
)
|
||||||
loPos * (1 - u) + hiPos * u;
|
loPos * (1 - u) + hiPos * u;
|
@@ -1,11 +1,13 @@
|
|||||||
use <experimental/_impl/_pnoise1.scad> ;
|
use <experimental/_impl/_pnoise1.scad> ;
|
||||||
|
|
||||||
function pnoise1(from, to, step = 0.5) =
|
function pnoise1(xs, gradients) =
|
||||||
let(
|
let(
|
||||||
|
from = floor(min(xs)),
|
||||||
|
to = ceil(max(xs)),
|
||||||
n = to - from + 1,
|
n = to - from + 1,
|
||||||
slopes = rands(-1, 1, n)
|
grads = is_undef(gradients) ? rands(-1, 1, n) : gradients
|
||||||
)
|
)
|
||||||
[
|
[
|
||||||
for(x = [0:step:n - 1])
|
for(x = xs)
|
||||||
[from + x, _pnoise1(x, n, slopes)]
|
_pnoise1(x, n, grads)
|
||||||
];
|
];
|
Reference in New Issue
Block a user