Javaのキャンバスにいくつかの2Dオブジェクトを描画する必要があります(長方形、ウィンドウのような)
主な目標は、2D座標をオブジェクトにマッピングすることです。たとえば、どのオブジェクトがクリックされたかを認識します。
質問:
2Dオブジェクトのサイズ/位置を維持するための通常の方法は何ですか。(どのデータ構造など)
どのオブジェクトが座標x、yにあるかを言う効果的な方法があるはずです
Javaのキャンバスにいくつかの2Dオブジェクトを描画する必要があります(長方形、ウィンドウのような)
主な目標は、2D座標をオブジェクトにマッピングすることです。たとえば、どのオブジェクトがクリックされたかを認識します。
質問:
2Dオブジェクトのサイズ/位置を維持するための通常の方法は何ですか。(どのデータ構造など)
どのオブジェクトが座標x、yにあるかを言う効果的な方法があるはずです
通常、ここでは「分割統治」戦略を使用します。ビュー(長方形)には、すべてのビューを1つの大きな配列に配置するのではなく、そのビューにあるビューへの参照が含まれます。次に、それらを左から右に並べ替えると、再帰的なバイナリ検索を適用して、クリックしているビューを見つけることができます。
Javaでこれを行う方法はわかりませんが、C++での非常に単純なクラス定義は次のようになります。
class MyView {
std::vector<MyView*> subviews;
int x;
int y;
int width;
int height;
};
クリックしたビューの検索は非常に簡単で高速です。
私が探していたのは クアッドツリーでした 。それほど複雑でない構造の場合、アレイが実行します。