軌道予測線は未来を本当に計算しているか
遊びを見つける執筆にClaudeを使用しています。

「小さな軌道」で発射角度と初速を決めると、画面には点線が現れます。確認できているのは、この点線が「全軌道予測」と呼ばれ、引力で曲がる軌道を示すということ、そして前回の軌道が細い実線で残るということです。ここで気になるのは、点線の先で本当に何が起きているのかです。発射後に動く本物の軌道と同じ計算を先回りして走らせているのか、それとも粗い近似で線を引いているだけなのか。 この記事の中心は「点線は何歩先までを、本物の飛行と同じ計算で描いているか」という問いです。結論を先に書くことはできません。この作品の内部の計算方法や刻み幅は、確認済みの情報に含まれていないからです。代わりに、点線と細い実線を重ねて読者が自分で答えを出せる手順と、結果の読み方を示します。
この記事の目次
「予測」の正体は先回りのシミュレーションです
引力で曲がる軌道の予測線を引く方法は、大きく二通りあります。
一つ目は、実際の動きと同じ計算を、描画せずに内部で何歩も先まで進めて点を打つ方法です。ここでの「歩」は、時間を細かく区切った一回分の計算を指します。この方法なら、点線の通る場所は理屈の上で本物の軌道とほぼ重なります。
二つ目は、実際の動きより粗い刻みで少ない回数だけ計算し、点をつないで見せる方法です。計算は軽くなりますが、曲がりの強い場所では本物とずれていきます。
どちらも「未来を計算している」と言えますが、重なりの精度が違います。題名の問いを「本当に」まで含めて解くには、点線が本物の軌道とどこまで一致するかを見る必要があります。
刻み幅が違うと軌道はどうずれるか
一致の見え方をつかむため、短いコードで刻み幅の影響を確かめます。中心に星が一つあり、そこから横向きに物体を打ち出す設定です。同じ初期条件を、細かい刻み(dt=0.05)と粗い刻み(dt=0.5)で計算し、重ねて描きます。これは一般的な数値計算の例で、「小さな軌道」の内部実装を表すものではありません。
<canvas id="c" width="400" height="400" style="background:#111"></canvas>
<script>
const G = 1000; // 中心の星の強さ(任意の単位)
function run(dt, total) {
let x = 100, y = 0, vx = 0, vy = 3.5;
const pts = [];
for (let t = 0; t < total; t += dt) {
const r = Math.hypot(x, y);
const a = -G / (r * r);
vx += a * x / r * dt;
vy += a * y / r * dt;
x += vx * dt;
y += vy * dt;
pts.push([x, y]);
}
return pts;
}
const ctx = document.getElementById("c").getContext("2d");
function draw(pts, color) {
ctx.strokeStyle = color;
ctx.beginPath();
pts.forEach(([x, y], i) =>
i ? ctx.lineTo(200 + x, 200 + y) : ctx.moveTo(200 + x, 200 + y));
ctx.stroke();
}
const fine = run(0.05, 300), coarse = run(0.5, 300);
draw(fine, "#6cf"); // 細かい刻み
draw(coarse, "#f96"); // 粗い刻み
const f = fine[fine.length - 1], c = coarse[coarse.length - 1];
console.log("終点の差:", Math.hypot(f[0] - c[0], f[1] - c[1]));
</script>保存して .html として開くと、二本の線が描かれます。二本がどれだけ離れるか、離れ方が星に近い場所で目立つかどうかは、実行して目で確かめます。刻み幅や総時間を変えると、差の出方も変わります。ここから分かるのは、予測線が本物と違う刻みで計算されていれば、距離が伸びるほどずれが見えてくる可能性があるということです。
点線と細い実線を重ねる実験の設計
作品の点線が本物と同じ計算かどうかは、次の手順で確かめられます。
準備するもの
- 「小さな軌道」を開いた画面(3つの星系のうち一つを選びます)
- 記録用のメモ(紙でも表計算でも構いません)
- 可能なら、角度と初速を数値で確認できるかどうかの確認。数値が出るのか、スライダーの位置だけなのかは、作品を開いて確かめます。
手順
- 予測は表示したままにして、一回発射します。発射前に点線がどこで終わるかを、メモに書きます(「ゲート手前で止まる」「画面端まで続く」など、見たままの言葉で構いません)。
- 発射後、軌道が最後に着いた場所を記録します。
- 同じ角度・初速に合わせて、もう一度発射します。前回の軌道が細い実線で残るので、新しい点線と細い実線を見比べられます。
- 同じ条件で最低3回繰り返します。毎回、点線の終端と実際の終端を同じ言葉で記録します。
- 角度か初速のどちらか一つだけを変えて、同じ手順をやり直します。一度に二つの条件を動かすと、原因が分からなくなります。
記録の取り方
次の項目を、一回ごとに一行で残します。
- 星系、書き方の例:1つ目
- 角度・初速、書き方の例:見た目の位置、または表示された数値
- 点線の終わり、書き方の例:どこで途切れたか
- 実際の終わり、書き方の例:どこで終わったか
- 重なり、書き方の例:全体が重なる/途中からずれる/最初からずれる
「何歩先まで」の答えは、点線が途切れる場所の傾向に表れます。点線の終端が毎回「ゲートの通過」や「軌道の終了地点」に当たっているなら、飛行が終わるまでを描いていると読めます。毎回、画面上の同じ長さで切れているなら、描く長さが決まっている可能性があります。ただし、この区別も作品を見ての判断であり、仕様として確定したものではありません。
結果の読み方と判断基準
見えた現象ごとに、考えられる読みをまとめます。
- 全体が細い実線とぴったり重なる。 少なくとも見える範囲では、本物と同じ計算で先回りしていると読めます。ただし、線の太さの分の小さなずれは見えません。
- 途中までは重なり、遠くでずれる。 星に近づいて曲がりが強まる場面で差が広がるなら、刻み幅の違いや計算の丸めを疑えます。先のコードの二本の線の離れ方と見比べると、判断の助けになります。
- 最初の曲がりからずれている。 点線が別の条件で描かれている可能性があります。条件の合わせ方が間違っていないかを先に疑います。
- 点線の長さが軌道に関係なく一定。 描く範囲に上限がある可能性があります。上限の理由までは読み取れません。
どの場合も、「重なっている=完全に同じ計算」と断定はしないでください。目で見えるずれの下限があるからです。
結果を誤読しやすい点
この実験では、思い込みが入りやすい場所がいくつかあります。
- 細い実線は「前回の軌道」です。 今の点線と比べるときは、前回と今回の条件が同じかどうかが前提です。条件が少しでも違えば、重ならないのは当たり前です。
- 画面の拡大やウィンドウサイズ。 作品はプレイ画面の拡大に対応していますが、拡大すると線の見え方が変わります。比較は同じ表示サイズの中で行ってください。
- 「動きを抑える」設定。 作品はこの設定に対応しています。設定を切り替えると演出が変わるかもしれませんが、軌道の計算が変わるかどうかは確認済みではありません。切り替えて比べる場合は、その一点だけを変えます。
- 一時停止の前後。 作品は一時停止から同じ位置で再開できます。再開の前後で細い実線が連続して見えるかも、観察の対象になります。ただし、一時停止を挟むと見た目の連続性に影響するかもしれないので、まずは停止なしの試行で基準を作ってください。
- 偶然の一致。 一回だけ重なって見えても、判断しないでください。最低3回は繰り返します。
また、星系ごとに星の配置や強さが違うため、一つの星系での結果をほかの星系に当てはめることはできません。3つの星系それぞれで、同じ手順を行ってください。星が動くのか止まっているのかも、作品を開いて確かめる項目です。
予測を消すという選択から読み取れること
この作品では、予測を消して挑むこともできます。確認できているのはここまでで、狙いまでは書かれていません。ただ、設計から次のことは読み取れます。
点線を出す設定と消す設定の両方があるということは、予測が答えそのものではなく、一つの補助として扱われているということです。点線を頼りにすれば、発射前に結果をかなり見通せます。消せば、前回の細い実線だけを手がかりに、角度と初速を調整していくことになります。点線が本物とよく一致するほど、この二つの遊び方の差は大きくなります。逆にずれがあれば、点線を信じすぎない遊び方も成り立つかもしれません。どちらが実際に起きているかは、先の実験で見えてくるはずです。
また、最速記録は作品を開いている間だけ残ります。点線の精度を調べる試行を重ねたあとでも、記録は画面を閉じれば消えます。実験の途中で記録を気にして条件を変えることのないよう、実験と記録更新のプレイは分けて考えてください。
次の行動
3つの星系のうち一つを選び、予測を表示したまま、同じ条件で3回発射してください。点線の終わりと実際の終わりを一行ずつ記録し、細い実線と重なるかを確かめます。そのあと、先のコードで刻み幅を変えて二本の線の離れ方を見ておくと、ずれを見つけたときに理由を考えやすくなります。

