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