描画領域として使用される(w x h)キャンバス(幅wと高さh)があります。作図領域に「マップ」または領域を定義できます。ユーザーはこの領域をクリックして、事前定義されたタスクを実行できます。各領域は、外接する長方形によって定義されます。ユーザーが画像マップ内をクリックすると、画像マップがアクティブになります。2つの領域に長方形が重なっている場合があります。ユーザーがキャンバス上のポイントをクリックするたびに、そのポイントが属するイメージマップを見つけて、対応するタスクの実行を開始する必要があります。線形リストを使用して、画像マップを見つけることができます。しかし、ユーザーのクリックでどの画像マップがアクティブ化されるかを効率的に(O(n)時間未満で)把握できるように、画像マップを格納するために使用できるデータ構造というより良い方法はありますか?
2 に答える
3
はい-任意のタイプの2D空間インデックスを使用します。最も一般的なのはクアッドツリーです。これはO(log(n))ルックアップの複雑さを持ち、構築も非常に高速です。実装はすべての主要言語で利用できます。これは、あらゆるタイプのマッピングアプリケーションに広く使用されています。
于 2013-01-12T23:06:28.393 に答える
0
ある種の最適化を作成して、この作業の平均時間を短縮することもできますが、ユーザーがクリックするとN個の可能なタスクすべてが実行される可能性があるため、効率はO(n)のままです。
于 2013-01-12T23:08:20.210 に答える