Fala 55 w skrócie
Eksplorator wielościanów
Wszystkie 5 brył platońskich i 13 brył archimedesowych renderowanych z projekcją perspektywiczną. Przeciągnij, by obrócić, przewiń, by przybliżyć, przełącz siatkę szkieletową i etykiety wierzchołków. Formuła Eulera V−E+F=2 weryfikowana na żywo.
Otwórz symulację →Szkoła ryb 3D
200 ryb kierowanych regułami Boids separacji, wyrównania i kohezji, z trzema warstwami głębi dla pseudo-3D realizmu. Rekin drapieżnik poluje na ławicę, wywołując zachowanie panicznej ucieczki w promieniu 110 px.
Otwórz symulację →SPH Dam Break
300 cząstek kierowanych ciśnieniem, lepkością i grawitacją w metodzie SPH. Tama wody zapada się i rozlewa przez zbiornik. Koloruj według prędkości, ciśnienia lub gęstości.
Otwórz symulację →🔷 Eksplorator wielościanów
Wielościany — trójwymiarowe bryły ograniczone płaskimi ścianami wielokątnymi — należą do najbardziej badanych obiektów w matematyce. Starożytni Grecy sklasyfikowali pięć brył platońskich: wypukłych wielościanów, których wszystkie ściany są przystającymi wielokątami foremnymi, a wszystkie wierzchołki są sobie równoważne. Archimedes rozszerzył tę klasyfikację o 13 brył archimedesowych: wypukłych wielościanów o dwóch lub więcej rodzajach ścian wielokątów foremnych, ale wciąż wierzchołkowo przechodnich.
Formuła wielościenna Eulera
Leonhard Euler (1752) odkrył, że dla dowolnego wielościanu wypukłego — a właściwie dla dowolnej jednospójnej powierzchni wielościennej homeomorficznej ze sferą — liczby wierzchołków V, krawędzi E i ścian F spełniają zależność:
Formuła uogólnia się: dla powierzchni rodzaju g (torus ma g=1), charakterystyka Eulera wynosi 2−2g. Torus spełnia V−E+F=0. Ten związek między własnościami kombinatorycznymi (liczby wierzchołków/krawędzi/ścian) a własnościami topologicznymi (rodzaj) jest fundamentem topologii algebraicznej.
Pięć brył platońskich i ich grupy symetrii
Bryły platońskie odpowiadają skończonym grupom obrotów przestrzeni 3D. Ich grupy symetrii są takie same jak symetrie obrotowe tych brył:
- Czworościan — symetria T (tetraedryczna chiralna), 12 obrotów.
- Sześcian i ośmiościan — symetria O (oktaedryczna), 24 obroty. Te dwie bryły są wzajemnie dualne.
- Dwunastościan i dwudziestościan — symetria I (ikosaedryczna), 60 obrotów. Także dualne.
Istnieje ich tylko pięć, ponieważ wymóg regularności wypukłej bryły ogranicza możliwe kombinacje ścian wielokątów foremnych spotykających się w wierzchołku: suma kątów ścian w każdym wierzchołku musi być ściśle mniejsza niż 360°. Tylko trójkąty, kwadraty i pięciokąty dają prawidłowe rozwiązania, zanim ten kątowy deficyt się wyczerpie.
Projekcja perspektywiczna na Canvas 2D
Symulator wykorzystuje czystą projekcję perspektywiczną Canvas 2D:
każdy wierzchołek 3D (x, y, z) jest najpierw obracany
przez dwie macierze wyprowadzone z kwaternionów (odchylenie i
pochylenie, aktualizowane przy każdym ruchu przeciągania), a
następnie rzutowany na ekran wzorem
sx = cx + f·X/(Z+d), sy = cy + f·Y/(Z+d),
gdzie f to ogniskowa, a d to przesunięcie
kamery. Ściany są sortowane malarsko według współrzędnej Z ich
środka ciężkości, by uzyskać poprawne uporządkowanie głębi.
🐟 Szkoła ryb 3D — Boids z drapieżnikiem
W 1986 roku Craig Reynolds opublikował Boids — zwodniczo prosty model, który generuje uderzająco realistyczne zachowanie stadne z zaledwie trzech lokalnych reguł. Żaden globalny koordynator nie kieruje stadem; każdy agent reaguje jedynie na sąsiadów w promieniu percepcji. Wynikowe zachowanie emergentne jest nie do odróżnienia od prawdziwego rojenia się szpaków czy ławicy sardeli.
Trzy reguły Boids
- Separacja — odsuwaj się od sąsiadów w promieniu rsep, by unikać kolizji.
- Wyrównanie — kieruj się w stronę średniego kierunku sąsiadów w promieniu rali.
- Kohezja — kieruj się w stronę środka masy sąsiadów w promieniu rcoh.
Wypadkowa siła sterująca w każdym takcie to ważona suma:
Warstwy głębi dla pseudo-3D
Canvas 2D uruchamia dwuwymiarową symulację Boids, ale trzy warstwy głębi symulują trójwymiarową strukturę prawdziwej ławicy ryb. Ryby przy powierzchni (warstwa 0) są rysowane większe i w jaśniejszym cyjanie; ryby w toni wodnej (warstwa 1) są średniej wielkości w oceanicznym błękicie; ryby głębokie (warstwa 2) są mniejsze i w ciemnym granacie. Warstwy używają nieco innych promieni Boids, dzięki czemu utrzymują odrębne pod-ławice, wciąż wzajemnie na siebie wpływając poprzez promienie kohezji i wyrównania.
Rekin drapieżnik
Rekin to pojedynczy agent z dedykowanym zachowaniem łownym:
-
W każdym takcie rekin kieruje się w stronę najbliższej ryby w
promieniu
huntRadius. -
Ryby w promieniu
panicRadius(110 px) wchodzą w tryb paniki: ich waga separacji gwałtownie rośnie i dodają silny wektor ucieczki skierowany bezpośrednio od rekina. - Panikujące ryby zmieniają barwę na żółtą — u prawdziwych sardeli udokumentowanym zjawiskiem jest bladnięcie ubarwienia pod wpływem stresu, prawdopodobnie związane ze zmniejszoną aktywacją irydoforów.
- Jeśli rekin złapie rybę (odległość < 8 px), ryba odradza się przy losowej krawędzi, naśladując statystyczną niemal-stałość liczebności ławicy pomimo drapieżnictwa.
Liczenie skupisk
Panel statystyk w każdej klatce raportuje liczbę odrębnych skupisk. Przynależność do skupiska jest wyznaczana prostym algorytmem union-find: dwie ryby należą do tego samego skupiska, jeśli ich wzajemna odległość jest mniejsza niż promień kohezji. Podczas normalnego stadnego zachowania liczba ta wynosi zwykle 1–3; podczas ataku rekina często skacze do 6–10, gdy ławica się rozpada.
💧 SPH Dam Break — hydrodynamika cząstek wygładzonych
Smoothed Particle Hydrodynamics (SPH) została wynaleziona jednocześnie i niezależnie przez Lucy'ego (1977) oraz Gingolda i Monaghana (1977) do symulacji zjawisk astrofizycznych, takich jak zderzenia gwiazd. W przeciwieństwie do metod siatkowych (Eulerowskich), SPH jest w pełni Lagrange'owska: płyn jest dyskretyzowany na cząstki niosące masę, prędkość i zmienne termodynamiczne. Siatka nie jest wymagana — same cząstki definiują domenę obliczeniową.
Aproksymacja SPH
Dowolna wielkość pola A w pozycji r może być aproksymowana jako ważona suma wkładów sąsiednich cząstek:
Siły ciśnienia i lepkości
Najpierw dla każdej cząstki obliczana jest gęstość na podstawie sumy Poly6. Następnie ciśnienie jest wyprowadzane z prostego równania stanu:
Siła ciśnienia działająca na cząstkę i od wszystkich sąsiadów j to:
Stabilność: podkroki i tłumienie
Symulacja wykonuje 3 podkroki na klatkę animacji z ustalonym
dt = 0,004 s. Sprężyste odbicie od
granic wykorzystuje współczynnik tłumienia 0,4, więc energia
kinetyczna jest usuwana przy kontakcie ze ścianą — odwzorowując
niesprężysty charakter rzeczywistych granic beton/płyn. Dla N ≤
600 wyszukiwanie sąsiadów O(N²) działa w pojedynczej pętli JS przy
60 fps na nowoczesnym sprzęcie; przyspieszenie siatkowe (hasz
przestrzenny) rozszerzyłoby limit do ~5000 cząstek.