三体恒星系、及びその惑星から見た恒星の動きをシミュレーションする
cargo run数字1〜9・0でプリセット切替、スペース長押しで早送り、上下キーで倍率調整。
RustとPython 3が必要です。最初にWasmターゲットを追加します。
rustup target add wasm32-unknown-unknown
bash scripts/build-web.sh
python3 -m http.server 8080 --directory distブラウザで http://localhost:8080 を開いてください。file://では起動できません。
キーボード操作を行う場合は画面をクリックしてください。PCブラウザ向けです。
dist/内の3ファイルを静的ホスティングへ配置すれば公開できます。
Wasmはapplication/wasmで配信してください。すべて相対パスのため、サブディレクトリへの配置にも対応します。
ローダーはCargo.lockに固定されたmacroquadと同梱のものを使用し、外部CDNには依存しません。
生成物のdist/はGit管理対象外です。
初回のみリポジトリの Settings → Pages → Build and deployment → Source を
「GitHub Actions」に設定してください。
以後はmainへのプッシュで、テスト・Wasmビルド・公開が自動実行されます。
Actionsタブから手動実行もできます。
公開先: https://foriver4725.github.io/ThreeBodyViewer/
index.html:シミュレーションの描画先となるキャンバスmq_js_bundle.js:ブラウザの描画・入力とWasmをつなぐランタイムThreeBodyViewer.wasm:Rustからコンパイルされた計算・描画の本体
GitHub Pagesはこの3ファイルを配るだけです。重力計算や描画は閲覧者のブラウザで動作し、 計算用のバックエンドサーバーは不要です。
src/main.rs:起動、入力、フレーム進行src/model.rs:恒星・惑星・プリセットのデータsrc/presets.rs:初期値ファクトリsrc/physics.rs:重力と時間刻みsrc/lagrange.rs:ラグランジュ点計算src/observer.rs:地上座標・飛星境界・相対熱量src/render/:俯瞰図・地上の空・熱量パネルsrc/tests.rs:計算と境界のテスト
cargo test