1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-01 12:30:33 +02:00
This commit is contained in:
Justin Lin
2020-04-07 17:57:27 +08:00
parent cc1e381fd8
commit fa8da3d0c5
10 changed files with 103 additions and 25 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

39
docs/lib2x-nz_worley3.md Normal file
View File

@@ -0,0 +1,39 @@
# nz_worley3
Returns the 3D [Worley noise](https://en.wikipedia.org/wiki/Worley_noise) value `[cell_x, cell_y, cell_y, noise]` at the (x, y, z) 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.
- `z` : The z coordinate.
- `seed` : The random seed.
- `grid_w` : The grid width. Default to 10. Smaller `grid_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 <pixel/px_sphere.scad>;
use <noise/nz_worley3.scad>;
grid_w = 10;
dist = "border"; // [euclidean, manhattan, chebyshev, border]
seed = 51;
points = px_sphere(20);
cells = [for(p = points) nz_worley3(p[0], p[1], p[2], seed, grid_w, dist)];
max_dist = max([for(c = cells) c[3]]);
for(i = [0:len(cells) - 1]) {
c = cells[i][3] / max_dist * 1.5;
color([c > 1 ? 1 : c, 0, 0])
translate(points[i])
cube(1);
}
![nz_worley3](images/lib2x-nz_worley3-1.JPG)

42
docs/lib2x-nz_worley3s.md Normal file
View File

@@ -0,0 +1,42 @@
# nz_worley3s
Returns 3D [Worley noise](https://en.wikipedia.org/wiki/Worley_noise) values `[cell_x, cell_y, cell_y, noise]` at (x, y, z) coordinates.
It divides the space into grids. The nucleus of each cell is randomly placed in a grid.
**Since:** 2.3
## Parameters
- `points` : A list of `[x, y, z]` coordinates.
- `seed` : The random seed.
- `grid_w` : The grid width. Default to 10. Smaller `grid_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 <pixel/px_sphere.scad>;
use <noise/nz_worley3s.scad>;
tile_w = 10;
dist = "euclidean"; // [euclidean, manhattan, chebyshev, border]
seed = 51;
points = px_sphere(20);
cells = nz_worley3s(points, seed, tile_w, dist);
for(i = [0:len(cells) - 1]) {
c = (norm([cells[i][0], cells[i][1], cells[i][2]]) % 20) / 20;
color([c, c, c])
translate(points[i])
cube(1);
}
![nz_worley3s](images/lib2x-nz_worley3s-1.JPG)
You can build things like [worley_noise_ball](https://github.com/JustinSDK/dotSCAD/blob/master/examples/worley_noise_ball.scad).
![nz_worley3s](images/lib2x-nz_worley3s-2.JPG)
![nz_worley3s](images/lib2x-nz_worley3s-3.JPG)