Pracuję nad czysto ciągłym silnikiem fizyki i muszę wybrać algorytmy wykrywania kolizji w fazie szerokiej i wąskiej. „Czysto ciągły” oznacza, że nigdy nie przeprowadzam testów przecięcia, ale zamiast tego chcę znaleźć sposoby na złapanie każdej kolizji, zanim to nastąpi, i umieszczenie każdej z nich w stosie „planowanych kolizji”, zamówionym przez TOI.
Faza szeroka Jedyną ciągłą metodą fazy szerokiej, jaką mogę wymyślić, jest zamknięcie każdego ciała w kręgu i sprawdzenie, czy każde koło kiedykolwiek zachodzi na inne. Wydaje się to jednak okropnie nieefektywne i pozbawione jakiegokolwiek uboju.
Nie mam pojęcia, jakie ciągłe analogi mogą istnieć w dzisiejszych dyskretnych metodach eliminowania kolizji, takich jak drzewa quad. Jak mogę zapobiegać niewłaściwym i bezcelowym szerokim testom, takim jak dyskretny silnik? Chciałbym także widzieć kolizje więcej niż o 1 klatkę przed nimi.
Wąska faza
Udało mi się dostosować wąski SAT do ciągłego sprawdzania, a nie dyskretnego, ale jestem pewien, że istnieją inne lepsze algorytmy w dokumentach lub witrynach, z którymi mogliście się spotkać.
Jakich różnych szybkich lub dokładnych algorytmów sugerujesz użyć i jakie są zalety / wady każdego z nich?
Uwaga końcowa:
mówię techniki, a nie algorytmy, ponieważ jeszcze nie zdecydowałem, w jaki sposób będę przechowywać różne wielokąty, które mogą być wklęsłe, wypukłe, okrągłe, a nawet mieć dziury. Planuję podjąć decyzję w oparciu o to, czego wymaga algorytm (na przykład, jeśli wybiorę algorytm, który rozkłada wielokąt na trójkąty lub wypukłe kształty, po prostu zapiszę dane wielokąta w tej formie).