mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-01-17 14:18:13 +01:00
1.5 KiB
1.5 KiB
nz_worley2
Returns the 2D Worley noise value [cell_x, cell_y, noise]
at the (x, y) coordinate.
It divides the space into grids. The nucleus of each cell is randomly placed in a grid.
Since: 2.3
Parameters
x
: The x coordinate.y
: The y coordinate.seed
: The random seed.grid_w
: The grid width. Default to 10. Smallergrid_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. Thedist
parameter accepts"euclidean"
,"manhattan"
,"chebyshev"
or"border"
.
Examples
use <noise/nz_worley2.scad>;
use <util/dedup.scad>;
size = [100, 50];
grid_w = 10;
dist = "euclidean"; // [euclidean, manhattan, chebyshev, border]
seed = 51;
points = [
for(y = [0:size.y - 1], x = [0:size.x - 1])
[x, y]
];
cells = [for(p = points) nz_worley2(p.x, p.y, seed, grid_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.x, c.y]]);
for(p = cells_pts) {
translate(p)
linear_extrude(max_dist)
square(1);
}