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:
30
src/experimental/perlin_sphere.scad
Normal file
30
src/experimental/perlin_sphere.scad
Normal 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);
|
||||||
|
}
|
Reference in New Issue
Block a user