diff --git a/examples/perlin_noise_cylinder.scad b/examples/perlin_noise_cylinder.scad index 1a361ebf..bfd51612 100644 --- a/examples/perlin_noise_cylinder.scad +++ b/examples/perlin_noise_cylinder.scad @@ -2,6 +2,7 @@ use ; use ; use ; use ; +use ; radius = 40; height = 100; @@ -9,8 +10,8 @@ thickness_scale = 1; step = 4; module perlin_noise_cylinder(radius, height, thickness_scale, step) { - size = [PI * radius, height]; - + size = [2 * PI * radius, height]; + surface_inside = [ for(y = [0:step:size[1]]) concat( @@ -21,11 +22,16 @@ module perlin_noise_cylinder(radius, height, thickness_scale, step) { [[size[0] / 10, y / 10, 0]] ) ]; - + seed = rand(0, 256); surface_outside = [ for(ri = [0:len(surface_inside) - 1]) - let(ns = pnoise2s(surface_inside[ri], seed)) + let( + row = surface_inside[ri], + leng_row = len(row), + row_for_noise = concat(slice(row, 0, leng_row - 1), [[0, row[leng_row - 1][1], 0]]), + ns = pnoise2s(row_for_noise, seed) + ) [ for(ci = [0:len(ns) - 1]) [surface_inside[ri][ci][0], surface_inside[ri][ci][1], thickness_scale * (ns[ci] + 1)] @@ -37,21 +43,17 @@ module perlin_noise_cylinder(radius, height, thickness_scale, step) { t_surface_outside = [ for(row = surface_outside) [for(p = row) - ptf_bend(size_div_10, p, radius_div_10, 180) + ptf_bend(size_div_10, p, radius_div_10, 360) ] ]; t_surface_insde = [ for(row = surface_inside) [for(p = row) - ptf_bend(size_div_10, p, radius_div_10, 180) + ptf_bend(size_div_10, p, radius_div_10, 360) ] ]; - scale(10) { - sf_solidify(t_surface_outside, t_surface_insde); - mirror([0, 1, 0]) - sf_solidify(t_surface_outside, t_surface_insde); - } + sf_solidify(t_surface_outside, t_surface_insde); } perlin_noise_cylinder(radius, height, thickness_scale, step); \ No newline at end of file