mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-21 22:05:27 +02:00
add mz_initialize
This commit is contained in:
39
src/maze/_impl/_mz_initialize.scad
Normal file
39
src/maze/_impl/_mz_initialize.scad
Normal file
@@ -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
|
||||
)
|
||||
];
|
4
src/maze/mz_initialize.scad
Normal file
4
src/maze/mz_initialize.scad
Normal file
@@ -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);
|
Reference in New Issue
Block a user