From f0b8da8a2592d2047e827d18c71d91c1305a65dc Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Tue, 17 Mar 2020 11:26:51 +0800 Subject: [PATCH] use circle_shape --- src/_impl/_golden_spiral_impl.scad | 4 ++-- src/circle_shape.scad | 22 ++++++++++++++++++++++ src/experimental/demo/loft_demo.scad | 10 +++++----- src/experimental/note.md | 1 + 4 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 src/circle_shape.scad diff --git a/src/_impl/_golden_spiral_impl.scad b/src/_impl/_golden_spiral_impl.scad index 5a3b47af..7ae65751 100644 --- a/src/_impl/_golden_spiral_impl.scad +++ b/src/_impl/_golden_spiral_impl.scad @@ -1,6 +1,6 @@ use <__comm__/__fast_fibonacci.scad>; use ; -use ; +use ; function _fast_fibonacci_sub(nth) = let( @@ -29,7 +29,7 @@ function _golden_spiral_from_ls_or_eql_to(from, to, point_distance, rt_dir) = f2 = __fast_fibonacci(from + 1), fn = floor(f1 * 6.28312 / point_distance), $fn = fn + 4 - (fn % 4), - circle_pts = circle_path(radius = f1, n = $fn / 4 + 1), + circle_pts = circle_shape(radius = f1, n = $fn / 4 + 1), len_pts = len(circle_pts), a_step = 360 / $fn * rt_dir, range_i = [0:len_pts - 1], diff --git a/src/circle_shape.scad b/src/circle_shape.scad new file mode 100644 index 00000000..a2b9289a --- /dev/null +++ b/src/circle_shape.scad @@ -0,0 +1,22 @@ +/** +* circle_shape.scad +* +* @copyright Justin Lin, 2017 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-circle_shape.html +* +**/ + +use <__comm__/__frags.scad>; + +function circle_shape(radius, n) = + let( + _frags = __frags(radius), + step_a = 360 / _frags, + end_a = 360 - step_a * ((is_undef(n) || n > _frags) ? 1 : _frags - n + 1) + ) + [ + for(a = 0; a <= end_a; a = a + step_a) + [radius * cos(a), radius * sin(a)] + ]; diff --git a/src/experimental/demo/loft_demo.scad b/src/experimental/demo/loft_demo.scad index bfccecc9..4c658190 100644 --- a/src/experimental/demo/loft_demo.scad +++ b/src/experimental/demo/loft_demo.scad @@ -1,5 +1,5 @@ use ; -use ; +use ; use ; use ; @@ -15,16 +15,16 @@ translate([30, 0, 0]) difference() { loft( [ - [for(p = circle_path(10, $fn = 3)) [p[0], p[1], 15]], - [for(p = circle_path(15, $fn = 24)) [p[0], p[1], 0]] + [for(p = circle_shape(10, $fn = 3)) [p[0], p[1], 15]], + [for(p = circle_shape(15, $fn = 24)) [p[0], p[1], 0]] ], slices = 4 ); loft( [ - [for(p = circle_path(8, $fn = 3)) [p[0], p[1], 15.1]], - [for(p = circle_path(13, $fn = 24)) [p[0], p[1], -0.1]] + [for(p = circle_shape(8, $fn = 3)) [p[0], p[1], 15.1]], + [for(p = circle_shape(13, $fn = 24)) [p[0], p[1], -0.1]] ], slices = 4 ); diff --git a/src/experimental/note.md b/src/experimental/note.md index 7b191a2b..468d1604 100644 --- a/src/experimental/note.md +++ b/src/experimental/note.md @@ -1,5 +1,6 @@ - deprecate `polysections`, use `sweep`. - deprecate `trianglate`, use `tri_ear_clipping`. +- deprecate `circle_path`, `use circle_shape`. Preview