Sto provando a scrivere una funzione che prende due rettangoli sovrapposti e restituisce una matrice di rettangoli che copre l'area del rettangolo A, ma esclude l'area del rettangolo B. Sto avendo difficoltà a capire come appare questo algoritmo dato che il numero di possibili collisioni è enorme e difficile da spiegare.Ritaglio di un rettangolo in JavaScript
tl; dr Sto provando a ritagliare un rettangolo utilizzando un altro rettangolo creando un insieme di rettangoli che coprono l'area rimanente.
|-------------| |-------------|
|A | |R1 |
| |-------|----| |-----|-------|
| |B | | To |R2 |
| | | | ====> | |
| | | | | |
|-----|-------| | |-----|
| |
|------------|
POSSIBLE OVERLAP PATTERNS
|-----| |-----| |-----| |-----|
| |---|-| |-|---| | | |-| | | |-| |
|-|---| | | |---|-| |-|-|-| | |-| |
|-----| |-----| |-| |-----|
|-| |-----| |-----|
|-|-|-| | |---|-| |-|---| |
| |-| | | |---|-| |-|---| |
|-----| |-----| |-----|
noti che i possibili modelli di sovrapposizione è doppia rispetto a quella visualizzata perché rettangolo A e B potrebbero essere rettangolo etere in qualsiasi dei modelli di sovrapposizione sopra.
Potrebbe essere possibile utilizzare i punti di vertice per questo. È possibile calcolare le nuove coordinate del rettangolo in base alla distanza tra i vertici in B da A. – Nikki
C'è un altro problema, il risultato a volte più di un rettangolo. tra uno e nove penso. –
Sicuramente esiste un algoritmo standard? Comunque; un'idea. Ci sono 4 coordinate xe 4 coordinate y, le tue nuove zone saranno sempre una combinazione di queste. Le 4 x coords dividono la tela in 5 bande verticali, le y si coordinano in 5 bande orizzontali, se la peggiore viene al peggio ci sono 25 rettangoli non sovrapposti che appartengono ad A, B, nessuno dei due o entrambi. Mantieni quelli appartenenti a solo A ed escludi tutti gli altri. – boisvert