4

私はjavaScript/jQueryで書かれたゲームに取り組んでいます。私のコードの一部は、タイルグリッド上にランダムなポリゴン(島)を描画します。ポイントがポリゴンの内側にあるかどうかを確認する必要があります。

Stack Overflowのいくつかの 場所で見つけたポイントインポリゴン交差スクリプトを使用しています(元のスクリプトはこちら)。これはFirefoxで正常に機能します。Chromeでは、スクリプトがポリゴン内にないと言っているポリゴン内のポイントがあります。

Firefoxの場合: ここに画像の説明を入力してください

Chromeの場合(ランダムに生成されるため、島は異なります): ここに画像の説明を入力してください

ここのソース、特にpointPolygonIntersect関数を見てください: ポリゴンヒットテストのポイント

なぜこれが起こっているのか誰かが理解できますか?元のスクリプトはCであり、JavaScriptバージョンを使用しています-これが問題の原因である可能性がありますか?

4

2 に答える 2

2

島を選び、それを守ります。両方のブラウザでコードをトレースし、それらがどこで異なるかを確認します。簡単に削除できるランダム性と戦う理由はありません...

于 2011-06-30T02:43:17.180 に答える
0

ざっと見てみました。アプリのフローを追跡できませんでしたが、奇妙に思われるのは

c = !c;

コード行。初めて条件を満たした場合、なぜそれをtrueに設定したり、直接trueを返したりしないのですか?私は、クロムが「真」になり、次にx/yの範囲内にあるときにそれを反転すると仮定しています。

私はRaphaelやSVGに精通していませんが、ポリゴンは正方形のようです。したがって、テスト内で簡単に行うことができます。

//original found here http://www.gamedev.net/topic/483716-point-inside-of-rectangle/
function inside( x, y, l, r, b, t ){ //x,y are the point, l,r,b,t are the extents of the rectangle
    return x > l && x < r && y > b && y < t;
}
于 2011-06-30T00:08:05.557 に答える