解説
しくみ
数値の出どころ、天体の向きの決め方、たくさん置いても軽い理由。
数値
大きさ・扁平率・極・自転は IAU (Archinal ほか、2018) と NASA の資料です。水星から海王星の位置は、Bretagnon と Francou の VSOP87B の級数を短くしたもので、地球時で計算します。冥王星は Horizons に合わせた表、月の位置は月理論 ELP2000-82B (Chapront-Touzé と Chapront、IMCCE) を大きい540項に短くしたもの、木星の4つの大きな衛星は L1.2、土星の内側の7つの衛星は TASS1.7 (どちらも IMCCE の理論で、任意の入口です)、ほかの衛星は、1800年から2199年の JPL Horizons の位置に合わせた軌道です。テストでは、すべての惑星、月、衛星を Horizons と比べ (精度)、2025年3月に土星の輪が真横になること、月が正しい日に新月と満月になることを確かめています。
行き先
JOURNEY_STOPS は、このパッケージのすべての天体を、一行に一つずつ並べたものです。名前、種類、衛星ならその親、半径、太陽からの平均距離(sunAu。太陽は 0、衛星はその親の距離)、標準重力パラメータ gmKm3s2、質量、脱出速度 escapeKmS です。stopPlaceAu(id, ms) は、ある日時の太陽中心の位置を天文単位で返します。太陽は原点、惑星と準惑星は heliocentric、衛星は親の位置に親からの相対位置を足したものです。質量が資料にない天体は、重力に関する欄が空です。太陽以外の恒星はありません。
こちらを向いた天体
日時が与えられると、見る人の座標 (x は右、y は上、z は手前) で、極、本初子午線、太陽の方向を計算します。線画もシェーダーも同じ向きを使います。光が届くまでの時間も見込むので、木星は光が出たときの面を見せます。
陰影つきの見た目
シェーダーつきの球です。縞、クレーター、斑点、極冠は、緯度と経度から計算します。太陽の向きで光を当て、大気のある天体は境目をやわらかくします。輪は惑星に、惑星は輪に影を落とします。高さがクレーターの陰影を作ります。
軽さ
何かが変わるまで描かず、動いていても1秒に30回まで。WebGLは共通のレンダラーが1つ持ち、テクスチャーは小さいものから始めます。テストでは、止まっているときと、操作を繰り返したあとの、描画回数・アニメーションフレーム・コンテキスト・GPUオブジェクトの数を数えています。
この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。