From 523ce3cb33d5a0f22aa54cbc67c624bfe9a9e974 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Fri, 10 Sep 2021 09:45:53 +0800 Subject: [PATCH] add perlin_sphere --- src/experimental/perlin_sphere.scad | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/experimental/perlin_sphere.scad diff --git a/src/experimental/perlin_sphere.scad b/src/experimental/perlin_sphere.scad new file mode 100644 index 00000000..31271188 --- /dev/null +++ b/src/experimental/perlin_sphere.scad @@ -0,0 +1,30 @@ +use ; +use ; +use ; + +// radius = 30; +// detail = 4; +// amplitude = 10; +// period = 20; + +// perlin_sphere(radius, detail, amplitude, period); + +module perlin_sphere(radius, detail, amplitude, period = 10, seed = undef) { + points_faces = geom_icosahedron(radius, detail, quick_mode = false); + points = points_faces[0]; + faces = points_faces[1]; + + sd = is_undef(seed) ? rand() * 1000: seed; + noisy = nz_perlin3s(points / period, sd); + + noisy_points = [ + for(i = [0:len(points) - 1]) + let( + p = points[i], + nz = noisy[i] + ) + p / norm(p) * (radius + nz * amplitude) + ]; + + polyhedron(noisy_points, faces); +} \ No newline at end of file