Reference · Surface maze rules and geometry
faceCellTurnfunction
The turn that brings the cell round to face the viewer (see facingOf for around), by the shortest way, and then rolls it so that a side of the cell lies level (the cell's own first side, to the nearest of the turns that put one of its sides level).
Import it
import { faceCellTurn } from "@johnmorrisdotca/meikyuu/3d";
Definition
function faceCellTurn(grid: SolidGrid, q: Quat, cell: number, around?: boolean): Quat
Parameters
| Name | Type | Description |
|---|---|---|
grid | SolidGrid | The valid native flat or surface cell graph. |
q | Quat | The current normalized rotation quaternion. |
cell | number | A zero-based native cell index. |
around (optional) | boolean | Whether to turn about the cell’s own surface normal. |
Returns
Quat
The turn that brings the cell round to face the viewer (see facingOf for around), by the shortest way, and then rolls it so that a side of the cell lies level (the cell's own first side, to the nearest of the turns that put one of its sides level).
Examples
import type { MazeRecipe } from "@johnmorrisdotca/meikyuu";
import { buildMaze } from "@johnmorrisdotca/meikyuu";
import type { Quat, SolidRecipe } from "@johnmorrisdotca/meikyuu/3d";
import { buildSolidMaze, faceCellTurn } 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(faceCellTurn(solidGrid,q,solid.start));[ 0, 0.7071067811865475, 0, 0.7071067811865475 ]What it prints (run when this page was built)