世界を動かす技術を、日本語で。

Show HN: Gravity – インタラクティブな太陽系シミュレーター、ニュートンからアインシュタインまで

概要

  • 重力と軌道 の理解を深めるための自作シミュレーション
  • ガイド付きツアー で物理現象を段階的に解説
  • 実際の天体データ や物理法則を忠実に再現
  • ビジュアルと物理の切り替え 機能あり
  • TypeScript + Three.js によるクライアントサイド実装

週末プロジェクト:重力と軌道シミュレーション

  • 重力や軌道の仕組み を自分で学ぶために開発したシミュレーション
  • 学校で十分に説明されなかった 「なぜ軌道が存在するのか」 という疑問への探求
  • ガイド付きツアー で段階的に物理現象を解説
    • 二体間の 作用・反作用の力 の説明
    • 慣性 の例示(太陽を除去し地球が直進する様子)
    • 「軌道とは落下し続けて外れること」 という本質の説明
    • コズミック・ベロシティ やロケットの動きの導入
    • Voyager 1 & 2の実際のグラビティアシスト (1977–1989年の実際の日付で再現)
    • Einsteinの重力=時空の曲がり (ラバーシートの井戸モデル)で締めくくり

実装と物理的正確性

  • 各天体の半径・質量・J2000軌道要素 を実データで使用
  • 各フレームでKepler方程式を解き、位置を計算
  • N-bodyモード(シンプレクティック・リープフロッグ法) を搭載
    • エネルギーのドリフト(約1e-6%) をライブ表示し、数値積分の精度を可視化
  • スケールのみ可視化用に調整
    • 本来のスケールでは何も見えないため、 真のスケールと対数リマップのビジュアルスケール を切り替え可能
    • 物理演算自体は常に 実際のAU単位 で実行

技術スタックと公開情報

  • TypeScript + Three.js + Vite による完全クライアントサイド実装
  • オフライン動作対応 (地表テクスチャはバリューノイズで手続き生成、Earthのみ実画像使用)
  • ソースコード公開https://github.com/qunabu/Gravity

フィードバックと今後の課題

  • 物理の正確性や説明方法 についてのフィードバック歓迎
  • 現実の物理との違い を自覚しつつ、自分なりの理解を深める目的
  • 質問や指摘 も随時受付

Hackerたちの意見

いいね!重力が地球を作る過程で、北アメリカが小さくて、物質が増えていくにつれてどんどん大きくなっていく様子には笑っちゃったよ!

ハハ、カーテンの裏にいる男を見てるね。(俺も同じこと思ったよ:成長する天体と完成した地球の間のクロスフェードみたいな感じかな。)

とても良いし、効率もかなりいいね。ただ、ニュートン重力と相対論的重力の明確な分け方はあまり好きじゃないな。教育コンテンツではよくこうやって説明されるけど、混乱を招くことが多い。例えば、ニュートン重力がアインシュタイン重力の制限ケースだってことを考えると、別々の理論みたいに見えちゃうし。これ、見た中で一番良くて革新的なものだと思う。

あなたのアニメーションはすごく好きだったけど、ステップ14は間違ってない?地球の軸はプロセスがあるけど、すごく長い時間スケールでの話だよ。1日の間では、軸はほぼ静止してるはず。だからそれが「回転軸」って呼ばれる理由なんだ。回転するための固定された線だからね。ポラリスが北極星なのもそのためで、回転軸は季節に関係なく常にそれを指してる。北半球の夏は太陽に傾いて、直接的な加熱を受けるけど、冬は太陽から離れる。これは軸が動いてるからじゃなくて、地球が太陽の周りを回る中で軸の相対的な位置が変わるからなんだ。

その通り!この現象は軸平行性って呼ばれてるんだよ。

君が言ってることは全部正しいけど、ステップ14の何が問題なのかが見えないな。編集されたのかな? > 地球は23時間56分(1恒星日)で23.4°傾いた軸の周りを1回転する。この回転が昼と夜を生み出し、傾きが季節を生む。ステップ14には軸の歳差運動を示唆するものは何もないと思うけど。

コメントありがとう!モデルや可視化の弱点を指摘してくれて助かるよ。問題を理解して、すぐに修正するようにするね。

最初のパッチと新機能を公開したよ。プロセスの中でたくさん学べたし、コメントからも色々得られたのが主な目的だったから、すごく嬉しい!改めてありがとう!

太陽の重力(赤い矢印)は、常に地球を真っ直ぐ引っ張っているのに、どうして衝突しないの?それは、地球も横に(緑の矢印)29.8 km/sで動いているから。毎瞬、太陽に向かって落ちているけど、横のスピードがそれをすり抜けさせるんだ。点線は慣性だけで進む場合を示していて、重力がその直線の道を閉じたループに曲げるんだ。軌道ってのは、単に落ち続けていて、常にすり抜けているってことなんだ。こういうのを読むと、いつも「それは幸運だな」って思っちゃう。もちろん生存バイアスがあるから、驚くことではないけどね。でも、現状を変える可能性についても考えちゃう。これが変える要因かもしれない: - 太陽が軽くなる(地球が宇宙に飛び出す) - 地球が加速する(地球が宇宙に飛び出す) - 太陽が重くなる(地球が太陽に落ちる) - 地球が減速する(地球が太陽に落ちる) 理論的には、大きな星間物体が地球に近づいてきて、私たちを宇宙か太陽に投げ飛ばす可能性もあるかもね。

それは幸運だと思う。これは人間原理の一つの議論だったと思うけど[1]、3次元の空間と1次元の時間が存在する理由や、基本定数がそうである理由は特に見当たらない。でも、もしそうじゃなかったら、「それは幸運だ」と言える人は存在しなかっただろうね。[1] https://en.wikipedia.org/wiki/Anthropic_principle#Dimensions...

チュートリアルでは、軌道を維持するための速度が一つだけのように感じた。遅すぎると衝突し、速すぎると離脱するみたいな。でも実際は、軌道にいるときは脱出するのがすごく難しいんだ。速くなると軌道が大きくなり、遅くなると小さくなるだけ。どの宇宙プログラムも、物体を太陽に送ることは成功したことがないし、試みたこともないんだ。すでに30km/sという高い軌道速度でスタートしてるから、衝突させるためにはほぼその速度でロケットを逆向きに送らなきゃいけない。それには今までやったことのあるどんなことよりも、はるかに多くのエネルギーが必要なんだ。

思ってるほど運が良くないよ。私たちは太陽を作ったのと同じ雲から形成されたから、地球を作った物質はすでにかなり安定した軌道にあったんだ。

Hacker Newsで議論の続きを見る