From 85449ed29e6c8aa27ae5484f2bcec5b98696716e Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sat, 22 May 2021 12:07:08 +0800 Subject: [PATCH] add sf_curve --- src/surface/sf_curve.scad | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/surface/sf_curve.scad diff --git a/src/surface/sf_curve.scad b/src/surface/sf_curve.scad new file mode 100644 index 00000000..022422ac --- /dev/null +++ b/src/surface/sf_curve.scad @@ -0,0 +1,29 @@ +use <_impl/_sf_square_surfaces.scad>; +use ; +use ; + +module sf_curve(levels, points, thickness, depth, invert = false) { + rows = len(levels); + columns = len(levels[0]); + + normal_vts = [ + for(i = [0:columns - 1]) + let(v = points[i + 1] - points[i]) + ptf_rotate(v / norm(v), [0, -90, 0]) + ]; + + dp = is_undef(depth) ? thickness / 2 : depth; + surfaces = _sf_square_surfaces(levels, thickness, dp, invert); + + function _curve(s) = [ + for(y = [0:rows - 1]) + [ + for(x = [0:columns - 1]) + let(p = points[x]) + [p[0], y, p[2]] + normal_vts[x] * s[y][x][2] + ] + ]; + + + sf_solidify(_curve(surfaces[0]), _curve(surfaces[1])); +} \ No newline at end of file