From 3ee7d31bb029eb22a6629a6af5a246aee70cc209 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Mon, 21 Dec 2020 08:06:03 +0800 Subject: [PATCH] add doc --- README.md | 2 +- docs/images/lib2x-mz_square_cells-1.JPG | Bin 0 -> 27935 bytes docs/lib2x-mz_square_cells.md | 63 ++++++++++++++++++++++++ src/maze/mz_square_cells.scad | 12 ++++- 4 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 docs/images/lib2x-mz_square_cells-1.JPG create mode 100644 docs/lib2x-mz_square_cells.md diff --git a/README.md b/README.md index b311fe20..578d3e96 100644 --- a/README.md +++ b/README.md @@ -247,7 +247,7 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp ### Maze -- mz_square_blocks +- [mz_square_blocks](https://openhome.cc/eGossip/OpenSCAD/lib2x-mz_square_blocks.html) - mz_square_get - mz_square_initialize - mz_square_walls diff --git a/docs/images/lib2x-mz_square_cells-1.JPG b/docs/images/lib2x-mz_square_cells-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..ecc16bcc02d0747a600e79ca8aac0b6a00062c72 GIT binary patch literal 27935 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 literal 0 HcmV?d00001 diff --git a/docs/lib2x-mz_square_cells.md b/docs/lib2x-mz_square_cells.md new file mode 100644 index 00000000..cefadedc --- /dev/null +++ b/docs/lib2x-mz_square_cells.md @@ -0,0 +1,63 @@ +# mz_square_cells + +This function returns cell data of a square-based maze. The data is a list of cells. A cell has the data structure `[x, y, type, visited]`. `x` and `y` are 0-based. `x` means x-th column and `y` means y-th row for a cell. The value of `type` can be `0`, `1`, ``2`, `3` or `4`. Setting them to constants is convenient. + + NO_WALL = 0; + TOP_WALL = 1; + RIGHT_WALL = 2; + TOP_RIGHT_WALL = 3; + MASK = 4; + +The cell data is seperated from views. You can use cell data to construct [different types of mazes](https://www.thingiverse.com/justinsdk/collections/maze-generator). + +**Since:** 2.5 + +## Parameters + +- `rows` : The number of rows. +- `columns` : The number of columns. +- `start` : The start point to travel the maze. Default to `[0, 0]`. +- `init_cells` : You can define your own initial cell data, a list of `[x, y, type, visited]`s. `visited` means the cell is visited or not. A visited cell won't be visited when traveling the maze. If you don't provide `init_cells`, `mz_square_cells` will generate one automatically. +- `x_wrapping` : Default to `false`. If you want to wrap the maze in the x direction, set it to `true`. The last column of cells will be adjacent to the first column of cells. +- `y_wrapping` : Default to `false`. If you want to wrap the maze in the y direction, set it to `true`. The last row of cells will be adjacent to the first row of cells. +- `seed` : The maze is traveling randomly. Use `seed` to initialize the pseudorandom number generator. + +## Examples + + use ; + use ; + + rows = 10; + columns = 10; + cell_width = 5; + wall_thickness = 2; + + NO_WALL = 0; + TOP_WALL = 1; + RIGHT_WALL = 2; + TOP_RIGHT_WALL = 3; + MASK = 4; + + cells = mz_square_cells(rows, columns); + + for(cell = cells) { + x = cell[0]; + y = cell[1]; + type = cell[2]; + + translate([x, y] * cell_width) { + if(type == TOP_WALL || type == TOP_RIGHT_WALL) { + line2d([0, cell_width], [cell_width, cell_width], wall_thickness); + } + + if(type == RIGHT_WALL || type == TOP_RIGHT_WALL) { + line2d([cell_width, cell_width], [cell_width, 0], wall_thickness); + } + } + } + + line2d([0, 0], [cell_width * rows, 0], wall_thickness); + line2d([0, 0], [0, cell_width * columns], wall_thickness); + +![mz_square_cells](images/lib2x-mz_square_cells-1.JPG) + diff --git a/src/maze/mz_square_cells.scad b/src/maze/mz_square_cells.scad index 4bd8e466..7eeef700 100644 --- a/src/maze/mz_square_cells.scad +++ b/src/maze/mz_square_cells.scad @@ -1,9 +1,19 @@ +/** +* mz_square_cells.scad +* +* @copyright Justin Lin, 2020 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-mz_square_cells.html +* +**/ + use <_impl/_mz_cells_impl.scad>; use ; function mz_square_cells(rows, columns, start = [0, 0], init_cells, x_wrapping = false, y_wrapping = false, seed) = go_maze( - start[0], start[1], // starting point + start[0], start[1], is_undef(init_cells) ? mz_square_initialize(rows, columns) : init_cells, rows, columns, x_wrapping, y_wrapping, seed );