From b9e357069b27fefb140ab4757777e9ef6d24d387 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sun, 16 Feb 2020 12:12:29 +0800 Subject: [PATCH] add maze_walls --- src/experimental/__impl__/_maze_walls_impl.scad | 9 +++++++++ src/experimental/maze_walls.scad | 15 +++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 src/experimental/__impl__/_maze_walls_impl.scad create mode 100644 src/experimental/maze_walls.scad diff --git a/src/experimental/__impl__/_maze_walls_impl.scad b/src/experimental/__impl__/_maze_walls_impl.scad new file mode 100644 index 00000000..5c10f097 --- /dev/null +++ b/src/experimental/__impl__/_maze_walls_impl.scad @@ -0,0 +1,9 @@ +use ; + +function block_walls(block, block_width) = + let( + loc = [get_x(block) - 1, get_y(block) - 1] * block_width, + upper = upper_wall(block) || upper_right_wall(block) ? [[0, block_width] + loc, [block_width, block_width] + loc] : [], + right = right_wall(block) || upper_right_wall(block) ? [[block_width, block_width] + loc, [block_width, 0] + loc] : [] + ) + concat(upper, right); diff --git a/src/experimental/maze_walls.scad b/src/experimental/maze_walls.scad new file mode 100644 index 00000000..22d846f8 --- /dev/null +++ b/src/experimental/maze_walls.scad @@ -0,0 +1,15 @@ +use ; + +function maze_walls(blocks, rows, columns, block_width, left_border = true, bottom_border = true) = + let( + left_walls = left_border ? [for(y = [0:rows - 1]) [[0, block_width * (y + 1)], [0, block_width * y]]] : [], + buttom_walls = bottom_border ? [for(x = [0:columns - 1]) [[block_width * x, 0], [block_width * (x + 1), 0]]] : [] + ) + concat( + [ + for(block = blocks) + let(pts = block_walls(block, block_width)) + if(pts != []) pts + ] + , left_walls, buttom_walls + ); \ No newline at end of file