diff --git a/src/_impl/_midpt_smooth_impl.scad b/src/_impl/_midpt_smooth_impl.scad new file mode 100644 index 00000000..d5bd0e4d --- /dev/null +++ b/src/_impl/_midpt_smooth_impl.scad @@ -0,0 +1,14 @@ +function _midpt_smooth_sub(points, iend, closed) = + concat( + [ + for(i = 0; i < iend; i = i + 1) + (points[i] + points[i + 1]) / 2 + ], + closed ? [(points[iend] + points[0]) / 2] : [] + ); + +function _midpt_smooth_impl(points, n, closed) = + let( + smoothed = _midpt_smooth_sub(points, len(points) - 1, closed) + ) + n == 1 ? smoothed : _midpt_smooth_impl(smoothed, n - 1, closed); \ No newline at end of file diff --git a/src/midpt_smooth.scad b/src/midpt_smooth.scad index ffefd922..8047d2c0 100644 --- a/src/midpt_smooth.scad +++ b/src/midpt_smooth.scad @@ -8,17 +8,6 @@ * **/ -function _midpt_smooth_sub(points, iend, closed = false) = - concat( - [ - for(i = 0; i < iend; i = i + 1) - (points[i] + points[i + 1]) / 2 - ], - closed ? [(points[iend] + points[0]) / 2] : [] - ); +use <_impl/_midpt_smooth_impl.scad>; -function midpt_smooth(points, n, closed = false) = - let( - smoothed = _midpt_smooth_sub(points, len(points) - 1, closed) - ) - n == 1 ? smoothed : midpt_smooth(smoothed, n - 1, closed); \ No newline at end of file +function midpt_smooth(points, n, closed = false) = _midpt_smooth_impl(points, n, closed); \ No newline at end of file