4

サッカー場を表す 30x100 の巨大な配列があります。その中でプレイヤーを動かします。ただし、ボールが投げられたとき、パスをインターセプトする可能性がある軌道の +/-1 リーチ内に他のプレーヤーがいるかどうかを判断する必要があります。

一部の (そしてほとんどの) パスは斜めに投げられるため、そのようなものを評価するアルゴリズムを決定する方法を理解するのに苦労しています。

私のフィールドは次のようになります

1 2 3 4 5 6 7 ...
2
3
4
5
6
7
...

文字は積分器からのみ移動できます (したがって、それぞれは (3,2) や (20,90) などの座標のセットを常に持っています)。

選手が私のパス軌道の特定の範囲内にいるかどうかを確認する最も簡単な方法は何ですか?

4

3 に答える 3

3

つまり、に通行人がいて($x0, $y0)、誰もパスを捕まえないとパスが下がる場所に($x1, $y1)、潜在的な受信者がにい($x, $y)ます。($x, $y)の受信機とからの線との間の距離を調べたいとし($x0, $y0)ます($x1, $y1)

それはこの方程式によって与えられます:

$d = abs( ( $x1 - $x0 ) *  ( $y0 - $y ) - ( $x0 - $x ) * ($y1 - $y0 ) ) / 
    sqrt( pow( $x1 - $x0, 2 ) + pow ($y1 - $y0, 2 ) );

ここで派生を見つけることができます。

ただし、これは(無限に長い)までの距離を取得するだけですが、パスを含む線分の外側にある可能性があります。正しい答えを得るには、ここでGrumdrigの答えを参照してください:点と線分の間の最短距離

于 2012-05-10T21:38:44.303 に答える
2

通行人を原点に移動し、ボールの軌道をX軸に回転させてから、パスの近くのプレーヤー(つまり、同じx座標記号)のいずれかが-1と1の間の座標を持っているかどうかを確認します。

于 2012-05-10T21:40:32.273 に答える
0

極座標系が進むべき道です。

于 2012-05-10T21:35:57.347 に答える