mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-21 14:04:53 +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