シューティングゲーム(非FPS)製作技術総合at GAMEDEV
シューティングゲーム(非FPS)製作技術総合 - 暇つぶし2ch107:名前は開発中のものです。
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 の極小値)


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch