diff --git a/docs/images/lib-voronoi3d-1.JPG b/docs/images/lib-voronoi3d-1.JPG new file mode 100644 index 00000000..2557f9cc Binary files /dev/null and b/docs/images/lib-voronoi3d-1.JPG differ diff --git a/docs/images/lib-voronoi3d-2.JPG b/docs/images/lib-voronoi3d-2.JPG new file mode 100644 index 00000000..ed780011 Binary files /dev/null and b/docs/images/lib-voronoi3d-2.JPG differ diff --git a/docs/lib-vorono3d.md b/docs/lib-vorono3d.md new file mode 100644 index 00000000..4fac3aa1 --- /dev/null +++ b/docs/lib-vorono3d.md @@ -0,0 +1,55 @@ +# voronoi + +Creats a three version of [Voronoi diagram](https://en.wikipedia.org/wiki/Voronoi_diagram). The initial space for each cell is calculated automatically from the given points by the following code: + + xs = [for(p = points) p[0]]; + ys = [for(p = points) abs(p[1])]; + zs = [for(p = points) abs(p[2])]; + space_size = max([(max(xs) - min(xs) / 2), (max(ys) - min(ys)) / 2, (max(zs) - min(zs)) / 2]); + +The preview or rendering of 3D Voronoi is slow. If you want to use this module, render and export the 3D Voronoi model first. Then, `import` the model to do what you want. + +**Since:** 1.3. + +## Parameters + +- `points` : Points for each cell. +- `spacing` : Distance between cells. Default to 1. +- `space_type` : The initial space for each cell can be `"cube"` or `"sphere"`. Default to `"cube"`. + +## Examples + + include ; + + r = 30; + + zas = rands(0, 359, 12); + yas = rands(0, 179, 12); + + points = [ + for(i = [0:len(zas) - 1]) + [ + r * cos(yas[i]) * cos(zas[i]), + r * cos(yas[i]) * sin(zas[i]), + r * sin(yas[i]) + ] + ]; + + #for(pt = points) { + translate(pt) cube(1); + } + +![voronoi](images/lib-voronoi3d-1.JPG) + + If you render, export and save the previous model as `voronoi3d.stl`, the following code will generate a Voronoi sphere. + + r = 30; + thickness = 2; + + difference() { + sphere(r); + scale(1.01) import("voronoi3d.stl"); + sphere(r - thickness); + } + +![voronoi](images/lib-voronoi3d-2.JPG) \ No newline at end of file