두 개의 겹치는 사각형을 사용하고 사각형 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