Devlog #18 — 250 symulacji: wnioski z budowy największej biblioteki fizyki WebGL

Dwa lata. 250 symulacji. 73 kategorie. Dwa języki. Zero frameworków. Oto, czego się nauczyliśmy — co zadziałało znakomicie, co zrobilibyśmy inaczej i które 10 symulacji było najtrudniejszych do wypuszczenia.

250
działających symulacji
73
kategorie
EN + UK
języki
~2 lata
w rozwoju

Jak do tego doszliśmy

Projekt zaczął się od jednej symulacji — wahadła — zbudowanej w weekend przy użyciu Three.js. Pytanie „a co, jeśli dodam kolejną?” doprowadziło do dziesięciu, potem pięćdziesięciu, potem stu. Skok ze 100 do 250 był świadomą decyzją: uporządkowanym marszem przez każdą główną dziedzinę nauki, napędzanym planem treści, a nie pojedynczymi błyskami inspiracji.

Najważniejsza decyzja architektoniczna — podjęta jeszcze przy symulacji #3 — polegała na tym, by każda symulacja pozostawała całkowicie samodzielna. Każdy plik index.html zawiera własne style i logikę. Nie ma wspólnego bundla, globalnego stanu ani frameworku do aktualizowania. Ta decyzja wytrzymała próbę czasu znakomicie.

Co zadziałało

Co zrobilibyśmy inaczej

10 najtrudniejszych symulacji, jakie zbudowaliśmy

#1
Rozwiązywanie nieściśliwych równań Naviera-Stokesa ze sprzężeniem ciśnienie-prędkość (algorytm SIMPLE) w nieregularnej siatce naczynia. Zbieżność równania Poissona dla ciśnienia udało się ustabilizować dopiero za drugim podejściem.
#2
Metoda źródeł obrazowych dla wczesnych odbić + statystyczny ogon pogłosu. Poprawna obsługa kolejności odbić zwierciadlanych w nieprostokątnej sali wymagała rekurencyjnego przebiegu wstępnego ray tracingu.
#3
Składanie rzadkiej globalnej macierzy sztywności i rozwiązywanie jej na żywo metodą eliminacji Gaussa — przy jednoczesnym synchronizowaniu renderera WebGL z obliczonymi odkształceniami. Układ danych w pamięci miał kluczowe znaczenie.
#4
Połączenie sterowania formacją opartego na konsensusie z rozproszonym unikaniem kolizji dla 60 agentów wymagało dwuwarstwowego kontrolera: wolnego planisty formacji i szybkiej reaktywnej warstwy unikania przeszkód.
#5
Dynamika oparta na pozycjach z iteracyjnym rozwiązywaniem więzów — liczba iteracji solvera bezpośrednio determinuje kompromis między jakością wizualną a liczbą klatek na sekundę. Osiągnięcie płynności na urządzeniach mobilnych wymagało ponad 40 godzin dostrajania.
#6
Implementacja buforów ramki ping-pong w WebGL1 bez rozszerzeń tekstur zmiennoprzecinkowych wymagała kodowania stężeń chemicznych w kanałach bajtowych RGBA oraz starannego zarządzania precyzją.
#7
Układ równań różniczkowych zwyczajnych Hodgkina-Huxleya jest sztywny — stała czasowa kanału sodowego jest 100 razy krótsza niż całkowity czas trwania potencjału czynnościowego. Wymagało to RK4 z adaptacyjnym krokiem, aby uniknąć niestabilności numerycznej.
#8
Implementacja dwuwymiarowej metody paneli wirowych — rozwiązywanie N równań liniowych dla intensywności wirów panelowych — a następnie poprawna wizualizacja linii prądu zajęła trzy pełne przepisania solvera macierzowego.
#9
Renderowanie 100 000 instancji atomów z kolorowym kodowaniem stanu energetycznego przy użyciu InstancedMesh, podczas gdy krok Monte Carlo modyfikuje macierze instancji w każdej klatce. Synchronizacja buforów okazała się trudna.
#10
Model masy neuronowej Wilsona-Cowana ze sprzężeniem wzgórzowo-korowym. Odtworzenie dobrze znanych szczytów widmowych delta/theta/alfa wymagało starannej kalibracji parametrów względem opublikowanych danych widmowych EEG.

Co dalej: droga do 300

🔬 Nanoskala i biofizyka
Dynamika molekularna, krajobrazy energetyczne zwijania białek, mechanika DNA — fizyka w skali 1–100 nm, łącząca chemię i biologię.
🌐 Nauka o sieciach
Sieci bezskalowe, perkolacja, rozprzestrzenianie się epidemii na grafach, wizualizacja PageRank — matematyka stojąca za internetem i mediami społecznościowymi.
🎓 Lekcje z przewodnikiem
Uporządkowane sekwencje edukacyjne łączące 3–5 symulacji z tekstem wyjaśniającym — przekształcające pojedyncze symulacje w spójny program nauczania.
📥 Dane do pobrania
Eksport stanu symulacji jako CSV / JSON do wykorzystania w projektach studenckich i demonstracjach badawczych. Już prototypowane dla symulacji wahadła i bilardu.

Dziękujemy wszystkim, którzy korzystali z tej strony, dzielili się nią i przesyłali informacje zwrotne. 250. symulacja powstała dzięki e-mailowi od nauczyciela fizyki, który poprosił o demonstrację figur Chladniego dla swojej klasy. Piszcie dalej ze swoimi propozycjami — właśnie tak naprawdę rozwija się ta biblioteka.