From a669fbf074c426fa1923789e363bfcfef89d4321 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Tue, 15 Dec 2020 17:28:27 +0800 Subject: [PATCH] add doc --- README.md | 4 ++-- docs/images/lib2x-vx_bezier-1.JPG | Bin 0 -> 28481 bytes docs/lib2x-vx_bezier.md | 33 ++++++++++++++++++++++++++++++ src/voxel/vx_bezier.scad | 10 +++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 docs/images/lib2x-vx_bezier-1.JPG create mode 100644 docs/lib2x-vx_bezier.md diff --git a/README.md b/README.md index 6348a7c5..ab433223 100644 --- a/README.md +++ b/README.md @@ -241,9 +241,9 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp ### Voxel -- vx_contour -- vx_bezier +- [vx_bezier](https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_bezier.html) - vx_curve +- vx_contour ### Maze diff --git a/docs/images/lib2x-vx_bezier-1.JPG b/docs/images/lib2x-vx_bezier-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..156ea5ed41d663a4384c80db1f517cf9d9399c2d GIT binary patch literal 28481 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 + + t_step = 0.05; + width = 2; + + p1 = [0, 0, 0]; + p2 = [30, 15, 25]; + p3 = [-35, 20, -20]; + p4 = [10, 40, 9]; + + points = vx_bezier( + p1, p2, p3, p4 + ); + + for(p = points) { + translate(p) + cube(1); + } + +![vx_bezier](images/lib2x-vx_bezier-1.JPG) diff --git a/src/voxel/vx_bezier.scad b/src/voxel/vx_bezier.scad index eb973ec1..0b33f54b 100644 --- a/src/voxel/vx_bezier.scad +++ b/src/voxel/vx_bezier.scad @@ -1,3 +1,13 @@ +/** +* vx_bezier.scad +* +* @copyright Justin Lin, 2020 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_bezier.html +* +**/ + use <__comm__/__to2d.scad>; use <__comm__/__to3d.scad>; use <_impl/_vx_bezier_impl.scad>;