質問

私は、これは動作しますが、直線的に拡張、各オブジェクト/シェイプのために(MousePoint)が含まれて呼び出すことで、ピッキング実装した瞬間に、簡単なグラフを描画する2Dでを使用しています。

2Dでに取り出すためのより効率的な方法はありますか?

役に立ちましたか?

解決

はい、完全な答えは、このスペースのために長すぎるだろうが。

あなたがの多くのノードのを持っていない限り、

まず、線形が最も可能性の高い罰金になります、とあなたは何も変更しないでくださいのない限り、性能はすでにに見られています苦しみます。

第二に、あなたが望むものを、一般的には、このようとして、階層的分解のいくつかの並べ替えを適用することですの四分木。これは、いわゆる「広い相」に考慮から項目を除去するために(検索時償却とアップフロントより多くの時間)より多くのメモリを使用する方法です。本クリステルエリクソンによって、「リアルタイム衝突検出に」うとしてウェブ上でいくつかの勤勉さは、役立ちます。

他のヒント

限り、あなたが唯一の面積形状(長方形、円)を選択すると、それが含まれています()メソッドで動作するはずです。あなたが図形を重ねてきた、あなたは形状が実際に重なって場所を指し示すだけの場合には一つだけ落とし穴があります。しかし、それはあなたがすべての図形を選択するかどうかの要件の問題は、トップ上の1つまたはあなたのコレクションで見つける最初の形状です。

ザ・含まれています()メソッドは、あなたがたLine2D型の形状を選択したい場合には動作しません。含まれています()メソッドは常にfalseを返すように、彼らは面積を持っていません。しかし、この問題のSO上のソリューションはすでにあります。

scroll top