Mogę być nieporozumieniem, ale wygląda na to, że zadajesz dwa pytania: 1. Jakie są ogólne sposoby radzenia sobie z kolizją, którego szukasz, to „symulacja oparta na impulsie”, i jest mnóstwo dokumentów, które mogę to zrobić lepiej niż ja.
Podsumowując, chcesz podeprzeć symulację fizyki w przestrzeni pędu, która jest masą razy prędkość (nie rób rzeczy opartych na sile, twój integrator i tak nie robi tego poprawnie).
W przypadku odpowiedzi kątowej na szczęście największe i najmniejsze momenty bezwładności można zawsze zredukować do dwóch osi ortogonalnych (w 2D), co oznacza, że mnożenie macierzy będzie ogólnie działać, a jeśli zrównasz je z osiami X i Y, zamieni się w wektor 2D.
Kiedy masz kolizję, obliczasz reakcję na podstawie momentów liniowych i kątowych w punkcie kolizji, a dobrym współczynnikiem krycia jest, jeśli masz wzajemne przenikanie, zastosowanie pewnej siły karnej (jak wspomniano powyżej), aby rozdzielić oba ciała.
Od tego momentu skończysz dodawać coraz więcej reguł, aby kontrolować nieprawidłowe zachowania, takie jak ograniczenie maksymalnego momentu pędu, aby rzeczy nie obracały się jak szczyty itp., Ale to dobry początek.
Zachowaj prostotę, jeśli możesz.
- Jak rozwiązywać problemy z kolizją wielu ciał
Jedynym prawdziwym sposobem na to jest układ równań liniowych i wiele rozwiązań. Praktycznym sposobem, aby to zrobić, jest system podobny do powyższego, a fizyka po prostu naturalnie rozwiązuje się z czasem.
Większość gier, które toczą się lub stoją na ruchomych powierzchniach, ma model hybrydowy, w którym stopy są przymocowane do powierzchni (lub kół do drogi), aby dostosować się do kroku czasowego fizyki (co skutkowałoby cyklami wzajemnego przenikania się i reakcji) nie działa).
Mam nadzieję że to pomoże. Jeśli potrzebujesz przykładów matematycznych, daj mi znać.