Fala 32: DLA, Portret Fazowy i Wzory Turinga

Fala 32 dostarcza trzy niezwykle piękne symulacje matematyczne: rozgałęzione drzewa fraktalne wyrastające cząsteczka po cząsteczce z losowej dyfuzji, geometryczny język teorii układów dynamicznych w interaktywnych płaszczyznach fazowych pola wektorowego oraz oszałamiającą przepowiednię Alana Turinga z 1952 roku, że dwie dyfundujące substancje chemiczne mogą samoistnie wydrukować plamki, paski i labirynty na żywej tkance. Wszystkie trzy trafiają na stronę z pełnymi wersjami EN + UK.

Liczby platformy

469
Symulacji
72
Kategorii
52
Devlogów
32
Fal

Symulacje Fali 32

🌿

Diffusion-Limited Aggregation

Cząstki wykonują błądzenie losowe, aż dotkną rosnącego klastra i trwale się do niego przyklejają. Powstałe rozgałęzione drzewo ma wymiar fraktalny ~1,71.

Otwórz →
🔄

Portret Fazowy

Wizualizator płaszczyzny fazowej ODE 2D. Kliknij, aby wyznaczyć trajektorie całkowane metodą RK4. Nakładki pokazują strzałki pola wektorowego, izokliny zerowe i punkty stałe.

Otwórz →
🐆

Wzory Turinga

Układ reakcji-dyfuzji Graya-Scotta. Pięć presetów — Plamki, Paski, Labirynt, Mitoza, Robaki — każdy odpowiada odrębnym parametrom (F, k).

Otwórz →

🌿 Diffusion-Limited Aggregation

Algorytm Wittena-Sandera

Witten i Sander wprowadzili DLA w swojej pracy z 1981 roku „Diffusion-Limited Aggregation, a Kinetic Critical Phenomenon”. Algorytm jest zwodniczo prosty: jedna cząstka jest ustalona w początku układu (ziarno). Nowe cząstki są wielokrotnie generowane w losowym punkcie na okręgu tuż poza bieżącym promieniem klastra, a następnie wykonują błądzenie losowe (±1 wzdłuż x lub y w każdym kroku). W chwili gdy cząstka wyląduje sąsiadując z dowolną komórką już należącą do klastra, zamarza na stałe i staje się jego częścią. I tak w kółko.

Gałęzie powstają, ponieważ cząstki wykonujące błądzenie losowe daleko od klastra mają jednakową szansę zbliżenia się z dowolnego kierunku — ale cząstki głęboko we wklęsłej szczelinie rzadko zdołają zdyfundować w głąb, zanim dotkną czubka gałęzi. Dlatego czubki rosną najszybciej i przesłaniają wnętrze, tworząc charakterystyczną strukturę dendrytyczną.

Szczegóły implementacji

Palety kolorów

Sześć palet mapuje indeks dołączenia do klastra (znormalizowany 0–1 względem maxParticles) na trójkę RGB: Szmaragd, Złoto, Lód, Płomień, Fiolet i Mono. Zmiana palety wywołuje pełne przerysowanie wszystkich pikseli ImageData N×N na podstawie zapisanej siatki, więc żadne dane cząstek nie są tracone.

Co warto wypróbować

🔄 Portret Fazowy

Dlaczego płaszczyzny fazowe?

Dwuwymiarowy autonomiczny układ ODE ẋ = f(x,y), ẏ = g(x,y) nie da się rozwiązać analitycznie dla większości interesujących f i g — ale jego zachowanie można w pełni scharakteryzować geometrycznie. Płaszczyzna fazowa to układ współrzędnych (x, y); w każdym punkcie rysujemy małą strzałkę w kierunku (f, g). Trajektorie to krzywe płynące wzdłuż tych strzałek. Punkty stałe (gdzie strzałki znikają) klasyfikuje się jako węzły, spirale, siodła lub centra — klasyfikacja wymaga jedynie wartości własnych jakobianu.

Sześć klasycznych układów

Implementacja: całkowanie RK4

Trajektorie są całkowane klasyczną metodą Rungego-Kutty czwartego rzędu. Każde wywołanie rk4(x, y, dt) oblicza f i g czterokrotnie (w bieżącym punkcie, dwóch punktach pośrednich i przewidywanym punkcie końcowym) i łączy je z wagami 1/6, 1/3, 1/3, 1/6. Krok czasowy wynosi dt = 0,03, a na każde wywołanie requestAnimationFrame wykonywanych jest do 6 kroków RK4. Trajektorie są automatycznie przerywane, gdy opuszczą promień eliminacji równy 3-krotności zakresu widoku.

