1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-19 13:01:37 +02:00
This commit is contained in:
Justin Lin
2020-03-29 11:14:26 +08:00
parent d9aba2ab63
commit 13e2e58853
15 changed files with 27 additions and 85 deletions

View File

@@ -3,7 +3,7 @@ use <util/rand.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_walls.scad>;
use <ptf/ptf_circle.scad>;
use <experimental/pnoise2.scad>;
use <experimental/nz_perlin2.scad>;
module noisy_circle_maze(start, r_blocks, block_width, wall_thickness, origin_offset, noisy_factor) {
double_r_blocks = r_blocks * 2;
@@ -25,10 +25,10 @@ module noisy_circle_maze(start, r_blocks, block_width, wall_thickness, origin_of
for(i = [0:len(wall) - 2]) {
p0 = ptf_circle(rect_size, wall[i]);
p1 = ptf_circle(rect_size, wall[i + 1]);
pn00 = pnoise2(p0[0], p0[1], seed) * noisy_f;
pn01 = pnoise2(p0[0] + seed, p0[1] + seed, seed) * noisy_f;
pn10 = pnoise2(p1[0], p1[1], seed) * noisy_f;
pn11 = pnoise2(p1[0] + seed, p1[1] + seed, seed) * noisy_f;
pn00 = nz_perlin2(p0[0], p0[1], seed) * noisy_f;
pn01 = nz_perlin2(p0[0] + seed, p0[1] + seed, seed) * noisy_f;
pn10 = nz_perlin2(p1[0], p1[1], seed) * noisy_f;
pn11 = nz_perlin2(p1[0] + seed, p1[1] + seed, seed) * noisy_f;
hull_polyline2d([p0 + [pn00, pn01], p1 + [pn10, pn11]], width = wall_thickness);
}
}

View File

@@ -1,5 +1,5 @@
use <util/rand.scad>;
use <experimental/pnoise2s.scad>;
use <experimental/nz_perlin2s.scad>;
use <experimental/sf_solidify.scad>;
use <ptf/ptf_bend.scad>;
use <util/slice.scad>;
@@ -30,7 +30,7 @@ module perlin_noise_cylinder(radius, height, thickness_scale, step) {
let(
row = surface_inside[ri],
row_for_noise = concat(slice(row, 0, leng_row - 1), [[0, row[leng_row - 1][1], 0]]),
ns = pnoise2s(row_for_noise, seed)
ns = nz_perlin2s(row_for_noise, seed)
)
[
for(ci = [0:len(ns) - 1])

View File

@@ -1,29 +0,0 @@
use <experimental/pnoise2.scad>;
INFINITY = 1e200 * 1e200;
function _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) =
theta >= heading + 90 ? [maybe_x, maybe_y, maybe_heading] :
let(
nx = x + step_leng * cos(theta),
ny = y + step_leng * sin(theta),
new_noise = pnoise2(nx, ny, seed),
delta = abs(new_noise - current_noise)
)
delta < min_delta ?
_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, noise, seed, step_leng, step_angle) =
_pnoise_contour_step_sub(
x, y,
is_undef(noise) ? pnoise2(x, y, seed) : noise,
seed, step_leng, step_angle, heading, INFINITY, heading, -1, -1, -1, heading - 90
);
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, noise, seed, step_leng, step_angle)
)
concat([[x, y]], _pnoise_contour(xyh[0], xyh[1], xyh[2], noise, seed, steps, step_leng, step_angle, i + 1));

View File

@@ -1,12 +1,12 @@
use <hull_polyline2d.scad>;
use <util/rand.scad>;
use <experimental/pnoise2.scad>;
use <experimental/nz_perlin2.scad>;
use <experimental/contours.scad>;
seed = rand(0, 256);
points = [
for(y = [0:.2:10]) [
for(x = [0:.2:10]) [x, y, pnoise2(x, y, seed)]
for(x = [0:.2:10]) [x, y, nz_perlin2(x, y, seed)]
]
];

View File

