Test przecięcia prostokątnego obwiedni 2D

9

Mam dwie wyrównane do obiektu ramki ograniczające (tzn. Nie są wyrównane względem osi, obracają się wraz z obiektem). Chciałbym wiedzieć, czy dwa wyrównane do obiektu pola nakładają się. ( Edycja: uwaga - używam testu ramki ograniczającej wyrównany do osi, aby szybko odrzucić odległe obiekty, więc nie ma znaczenia, czy procedura quad jest trochę wolniejsza ).

Moje skrzynki są przechowywane jako cztery punkty x, y. Szukałem odpowiedzi, ale nie potrafię zrozumieć nazw zmiennych i algorytmów w przykładach, aby zastosować je do mojego konkretnego przypadku.

Czy ktoś może mi pomóc, w jasny i prosty sposób, jak to zrobić? Dzięki. (Określony język nie jest ważny, pseudokod w stylu C jest w porządku.)

AshleysBrain
źródło

Odpowiedzi:

5

Jeśli wiesz, gdzie szukać, to łatwe. Szukasz oobb. Wejdź tutaj: http://www.realtimerendering.com/intersections.html .
Tam znajdziesz link do tej strony http://www.geometrictools.com/LibMathematics/Intersection/Intersection.html
i tam znajdziesz poprawny kod. (ctrl + f „Przecięcie pól (2D)”)

Wykorzystuje SAT i zawiera kody źródłowe oraz artykuł.

Notabene
źródło
Algorytm opisany przez geometrictools jest tym, na który wskazałbym.
Jari Komppa
Rozumiem, że to było 4 lata temu, ale zawsze wyjaśniam opinię negatywną i tak dalej. To jest całkiem „Twoja odpowiedź jest w innym zamku”, a teraz wydaje się, że nie ma nawet odpowiedzi w drugim przypadku.
Yann
2

Najłatwiejszym sposobem jest prawdopodobnie przetestowanie każdego wierzchołka pola B względem każdej strony pola A (obliczenie podpisanej odległości). W ten sposób możesz sklasyfikować każdy wierzchołek jako „przed” lub „za” segmentem.

Jeśli wszystkie wierzchołki B klasyfikuje się jako „przed” jednym z segmentów A, B i A nie pokrywają się; w przeciwnym razie robią.

Jest to w pewnym stopniu zaangażowane, więc możesz uzyskać pewien wzrost wydajności, wykonując najpierw sprawdzenie koła za pomocą ograniczających okręgów kwadratów (banalne do obliczenia)

ggambett
źródło
Najpierw robię test ramki granicznej wyrównanej do osi, aby szybko odrzucić odległe obiekty ... czy masz jednak więcej szczegółów na temat testu quad-quad?
AshleysBrain 30.01.11
tymczasowo obróć oba kwadraty z tą samą transformacją, aby jeden z nich wyrównał oś ... a następnie użyj testu SAT, jak wspomniano notabebe. po znalezieniu wyniku odwróć obrót, aby je odzyskać.
Steve H