マウスに最も近い要素を決定するための最も効率的な方法は何ですか?

M.サリバン

私は現在、ユーザーがJavaの画面上にグラフ(頂点/エッジ)を作成できるようにするペットプロジェクトに取り組んでいます。頂点はJComponentsとして実装されていますが、エッジはLine2Dとして実装されています。ユーザーがキャンバス上でマウスを動かしているときに、エッジ(またはLine2D)の1つに近接する特定のしきい値内にある場合、そのエッジ(マウスに最も近い)が強調表示されます。

私の質問は、どのエッジがマウスに最も近いかを実装する方法を扱っています。現在、動きを検出するマウスリスナーがあります。マウスを動かすたびに、プログラムはすべての行(エッジ)を循環し、Line2DのptDistSeg()関数を使用して最も近い行を決定します。これがしきい値内にある場合は、強調表示されます(paintcomponentで太いストロークを使用)。

マウスを動かすたびにマウスからのすべてのエッジ距離を再計算する必要があるため、これは非常に非効率に思えます。頂点の場合、マウスリスナーが各頂点に関連付けられているため、これは問題ではありません。したがって、頂点は、イベントを処理する必要があるタイミングを認識しています。残念ながら、エッジは、mouseListenerを実装できないLine2Dとして表されているため、これを行うことはできません。

それで、最も近いエッジを見つけるためのより効率的な方法はありますか、それとも別の方法でエッジを実装する必要がありますか?

ありがとう。

templatetypedef

これにはおそらくどこかでより良いデータ構造がありますが、1つのオプションは、各エッジの軸に沿った境界ボックスを計算してエッジごとに1つの長方形を取得し、これらの長方形すべてをRのような空間データ構造に格納することです。-ツリーRツリーは、「ある点に重なるすべての長方形を表示する」という形式の効率的なクエリをサポートしているため、これを使用して、すべての線分をマウスポイントに当たる可能性のある線分だけに絞り込み、テストすることができます。

ここでの欠点は、境界ボックスを変更するコストのためにノードを移動するために多くのRツリーを再構築する必要があり、Rツリーは非常に簡単ではないため、適切なRツリーライブラリを見つける必要があることです。ゼロから実装します。

お役に立てれば!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Terraform構成に必要な最小AWS権限を決定するための最も効率的な方法は何ですか?

分類Dev

ある配列のどの要素が別の配列の要素に近いかを見つける最も効率的な方法は何ですか?

分類Dev

リストの最後のn個の要素を取得するための最も効率的な方法は何ですか

分類Dev

新しいアクティビティを作成するための最も効率的な方法は何ですか

分類Dev

WindowsとLinuxを同時に実行するための最も効率的な方法は何ですか?

分類Dev

スパースscipy行列の行をゼロに設定する最も効率的な方法は何ですか?

分類Dev

多数の要素にイベントリスナーを追加する最も効率的な方法は何ですか?

分類Dev

しきい値よりも大きいリストの項目を判別するための最も効率的な方法は何ですか?

分類Dev

Elasticsearchからすべての結果を取得するための最も効率的な方法は何ですか?

分類Dev

PairRDDで一意のペアを取得するためのSparkで最も効率的な方法は何ですか?

分類Dev

XamarinFormsでcsvを検索するための最速かつ最も効率的な方法は何ですか?

分類Dev

Cythonでガウス乱数を生成するための最も効率的でポータブルな方法は何ですか?

分類Dev

Slickで単一の結果を取得するための最も効率的な方法は何ですか?

分類Dev

FFMPEGでビデオのサイズを変更するための最も効率的な方法は何ですか?

分類Dev

値を最も近い45度に丸める最もクリーンな方法は何ですか?

分類Dev

データフレームを削減するためにpysparkで最も効率的な方法は何ですか?

分類Dev

ソートされたベクトルに要素を挿入する最も効率的な方法は何ですか?

分類Dev

出席データを保存するための最も効率的または便利な方法は何でしょうか?

分類Dev

このコードを実行するための最も効率的な方法は何ですか?

分類Dev

