From a325eb7f4dc4db67bce771c7cd0a5f5be0d25d37 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Mon, 29 May 2017 17:28:23 +0800 Subject: [PATCH] refactored --- src/hexagons.scad | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/hexagons.scad b/src/hexagons.scad index 39ef07e3..170e7f2c 100644 --- a/src/hexagons.scad +++ b/src/hexagons.scad @@ -17,6 +17,7 @@ module hexagons(radius, spacing, levels) { offset_y = radius + radius * sin(30); r_hexagon = radius - spacing / 2; offset_step = 2 * offset_x; + center_offset = [2 * (offset_x - offset_x * levels) , 0, 0]; module hexagon() { rotate(30) @@ -24,28 +25,25 @@ module hexagons(radius, spacing, levels) { } module line_hexagons(n) { - for(i = [0:n - 1]) { + translate(center_offset) for(i = [0:n - 1]) { offset_p = [i * offset_step, 0, 0]; translate(offset_p) hexagon(); } } - translate([2 * (offset_x - offset_x * levels) , 0, 0]) - union() { - line_hexagons(beginning_n); - - if(levels > 1) { - for(i = [1:beginning_n - levels]) { - x = offset_x * i; - y = offset_y * i; - - translate([x, y, 0]) - line_hexagons(beginning_n - i); + line_hexagons(beginning_n); + + if(levels > 1) { + for(i = [1:beginning_n - levels]) { + x = offset_x * i; + y = offset_y * i; - translate([x, -y, 0]) - line_hexagons(beginning_n - i); - } - } + translate([x, y, 0]) + line_hexagons(beginning_n - i); + + translate([x, -y, 0]) + line_hexagons(beginning_n - i); } + } } \ No newline at end of file