0

Google クロージャを使用して、平面の領域を重複しない長方形でカバーするアプリケーションを作成しようとしています。私が持っている 1 つの要件は、平面上の点 (浮動小数点座標を持つ可能性がある) を取得し、その点をカバーする単一の四角形を識別できることです。残念ながら、これはクロージャの矩形クラスを使用する際に問題を引き起こしました。

たとえば、左上隅が (0,0) と (1,1) にある 2 つの単位次元の四角形を考えてみましょう。通常、これらの四角形は重複していないと考えますが、クロージャの四角形クラスは、両方に点 (1,1) が含まれていることを示しています。

これらの長方形が重ならないようにクロージャを考慮させる方法はありますか? または、すべての可能な座標を含むが重複しない長方形を生成する別の方法 (たとえば、長方形の 1 辺のサイズが 1 より小さい最大数であることを指定する方法)?

4

1 に答える 1

0

あなたの質問に:これらの長方形が重ならないと見なして閉鎖することはできません。また、すべてのスペースをカバーするが重ならない長方形を生成することはできません。

しかし、あなたはこれを間違った方法で進めています。どの辺がどの正方形に属しているかを定義するだけです。たとえば、各正方形はその上端と左端の境界線を所有しています。クロージャを使用して、特定の点に接するすべての長方形を取得し、点が下隅または右隅の一部である長方形を無視します。

ただし、いくつかの注意事項: 2 つの正方形がその境界線上のピクセルを共有するため、正方形は完全な左境界線を所有することはできません。したがって、正方形は左下のピクセルを所有していません。ただし、手順を説明した方法はそれを処理します。また、覆われたスペースの右下で何をしたいのかを考える必要があります。スペースが長方形のサイズの倍数である場合は、右隅と下隅に例外を追加するか、四角形に線だけを追加する必要があります。

于 2013-07-31T10:37:42.917 に答える