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

Obliczanie prostokąta, w którym zawierają się dwa inne
MN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
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?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
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.

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
0

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

MN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

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

ZK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 273
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

MN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.