Izokliny zerowe

Izoklina zerowa x (czerwona) to zbiór punktów, w których ẋ = 0 — trajektorie przecinają ją, poruszając się pionowo. Izoklina zerowa y (niebieska) to miejsce, gdzie ẏ = 0 — trajektorie przecinają ją, poruszając się poziomo. Ich przecięcia są zawsze punktami stałymi. Obie są obliczane przez skanowanie siatki 300×300 płaszczyzny fazowej i wykrywanie zmian znaku kolumna po kolumnie (dla izokliny x) lub wiersz po wierszu (dla izokliny y), z interpolacją liniową do precyzji podsiatkowej.

Co warto wypróbować

🐆 Wzory Turinga

Spostrzeżenie Turinga z 1952 roku

W pracy „The Chemical Basis of Morphogenesis” (1952) Alan Turing matematycznie wykazał, że dwa gatunki chemiczne o różnych współczynnikach dyfuzji mogą samoistnie złamać symetrię translacyjną — zaczynając od niemal jednorodnego rozkładu, układ wzmacnia małe fluktuacje przestrzenne i osiada w stabilnym, przestrzennie okresowym wzorze.

Kluczowy mechanizm to lokalna samo-aktywacja z dalekozasięgowym hamowaniem bocznym. Substancja aktywująca U katalizuje własną produkcję, a jednocześnie wytwarza inhibitor V, ale V dyfunduje szybciej niż U. Dlatego mały wzrost U tworzy lokalny nadmiar V, który tłumi U w otaczającym obszarze, wyrzeźbiając charakterystyczną długość fali wzoru.

Model Graya-Scotta

Gray i Scott (1984) wprowadzili czysty schemat reakcji, który wykazuje szeroką różnorodność wzorów Turinga w zależności od dwóch parametrów:

∂U/∂t = DU∇²U − UV² + F(1−U)

∂V/∂t = DV∇²V + UV² − (F+k)V

Tutaj UV² to człon autokatalityczny (U i V reagują, tworząc więcej V), F(1−U) zasila U ze zbiornika, a (F+k)V usuwa V. Stałe parametry to DU = 0,16 i DV = 0,08 (więc U dyfunduje dwukrotnie szybciej niż V). Presety obejmują mapę parametrów po raz pierwszy udokumentowaną przez Pearsona (1993):

Implementacja: 9-punktowy laplasjan, całkowanie Eulera

Symulacja działa na okresowej siatce 200×200, wykorzystując pary buforów podwójnych Float32Array. Dyskretny laplasjan wykorzystuje 9-punktowy szablon z wagami 0,05 dla czterech sąsiadów po przekątnej i 0,20 dla czterech sąsiadów głównych (sumujących się do 1 minus waga środkowa −1), co zapewnia lepszą izotropię niż standardowy szablon 5-punktowy. Całkowanie wykorzystuje jawną metodę Eulera z dt = 1,0; jest to numerycznie stabilne, ponieważ DU ≤ 0,16 < 0,25 (granica stabilności CFL dla tego szablonu).

Pięć palet kolorów (Bursztyn, Ocean, Plazma, Jadeit, Mono) mapuje pole stężenia U liniowo z tła na pierwszy plan. Pętla renderująca zapisuje bezpośrednio do bufora pikseli ImageData dla maksymalnej przepustowości — bez pośrednich łańcuchów kolorów CSS.

Inicjalizacja: zaszczepione plamy

Siatka startuje przy U ≈ 1, V ≈ 0 wszędzie (trywialny punkt stały), z niewielkim losowym szumem łamiącym symetrię. Dwanaście małych okrągłych plam o promieniu 4 jest zaszczepionych z U = 0,5, V = 0,25. Działają one jako miejsca zarodkowania; bez nich sam szum potrzebowałby znacznie więcej czasu na zasianie wzoru. Ostateczny wzór jest niezależny od położenia ziaren — tylko (F, k) decyduje o tym, jaki typ wzoru ostatecznie powstanie.

Co warto wypróbować

Notatki techniczne

Tagi

DLA Fraktale Błądzenie Losowe Wymiar Fraktalny Portret Fazowy Układy Dynamiczne Van der Pol Lotka-Volterra RK4 Wzory Turinga Reakcja-Dyfuzja Gray-Scott Morfogeneza Fala 32

Zapowiedź Fali 33

Trzy symulacje zaplanowane na Falę 33:

Wszystkie symulacje Fali 33 zostaną wydane z pełnymi stronami EN + UK w dniu premiery.