Porównanie metody Eulera oraz RK4 do integracji równań fizycznych

Swego czasu, tak jak opisywałem wcześniej na blogu implementowałem symulację materiału reprezentowanego przez ciała posiadające jedynie masę połączone sprężynami. Wynik był średnio zadowalający gdyż przy mocnym napięciu sprężyn materiał potrafił „eksplodować”, rezultat ten był spowodowany zastosowaniem „zwykłego” integratora Eulera, czyli inaczej mówiąc wzorów fizycznych pamiętanych ze szkoły średniej. Jako, że nie chciałem żeby materiał zachowywał się jak guma zacząłem poszukiwania rozwiązania tego problemu i natknąłem się na metodę Runge-Kutty rzędu czwartego, dodatkowo pokryło to się jakoś z zajęciami na uczelni na których omawialiśmy RK4 jak i inne metody. Ostatecznie zaimplementowałem ten algorytm posiłkując się tym artykułem: http://gafferongames.com/game-physics/integration-basics/
Wynik jest naprawdę dobry, można napiąć sprężyny bardzo mocno przez co już nie zachowuje się jak guma.
A jako, że ostatnio mieliśmy przygotować referat na zajęcia z Fizyki to ustaliłem z prowadzącym że zaprezentuję ten temat, bo już miałem z tym doświadczenia i pełną implementację. Na potrzeby prezentacji napisałem małe demko w którym można porównać zachowanie materiału z integratorem Eulera oraz RK4

Rezultat:

Do pobrania:

Żeby nie referat to pewnie powróciłbym do tego tematu później, bo w między czasie (teraz a początek semestru) zacząłem robić mini demko symulacji materiału kolidującego z dowolnymi złożonymi siatkami, aktualnie już działa, ale na CPU jest strasznie wolne i przeniosę implementację na GPU – a dokładnie OpenCL a dodatkowo chcę zrobić coś na wzór demka scenowego więc muszę jakoś to poskładać ładnie.

2 Comments

  1. qbix says:

    Przeredaguj posta, na początku chyba powinno być “Swego czasu”:) Swoją drogą demko bardzo fajne, jeśli nie zdążyłem tego powiedzieć na zajęciach:]

  2. admin says:

    Dzięki za feedback, faktycznie zjadłem słowo – fixed :)

Leave a Reply