From 1723ba3abe66123abc5690677b483306ea66fd53 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Wed, 16 Mar 2022 09:46:31 +0800 Subject: [PATCH] refactor --- src/maze/mz_hexwalls.scad | 5 +++-- src/maze/mz_square_cells.scad | 5 +++-- src/maze/mz_squarewalls.scad | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/maze/mz_hexwalls.scad b/src/maze/mz_hexwalls.scad index ab5da115..b9f5c7ad 100644 --- a/src/maze/mz_hexwalls.scad +++ b/src/maze/mz_hexwalls.scad @@ -9,11 +9,12 @@ **/ use <_impl/_mz_hex_walls.scad>; +use <../util/find_index.scad>; function mz_hexwalls(cells, cell_radius, left_border = true, bottom_border = true) = let( - rows = len([for(cell = cells) if(cell.x == 0) undef]), - columns = len([for(cell = cells) if(cell.y == 0) undef]) + columns = find_index(cells, function(cell) cell.y != 0), + rows = len(cells) / columns ) [ each [for(cell = cells, wall = _build_cell(cell_radius, cell)) wall], diff --git a/src/maze/mz_square_cells.scad b/src/maze/mz_square_cells.scad index a4f04290..5e36322c 100644 --- a/src/maze/mz_square_cells.scad +++ b/src/maze/mz_square_cells.scad @@ -10,13 +10,14 @@ use <_impl/_mz_square_cells_impl.scad>; use ; +use <../util/find_index.scad>; function mz_square_cells(rows, columns, start = [0, 0], init_cells, x_wrapping = false, y_wrapping = false, seed) = let( init_undef = is_undef(init_cells), mz = init_undef ? mz_square_initialize(rows, columns) : init_cells, - r = len([for(cell = mz) if(cell.x == 0) undef]), - c = len([for(cell = mz) if(cell.y == 0) undef]) + c = find_index(mz, function(cell) cell.y != 0), + r = len(mz) / c ) go_maze( start.x, diff --git a/src/maze/mz_squarewalls.scad b/src/maze/mz_squarewalls.scad index 1033e454..1f80493e 100644 --- a/src/maze/mz_squarewalls.scad +++ b/src/maze/mz_squarewalls.scad @@ -9,11 +9,12 @@ **/ use <_impl/_mz_square_walls_impl.scad>; +use <../util/find_index.scad>; function mz_squarewalls(cells, cell_width, left_border = true, bottom_border = true) = let( - rows = len([for(cell = cells) if(cell.x == 0) undef]), - columns = len([for(cell = cells) if(cell.y == 0) undef]), + columns = find_index(cells, function(cell) cell.y != 0), + rows = len(cells) / columns, left_walls = left_border ? [for(y = [0:rows - 1]) [[0, cell_width * (y + 1)], [0, cell_width * y]]] : [], buttom_walls = bottom_border ? [for(x = [0:columns - 1]) [[cell_width * x, 0], [cell_width * (x + 1), 0]]] : [] )