From e046155b36af5c66ca208a01885f0f5f4ef6963f Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Wed, 19 Feb 2020 13:54:35 +0800 Subject: [PATCH] refactor --- src/experimental/sf_sphere.scad | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/src/experimental/sf_sphere.scad b/src/experimental/sf_sphere.scad index a3b92c85..d7f13b91 100644 --- a/src/experimental/sf_sphere.scad +++ b/src/experimental/sf_sphere.scad @@ -1,3 +1,4 @@ +use ; use ; use ; @@ -9,38 +10,22 @@ use ; invert: inverts how the gray levels are translated into height values. */ module sf_sphere(levels, radius, thickness, angle = [180, 360], invert = false) { + surface = _sf_square_surfaces(levels, thickness, invert); rows = len(levels); columns = len(levels[0]); size = [columns - 1, rows - 1]; - surface1 = [ - for(r = [0:rows - 1]) - [ - for(c = [0:columns - 1]) - let(lv = invert ? 255 - levels[rows - r - 1][c] : levels[rows - r - 1][c]) - [c, r, lv / 255 * thickness] - ] - ]; - - surface2 = [ - for(r = [0:rows - 1]) - [ - for(c = [0:columns - 1]) - [c, r, 0] - ] - ]; - offset_z = invert ? thickness : 0; sf_solidify( [ - for(row = surface1) + for(row = surface[0]) [ for(p = row) tf_sphere(size, p, radius + offset_z, angle) ] ] , [ - for(row = surface2) + for(row = surface[1]) [ for(p = row) tf_sphere(size, p, radius, angle) ]