Robocode の実験を始めたばかりで、Wave について読みました: http://robowiki.net/wiki/Wave
私が理解できないのは、なぜここで円が使用されているのかということです。
つまり、弾丸を撃つときは、円を使用するときに暗示されるように、すべての方向ではなく、一方向にのみ撃ちます。
誰かがその状況とその概念を言い換えて私に説明しようとすることができますか?
私はちょうど今立ち往生しています..
ありがとう、ジュリアン
上記の回答は、波が有用な抽象化である理由の主なポイントに当てはまります。敵に直接発砲するのと比較して、ターゲットに当たる発砲角度を収集するための最適化として。
波のもう 1 つの用途は、弾丸をかわす動きです。敵が弾丸を発射するのを (そのエネルギーを監視することによって) 見ると、弾丸の起源と速度はわかりますが、弾丸は見えないため、正確な位置はわかりません。この場合、波は弾丸について知っていること、つまり弾丸のすべての可能な位置を表しています。被弾した場合、敵が使用した相対的な発射角度を同様に推測できます。後で、そのデータを使用して、各波のさまざまなポイントの危険性を評価し、波と交差する最も安全な場所を決定できます (別名「ウェーブ サーフィン」)。
波のアプローチは、単純な実装の最適化を意図しているようです。基本的な概念は、発射体がターゲットを通過する時点を決定することです。wave_velocity * (time_now - time_fired)
これは、「波」がその起点 (" ") から移動した距離と、ターゲットからこの波の起点までの距離を比較することによって簡単に行うことができます。
2 つの距離が等しくなる (または波がターゲットを通過する) と、波の起点からターゲットの現在の位置までの方位が計算され、発射体の方位と比較されます。これら 2 つの方位が互いに十分に近い場合、ターゲットは「ヒット」と見なされます。それ以外の場合は、ターゲットを逃したため、発射体を無視して以降の計算を行うことができます。(ターゲットが発射体よりも速く移動できないと仮定します。)
これにおける最適化は、実際の「ヒットチェック」を実行する必要があるかどうかを判断するために、タイムステップごとに数個の距離だけを計算して比較する必要があることです。この方法では、発射物を 2 次元 (または 3 次元) で正確に追跡する必要はなく、1 次元 (距離) で追跡するだけでよく、計算量を大幅に節約できます。