diff --git a/src/noise/_impl/_nz_worley2_impl.scad b/src/noise/_impl/_nz_worley2_impl.scad index cfec6aff..9da4d3d6 100644 --- a/src/noise/_impl/_nz_worley2_impl.scad +++ b/src/noise/_impl/_nz_worley2_impl.scad @@ -18,10 +18,10 @@ function _neighbors(fcord, seed, grid_w) = function _nz_worley2_classic(p, nbrs, dist) = let( - cells = [ - for(nbr = nbrs) - [each nbr, _distance(nbr, p, dist)] - ], + cells = dist == "euclidean" ? [for(nbr = nbrs) [each nbr, norm(nbr - p)]] : + dist == "manhattan" ? [for(nbr = nbrs) [each nbr, _manhattan(nbr - p)]] : + dist == "chebyshev" ? [for(nbr = nbrs) [each nbr, _chebyshev(nbr, p)]] : + assert("Unknown distance option"), sorted = sort(cells, by = "idx", idx = 2) ) sorted[0]; diff --git a/src/noise/_impl/_nz_worley3_impl.scad b/src/noise/_impl/_nz_worley3_impl.scad index b29b0570..f4b0b781 100644 --- a/src/noise/_impl/_nz_worley3_impl.scad +++ b/src/noise/_impl/_nz_worley3_impl.scad @@ -20,10 +20,10 @@ function _neighbors(fcord, seed, grid_w) = function _nz_worley3_classic(p, nbrs, dist) = let( - cells = [ - for(nbr = nbrs) - [each nbr, _distance(nbr, p, dist)] - ], + cells = dist == "euclidean" ? [for(nbr = nbrs) [each nbr, norm(nbr - p)]] : + dist == "manhattan" ? [for(nbr = nbrs) [each nbr, _manhattan(nbr - p)]] : + dist == "chebyshev" ? [for(nbr = nbrs) [each nbr, _chebyshev(nbr, p)]] : + assert("Unknown distance option"), sorted = sort(cells, by = "idx", idx = 3) ) sorted[0]; diff --git a/src/noise/_impl/_nz_worley_comm.scad b/src/noise/_impl/_nz_worley_comm.scad index bd8e9c6f..603a7bcb 100644 --- a/src/noise/_impl/_nz_worley_comm.scad +++ b/src/noise/_impl/_nz_worley_comm.scad @@ -8,9 +8,4 @@ function _manhattan(v) = sum([for(d = v) abs(d)]); function _chebyshev(p1, p2) = max([for(i = [0:len(p1) - 1]) abs(p1[i] - p2[i])]); - -function _distance(nbr, p, dist) = - dist == "euclidean" ? norm(nbr - p) : - dist == "manhattan" ? _manhattan(nbr - p) : - dist == "chebyshev" ? _chebyshev(nbr, p) : - assert("Unknown distance option"); \ No newline at end of file + \ No newline at end of file