Skocz do zawartości

Kupą, mości panowie, czyli symulacja grawitacji


Rekomendowane odpowiedzi

Niedawno postanowiłem zmierzyć się z algorytmem Barnesa-Huta do symulowania oddziaływania grawitacyjnego mrowia cząstek i oto, co mi wyszło (250 tysięcy mas punktowych):

 

 

frame00010.png

frame00014.png

frame00100.png

frame00396.png

frame01029.png

 

 

Mały filmik z całością (640x360, ok. 46 MiB): link

Duży filmik dla cierpliwych (1280x720, ok. 431 MiB): link

 

Barnes-Hut jest szybki, bo zasadza się na prostym triku: jeśli mamy cząstkę A i bardzo od niej odległą grupę cząstek B, to zamiast liczyć siłę grawitacji pomiędzy A i każdą cząstką z B, całość B traktujemy jak jedną dużą cząstkę i siłę A-B liczymy tylko raz. Powtarza się to potem dla wszystkich cząstek i grup (jeśli są jakieś odpowiednie).

 

Uwaga - to nie jest "symulacja galaktyki". Przeczytałem parę artykułów na ten temat i w pełnoprawnych, naukowych symulacjach (powstawania, kolizji galaktyk) uwzględnia się sporo dodatkowych czynników.

  • Lubię 3
Odnośnik do komentarza
Udostępnij na innych stronach

To jest 2D czy 3D?

Rysujesz za pomocą OpenGL'a?

W czym implementowałeś?

Próbowałeś OpenCL'a?

 

Symulacja naturalnie w 3D, jak widać na filmie. C++, w tym Boost do wątków (szczegóły w pierwszym linku poprzedniego posta). Rendering w OpenGL, punkty i point sprites. A OpenCLa próbowałem, acz nie do tego ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.