2つのオーバーラップする矩形を取り、矩形Aの領域をカバーする矩形の配列を返しますが、矩形Bの領域は除外する関数を作成しようとしています。起こりうる衝突の数が膨大であり、説明が困難な場合にこのアルゴリズムがどのように見えるかを調べることです。JavaScriptで矩形を切り取る
tl; dr他の矩形を使用して矩形をクリップして、残りの領域をカバーする四角形のコレクションを作成しようとしています。
|-------------| |-------------|
|A | |R1 |
| |-------|----| |-----|-------|
| |B | | To |R2 |
| | | | ====> | |
| | | | | |
|-----|-------| | |-----|
| |
|------------|
POSSIBLE OVERLAP PATTERNS
|-----| |-----| |-----| |-----|
| |---|-| |-|---| | | |-| | | |-| |
|-|---| | | |---|-| |-|-|-| | |-| |
|-----| |-----| |-| |-----|
|-| |-----| |-----|
|-|-|-| | |---|-| |-|---| |
| |-| | | |---|-| |-|---| |
|-----| |-----| |-----|
上記のオーバーラップパターンのいずれかで矩形AとBがエーテル矩形である可能性があるため、可能なオーバーラップパターンは二重であることに注意してください。
このために、頂点ポイントを使用することは可能かもしれません。新しい矩形座標は、AからBまでの頂点間の距離に基づいて計算することができます。 – Nikki
別の問題があります。結果が複数の矩形になることがあります。 1と9の間にあると思う。 –
確かに標準アルゴリズムがありますか?とにかく;アイデア。 4 x座標と4 y座標があり、新しいゾーンは常にこれらの組み合わせになります。 4 x座標はキャンバスを5個の垂直バンドに分割し、y座標を5個の水平バンドに分割します。最悪の場合はA、B、どちらにも属していない25個の重複しない矩形があります。あなたはAのみに属し、他のすべてを除外します。 – boisvert