1

2次元平面上の位置にポイントがあるとしましょう。このポイントはランダムに位置を変更しようとしていますが、それはポイントではないので、独自の速度があり、幅と高さが制限された平面上を移動していると仮定しましょう。したがって、しばらく移動すると、この点は平面境界に到達します。しかし、飛行機から離れることはできません。

これで、フレームごとにポイントの位置をチェックして、境界に達したかどうかを確認できます。

if(point.x>bound.xMax)point.x=bound.xMax

ポイントを自分自身を平面の 2 番目の側にテレポートさせたい場合は、次のように簡単にできます。

point.x = point.x%bound.xMax;

しかし、ポイント位置を整数で保存する必要があります。

私のcorei7 1.6での1000万の値の場合、両方のソリューションのタイミングは似ています。41ms 対 47 秒なので、その場合はモジュロ関数を使用しても意味がありません。値を確認するだけの方が高速です。

しかし、それを速くするためのトリックはありますか?配列アプローチを反復するための複数のスレッドは解決策ではありません。

たぶん、バインドされた値を奇妙な値にスケーリングし、たとえば、位置値のバイナリ解釈の一部を破棄できます。

そして、それを行うためのトリックがあれば、誰かが私の前にそれをやったと思います:)私を助けることができる解決策を知っていますか?

4

1 に答える 1

1

平面座標の周りに情報を追加できる方法があれば、「境界外」として識別される値を含む平面の周りに「境界」を作成することができます。たとえば、10x10のボードがある場合は、それを12x12にし、2つの追加の行と列を使用してその情報を挿入します。

これで、(擬似コード)を実行できます。ボード内のポイントが「境界値外」の場合は、次のことを実行します。END IF

この方法は、ポイントにx値とy値の両方がある場合の最適化にすぎないことに注意してください(私の場合の仮定)。

于 2012-06-17T01:30:49.090 に答える