WPF / MVVMLightで画面に長方形を描画するための最も効率的/最速の方法は何ですか

分類Dev

XAMLページに移動するための最も効率的な方法は何ですか?wp8

分類Dev

プリミティブ配列であるオブジェクトが与えられた場合、配列要素のプリミティブ型を決定するための最も効率的な方法は何ですか

分類Dev

PySparkに大きなSparseMatrixを格納するための最も効率的な形式は何ですか

分類Dev

NumLockがオンになっていることを確認するための最もCPU効率の高い方法は何ですか?

分類Dev

キーワード/関数を実行するための最も効率的な方法は何ですか?

分類Dev

Javaで文字列を逆にするための最も効率的なアルゴリズムは何ですか?

分類Dev

位置とともに行列内の最大の要素を見つける最も効率的な方法は何ですか?また、各列の最大の要素と位置

分類Dev

`&str`を` String`の前に付ける最も効率的な方法は何ですか?

分類Dev

10進数値を決定する最も高速で最も効率的な方法は、Javaの整数です

Related 関連記事

  1. 1

    Terraform構成に必要な最小AWS権限を決定するための最も効率的な方法は何ですか?

  2. 2

    ある配列のどの要素が別の配列の要素に近いかを見つける最も効率的な方法は何ですか?

  3. 3

    リストの最後のn個の要素を取得するための最も効率的な方法は何ですか

  4. 4

    新しいアクティビティを作成するための最も効率的な方法は何ですか

  5. 5

    WindowsとLinuxを同時に実行するための最も効率的な方法は何ですか?

  6. 6

    スパースscipy行列の行をゼロに設定する最も効率的な方法は何ですか?

  7. 7

    多数の要素にイベントリスナーを追加する最も効率的な方法は何ですか?

  8. 8

    しきい値よりも大きいリストの項目を判別するための最も効率的な方法は何ですか?

  9. 9

    Elasticsearchからすべての結果を取得するための最も効率的な方法は何ですか?

  10. 10

    PairRDDで一意のペアを取得するためのSparkで最も効率的な方法は何ですか?

  11. 11

    XamarinFormsでcsvを検索するための最速かつ最も効率的な方法は何ですか?

  12. 12

    Cythonでガウス乱数を生成するための最も効率的でポータブルな方法は何ですか?

  13. 13

    Slickで単一の結果を取得するための最も効率的な方法は何ですか?

  14. 14

    FFMPEGでビデオのサイズを変更するための最も効率的な方法は何ですか?

  15. 15

    値を最も近い45度に丸める最もクリーンな方法は何ですか?

  16. 16

    データフレームを削減するためにpysparkで最も効率的な方法は何ですか?

  17. 17

    ソートされたベクトルに要素を挿入する最も効率的な方法は何ですか?

  18. 18

    出席データを保存するための最も効率的または便利な方法は何でしょうか?

  19. 19

    このコードを実行するための最も効率的な方法は何ですか?

  20. 20

    WPF / MVVMLightで画面に長方形を描画するための最も効率的/最速の方法は何ですか

  21. 21

    XAMLページに移動するための最も効率的な方法は何ですか?wp8

  22. 22

    プリミティブ配列であるオブジェクトが与えられた場合、配列要素のプリミティブ型を決定するための最も効率的な方法は何ですか

  23. 23

    PySparkに大きなSparseMatrixを格納するための最も効率的な形式は何ですか

  24. 24

    NumLockがオンになっていることを確認するための最もCPU効率の高い方法は何ですか?

  25. 25

    キーワード/関数を実行するための最も効率的な方法は何ですか?

  26. 26

    Javaで文字列を逆にするための最も効率的なアルゴリズムは何ですか?

  27. 27

    位置とともに行列内の最大の要素を見つける最も効率的な方法は何ですか?また、各列の最大の要素と位置

  28. 28

    `&str`を` String`の前に付ける最も効率的な方法は何ですか?

  29. 29

    10進数値を決定する最も高速で最も効率的な方法は、Javaの整数です

ホットタグ

アーカイブ