From 2f7993b70acf18998fb55bf306bf3cb48ced5c64 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Tue, 18 Feb 2020 15:51:27 +0800 Subject: [PATCH] add sphere_surface --- src/experimental/sphere_surface.scad | 42 ++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/experimental/sphere_surface.scad diff --git a/src/experimental/sphere_surface.scad b/src/experimental/sphere_surface.scad new file mode 100644 index 00000000..7e5e624d --- /dev/null +++ b/src/experimental/sphere_surface.scad @@ -0,0 +1,42 @@ +use ; +use ; + +module sphere_surface(levels, radius, thickness, angle = [180, 360], invert = false) { + columns = len(levels); + rows = len(levels[0]); + + size = [columns - 1, rows - 1]; + + surface1 = [ + for(r = [0:rows - 1]) + [ + for(c = [0:columns - 1]) + let(lv = invert ? 255 - levels[c][r] : levels[c][r]) + [c, r, lv / 255 * thickness] + ] + ]; + + surface2 = [ + for(r = [0:rows - 1]) + [ + for(c = [0:columns - 1]) + [c, r, 0] + ] + ]; + + surface_grapher( + [ + for(row = surface1) + [ + for(p = row) tf_sphere(size, p, radius + thickness, angle) + ] + ] + , + [ + for(row = surface2) + [ + for(p = row) tf_sphere(size, p, radius, angle) + ] + ] + ); +} \ No newline at end of file