From fae0991e21b4a6034d9a5824a321fa189fa1c3b3 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sun, 29 Mar 2020 18:42:14 +0800 Subject: [PATCH] voronoi noise 3D first attempt --- src/experimental/_impl/_nz_voronoi3_impl.scad | 15 +++++++++++++++ src/experimental/nz_voronoi3.scad | 12 ++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/experimental/_impl/_nz_voronoi3_impl.scad create mode 100644 src/experimental/nz_voronoi3.scad diff --git a/src/experimental/_impl/_nz_voronoi3_impl.scad b/src/experimental/_impl/_nz_voronoi3_impl.scad new file mode 100644 index 00000000..77b5fa78 --- /dev/null +++ b/src/experimental/_impl/_nz_voronoi3_impl.scad @@ -0,0 +1,15 @@ +use ; +use ; + +function _nz_voronoi3(p, seed, dim, m, n, o) = + let( + fcord = [floor(p[0] / m), floor(p[1] / n), floor(p[2] / o)], + nbrs = _neighbors(fcord, seed, dim, m, n, o), + dists = [ + for(nbr = nbrs) + if(!is_undef(nbr[1])) // Here's a workaround for a weired undef problem. bug of 2019.05? + [norm(nbr - p)] + ], + sorted = sort(dists) + ) + sorted[1][0] - sorted[0][0]; \ No newline at end of file diff --git a/src/experimental/nz_voronoi3.scad b/src/experimental/nz_voronoi3.scad new file mode 100644 index 00000000..6ce7d304 --- /dev/null +++ b/src/experimental/nz_voronoi3.scad @@ -0,0 +1,12 @@ +use ; +use ; + +function nz_voronoi3(size, x, y, z, seed, dim = 2) = + let( + sd = 6 + (is_undef(seed) ? floor(rand(0, 256)) : seed % 256), + // m*n pixels per grid + m = size[0] / dim, + n = size[1] / dim, + o = size[2] / dim + ) + _nz_voronoi3([x, y, z], sd, dim, m, n, o); \ No newline at end of file