From 02802931928c6ce311962737db8f98af5aa83e69 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Wed, 16 Mar 2022 08:25:01 +0800 Subject: [PATCH] add mz_squarewalls --- src/experimental/note.md | 3 ++- src/maze/mz_squarewalls.scad | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/maze/mz_squarewalls.scad diff --git a/src/experimental/note.md b/src/experimental/note.md index bae9e273..24cbebf4 100644 --- a/src/experimental/note.md +++ b/src/experimental/note.md @@ -9,4 +9,5 @@ new: - noise/worley_sphere? - voronoi/vrn_sphere? - t3d - roll/pitch/forward -- polyline_join: doc multi-childs \ No newline at end of file +- polyline_join: doc multi-childs +- mz_squarewalls \ No newline at end of file diff --git a/src/maze/mz_squarewalls.scad b/src/maze/mz_squarewalls.scad new file mode 100644 index 00000000..28524886 --- /dev/null +++ b/src/maze/mz_squarewalls.scad @@ -0,0 +1,28 @@ +/** +* mz_square_walls.scad +* +* @copyright Justin Lin, 2020 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_square_walls.html +* +**/ + +use <_impl/_mz_square_walls_impl.scad>; + +function mz_squarewalls(cells, cell_width, left_border = true, bottom_border = true) = + let( + rows = len([for(cell = cells) if(cell.y == 0) undef]), + columns = len(cells) - rows, + 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]]] : [] + ) + concat( + [ + for(cell = cells) + let(wall_pts = _square_walls(cell, cell_width)) + if(wall_pts != []) + len(wall_pts) == 4 ? [wall_pts[0], wall_pts[1], wall_pts[3]]: wall_pts + ] + , left_walls, buttom_walls + ); \ No newline at end of file