Próbuję zaimplementować twierdzenie o osi oddzielającej w języku C #. Mam funkcję, która może obliczyć minimalny wektor translacji między dwoma wielokątami. Nie mogę jednak stworzyć funkcji, która oblicza minimalny wektor translacji między jednym wielokątem a wieloma innymi wielokątami. Szczerze mówiąc, pracuję nad tym od miesięcy i nie jestem bliżej rozwiązania i nie byłem w stanie znaleźć rozwiązania online. Zawsze jest kilka przypadków, które nie zwracają prawidłowego wyniku, co prowadzi do błędów o wysokim priorytecie w mojej grze.
Oto typowe przypadki krawędzi, które nie działają poprawnie:
Czy istnieje dobrze znane rozwiązanie tego problemu? Wszystko, co mogę znaleźć, to ludzie, którzy mówią „po prostu wykonaj SAT na każdym wielokącie”, ale rzadko daje to minimalny wektor translacji.
Każda pomoc byłaby bardzo mile widziana.