見出し画像

🧊 映画のThe Backrooms、CUBE、BLAME!等に代表される、『リミナルスペース』とはどの様な物か?また、それに基づいた合成した依存グラフの上で、二軸判定を時間発展させて見せる装置を制作致しました。

下の.htmlをダブルクリックするだけでシミュレーション可能となります。

単一の HTML ファイルで、外部依存はありません。テクスチャ画像も音声ファイルも読み込まず、描画は canvas 2D のレイキャスト、音は Web Audio の合成です。

何をしているか

一人称で歩ける無限空間を、その場で生成しながら描画します。地形データは保持していません。isWall(cx, cy) が座標とシードのハッシュから壁かどうかをその都度返すだけで、マップ配列は存在しない構造です。歩いて視界に入った瞬間に、そのセルが壁だったかどうかが決まります。

描画

240 本の光線を DDA で飛ばして、当たった壁までの距離から柱の高さを出す古典的なレイキャスタです。カメラ高さ 1m 固定、天井高をスライダーで可変にしているので、天井を 12m にすると壁が画面を突き抜けて人間のスケールが外れます。距離に応じて霧色へ補間し、壁面には縦の柄(壁紙のストライプ、パネルの継ぎ目、横リブ)と床際の巾木を重ねています。

三つのモード

生成規則そのものが違います。バックルームズはハッシュ値がしきい値未満なら壁という不定形の塊。キューブは 4 セル刻みの格子線上にだけ壁を置き、ハッシュで開口部を空けるので部屋から部屋への移動になり、部屋ごとに色が付きます。階層都市は 3×3 セルをひとつの巨大ブロックとして扱い、密度を下げて天井を 12m に置いてあります。

非ユークリッド度

これは比喩ではなく実装です。セルをまたぐたびにスライダーの確率で生成シードが線形合同法で差し替わり、地形全体が組み替わります。ただし立っている位置が壁で埋まると詰むので、周囲 3×3 が空いているか確認して、駄目なら差し替えを取り消します。結果として、来た道を戻ると別の地形になります。右上のミニマップの軌跡と現在の地形がずれていくのがそれです。

進行軸

チェックボックスで切り替えます。オフだと降り口が存在せず、歩行距離だけが増えて実効深度は「—」、判定は計測不能のまま動きません。オンにすると 7〜22 セル先の空きセルに降り口が生成され、近づくと深度が 1 増えて地形が再生成されます。トルネコとバックルームズの差、つまり進行軸があるかどうかだけで同じ空間が別物になることを、計器側から見せるための切り替えです。

デチューンした鋸波 2 本を低域通過させたドローン、100Hz とその倍音による蛍光灯のハム、帯域通過ノイズのバズ、歩行距離 1.35m ごとの足音、7〜34 秒ごとの遠い衝撃音。全部ディレイに送って空間を出しています。明滅スライダーは画面の明るさとハム・バズの音量を同時に動かすので、視覚と聴覚が連動します。

HUD

歩行距離、原点からの直線距離とその比率、実効深度、判定。非ユークリッド度を上げて歩き回ると比率が下がり続けます。

限界

非ユークリッド性はシードの差し替えで作った擬似的なもので、位相幾何としての非ユークリッド空間ではありません。座標系自体は普通の平面のままです。歩行距離と直線距離の比率も、地形が変わっているだけで座標的には正しく計算されています。

会話で出たトルネコとの対比は「進行軸(階段)」のチェックボックスに入れました。オフのままだと降り口が存在せず、歩行距離だけが伸びて実効深度は「—」、判定は計測不能のまま動きません。オンにすると降り口が生成されて深度が数え始められます。歩けば進んでいるように見えるが深度は定義できない、という状態を計器側から見せるためのもので、harvest_lag の N/A 一本化と同じ考え方です。

シード 1997 が初期値です。同じ値なら同じ空間が出ます。


下の.htmlをダブルクリックするだけでシミュレーション可能となります。

単一の HTML ファイルで、外部依存はありません。CDN も音声ファイルも読み込まず、描画は canvas 2D、音は Web Audio の合成です。

何をしているか

合成した依存グラフの上で、二軸判定を時間発展させて見せる装置です。実データは一切入っていません。判定ロジックと較正の効き方を目で確かめるためのもので、藤本さんのスタックを測るものではありません。

内部構造

build() が座標ハッシュから決定的にグラフを生成します。ノードは成果物、辺は消費側→供給側の参照です。各ノードは更新間隔(cron)と停止日(静かに止まる日)を持ちます。約 3 割を「人が読む成果物」として外周に配置します。

