Reference · Mazes, arrows and mixed boards
MazeGeometrytype
How a maze lies in space, which is all the measure needs to know of it besides the passages: how far a cell is from the goal (any measure that rises with distance will do, the squared distance is cheapest) and how far the line bends going from one cell through another to a third, in radians from 0 (straight on) to pi (back the way it came). A flat maze reads these off its cell centres; a maze over a solid reads them in three dimensions.
Import it
import type { MazeGeometry } from "@johnmorrisdotca/meikyuu";
Definition
type MazeGeometry = {
readonly points: readonly (readonly number[])[];
distanceToGoal(cell: number): number;
bend(before: number, cell: number, after: number): number;
};
Members
| Name | Type | Description |
|---|---|---|
points | readonly (readonly number[])[] | Where each cell lies: two numbers for a flat maze, three for a solid. The cover reads it. |
distanceToGoal | (cell: number): number | |
bend | (before: number, cell: number, after: number): number |
Examples
import type { SolidRecipe } from "@johnmorrisdotca/meikyuu/3d";
import { buildSolidMaze, solidGeometry } from "@johnmorrisdotca/meikyuu/3d";
import type { MazeGeometry } from "@johnmorrisdotca/meikyuu";
const solidRecipe: SolidRecipe = {kind:"cube",n:2,algorithm:"backtracker",seed:42};
const solid = buildSolidMaze(solidRecipe);
const value: MazeGeometry = solidGeometry(solid);
console.log(value);{
points: [
[ 1, -0.5, -0.5 ], [ 1, 0.5, -0.5 ],
[ 1, -0.5, 0.5 ], [ 1, 0.5, 0.5 ],
[ -1, -0.5, -0.5 ], [ -1, 0.5, -0.5 ],
[ -1, -0.5, 0.5 ], [ -1, 0.5, 0.5 ],
[ -0.5, 1, -0.5 ], [ -0.5, 1, 0.5 ],
[ 0.5, 1, -0.5 ], [ 0.5, 1, 0.5 ],
[ -0.5, -1, -0.5 ], [ -0.5, -1, 0.5 ],
[ 0.5, -1, -0.5 ], [ 0.5, -1, 0.5 ],
[ -0.5, -0.5, 1 ], [ 0.5, -0.5, 1 ],
[ -0.5, 0.5, 1 ], [ 0.5, 0.5, 1 ],
[ -0.5, -0.5, -1 ], [ 0.5, -0.5, -1 ],
[ -0.5, 0.5, -1 ], [ 0.5, 0.5, -1 ]
],
distanceToGoal: [Function: distanceToGoal],
bend: [Function: bend]
}What it prints (run when this page was built)