Obliczanie prostokąta, w którym zawierają się dwa inne

0

Cześć, aktualnie pocę się nad algorytmem, który ma za zadanie narysować prostokąt, w którym w całości będą się zawierały dwa inne prostokąty. Algorytm musi działać poprawnie dla dowolnego ustawienia wewnętrznych prostokątów. Poniżej wrzucam kilka przykładów jak to powinno wyglądać.

Na wejściu mam zestawy składające się z 2 prostokątów (każdy zapisany w postaci 4 punktów x,y):
before.png

Jako wynik potrzebuję uzyskać koordynaty 4 punktów x,y w których będą zawarte prostokąty z wejścia:
after.png

Wiem, że jest coś takiego jak System.Drawing.Rectangle.Union(Rectangle a, Rectangle b) ale niestety wynik mnie nijak nie urządza.

Efekt zastosowania Union:
after_bad.png

Niestety, konfiguracji wejściowych prostokątów jest tak dużo, że z mojego kodu robi się już niezły makaron.

Czy znacie jakąś bibliotekę, która byłaby w stanie ogarnąć takie zadanie?

2

Szukaj informacji pod kątem arbitrarily oriented minimum bounding box.

Edit: tutaj jest całkiem ciekawy artykuł na przykład, jeśli Twoim kryterium jest ofc. pole.

0

To musi być prostokąt o jak najmniejszym polu?

0

@Patryk27: Bardzo Ci dziękuję za naprowadzenie. Skorzystałem z biblioteki Emgu.CV i wszystko śmiga! :)

0

To zadanie musisz najpierw rozwiązać matematycznie a potem zrobić program. Jeśli jesteś kiepski z matematyki i programowania to nie wróżę ci nic dobrego

1

@Zimny Krawiec: Dziękuję za Twoją uwagę, mimo że nie trafioną. Nie wydaje mi się żebym był kiepski z matematyki bo jakby nie było - rozwiązałem ten problem matematycznie. Tak jak pisałem w pierwszym poście, możliwych ustawień prostokątów jest bardzo wiele i obliczenia w kodzie nie wyglądają zbyt elegancko. Na szczęście @Patryk27 podrzucił mi artykuł z którego wyciągnąłem algorytm działający uniwersalnie, bez względu na konkretny przypadek.

1 użytkowników online, w tym zalogowanych: 0, gości: 1