diff --git a/src/experimental/demo/nz_worley3s_demo.scad b/src/experimental/demo/nz_worley3s_demo.scad new file mode 100644 index 00000000..db60279c --- /dev/null +++ b/src/experimental/demo/nz_worley3s_demo.scad @@ -0,0 +1,24 @@ +use ; + +size = [20, 20, 20]; +dim = 5; +dist = "euclidean"; // [euclidean, manhattan, chebyshev] +seed = 5; + +points = [ + for(z = [0:size[2] - 1]) + for(y = [0:size[1] - 1]) + for(x = [0:size[0] - 1]) + [x, y, z] +]; + +noises = nz_worley3s(size, points, seed, dim, dist); + +max_dist = max(noises); + +for(i = [0:len(noises) - 1]) { + c = noises[i] / max_dist; + color([c, c, c, c]) + translate(points[i]) + cube(1); +} \ No newline at end of file diff --git a/src/experimental/nz_worley3s.scad b/src/experimental/nz_worley3s.scad new file mode 100644 index 00000000..f5d75386 --- /dev/null +++ b/src/experimental/nz_worley3s.scad @@ -0,0 +1,12 @@ +use ; +use ; + +function nz_worley3s(size, points, seed, dim = 3, dist = "euclidean") = + 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 + ) + [for(p = points) _nz_worley3(p, sd, dim, m, n, o, dist)]; \ No newline at end of file