1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-20 05:21:38 +02:00

it doesn't require mirror now

This commit is contained in:
Justin Lin
2020-03-10 11:46:34 +08:00
parent 1cdb460901
commit ebe1ddffe5

View File

@@ -2,6 +2,7 @@ use <util/rand.scad>;
use <experimental/pnoise2s.scad>; use <experimental/pnoise2s.scad>;
use <experimental/sf_solidify.scad>; use <experimental/sf_solidify.scad>;
use <experimental/ptf_bend.scad>; use <experimental/ptf_bend.scad>;
use <util/slice.scad>;
radius = 40; radius = 40;
height = 100; height = 100;
@@ -9,7 +10,7 @@ thickness_scale = 1;
step = 4; step = 4;
module perlin_noise_cylinder(radius, height, thickness_scale, step) { module perlin_noise_cylinder(radius, height, thickness_scale, step) {
size = [PI * radius, height]; size = [2 * PI * radius, height];
surface_inside = [ surface_inside = [
for(y = [0:step:size[1]]) for(y = [0:step:size[1]])
@@ -25,7 +26,12 @@ module perlin_noise_cylinder(radius, height, thickness_scale, step) {
seed = rand(0, 256); seed = rand(0, 256);
surface_outside = [ surface_outside = [
for(ri = [0:len(surface_inside) - 1]) 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]) for(ci = [0:len(ns) - 1])
[surface_inside[ri][ci][0], surface_inside[ri][ci][1], thickness_scale * (ns[ci] + 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 = [ t_surface_outside = [
for(row = surface_outside) for(row = surface_outside)
[for(p = row) [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 = [ t_surface_insde = [
for(row = surface_inside) for(row = surface_inside)
[for(p = row) [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); sf_solidify(t_surface_outside, t_surface_insde);
mirror([0, 1, 0])
sf_solidify(t_surface_outside, t_surface_insde);
}
} }
perlin_noise_cylinder(radius, height, thickness_scale, step); perlin_noise_cylinder(radius, height, thickness_scale, step);