3

ポイント、速度、方向からなるベクトルがあります。このベクトルを R と呼びます。そして、点と速度だけで構成される別のベクトルです。方向がありません。これを T と呼びます。今、私がやろうとしているのは、これら 2 つのベクトルの最短交点を見つけることです。T には方向がないため、これは難しいことがわかります。CaRMetal で機能する数式を作成できましたが、Python では機能しません。誰かがこの問題を解決するためのより効率的な方法を提案できますか? または、X の既存の式を解きますか?

方式:

方式
(ソース: bja888.com )

鍵:

定義
(ソース: bja888.com )

ここで、o または k はベクトル間の速度差です。R.スピード / T.スピード

4

4 に答える 4

1

私の数学は少しさびているかもしれませんが、これを試してください:

pqは位置ベクトル、deは方向ベクトルです。時間tの後、それらを同じ場所に配置する必要があります。

(1) p+t*d = q+t*e

方向ベクトルeが必要なので、次のように記述します。

(2) e = (pq)/t + d

これで、速度制約sを使用して計算できる時間tは必要なくなりました(それ以外の場合は、他のポイントに直接移動できます)。

方向ベクトルeは長さsでなければならないので、

(3) e 1 2 + e 2 2 = s 2

いくつかの方程式を解いた後、最終的には

(4)

I) a = sum(pq)/(s 2 -sum(d 2 ))

II) b = 2*sum(d*(pq))/(s 2 -sum(d 2 ))

III) c = -1

IV) a + b*t + c*t 2 = 0

合計はベクトル コンポーネントを超えます (2 次元では 2、3 次元では 3)。

最後の 1 つは二次方程式で、自分で解けるはずです ;-)

于 2009-12-03T13:08:41.507 に答える
0
  1. 最初の点 A の速度がゼロであると仮定しましょう。この場合、最速の交差を与える方向を見つけるのは非常に簡単です。
  2. さて、Aに速度があります。B のベクトルから速度ベクトルを差し引くことで、強制的に速度をゼロにすることができます。これで、1 で行ったように解くことができます。

思いついた大まかなアイデアは...

いくつかの考え:

A が静止している場合、B が移動する必要がある方向は A に直接向かう必要があります。これにより、A が静止している座標系の方向が得られます。d としましょう。

ここで必要なのは、B が移動する必要がある方向を、A がまだ存在する座標系から、A が指定された速度と方向 d2 で移動している座標系に変換することだけです。

これは単純なベクトル加算です。d3 = d - d2 これで d3 の方向がわかります。

そして、もう少し正式です:

A は定常:

Sb = B の速度、既知、スカラー

アルファ = atan2( a_y-b_y, a_x-b_x )

Vb_x = Sb * cos(アルファ)

Vb_y = Sb * sin(アルファ)

A は速度 Sa、方向 beta で移動します。

Vb_x' = Sb * cos(アルファ) + Sa * cos(ベータ)

Vb_y' = Sb * sin(アルファ) + Sa * sin(ベータ)

alpha' = atan2( Vb_y', Vb_x' )

上記をテストしていませんが、一見すると合理的に見えます...

于 2009-12-03T13:21:03.250 に答える