Myślę, że próbujesz dopasować kwadratowy klucz do okrągłej dziury, stosując SAT tak, jak jesteś tutaj. Oczywiście nie jest przeznaczony do kolizji wklęsło-wklęsłych i chociaż pochwalam twój wysiłek dostosowania go do tego celu, istnieją względy, które sprawiają, że jest mało prawdopodobne, aby działało.
Realizm
Impuls kątowy i jego efekty domina to nazwa tej gry.
Kolejność punktów kontaktowych jest ważna dla realistycznego rozwiązywania kolizji. W prawdziwym świecie jeden z tych punktów zawsze będzie uderzał przed drugim. I tylko naśladując kolejność kontaktów i reprezentowane przez nią „podklasy” można oczekiwać, że uzyskasz realistyczny wynik w symulacji. Jest to jeden z głównych powodów, dla których rozkładasz klepisko na wypukłe, po pierwsze - pozwala ono na częściowe wykrycie, która część uderzyła jako pierwsza. Oczywiście można to również naśladować zgodnie z moim komentarzem pod nagłówkiem „Mniej realizmu”.
Twoje wypukłe urządzenia łączą się, aby nadać obiektowi zarówno kontur, jak i jego środek ciężkości (i oczywiście w bardziej złożonych symulacjach każde urządzenie może również wpływać na gęstość w inny sposób). Powodem, dla którego o tym wspominam, jest to, że realistycznie rozwiązując kolizje, będziesz musiał obliczyć nie tylko liniowy, ale także kątowy impuls, po każdym „zderzeniu podrzędnym” punktów kontaktowych. Nie jest to tak proste, jak podstawowe „rozsuwanie”, które aplikujesz za pomocą SAT.
To całkowicie zmienia naturę problemu, ponieważ, jak widać, bezcelowe jest uzyskiwanie i próba użycia 2 lub więcej punktów kontaktowych, ponieważ tak naprawdę to tylko pierwszy ma znaczenie. Po rozstrzygnięciu pierwszego pod względem impulsu liniowego i kątowego konieczne będzie ponowne obliczenie dla dalszych kolizji, ponieważ orientacje każdego obiektu ulegną zmianie. Co więcej, wykrycie każdego pojedynczego kontaktu na etapie może, ale nie musi, być wykonane w ramach tego samego etapu - w zależności od czasu między stykami, gdy styka się pierwszy punkt styku obiektów, stosowany jest kolejny impuls liniowy i kątowy, drugi punkt kontaktowy dotyka i tak dalej.
Mniej realizmu
Oczywiście, zakładając, że wcale nie jesteś zainteresowany rozwiązywaniem impulsu kątowego, wtedy najlepsze, co możesz zrobić z SAT, staje się zasadniczo tym, co byś zrobił, gdybyś owinął te wielokąty jako wypukłe za pomocą czegoś takiego jak Skan Grahama: Odepchnięcie pojedynczego separatora wektor. Innymi słowy, próba rozwiązania trzech wektorów w tandemie, jak wykazano, nie ma sensu. To największa w grupie, która się liczy.
EDYTUJ w odpowiedzi na twoje pytanie
Jeśli chcesz zastosować uproszczone podejście, musisz:
Określ prawidłowy kierunek przemieszczenia. Najłatwiej to zrobić przez wypukłe kadłubowanie każdego i określenie normalnych do osi oddzielającej.
Teraz musisz określić wielkość przesunięcia . Dlaczego nie możemy po prostu użyć wielkości podanej przez SAT? Ponieważ, jeśli się nad tym zastanowić, głębokości przenikania będą potencjalnie większe dla kadłubów wypukłych, niż dla ich dopasowanych kadłubów wklęsłych - pomyślcie o dwóch E z zębami w sobie! Jak już zrobiłeś powyżej, znajdź wszystkie punkty kontaktowe dla danego kroku, ale znajdź je równolegle do normalnych osi, ponieważ jest to prawidłowy kierunek przemieszczenia. Teraz określ, który z tych równoległych wektorów nakładających się jest najdłuższy. Odsuń się, odrzuć resztę i przejdź do następnego kroku fizyki.