diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bezier.scad | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/bezier.scad b/lib/bezier.scad new file mode 100644 index 0000000..8fb41e9 --- /dev/null +++ b/lib/bezier.scad @@ -0,0 +1,12 @@ + +function de_casteljau(points, t) = + len(points) == 1 ? + points[0] : + de_casteljau( + [for (i = [0:len(points)-2]) (1 - t) * points[i] + t * points[i + 1]], + t + ) ; + +function bezier_curve(points, $fn=$fn) = + [for (i = [0:$fn]) de_casteljau(points, i / $fn)] ; + |