1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-11 17:24:20 +02:00
This commit is contained in:
Justin Lin
2022-05-06 22:57:11 +08:00
parent c4b4a00909
commit 593715cf23

View File

@@ -12,12 +12,12 @@ use <__comm__/__angy_angz.scad>;
// slow but workable // slow but workable
module vrn3_space(size, grid_w, seed, spacing = 1) { module vrn3_space(size, grid_w, seed, spacing = 1) {
function _neighbors(fcord, seed, grid_w) = [ function _neighbors(fcord, seed, grid_w, gw) = [
let(range = [-1:1]) let(range = [-1:1])
for(z = range, y = range, x = range) for(z = range, y = range, x = range)
let( let(
nv = fcord + [x, y, z], nv = fcord + [x, y, z],
sd_base = abs(nv * [1, grid_w, grid_w ^ 2]) sd_base = abs(nv * gw)
) )
(nv + rands(0.1, 0.9, 3, seed_value = seed + sd_base)) * grid_w (nv + rands(0.1, 0.9, 3, seed_value = seed + sd_base)) * grid_w
]; ];
@@ -39,6 +39,7 @@ module vrn3_space(size, grid_w, seed, spacing = 1) {
sd = is_undef(seed) ? rands(0, 255, 1)[0] : seed; sd = is_undef(seed) ? rands(0, 255, 1)[0] : seed;
gw = [1, grid_w, grid_w ^ 2];
// 27-nearest-neighbor cells // 27-nearest-neighbor cells
cell_nbrs_lt = [ cell_nbrs_lt = [
for(cz = [0:grid_w:size.z], cy = [0:grid_w:size.y], cx = [0:grid_w:size.x]) for(cz = [0:grid_w:size.z], cy = [0:grid_w:size.y], cx = [0:grid_w:size.x])
@@ -46,7 +47,8 @@ module vrn3_space(size, grid_w, seed, spacing = 1) {
nbrs = _neighbors( nbrs = _neighbors(
[floor(cx / grid_w), floor(cy / grid_w), floor(cz / grid_w)], [floor(cx / grid_w), floor(cy / grid_w), floor(cz / grid_w)],
sd, sd,
grid_w grid_w,
gw
), ),
p = nbrs[13], p = nbrs[13],
points = concat( points = concat(