0

環境

Java Graphics2D を使用しています。

たくさんの形を描いています。

高速なヒット検出を実行できるようにしたいと考えています。マウスがオブジェクトをクリックしたときに、どのオブジェクトがクリックされたかを知りたいのです。

詳細:

充填検出のレベルでこれを行いたいと思います。つまり、円がある場合、円の境界ボックスでのヒット検出は必要なく、円の内側でのヒット検出が必要です。

ストローク/線/フォントについては、(文字の黒い部分ではなく) ボックスに対してヒット検出を行っても問題ありません。

質問:

これを設定するには、どの API を使用すればよいですか? [そして、好奇心から、Java はどのアルゴリズムを使用しますか / 実行時間はどのくらいですか?]

ありがとう!

4

1 に答える 1

1

? で各シェイプをshape.contains(point)尋ねます。

これは O(シェイプの数) ですが、おそらくこれより高速なものは必要ありません。形状のヒット テストに 1 マイクロ秒かかり、形状が 100,000 個あると仮定すると、1 秒間に 10 回のクリックを処理できます...

于 2012-06-17T12:24:10.513 に答える