1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-14 10:44:48 +02:00

add noise param

This commit is contained in:
Justin Lin
2020-03-08 09:10:43 +08:00
parent 090cbbf4e6
commit 61d2706fd3
2 changed files with 21 additions and 7 deletions

View File

@@ -14,12 +14,16 @@ function _pnoise_contour_step_sub(x, y, current_noise, seed, step_leng, step_ang
_pnoise_contour_step_sub(x, y, current_noise, seed, step_leng, step_angle, heading, delta, theta, new_noise, nx, ny, theta + step_angle) :
_pnoise_contour_step_sub(x, y, current_noise, seed, step_leng, step_angle, heading, min_delta, maybe_heading, close_noise, maybe_x, maybe_y, theta + step_angle);
function _pnoise_contour_step(x, y, heading, seed, step_leng, step_angle) =
_pnoise_contour_step_sub(x, y, pnoise2([[x, y]], seed)[0], seed, step_leng, step_angle, heading, INFINITY, heading, -1, -1, -1, heading - 90);
function _pnoise_contour_step(x, y, heading, noise, seed, step_leng, step_angle) =
_pnoise_contour_step_sub(
x, y,
is_undef(noise) ? pnoise2([[x, y]], seed)[0] : noise,
seed, step_leng, step_angle, heading, INFINITY, heading, -1, -1, -1, heading - 90
);
function _pnoise_contour(x, y, heading, seed, steps, step_leng, step_angle, i = 0) =
function _pnoise_contour(x, y, heading, noise, seed, steps, step_leng, step_angle, i = 0) =
i == steps ? [[x, y]] :
let(
xyh = _pnoise_contour_step(x, y, heading, seed, step_leng, step_angle)
xyh = _pnoise_contour_step(x, y, heading, noise, seed, step_leng, step_angle)
)
concat([[x, y]], _pnoise_contour(xyh[0], xyh[1], xyh[2], seed, steps, step_leng, step_angle, i + 1));
concat([[x, y]], _pnoise_contour(xyh[0], xyh[1], xyh[2], noise, seed, steps, step_leng, step_angle, i + 1));

View File

@@ -1,4 +1,14 @@
use <experimental/_impl/_pnoise_contour_impl.scad>;
use <experimental/pnoise2.scad>;
function pnoise_contour(x, y, seed = 1, steps = 50, step_leng = 0.2, step_angle = 12) =
_pnoise_contour(x, y, seed % 360, seed, steps, step_leng, step_angle);
function pnoise_contour(x, y, noise, seed = 1, steps = 50, step_leng = 0.2, step_angle = 12) =
_pnoise_contour(
x,
y,
seed % 360,
noise,
seed,
steps,
step_leng,
step_angle
);