@@ -1,16 +1,16 @@
use <hull_polyline2d.scad>;
use <util/rand.scad>;
use <experimental/zip.scad>;
use <experimental/pnoise1.scad>;
use <experimental/pnoise1s.scad>;
use <experimental/nz_perlin1.scad>;
use <experimental/nz_perlin1s.scad>;
seed = rand();
hull_polyline2d(
[for(x = [0:.1:10]) [x, pnoise1(x, seed)]], width = .1
[for(x = [0:.1:10]) [x, nz_perlin1(x, seed)]], width = .1
);
xs = [for(x = [0:.2:8.3]) x];
ys = pnoise1s(xs);
ys = nz_perlin1s(xs);
translate([0, 2])
hull_polyline2d(

View File

@@ -1,6 +1,6 @@
use <util/rand.scad>;
use <function_grapher.scad>;
use <experimental/pnoise2s.scad>;
use <experimental/nz_perlin2s.scad>;
module demo1() {
points = [
@@ -8,7 +8,7 @@ module demo1() {
for(x = [0:.2:10])
[x, y]
];
noise = pnoise2s(points);
noise = nz_perlin2s(points);
for(i = [0:len(points) - 1]) {
c = (noise[i] + 1.1) / 2;
@@ -32,7 +32,7 @@ module demo2() {
function_grapher(
[
for(ri = [0:len(points) - 1])
let(ns = pnoise2s(points[ri], seed))
let(ns = nz_perlin2s(points[ri], seed))
[
for(ci = [0:len(ns) - 1])
[points[ri][ci][0], points[ri][ci][1], ns[ci]]

View File

@@ -1,6 +1,6 @@
use <util/rand.scad>;
use <experimental/pnoise2s.scad>;
use <experimental/pnoise3s.scad>;
use <experimental/nz_perlin2s.scad>;
use <experimental/nz_perlin3s.scad>;
module demo1() {
for(z = [0:.2:5]) {
@@ -9,7 +9,7 @@ module demo1() {
for(x = [0:.2:5])
[x, y, z]
];
noise = pnoise3s(points, 3);
noise = nz_perlin3s(points, 3);
for(i = [0:len(points) - 1]) {
alpha = abs(noise[i] + .5);
color([.75, .75, .75, alpha < 0 ? 0 : alpha > 1 ? 1 : alpha])
@@ -32,7 +32,7 @@ module demo2() {
points_with_h = [
for(ri = [0:len(points) - 1])
let(ns = pnoise2s(points[ri], seed))
let(ns = nz_perlin2s(points[ri], seed))
[
for(ci = [0:len(ns) - 1])
[points[ri][ci][0], points[ri][ci][1], ns[ci] + 1]
@@ -46,7 +46,7 @@ module demo2() {
pts = [
for(z = [0:.2:p[2] * h_scale]) [p[0], p[1], z]
];
noise = pnoise3s(pts, seed);
noise = nz_perlin3s(pts, seed);
for(j = [0:len(pts) - 1]) {
if(noise[j] > 0) {
color(

View File

@@ -1,15 +0,0 @@
use <hull_polyline2d.scad>;
use <experimental/pnoise_contour.scad>;
for(y = [0:2:4]) {
for(x = [0:2:4]) {
hull_polyline2d(pnoise_contour(x, y, noise = 0.025, steps = 200), width = .1, $fn = 4);
}
}
translate([10, 0])
for(y = [0:2:4]) {
for(x = [0:2:4]) {
hull_polyline2d(pnoise_contour(x, y, steps = 100), width = .05, $fn = 4);
}
}

View File

@@ -1,4 +1,4 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise1_impl.scad>;
function pnoise1(x, seed) = _pnoise1_impl(x, seed % 256);
function nz_perlin1(x, seed) = _pnoise1_impl(x, seed % 256);

View File

@@ -1,6 +1,6 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise1_impl.scad>;
function pnoise1s(xs, seed) =
function nz_perlin1s(xs, seed) =
let(sd = is_undef(seed) ? floor(rand(0, 256)) : seed % 256)
[for(x = xs) _pnoise1_impl(x, sd)];

View File

@@ -1,4 +1,4 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise2_impl.scad>;
function pnoise2(x, y, seed) = _pnoise2(x, y, seed % 256);
function nz_perlin2(x, y, seed) = _pnoise2(x, y, seed % 256);

View File

@@ -1,6 +1,6 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise2_impl.scad>;
function pnoise2s(points, seed) =
function nz_perlin2s(points, seed) =
let(sd = is_undef(seed) ? floor(rand(0, 256)) : seed % 256)
[for(p = points) _pnoise2(p[0], p[1], sd)];

View File

@@ -1,4 +1,4 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise3_impl.scad>;
function pnoise3(x, y, z, seed) = _pnoise3(x, y, z, seed % 256);
function nz_perlin3(x, y, z, seed) = _pnoise3(x, y, z, seed % 256);

View File

@@ -1,6 +1,6 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise3_impl.scad>;
function pnoise3s(points, seed) =
function nz_perlin3s(points, seed) =
let(sd = is_undef(seed) ? floor(rand(0, 256)) : seed % 256)
[for(p = points) _pnoise3(p[0], p[1], p[2], sd)];

View File

@@ -1,14 +0,0 @@
use <experimental/_impl/_pnoise_contour_impl.scad>;
use <experimental/pnoise2.scad>;
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
);