0

Javaのキャンバスにいくつかの2Dオブジェクトを描画する必要があります(長方形、ウィンドウのような)

主な目標は、2D座標をオブジェクトにマッピングすることです。たとえば、どのオブジェクトがクリックされたかを認識します。

質問:
2Dオブジェクトのサイズ/位置を維持するための通常の方法は何ですか。(どのデータ構造など)
どのオブジェクトが座標x、yにあるかを言う効果的な方法があるはずです

4

2 に答える 2

1

通常、ここでは「分割統治」戦略を使用します。ビュー(長方形)には、すべてのビューを1つの大きな配列に配置するのではなく、そのビューにあるビューへの参照が含まれます。次に、それらを左から右に並べ替えると、再帰的なバイナリ検索を適用して、クリックしているビューを見つけることができます。

Javaでこれを行う方法はわかりませんが、C++での非常に単純なクラス定義は次のようになります。

class MyView {
    std::vector<MyView*> subviews;
    int x;
    int y;
    int width;
    int height;
};

クリックしたビューの検索は非常に簡単で高速です。

于 2012-11-27T13:13:35.310 に答える
0

私が探していたのは クアッドツリーでした 。それほど複雑でない構造の場合、アレイが実行します。

于 2012-11-30T11:31:51.753 に答える