09/09/15 00:22:36 6KSuCyNf
>>106 計算してみた。長文失礼します。
A, B, C, D の位置ベクトル → a, b, c, d
1, 2 の位置ベクトル → p1, p2
t = 0 で出発、t = 1で到達とすると、
p1 = a + (b - a)t = a + v1・t
p2 = c + (d - c)t = c + v2・t
と書ける
p1-p2 間の距離を L とし、その最小値 min L を求める(実際には、min L^2 を求めればよい)
L = abs(p1 - p2) = abs(a - c + (v1 - v2)t) ・・・ (1)
[case 1] a - c = 0
min L = 0 (初期位置から衝突している)
[case 2] v1 - v2 = 0
min L = abs(a - c) (2点間の距離が変化しない)
[case 3] それ以外
式(1)は、L^2 = αt^2 + βt + γ と整理できる
このとき、α > 0であるので、L^2は下に凸の2次関数である
L^2が最小となる t = t0 は、t0 = -β/(2α) (1階微分がゼロ)
であるが、 0 ≦ t ≦ 1 を考慮すると、
[case 3-1] t0 ≦ 0
min L^2 = γ (t = 0 地点が最も近く、徐々に離れる)
[case 3-2] 1 ≦ t0
min L^2 = α+β+γ (徐々に近づき、t = 1 の最終位置が最も近い)
[case 3-3] 0 < t0 < 1
min L^2 = - (β^2 - 4αγ) / (4α) (t = t0 の地点が L^2 の極小値)