From cb026bbae958b26f5d1fd363c458eb4301c983aa Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Mon, 8 May 2017 09:56:23 +0800 Subject: [PATCH] added shape_pie --- README.md | 7 +++--- docs/images/lib-shape_pie-1.JPG | Bin 0 -> 12831 bytes docs/lib-shape_pie.md | 35 ++++++++++++++++++++++++++++ src/shape_pie.scad | 40 ++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 docs/images/lib-shape_pie-1.JPG create mode 100644 docs/lib-shape_pie.md create mode 100644 src/shape_pie.scad diff --git a/README.md b/README.md index f26a068c..42ff18c6 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,8 @@ Too many dependencies? Because OpenSCAD doesn't provide namespace management, I ## Documentation - 2D - - [pie](https://openhome.cc/eGossip/OpenSCAD/lib-pie.html) - - [arc](https://openhome.cc/eGossip/OpenSCAD/lib-arc.html) + - [arc](https://openhome.cc/eGossip/OpenSCAD/lib-arc.html) + - [pie](https://openhome.cc/eGossip/OpenSCAD/lib-pie.html) - [ellipse](https://openhome.cc/eGossip/OpenSCAD/lib-ellipse.html) - [rounded_square](https://openhome.cc/eGossip/OpenSCAD/lib-rounded_square.html) - [line2d](https://openhome.cc/eGossip/OpenSCAD/lib-line2d.html) @@ -80,7 +80,8 @@ Too many dependencies? Because OpenSCAD doesn't provide namespace management, I - [sphere_spiral_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-sphere_spiral_extrude.html) - Shape - - [shape_ellipse](https://openhome.cc/eGossip/OpenSCAD/lib-shape_ellipse.html) + - [shape_pie](https://openhome.cc/eGossip/OpenSCAD/lib-shape_pie.html) + - [shape_ellipse](https://openhome.cc/eGossip/OpenSCAD/lib-shape_ellipse.html) - [shape_square](https://openhome.cc/eGossip/OpenSCAD/lib-shape_square.html) - [shape_pentagram](https://openhome.cc/eGossip/OpenSCAD/lib-shape_pentagram.html) diff --git a/docs/images/lib-shape_pie-1.JPG b/docs/images/lib-shape_pie-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..07ac8015edaddc8e5b6d3a9def79d813c3ac055d GIT binary patch literal 12831 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 literal 0 HcmV?d00001 diff --git a/docs/lib-shape_pie.md b/docs/lib-shape_pie.md new file mode 100644 index 00000000..3cfa0ea4 --- /dev/null +++ b/docs/lib-shape_pie.md @@ -0,0 +1,35 @@ +# shape_pie + +Returns shape points and triangle indexes of a pie (circular sector) shape. They can be used with xxx_extrude modules of dotSCAD. The shape points can be also used with the built-in polygon module. + +## Parameters + +- `radius` : The radius of the circle. +- `angles` : A 2 element vector which defines the central angle. The first element of the vector is the beginning angle in degrees, and the second element is the ending angle. +- `$fa`, `$fs`, `$fn` : Check [the circle module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_the_2D_Subsystem#circle) for more details. + +## Examples + + include ; + + shape_pts_tris = shape_pie(10, [45, 315], $fn = 24); + +![shape_pie](images/lib-shape_pie-1.JPG) + +include ; +include ; +include ; +include ; +include ; +include ; + +shape_pts_tris = shape_pie(10, [45, 315], $fn = 8); + +helix_extrude(shape_pts_tris[0], + radius = 40, + levels = 5, + level_dist = 20, + triangles = shape_pts_tris[1] +); + +![shape_pie](images/lib-shape_pie-2.JPG) diff --git a/src/shape_pie.scad b/src/shape_pie.scad new file mode 100644 index 00000000..4876d473 --- /dev/null +++ b/src/shape_pie.scad @@ -0,0 +1,40 @@ +/** +* shape_pie.scad +* +* Returns shape points and triangle indexes of a pie (circular sector) shape. +* They can be used with xxx_extrude modules of dotSCAD. +* The shape points can be also used with the built-in polygon module. +* +* @copyright Justin Lin, 2017 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib-shape_pie.html +* +**/ + +include <__private__/__frags.scad>; + +function shape_pie(radius, angles) = + let( + frags = __frags(radius), + a_step = 360 / frags, + leng = radius * cos(a_step / 2), + m = floor(angles[0] / a_step) + 1, + n = floor(angles[1] / a_step), + edge_r_begin = leng / cos((m - 0.5) * a_step - angles[0]), + edge_r_end = leng / cos((n + 0.5) * a_step - angles[1]), + shape_pts = concat( + [[0, 0], edge_r_begin * [cos(angles[0]), sin(angles[0])]], + [ + for(i = [m:n]) + let(a = a_step * i) + radius * [cos(a), sin(a)] + ], + [edge_r_end * [cos(angles[1]), sin(angles[1])]] + ), + triangles = [for(i = [1:len(shape_pts) - 2]) [0, i, i + 1]] + ) + [ + shape_pts, + triangles + ]; \ No newline at end of file