1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-16 03:34:42 +02:00

refactored

This commit is contained in:
Justin Lin
2017-05-29 18:11:47 +08:00
parent c335b4ab82
commit 5ba37b690d

View File

@@ -24,29 +24,43 @@ module hexagons(radius, spacing, levels) {
circle(r_hexagon, $fn = 6); circle(r_hexagon, $fn = 6);
} }
function offset_xs(n) = module line_hexagons(hex_datum) {
[for(i = [0:n - 1]) i * offset_step + center_offset]; tx = hex_datum[0][0];
ty = hex_datum[0][1];
n = hex_datum[1];
module line_hexagons(n) { offset_xs = [for(i = [0:n - 1]) i * offset_step + center_offset];
for(x = offset_xs(n)) { for(x = offset_xs) {
translate([x, 0, 0]) p = [x + tx, ty, 0];
translate(p)
hexagon(); hexagon();
} }
} }
line_hexagons(beginning_n); upper_hex_data = levels > 1 ? [
for(i = [1:beginning_n - levels])
let(
x = offset_x * i,
y = offset_y * i,
n = beginning_n - i
) [[x, y], n]
] : [];
if(levels > 1) { lower_hex_data = levels > 1 ? [
for(i = [1:beginning_n - levels]) { for(hex_datum = upper_hex_data)
x = offset_x * i; [[hex_datum[0][0], -hex_datum[0][1]], hex_datum[1]]
y = offset_y * i; ] : [];
n = beginning_n - i;
translate([x, y, 0]) total_hex_data = concat(
line_hexagons(n); [
[[0, 0], beginning_n] // first line
],
upper_hex_data,
lower_hex_data
);
translate([x, -y, 0]) for(hex_datum = total_hex_data) {
line_hexagons(n); line_hexagons(hex_datum);
}
} }
} }