🔬 Eksplorator fraktali
Zbiory Mandelbrota i Julii renderowane shaderami GLSL z płynnym kolorowaniem. Przesuwaj, przybliżaj, zmieniaj tryby i morfuj parametry Julii na żywo.
O tej symulacji
Ten eksplorator renderuje zbiór Mandelbrota i zbiory Julii w czasie rzeczywistym za pomocą fragment shadera WebGL 2. Każdy piksel ekranu jest odwzorowywany na punkt płaszczyzny zespolonej i przepuszczany przez iterację z = z² + c. Shader liczy, jak szybko wartość ucieka poza określony promień, i zamienia tę prędkość ucieczki na kolor, wykorzystując formułę płynnej iteracji, aby uniknąć pasmowania barw. Ponieważ granica zbioru kryje nieskończoną ilość szczegółów, możesz przesuwać obraz i powiększać go bez końca, wciąż odkrywając nowe, samopodobne struktury.
🔬 Co pokazuje
Wizualizację escape-time dwóch klasycznych fraktali opartych na tej samej regule z = z² + c. Dla zbioru Mandelbrota z zaczyna od 0, a c jest współrzędną piksela; dla zbioru Julii c jest ustalone, a z zaczyna od współrzędnej piksela. Punkt uznaje się za uciekający, gdy x² + y² przekroczy 256, a płynny logarytmiczno-logarytmiczny licznik iteracji steruje kolorem.
🎮 Jak korzystać
Wybierz Mandelbrota lub Julię w menu Mode i dobierz paletę (Cosmic, Fire, Ocean, Neon lub Greyscale). Suwak Iterations działa w zakresie od 64 do 1024, kontrolując poziom szczegółów granicy. W trybie Julii przeciągaj Re(c) i Im(c) lub dotknij gotowych ustawień takich jak Spiral, Rabbit czy Dragon. Przeciągaj, aby przesuwać obraz, przewijaj lub kliknij dwukrotnie, aby przybliżyć, korzystaj z celów powiększenia dla charakterystycznych miejsc zbioru Mandelbrota, a naciśnięcie R lub Reset view przywraca widok początkowy.
💡 Czy wiesz, że...
Granica zbioru Mandelbrota ma fraktalny (Hausdorffa) wymiar dokładnie równy 2, więc jest na tyle poszarpana, że niemal wypełnia powierzchnię, a mimo to sam zbiór zamyka skończone pole o wartości około 1,5065 jednostki kwadratowej.
Najczęściej zadawane pytania
Czym jest zbiór Mandelbrota?
To zbiór liczb zespolonych c, dla których iteracja z = z² + c, rozpoczęta od z = 0, pozostaje ograniczona na zawsze, zamiast uciekać do nieskończoności. Punkty należące do zbioru są tutaj rysowane na czarno, a punkty spoza niego są kolorowane w zależności od tego, jak szybko uciekają. Wynikowy kształt jest jednym z najsłynniejszych w geometrii fraktalnej.
Jak symulacja właściwie oblicza obraz?
Każdy piksel jest zamieniany na liczbę zespoloną na płaszczyźnie i podawany do pętli z = z² + c, powtarzanej aż do wybranego limitu iteracji (od 64 do 1024). Punkt uznaje się za uciekający, gdy x² + y² przekroczy 256, a shader zapisuje płynny licznik iteracji z korektą logarytmiczno-logarytmiczną. Ta wartość jest odwzorowywana przez wybraną paletę, nadając każdemu pikselowi kolor.
Jaka jest różnica między trybem Mandelbrota a trybem Julii?
Oba tryby używają tego samego wzoru, ale inaczej go inicjują. W trybie Mandelbrota stała c to współrzędna piksela, a z zaczyna od zera. W trybie Julii c jest pojedynczą, ustaloną wartością ustawianą suwakami Re(c) i Im(c), natomiast z zaczyna od współrzędnej piksela, dzięki czemu każdy wybór c daje zupełnie inny zbiór Julii.
Dlaczego zwiększenie liczby iteracji wyostrza granicę?
Punkty blisko granicy potrzebują wielu kroków, zanim będzie wiadomo, czy uciekają. Niski limit iteracji zatrzymuje obliczenia zbyt wcześnie i miesza wolno uciekające punkty z wnętrzem zbioru, rozmywając cienkie nitki. Zwiększenie limitu daje tym punktom więcej szans na rozbieżność, ujawniając cieńsze odnogi i głębszy poziom szczegółów, kosztem większej pracy obliczeniowej na piksel.
Czy renderowanie jest matematycznie dokładne?
Iteracja i test ucieczki wiernie odzwierciedlają standardowy algorytm escape-time, więc pokazywana struktura jest autentyczna. Głównym ograniczeniem jest precyzja: shader używa 32-bitowej liczby zmiennoprzecinkowej, więc przy skrajnym powiększeniu błędy zaokrągleń w końcu powodują pikselizację obrazu. Formuła płynnego kolorowania jest jedynie techniką wyświetlania i nie zmienia tego, które punkty należą do zbioru.