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
2022-05-01 17:17:01 +08:00
parent c547ab4ec6
commit 3481ca7b22
2 changed files with 20 additions and 22 deletions

View File

@@ -4,12 +4,12 @@ use <../../util/sorted.scad>;
_key = function(elem) elem[2]; _key = function(elem) elem[2];
function _neighbors(fcord, seed, grid_w) = function _neighbors(fcord, seed, grid_w) =
let(range = [-1:1]) let(range = [-1:1], fx = fcord.x, fy = fcord.y)
[ [
for(y = range, x = range) for(y = range, x = range)
let( let(
nx = fcord.x + x, nx = fx + x,
ny = fcord.y + y, ny = fy + y,
sd_base = abs(nx + ny * grid_w), sd_base = abs(nx + ny * grid_w),
sd1 = _lookup_noise_table(seed + sd_base), sd1 = _lookup_noise_table(seed + sd_base),
sd2 = _lookup_noise_table(sd1 * 255 + sd_base), sd2 = _lookup_noise_table(sd1 * 255 + sd_base),
@@ -29,15 +29,14 @@ function _nz_worley2_classic(p, nbrs, dist) =
function _nz_worley2_border(p, nbrs) = function _nz_worley2_border(p, nbrs) =
let( let(
cells = [ cells = [for(nbr = nbrs) [each nbr, norm(nbr - p)]],
for(nbr = nbrs)
[each nbr, norm(nbr - p)]
],
sorted_cells = sorted(cells, key = _key), sorted_cells = sorted(cells, key = _key),
a = [sorted_cells[0].x, sorted_cells[0].y], fst = sorted_cells[0],
m = (a + [sorted_cells[1].x, sorted_cells[1].y]) / 2 snd = orted_cells[1],
a = [fst.x, fst.y],
m = (a + [snd.x, snd.y]) / 2
) )
[a[0], a[1], (p - m) * (a - m)]; [fst.x, fst.y, (p - m) * (a - m)];
function _nz_worley2(p, seed, grid_w, dist) = function _nz_worley2(p, seed, grid_w, dist) =
let( let(

View File

@@ -4,14 +4,14 @@ use <../../util/sorted.scad>;
_key = function(elem) elem[3]; _key = function(elem) elem[3];
function _neighbors(fcord, seed, grid_w) = function _neighbors(fcord, seed, grid_w) =
let(range = [-1:1]) let(range = [-1:1], fx = fcord.x, fy = fcord.y, fz = fcord.z)
[ [
for(z = range, y = range, x = range) for(z = range, y = range, x = range)
let( let(
nx = fcord.x + x, nx = fx + x,
ny = fcord.y + y, ny = fy + y,
nz = fcord.z + z, nz = fz + z,
sd_base = abs(nx + ny * grid_w + nz * grid_w * grid_w), sd_base = abs(nx + ny * grid_w + nz * grid_w ^ 2),
sd1 = _lookup_noise_table(seed + sd_base), sd1 = _lookup_noise_table(seed + sd_base),
sd2 = _lookup_noise_table(sd1 * 255 + sd_base), sd2 = _lookup_noise_table(sd1 * 255 + sd_base),
sd3 = _lookup_noise_table(sd2 * 255 + sd_base), sd3 = _lookup_noise_table(sd2 * 255 + sd_base),
@@ -31,15 +31,14 @@ function _nz_worley3_classic(p, nbrs, dist) =
function _nz_worley3_border(p, nbrs) = function _nz_worley3_border(p, nbrs) =
let( let(
cells = [ cells = [for(nbr = nbrs) [each nbr, norm(nbr - p)]],
for(nbr = nbrs)
[each nbr, norm(nbr - p)]
],
sorted_cells = sorted(cells, key = _key), sorted_cells = sorted(cells, key = _key),
a = [sorted_cells[0].x, sorted_cells[0].y, sorted_cells[0].z], fst = sorted_cells[0],
m = (a + [sorted_cells[1].x, sorted_cells[1].y, sorted_cells[1].z]) / 2 snd = sorted_cells[1],
a = [fst.x, fst.y, fst.z],
m = (a + [snd.x, snd.y, snd.z]) / 2
) )
[a[0], a[1], a[2], (p - m) * (a - m)]; [fst.x, fst.y, fst.z, (p - m) * (a - m)];
function _nz_worley3(p, seed, grid_w, dist) = function _nz_worley3(p, seed, grid_w, dist) =
let( let(