diff --git a/README.md b/README.md index 89c4012d..c6691b94 100644 --- a/README.md +++ b/README.md @@ -197,7 +197,7 @@ See [examples](examples). - [noise/nz_perlin3](https://openhome.cc/eGossip/OpenSCAD/lib2x-nz_perlin3.html) - [noise/nz_perlin3s](https://openhome.cc/eGossip/OpenSCAD/lib2x-nz_perlin3s.html) - [noise/nz_worley2](https://openhome.cc/eGossip/OpenSCAD/lib2x-nz_worley2.html) -- noise/nz_worley2s +- [noise/nz_worley2s](https://openhome.cc/eGossip/OpenSCAD/lib2x-nz_worley2s.html) - noise/nz_worley3 - noise/nz_worley3s - noise/nz_cell diff --git a/docs/images/lib2x-nz_worley2s-1.JPG b/docs/images/lib2x-nz_worley2s-1.JPG new file mode 100644 index 00000000..49ba1a81 Binary files /dev/null and b/docs/images/lib2x-nz_worley2s-1.JPG differ diff --git a/docs/images/lib2x-nz_worley2s-2.JPG b/docs/images/lib2x-nz_worley2s-2.JPG new file mode 100644 index 00000000..9d86389b Binary files /dev/null and b/docs/images/lib2x-nz_worley2s-2.JPG differ diff --git a/docs/lib2x-nz_worley2s.md b/docs/lib2x-nz_worley2s.md new file mode 100644 index 00000000..fd2b0262 --- /dev/null +++ b/docs/lib2x-nz_worley2s.md @@ -0,0 +1,43 @@ +# nz_worley2s + +Returns 2D [Worley noise](https://en.wikipedia.org/wiki/Worley_noise) values `[cell_x, cell_y, noise]` at (x, y) coordinates. + +It divides the space into tiles. The nucleus of each cell is randomly placed in a tile. + +![nz_worley2s](images/lib2x-nz_worley2s-1.JPG) + +**Since:** 2.3 + +## Parameters + +- `points` : A list of `[x, y]` coordinates. +- `seed` : The random seed. If it's ignored, a randomized value will be used. +- `tile_w` : The tile width. Default to 10. Smaller `tile_w` makes more cells. +- `dist` : The noise value of each point is based on its distance to other cells. Different distance strategies make different noises. The `dist` parameter accepts `"euclidean"`, `"manhattan"`, `"chebyshev"` or `"border"`. + +## Examples + + use ; + + size = [100, 50]; + tile_w = 10; + dist = "euclidean"; // [euclidean, manhattan, chebyshev, border] + seed = 51; + + points = [ + for(y = [0:size[1] - 1]) + for(x = [0:size[0] - 1]) + [x, y] + ]; + + cells = nz_worley2s(points, seed, tile_w, dist); + + for(i = [0:len(cells) - 1]) { + h = norm([cells[i][0], cells[i][1]]) % 10; + color([h, h, h] / 10) + linear_extrude(h) + translate(points[i]) + square(1); + } + +![nz_worley2s](images/lib2x-nz_worley2s-2.JPG) \ No newline at end of file diff --git a/src/experimental/demo/nz_worley2_demo.scad b/src/experimental/demo/nz_worley2_demo.scad deleted file mode 100644 index b18c3370..00000000 --- a/src/experimental/demo/nz_worley2_demo.scad +++ /dev/null @@ -1,31 +0,0 @@ -use ; -use ; - -size = [100, 50]; -tile_w = 10; -dist = "euclidean"; // [euclidean, manhattan, chebyshev, border] -seed = 51; - -points = [ - for(y = [0:size[1] - 1]) - for(x = [0:size[0] - 1]) - [x, y] -]; - -cells = [for(p = points) nz_worley2(p[0], p[1], seed, tile_w, dist)]; - -max_dist = max([for(c = cells) c[2]]); -for(i = [0:len(cells) - 1]) { - c = cells[i][2] / max_dist; - color([c, c, c]) - linear_extrude(cells[i][2]) - translate(points[i]) - square(1); -} - -cells_pts = dedup([for(c = cells) [c[0], c[1]]]); -for(p = cells_pts) { - translate(p) - linear_extrude(max_dist) - square(1); -} \ No newline at end of file diff --git a/src/experimental/demo/nz_worley2s_demo.scad b/src/experimental/demo/nz_worley2s_demo.scad deleted file mode 100644 index 5f4f1b83..00000000 --- a/src/experimental/demo/nz_worley2s_demo.scad +++ /dev/null @@ -1,31 +0,0 @@ -use ; -use ; - -size = [100, 50]; -tile_w = 10; -dist = "euclidean"; // [euclidean, manhattan, chebyshev, border] -seed = 51; - -points = [ - for(y = [0:size[1] - 1]) - for(x = [0:size[0] - 1]) - [x, y] -]; - -cells = nz_worley2s(points, seed, tile_w, dist); - -max_dist = max([for(c = cells) c[2]]); -for(i = [0:len(cells) - 1]) { - c = cells[i][2] / max_dist; - color([c, c, c]) - linear_extrude(cells[i][2]) - translate(points[i]) - square(1); -} - -cells_pts = dedup([for(c = cells) [c[0], c[1]]]); -for(p = cells_pts) { - translate(p) - linear_extrude(max_dist) - square(1); -} \ No newline at end of file diff --git a/src/noise/nz_worley2s.scad b/src/noise/nz_worley2s.scad index 76c56ce3..1e2ca349 100644 --- a/src/noise/nz_worley2s.scad +++ b/src/noise/nz_worley2s.scad @@ -1,3 +1,13 @@ +/** +* nz_worley2s.scad +* +* @copyright Justin Lin, 2020 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-nz_worley2s.html +* +**/ + use ; use ;