1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-22 14:23:23 +02:00

add perlin_sphere

This commit is contained in:
Justin Lin
2021-09-10 09:45:53 +08:00
parent ea36c97ac7
commit 523ce3cb33

View File

@@ -0,0 +1,30 @@
use <util/rand.scad>;
use <noise/nz_perlin3s.scad>;
use <experimental/geom_icosahedron.scad>;
// 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);
}