2

いくつかの形状が描かれたキャンバスとしてボードを持っています。それらのいくつかは三角形、円、長方形ですが、すべてが独自の境界で区切られた長方形の中に含まれています。

「円は長方形の中に入る」

AがBの上にあり、衝突する領域があるボードに2つの円A、Bを置きます。コンテナ ボックスに対応する A 領域をクリックしても、実際の A 円形状領域ではなく、A 円は選択されませんが、A コンテナが重なって B コンテナの上にあるため、B を選択できなくなります。

イベントベースフレームワークでは、子イベントは兄弟ではなく親に行きます。

したがって、私の選択は、点 x に z インデックスで並べられた領域があるすべての形状コンテナーをチェックすることでした。次に、コンテナごとに、コンテナ内の形状が衝突するかどうかを確認します。

あまり効率的ではないようですが、他に方法はありますか?

---------
|    --------  
|    |      |
-----|      |
     --------
4

2 に答える 2

1

あなたはそれを処理できるのと同じように処理しています-ウィンドウシステムは通常Zオーダー(レイヤー)に従います。

いずれにせよ、長期的には、特に選択ボックスを描画して複数のアイテムを選択できるようにしたい場合は、これが優れています。

長方形を x 軸と y 軸の両方で 2D 表現に変換することで、長方形が重なっているかどうかを検出するアルゴリズムがあります。同じことを行い、ポイントを比較して、ポイントが重なっているオブジェクトを確認できます。

2つの長方形の交点を検出するアルゴリズム?

点の選択 (複数のアイテムを選択するためにバウンディング ボックスを描画する場合は四角形の選択) を別の四角形として扱い、他の四角形と比較します。

-アダム

于 2009-02-22T00:29:48.940 に答える
0

本当にスピードが必要な場合は、プレイできるトリックがあります。例えば:

  • 深いパレットを使用している場合は、色の下位ビットを使用してオブジェクトにタグを付けることができます。次に、ピクセルをのぞくと、オブジェクトが得られます。少なくとも、リストをすばやく大幅に選別しないでください。
  • ビット深度が低くても、オブジェクトがすべてモノクロの場合は、全体の色を使用できます
  • 解像度が十分に低い場合は、どのオブジェクトがどのピクセルを所有しているかを示す配列を保持できます。
  • より高い解像度でも同じことができますが、RLE を使用してサイズを抑えます (四分木も調べてください)。
  • などなど…

単純な実装の場合は、X と Y を記録し、画面を再描画し、どのオブジェクトがそのピクセルを描画しているかを確認するのが簡単な方法です。

-- マーカスQ

于 2009-02-25T18:09:23.220 に答える