diff --git a/src/voxel/_impl/_vx_curve_impl.scad b/src/voxel/_impl/_vx_curve_impl.scad new file mode 100644 index 00000000..1d738d76 --- /dev/null +++ b/src/voxel/_impl/_vx_curve_impl.scad @@ -0,0 +1,12 @@ +use <../vx_bezier.scad>; + +function _vx_catmull_rom_spline_4pts(points, tightness) = + let( + p1x_0tightness = (points[2] - points[0]) / 4 + points[1], + v_p1x = points[1] - p1x_0tightness, + p1x = p1x_0tightness + v_p1x * tightness, + p2x_0tightness = (points[1] - points[3]) / 4 + points[2], + v_p2x = points[2] - p2x_0tightness, + p2x = p2x_0tightness + v_p2x * tightness + ) + vx_bezier(points[1], p1x, p2x, points[2]); \ No newline at end of file diff --git a/src/voxel/vx_curve.scad b/src/voxel/vx_curve.scad index 2e665799..64a4df8e 100644 --- a/src/voxel/vx_curve.scad +++ b/src/voxel/vx_curve.scad @@ -1,17 +1,16 @@ +/** +* vx_curve.scad +* +* @copyright Justin Lin, 2020 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_curve.html +* +**/ + +use <_impl/_vx_curve_impl.scad>; use <../util/sort.scad>; use <../util/dedup.scad>; -use ; - -function _vx_catmull_rom_spline_4pts(points, tightness) = - let( - p1x_0tightness = (points[2] - points[0]) / 4 + points[1], - v_p1x = points[1] - p1x_0tightness, - p1x = p1x_0tightness + v_p1x * tightness, - p2x_0tightness = (points[1] - points[3]) / 4 + points[2], - v_p2x = points[2] - p2x_0tightness, - p2x = p2x_0tightness + v_p2x * tightness - ) - vx_bezier(points[1], p1x, p2x, points[2]); function vx_curve(points, tightness = 0) = let(