20 種類の魔法陣をリアルタイムアニメーションで描画・切り替えできる
ブラウザ完結型ビジュアルシミュレーター。
各陣の属性・効果・回転速度を自由にコントロールできます。
| UI 要素 | 説明 |
|---|---|
| ✦ ヘッダー | 「魔法陣シミュレーター」のタイトルを表示。青いグロウの細い区切り線が画面上端を飾ります。
アプリ全体のタイトルバーとして機能します。
|
| Canvas 描画エリア | 300 × 300 px の Canvas 要素。選択された魔法陣がここにリアルタイムで描画されます。
requestAnimationFrame ループで毎フレーム再描画されます。
|
| 陣名・属性テキスト | Canvas の直下に選択中の魔法陣の名称(例:①五芒星・基本陣)と属性(例:万能・安定・バランス)を表示。
ボタンを切り替えるたびにリアルタイムで更新されます。
|
| 選択グリッド | 5列 × 4行 = 20個のボタンが並んだ選択パネル。各ボタンに①〜⑳の番号が表示されます。
アクティブな陣のボタンは青く光り、視認性が高まります。
|
| 回転速度スライダー | 0.0〜3.0 の範囲で回転速度を調整するレンジスライダー。右隣に「×1.0」などの現在値をリアルタイム表示。
内部では angle += 0.008 × speedMul でフレームごとに角度が加算されます。
|
ctx.shadowColor と ctx.shadowBlur の組み合わせ。各陣の固有色で線・点・文字を発光させます。ブラー値は 6〜30 px で用途ごとに変化。rotate() して接線方向に向けます。北欧フサルクの 24 文字(ᚠᚢᚦ…)を使用。hexFractal() 関数を深さ 4 まで再帰呼び出し。各レベルで半径を 0.38 倍に縮小しながら六角形を配置。r = 75√cos(2θ) の数式でポーラー座標描画。720 点の折れ線近似で滑らかな ∞ 記号を実現。requestAnimationFrame による毎フレーム更新。角度変数 angle を蓄積し、各描画関数に渡すことで全陣が統一タイミングで回転。ring()・poly()・star()・dots()・radials() の 5 関数を全陣で共有。グロウ設定も内包しコードを簡潔に保ちます。| 項目 | 詳細 |
|---|---|
| 動作環境 | モダンブラウザ(Chrome / Firefox / Edge / Safari)。インストール不要。オフライン動作可能。 |
| 描画エンジン | HTML5 Canvas 2D API。外部ライブラリ一切不使用。Vanilla JavaScript のみで実装。 |
| Canvas サイズ | 固定 300 × 300 px。すべての魔法陣の中心座標は (150, 150) に統一。 |
| アニメーション | requestAnimationFrame ループ。毎フレーム全面クリア(clearRect)後に再描画。 |
| 収録魔法陣数 | 全 20 種。各陣は CIRCLES 配列に id・name・desc・color・draw 関数として定義。 |
| ファイル構成 | 単一 HTML ファイル。CSS・JavaScript・描画ロジックをすべてインライン収録。 |
| 使用フォント | ルーン文字・数式記号の描画に monospace システムフォントを使用。外部フォント依存なし。 |
| カラーテーマ | 背景色 #050a14(深夜ネイビー)。各陣に固有のグロウカラー(青・紫・赤・白など)を割り当て。 |