本文へ移動

Meikyuu迷宮

シード付きの迷路と矢印パズルを作り、番号付きの問題を進め、平面や立体表面で遊べます。

「迷宮」は迷路のように入り組んだ場所を表す言葉です。 名前について(英語)

目次

リファレンス · 立体表面の規則と形

pickCell関数

リファレンスの説明と例は英語です。見出しと目次は日本語です。

The cell the point (x, y) of the picture is on, or -1 for none. The point is on a cell when it is inside the outline the cell is drawn with; a point on the line between two cells is on the lower numbered. Where outlines overlap (they do not on a convex solid, but a flattened globe's might at the very edge, and a star, a cross or a heart has parts in front of parts) the cell nearest the viewer at that point wins.

インポート

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

定義

function pickCell(frame: SolidFrame, grid: SolidGrid, x: number, y: number): number

引数

名前型説明
frameSolidFrame

The current projected surface-view arrays and dimensions.

gridSolidGrid

The valid native flat or surface cell graph.

xnumber

The horizontal viewport coordinate.

ynumber

The vertical viewport coordinate.

戻り値

number

The cell the point (x, y) of the picture is on, or -1 for none. The point is on a cell when it is inside the outline the cell is drawn with; a point on the line between two cells is on the lower numbered. Where outlines overlap (they do not on a convex solid, but a flattened globe's might at the very edge, and a star, a cross or a heart has parts in front of parts) the cell nearest the viewer at that point wins.

例

import type { MazeRecipe } from "@johnmorrisdotca/meikyuu";
import { buildMaze } from "@johnmorrisdotca/meikyuu";
import type { Quat, SolidRecipe } from "@johnmorrisdotca/meikyuu/3d";
import { buildSolidMaze, createFrame, pickCell, projectFrame } 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];
const frame = projectFrame(createFrame(solidGrid),solidGrid,q,1,640,480);
console.log(pickCell(frame,solidGrid,320,240));
16

出力(このページを作ったときに実行した結果)

ソースを見るGitHub で編集@johnmorrisdotca/meikyuu 3.2.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。