1

これは正直なところ、より一般的な質問であり、誰かがこの主題について何らかの調査を行ったかどうか疑問に思っています。

基本的に、私は自分の個人的な使用のために作成している小さなゲームエンジンにイベントサポートを追加しています。2Dオブジェクトイベントのサポートにピクセルパーフェクトホバーをかけたいのですが、それを行うための最良の方法を考えています。現実的には、オブジェクトの外側を定義する一連のポイントを作成する必要がないため、透明なキャンバスにオブジェクトの描画を呼び出して、マウスxyが透明なピクセル上にあるかどうかを確認するだけの方が個人的には高速です。これにより、オブジェクトに穴を開けることができ、ホバーしたかどうかを正しく知ることができます。

私が疑問に思っているのは、ここに示す方法を使用していることです。2Dポイントがポリゴン内にあるかどうかをどのように判断できますか?

私の方法は、そこに示されている方法よりどれくらい遅くなりますか?

私は現在まだ学習しているので、これらすべてを実装して自分でテストするのは簡単ではありません。正しく動作して速度をテストするには、おそらく何年もかかるからです。

補足:毎回再描画やテストを行わないようにするための基本的なバウンディングボックスはまだあります。

4

1 に答える 1

0

ポイントがポリゴン内にあるかどうかを確認すると、99.999999%の確率で、非常に高速になります。

速度を遅くするには、ポリゴンを非常に複雑にする必要があります。

他の方法を実行するには、を使用する必要がありgetImageData、キャンバス上の画像データの取得は非常に遅くなります。

ポイントインポリゴンアルゴリズム、穴を適切に考慮します。ゼロ以外の回転数の規則に従うものがあることを確認してください。これは、キャンバスが使用するものであり(偶数の奇数の規則ではなく)、キャンバスで構築されたパスとの互換性が必要になる場合があります(現在または後で)。

于 2012-10-22T04:09:20.093 に答える