From e3ac8d6ba0ae0a7bc93fea88363af4c65b469459 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Wed, 18 Nov 2020 17:37:24 +0800 Subject: [PATCH] add mz_initialize --- src/maze/_impl/_mz_initialize.scad | 39 ++++++++++++++++++++++++++++++ src/maze/mz_initialize.scad | 4 +++ 2 files changed, 43 insertions(+) create mode 100644 src/maze/_impl/_mz_initialize.scad create mode 100644 src/maze/mz_initialize.scad diff --git a/src/maze/_impl/_mz_initialize.scad b/src/maze/_impl/_mz_initialize.scad new file mode 100644 index 00000000..4cb3feb1 --- /dev/null +++ b/src/maze/_impl/_mz_initialize.scad @@ -0,0 +1,39 @@ + +use <_mz_comm.scad>; + +// create a starting maze for being visited later. +function _rc_maze(rows, columns) = [ + for(y = [1:rows]) + for(x = [1:columns]) + block( + x, y, + // all blocks have top and right walls + 3, + // unvisited + false + ) +]; + +function _mz_mask(mask) = + let( + rows = len(mask), + columns = len(mask[0]) + ) + [ + for(y = [1:rows]) + for(x = [1:columns]) + mask[rows - y][x - 1] == 0 ? + block( + x, y, + 4, // mask + true // visited + ) + : + block( + x, y, + // all blocks have top and right walls + 3, + // unvisited + false + ) + ]; \ No newline at end of file diff --git a/src/maze/mz_initialize.scad b/src/maze/mz_initialize.scad new file mode 100644 index 00000000..0d3f3589 --- /dev/null +++ b/src/maze/mz_initialize.scad @@ -0,0 +1,4 @@ +use <_impl/_mz_initialize.scad>; + +function mz_initialize(row, columns, mask) = + is_undef(mask) ? _rc_maze(rows, columns) : _mz_mask(mask); \ No newline at end of file