From e9dd4418d1717b9631c2ccd2b825838d888c5562 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Fri, 18 Mar 2022 12:01:42 +0800 Subject: [PATCH] refactor --- src/__comm__/_str_hash.scad | 7 ++++++- src/experimental/polar_zonohedra.scad | 22 ---------------------- src/util/_impl/_shuffle_impl.scad | 7 ++++++- src/util/sub_str.scad | 6 +++++- src/util/sum.scad | 7 ++++++- 5 files changed, 23 insertions(+), 26 deletions(-) delete mode 100644 src/experimental/polar_zonohedra.scad diff --git a/src/__comm__/_str_hash.scad b/src/__comm__/_str_hash.scad index acb12883..a02c8cdc 100644 --- a/src/__comm__/_str_hash.scad +++ b/src/__comm__/_str_hash.scad @@ -4,5 +4,10 @@ function _str_hash(value) = end = len(chars) - 1 ) end == 0 ? ord(chars[0]) : - let(cum_total = [for(i = 0, s = ord(chars[0]); i < end; i = i + 1, s = s + (ord(chars[i]) * 31 ^ i)) s]) + let( + cum_total = [ + for(i = 0, s = ord(chars[0]), is_continue = i < end; + is_continue; + i = i + 1, is_continue = i < end, s = is_continue ? s + (ord(chars[i]) * 31 ^ i) : undef) s] + ) cum_total[end - 1] + (ord(chars[end]) * 31 ^ end); diff --git a/src/experimental/polar_zonohedra.scad b/src/experimental/polar_zonohedra.scad deleted file mode 100644 index 6844f740..00000000 --- a/src/experimental/polar_zonohedra.scad +++ /dev/null @@ -1,22 +0,0 @@ -use ; -use ; - -module polar_zonohedra(n){ - spiral = [ - for(r=[0:n]) - let(p = ptf_rotate([10, 0, PI * 10 * r / n], [0, 0, -360 * r / n]) - [10, 0, 0]) - [p[0], p[1], p[2] * 1.75] - ]; - - sections = [ - for(i=[0:n]) - [for(p = spiral) ptf_rotate(p, [0, 0, 360 * i / n])] - ]; - - sweep(sections); -} - -for(n = [4:8]) { - translate([50 * (n - 4), 0, 0]) - polar_zonohedra(n); -} \ No newline at end of file diff --git a/src/util/_impl/_shuffle_impl.scad b/src/util/_impl/_shuffle_impl.scad index 6f44edd9..53aef922 100644 --- a/src/util/_impl/_shuffle_impl.scad +++ b/src/util/_impl/_shuffle_impl.scad @@ -3,5 +3,10 @@ use <../swap.scad>; function _shuffle(lt, indices, leng) = let(end = len(lt) - 1) end == 0 ? lt : - let(cum = [for(i = 0, s = swap(lt, i, indices[i]); i < end; i = i + 1, s = swap(s, i, indices[i])) s]) + let( + cum = [ + for(i = 0, s = swap(lt, 0, indices[0]), is_continue = i < end; + is_continue; + i = i + 1, is_continue = i < end, s = is_continue ? swap(s, i, indices[i]) : undef) s] + ) swap(cum[end - 1], end, indices[end]); \ No newline at end of file diff --git a/src/util/sub_str.scad b/src/util/sub_str.scad index aa2fd6a9..c0ffa8cd 100644 --- a/src/util/sub_str.scad +++ b/src/util/sub_str.scad @@ -11,6 +11,10 @@ function sub_str(t, begin, end) = let( ed = is_undef(end) ? len(t) : end, - cum = [for(i = begin, s = t[i]; i < ed; i = i + 1, s = str(s, t[i])) s] + cum = [ + for(i = begin, s = t[i], is_continue = i < ed; + is_continue; + i = i + 1, is_continue = i < ed, s = is_continue ? str(s, t[i]) : undef) s + ] ) cum[len(cum) - 1]; \ No newline at end of file diff --git a/src/util/sum.scad b/src/util/sum.scad index b36bfe96..e021d73b 100644 --- a/src/util/sum.scad +++ b/src/util/sum.scad @@ -11,5 +11,10 @@ function sum(lt) = let(end = len(lt) - 1) end == 0 ? lt[0] : - let(cum_total = [for(i = 0, s = lt[0]; i < end; i = i + 1, s = s + lt[i]) s]) + let( + cum_total = [ + for(i = 0, s = lt[0], is_continue = i < end; + is_continue; + i = i + 1, is_continue = i < end, s = is_continue ? s + lt[i] : undef) s] + ) cum_total[end - 1] + lt[end]; \ No newline at end of file