diff --git a/src/__private__/__triangles_radial.scad b/src/__private__/__triangles_radial.scad new file mode 100644 index 00000000..f6c0fdcd --- /dev/null +++ b/src/__private__/__triangles_radial.scad @@ -0,0 +1 @@ + function __triangles_radial(shape_pts) = [for(i = [1:len(shape_pts) - 2]) [0, i, i + 1]]; \ No newline at end of file diff --git a/src/polysections.scad b/src/polysections.scad index 262d9ed7..c8c43c15 100644 --- a/src/polysections.scad +++ b/src/polysections.scad @@ -11,6 +11,8 @@ * **/ +include <__private__/__triangles_radial.scad>; + module polysections(sections, triangles = "RADIAL") { module tri_sections(tri1, tri2) { polyhedron( @@ -28,14 +30,9 @@ module polysections(sections, triangles = "RADIAL") { i == len(vector) ? [] : concat(vector[i], flat(vector, i + 1)); - leng_section = len(sections[0]); - - function radial_tris() = [ - for(i = [1:leng_section - 2]) [0, i, i + 1] - ]; - function hollow_tris() = let( + leng_section = len(sections[0]), inner_i_begin = leng_section / 2, pair_idxes = [for(i = [0:inner_i_begin - 1]) let(n = inner_i_begin + i + 1) @@ -48,7 +45,7 @@ module polysections(sections, triangles = "RADIAL") { ) flat(pair_idxes); - function tris() = triangles == "RADIAL" ? radial_tris() : + function tris() = triangles == "RADIAL" ? __triangles_radial(sections[0]) : (triangles == "HOLLOW" ? hollow_tris() : triangles); module two_sections(section1, section2) { diff --git a/src/shape_ellipse.scad b/src/shape_ellipse.scad index 20f0fe5c..97c60ad9 100644 --- a/src/shape_ellipse.scad +++ b/src/shape_ellipse.scad @@ -13,6 +13,7 @@ **/ include <__private__/__frags.scad>; +include <__private__/__triangles_radial.scad>; function shape_ellipse(axes) = let( @@ -22,7 +23,7 @@ function shape_ellipse(axes) = for(a = [0:step_a:360 - step_a]) [axes[0] * cos(a), axes[1] * sin(a)] ], - triangles = [for(i = [1:len(shape_pts) - 2]) [0, i, i + 1]] + triangles = __triangles_radial(shape_pts) ) [ shape_pts, diff --git a/src/shape_pie.scad b/src/shape_pie.scad index 4876d473..a2922e33 100644 --- a/src/shape_pie.scad +++ b/src/shape_pie.scad @@ -13,6 +13,7 @@ **/ include <__private__/__frags.scad>; +include <__private__/__triangles_radial.scad>; function shape_pie(radius, angles) = let( @@ -32,7 +33,7 @@ function shape_pie(radius, angles) = ], [edge_r_end * [cos(angles[1]), sin(angles[1])]] ), - triangles = [for(i = [1:len(shape_pts) - 2]) [0, i, i + 1]] + triangles = __triangles_radial(shape_pts) ) [ shape_pts, diff --git a/src/shape_square.scad b/src/shape_square.scad index e40a183c..6b2a459c 100644 --- a/src/shape_square.scad +++ b/src/shape_square.scad @@ -14,6 +14,7 @@ include <__private__/__is_vector.scad>; include <__private__/__frags.scad>; +include <__private__/__triangles_radial.scad>; function shape_square(size, corner_r = 0) = let( @@ -37,7 +38,7 @@ function shape_square(size, corner_r = 0) = [[-half_w, -half_y], [half_w, -half_y]], [for(a = [270 + step_a:step_a:360 - step_a]) [corner_r * cos(a) + half_w, corner_r * sin(a) - half_h]] ), - triangles = [for(i = [1:len(shape_pts) - 2]) [0, i, i + 1]] + triangles = __triangles_radial(shape_pts) ) [ shape_pts,