2020-04-06 17:29:11 +08:00
# nz_worley2
Returns the 2D [Worley noise ](https://en.wikipedia.org/wiki/Worley_noise ) value `[cell_x, cell_y, noise]` at the (x, y) coordinate.
2020-04-07 17:34:27 +08:00
It divides the space into grids. The nucleus of each cell is randomly placed in a grid.
2020-04-06 17:29:11 +08:00
2021-02-24 21:09:54 +08:00
![nz_worley2 ](images/lib3x-nz_worley2-1.JPG )
2020-04-06 17:29:11 +08:00
**Since:** 2.3
## Parameters
- `x` : The x coordinate.
- `y` : The y coordinate.
- `seed` : The random seed.
2020-04-07 17:34:27 +08:00
- `grid_w` : The grid width. Default to 10. Smaller `grid_w` makes more cells.
2020-04-06 17:29:11 +08:00
- `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
2022-06-06 13:11:46 +08:00
use < noise / nz_worley2 . scad >
use < util / dedup . scad >
2020-04-06 17:29:11 +08:00
size = [100, 50];
2020-04-07 17:34:27 +08:00
grid_w = 10;
2020-04-06 17:29:11 +08:00
dist = "euclidean"; // [euclidean, manhattan, chebyshev, border]
seed = 51;
points = [
2022-04-06 17:44:11 +08:00
for(y = [0:size.y - 1], x = [0:size.x - 1])
[x, y]
2020-04-06 17:29:11 +08:00
];
2021-12-04 12:16:20 +08:00
cells = [for(p = points) nz_worley2(p.x, p.y, seed, grid_w, dist)];
2020-04-06 17:29:11 +08:00
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);
}
2022-04-06 17:44:11 +08:00
cells_pts = dedup([for(c = cells) [c.x, c.y]]);
2020-04-06 17:29:11 +08:00
for(p = cells_pts) {
translate(p)
linear_extrude(max_dist)
square(1);
}
2021-02-24 21:09:54 +08:00
![nz_worley2 ](images/lib3x-nz_worley2-2.JPG )