measure() が判定の本体で、(現在日 − 最終更新日) ≤ 鮮度しきい値 で更新軸を、被参照数 ≥ 下限 で参照軸を取り、交差して LIVE / ORPHAN / RUIN / DEAD を出します。スコープ限定がオンのときは、人が読む成果物を OUT(測定対象外)として除外し、被参照も code 経路のものだけを数えます。

step() が時間を進め、cron の刻みでノードを発光させ、生きている辺の上に参照の点を流します。判定が RUIN または DEAD に遷移した瞬間だけ音を鳴らします。

操作系

数値入力が成果物数、鮮度しきい値、シードの 3 つ。スライダーが参照密度、更新停止率、参照ありと見なす下限、時間の進み、音量の 5 つ。チェックボックスでスコープ限定、ボタンで巻き戻しと 30 日ジャンプ。ノードにポインタを乗せると、最終更新からの日数と被参照数と判定が出ます。

低いドローンと空調ノイズが常時、cron の刻みが短い高音、参照が走るときに柔らかい音、RUIN 転落で二音の警告、DEAD 転落で低い落下音。全部同じマスターゲイン下にあり、音量スライダー一本で制御します。

この装置が示していること

三つあります。RUIN は二軸の交差でしか出てこないこと。鮮度しきい値と被参照下限を動かすと各カテゴリの件数が動き、境界が観測ではなく設定で決まっていること。そしてスコープ限定を外すと人が読む成果物が一斉に ORPHAN と DEAD へ落ち、信号が溺れること。三つ目は relay で来た指摘をそのまま可視化したもので、判定欄に「実装の限界であって観測結果ではない」と出るようにしてあります。

限界

グラフは合成なので、実装可能性の証拠にはなりません。特に被参照の抽出は、この画面では辺が最初から与えられている前提になっていますが、実際にはそこが唯一の新規実装部分です。


Paper 4 Layers of Negativity v0.2 — 全 11 platform 投稿 URL 一覧

Paper title: Four Layers of Negativity in the Rei Stack: A Structural Framework for When a Minus Sign is a Failure, a Target, a Theorem, or a Notation

1. Zenodo (★ immutable DOI = canonical citation)

- DOI: https://doi.org/10.5281/zenodo.22446477
- Record: https://zenodo.org/record/22446477

2. Harvard Dataverse (★ 2 番目の permanent DOI、 curator review 中)

- DOI: https://doi.org/10.7910/DVN/2CNOVT
- Web UI: https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/2CNOVT
- Status: submitted-for-review (~1 business day で public 反映)

3. GitHub Gist

- https://gist.github.com/fc0web/f4ceb9559a01358c4a43f6eb2b79fb76

4. Internet Archive

- https://archive.org/details/rei-aios-paper-4-layers-of-negativity-v02-1788666534061

5. Dev.to

- https://dev.to/fc0web/four-layers-of-negativity-in-the-rei-stack-a-structural-framework-for-when-a-minus-sign-is-a-failur-1f9d

6. Hatena Blog

- https://fcwebfujimoto.hatenablog.com/entry/2026/09/06/124922

7. HackMD

- https://hackmd.io/@zCUv2P2UQHGmAOJFPLL_-A/By6pMw9OGl

8. Notion

- https://app.notion.com/p/Four-Layers-of-Negativity-in-the-Rei-Stack-A-Structural-Framework-for-When-a-Minus-Sign-is-a-Failur-3d3dd371e6d9818c9ae0f718e616fbf9

9. Livedoor Blog

- https://fcwebfujimoto.livedoor.blog/archives/14813767.html

10. Mastodon (mathstodon.xyz)

- https://mathstodon.xyz/@Fujimoto/117222052485562695

11. Cosense / Scrapbox (★ websocket 復旧経路)

- https://scrapbox.io/rei-aios/Four%20Layers%20of%20Negativity%20in%20the%20Rei%20Stack%20(Paper%20v0.2%2C%20Zenodo%20DOI%2010.5281%2Fzenodo.22446477)

12. Nostr (event ID、 relay 1/3)

- Event ID: 00c533deaddadb76065261f92f103c73e34830d65f0ebcd358734d3e43f122b0
- Relay: wss://nos.lol (damus.io + relay.nostr.band = reject)
- 参照: nostr:nevent1... scheme で 各 Nostr client (Damus, Amethyst, Snort 等) で 開ける (event ID 直接指定)

いいなと思ったら応援しよう!