Skip to the content

Meikyuu迷宮

Generate seeded mazes and arrow puzzles, follow numbered levels, and play on flat grids or three-dimensional surfaces.

Meikyuu is the Japanese word 迷宮 for labyrinth. About the name

Contents

Reference · Surface maze rules and geometry

edgeTurnfunction

Compute a view rotation that follows a surface path near an edge, or null when no turn is needed.

Import it

import { edgeTurn } from "@johnmorrisdotca/meikyuu/3d";

Definition

function edgeTurn(grid: SolidGrid, links: readonly (readonly number[])[], q: Quat, cell: number, seconds: number, hidden?: (cell: number) => boolean): Quat | null

Parameters

NameTypeDescription
gridSolidGrid

The valid native flat or surface cell graph.

linksreadonly (readonly number[])[]

Passage neighbour lists, one per cell.

qQuat

The current normalized rotation quaternion.

cellnumber

A zero-based native cell index.

secondsnumber

Elapsed seconds for this view update.

hidden (optional)((cell: number) => boolean) | undefined

Optional predicate identifying cells hidden by the host.

Returns

Quat | null

Compute a view rotation that follows a surface path near an edge, or null when no turn is needed.

Examples

import type { MazeRecipe } from "@johnmorrisdotca/meikyuu";
import { buildMaze } from "@johnmorrisdotca/meikyuu";
import type { Quat, SolidRecipe } from "@johnmorrisdotca/meikyuu/3d";
import { buildSolidMaze, edgeTurn } from "@johnmorrisdotca/meikyuu/3d";

const recipe: MazeRecipe = {shape:"square",w:5,h:5,algorithm:"backtracker",mode:"to-goal",seed:42};
const maze = buildMaze(recipe);
const grid = maze.grid;
const solidRecipe: SolidRecipe = {kind:"cube",n:2,algorithm:"backtracker",seed:42};
const solid = buildSolidMaze(solidRecipe);
const solidGrid = solid.grid;
const q: Quat = [0,0,0,1];
console.log(edgeTurn(solidGrid,solid.links,q,solid.start,0.1));
[ 0, 0.07991469396917272, 0, 0.9968017063026194 ]

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/meikyuu 3.2.0.