From 52956bed3fb0e20406cabba0918fddc8ee756213 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Fri, 5 May 2017 10:40:20 +0800 Subject: [PATCH] updated docs --- README.md | 1 + docs/images/lib-golden_spiral_extrude-1.JPG | Bin 0 -> 29049 bytes docs/lib-golden_spiral_extrude.md | 47 ++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 docs/images/lib-golden_spiral_extrude-1.JPG create mode 100644 docs/lib-golden_spiral_extrude.md diff --git a/README.md b/README.md index 3c557567..53328a47 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ Too many dependencies? Because OpenSCAD doesn't provide namespace management, I - [path_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-path_extrude.html) - [ring_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-ring_extrude.html) - [helix_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-helix_extrude.html) + - [golden_spiral_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-golden_spiral_extrude.html) - Other - [turtle2d](https://openhome.cc/eGossip/OpenSCAD/lib-turtle2d.html) diff --git a/docs/images/lib-golden_spiral_extrude-1.JPG b/docs/images/lib-golden_spiral_extrude-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..27ac8888980286368e98cad1c211bda4b663edb5 GIT binary patch literal 29049 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∨iCXthT@BXPc>Z!9gi~k~69`HUw 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 Nz}J6k8!-Hy{y&&)qfr0= literal 0 HcmV?d00001 diff --git a/docs/lib-golden_spiral_extrude.md b/docs/lib-golden_spiral_extrude.md new file mode 100644 index 00000000..58e5f27b --- /dev/null +++ b/docs/lib-golden_spiral_extrude.md @@ -0,0 +1,47 @@ +# golden_spiral_extrude + +Extrudes a 2D shape along the path of a golden spiral. + +When using this module, you should use points to represent the 2D shape. You need to provide indexes of triangles, too. This module provides two prepared triangles indexes. One is `"RADIAL"`. See [polysections](https://openhome.cc/eGossip/OpenSCAD/lib-polysections.html) for details. + +Dependencies: `circle_path`, `rotate_p`, `golden_spiral.scad`, `cross_sections`, `polysections`. + +## Parameters + +- `shape_pts` : A list of points represent a shape. See the example below. +- `from` : The nth Fibonacci number you wanna start from. +- `to` : The nth Fibonacci number you wanna go to. +- `point_distance` : Distance between two points on the path. +- `rt_dir` : `"CT_CLK"` for counterclockwise. `"CLK"` for clockwise. The default value is `"CT_CLK"`. +- `twist` : The number of degrees of through which the shape is extruded. +- `scale` : Scales the 2D shape by this value over the length of the extrusion. Scale can be a scalar or a vector. +- `triangles` : `"RADIAL"` (default), `"HOLLOW"` or user-defined indexes. See [polysections](https://openhome.cc/eGossip/OpenSCAD/lib-polysections.html) for details. + +## Examples + + include ; + include ; + include ; + include ; + include ; + include ; + + shape_pts = [ + [-2, -10], + [-2, 10], + [2, 10], + [2, -10] + ]; + + golden_spiral_extrude( + shape_pts, + from = 3, + to = 10, + point_distance = 1, + rt_dir = "CLK", + twist = 180, + scale = 0.1 + ); + +![golden_spiral_extrude](images/lib-golden_spiral_extrude-1.JPG) +