From b421009f1ebdd121dbae2d694997ad0ec32620aa Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Wed, 16 Dec 2020 13:44:04 +0800 Subject: [PATCH] add doc --- README.md | 2 +- docs/images/lib2x-vx_curve-1.JPG | Bin 0 -> 35065 bytes docs/lib2x-vx_curve.md | 35 +++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 docs/images/lib2x-vx_curve-1.JPG create mode 100644 docs/lib2x-vx_curve.md diff --git a/README.md b/README.md index ab433223..7769fd0d 100644 --- a/README.md +++ b/README.md @@ -242,7 +242,7 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp ### Voxel - [vx_bezier](https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_bezier.html) -- vx_curve +- [vx_curve](https://openhome.cc/eGossip/OpenSCAD/lib2x-vx_curve.html) - vx_contour ### Maze diff --git a/docs/images/lib2x-vx_curve-1.JPG b/docs/images/lib2x-vx_curve-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..4d460b6a0aedf74afd11ec16fcecd4fb829ac341 GIT binary patch literal 35065 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 Crh_*C literal 0 HcmV?d00001 diff --git a/docs/lib2x-vx_curve.md b/docs/lib2x-vx_curve.md new file mode 100644 index 00000000..b56846a2 --- /dev/null +++ b/docs/lib2x-vx_curve.md @@ -0,0 +1,35 @@ +# vx_curve + +Draws a voxel-by-voxel curve from control points. The curve is drawn only from the 2nd control point to the second-last control point. It's a voxel version of [curve](https://openhome.cc/eGossip/OpenSCAD/lib2x-curve.html). + +## Parameters + +- `points` : A list of `[x, y]` or `[x, y, z]` control points. +- `tightness` : You can view it as the curve tigntness if you provide a value between 0.0 and 1.0. The default value is 0.0. See [curve](https://openhome.cc/eGossip/OpenSCAD/lib2x-curve.html) for details. + +## Examples + + use ; + use ; + + pts = [ + [28, 2, 1], + [15, 8, -10], + [2, 14, 5], + [28, 14, 2], + [15, 21, 9], + [2, 28, 0] + ]; + + for(pt = vx_curve(pts)) { + translate(pt) + cube(1); + } + + #for(pt = pts) { + translate(pt) + sphere(1); + } + #hull_polyline3d(pts, .1); + +![vx_curve](images/lib2x-vx_curve-1.JPG)