Dlaczego 3D fractale są trudne
Zbiór Mandelbrota żyje w płaszczyźnie zespolonej, generowany przez z → z² + c, i działa dzięki temu, że mnożenie zespolone jest analityczne – różniczkowalne wszędzie i zachowujące kąty, co tworzy nieskończenie skomplikowane, samo-powtarzalne granice. Rozszerzenie tego na trzy wymiary wymagałoby algebry o normowanej dzielności nad ℝ³, ale twierdzenie Hurwitza dowodzi, że taka algebra nie istnieje – jedyne ważne to te o wymiarze 1, 2, 4 (kwaterniony) lub 8 (oktoniony), nigdy 3. Fractale kwaterniowe istnieją w 4D, ale ich projekcja z powrotem do 3D daje stosunkowo gładkie kształty bez bulwiastego struktury, której poszukiwali artyści-fractaliści. Dwa obejścia przetrwały: haków algebraicznych, takich jak operacja potęgi sferycznej Mandelbul, i iteracji geometrycznej – wielokrotnego składania przestrzeni, jak robi to gąbka Menzera i pudełko Mandelbox.
Mandelbrot: kulowa formuła dla procesora Power-8
Wprowadzona przez Daniela White’a i Paula Nylander w 2009 roku, Mandelbulb przekształca punkt 3D na współrzędne sferyczne (r, θ, φ), podnosi promień do potęgi n-tej, mnożąc kąty przez n, konwertuje z powrotem na kartezjańskie i iteruje v → vⁿ + c od v = 0. Przy n = 2 wynik to gładka, pozbawiona cech kula; w miarę jak n rośnie, powierzchnia dramatycznie zwiększa samopodobny poziom szczegółów, a kanoniczny wybór n = 8 generuje głęboko wkomponowane, spiralne bulwy, które wszyscy rozpoznają, z wymiarami Hausdorffa granicy szacowanymi na około 2,97 – prawie wypełniające przestrzeń. Ponieważ operacja potęgowania sferycznego nie jest holomorficzną mapą, Mandelbulb nie jest dosłownie zestrem Mandelbrota 3D z tymi samymi gwarancjami matematycznymi — ale wizualnie i obliczeniowo jest to jeden z najbardziej satysfakcjonujących fraktali, które kiedykolwiek generowano.
Mandelbulb distance estimator (Íñigo Quílez): dr ← n · r^(n-1) · dr + 1 // running derivative magnitude DE = 0.5 · log(|z|) · |z| / dr // after escape — safe step bound Ray march: p += DE · rd; repeat until DE < ε (hit) or dist > max (miss)
Śledzenie sfer: krok po kroku, zachowując bezpieczną odległość
Pole powierzchni wypukłej (SDF) to funkcja f(p), która zwraca odległość od punktu do najbliższej powierzchni — ujemna wewnątrz, dodatnia na zewnątrz, zero dokładnie na niej. Śledzenie sfer wykorzystuje tę koncepcję: rzutowana jest wiązka, wartość SDF jest oceniana w aktualnej pozycji, wiązka przesuwa się o dokładnie tę odległość (zapewniając, że nie przekroczy żadnej powierzchni), i to się powtarza, aż do momentu, gdy odległość spadnie poniżej małego epsilona (uderzenie) lub suma odległości przekroczy próg (pominięcie). Normalne wektorowe powierzchnie oświetlenia pochodzą z gradientu SDF za pomocą różnic skończonych — trik Quílez'a redukuje to do czterech obliczeń zamiast sześciu. Cienkie cechy fraktalne wymagają wielu małych kroków, więc typowe implementacje działają w zakresie 64–256 kroków na piksel; współczynnik relaksacji powyżej 1,0 pozwala wiązce poruszać się szybciej przez otwarte przestrzenie, a jednocześnie bezpiecznie cofać się w pobliżu szczegółów.
Kolorowanie powierzchni: pułapki orbit i płynna iteracja
Surowe iteracje czasu ucieczki są liczbami całkowitymi, co powoduje widoczne pasmo na renderowanym obrazie; płynne liczenie iteracji zastępuje liczbę przez smooth_i = i − log₂(log₂(r)) + 4, wyprowadzone z teorii potencjału, aby usunąć stopnie. Pułapki orbit dodają bogatszych kolorów poprzez śledzenie, jak blisko orbita iteracji punktu przelatuje do kształtu odniesienia — punktu, płaszczyzny lub krzyż XY — i mapowanie tej minimalnej odległości na kolor, produkując żywe wzory pierścieniowe i krzyżowe dalece wykraczające poza proste cieniowanie gradientowe. Rodzinne rodziny fraktali rozszerzają tę samą maszynę oszacowania odległości: Mandelbox (Tom Lowe, 2010) na przemian składa folda skrzyni z foldem sfery w celu budowy rekurencyjnych struktur przypominających miasta, a hybrydowe fraktale łączą kroki z różnych formuł całkowicie.
Frequently asked questions
Dlaczego nie istnieje prawdziwa wersja 3D zbioru Mandelbrota?
Zbiór Mandelbrota opiera się na tym, że mnożenie liczb zespolonych jest analityczne – zachowuje kąty i jest różniczkowalny wszędzie. Prawdziwy odpowiednik 3D wymagałby algebry ilorazowej nad przestrzenią trójwymiarową z normą, ale twierdzenie Hurwitza dowodzi, że jedynymi takimi algebrami są te o wymiarach 1, 2, 4 (kwaterniony) lub 8 (oktoniony), nigdy 3. Zamiast tego, Mandelbulb wykorzystuje operację potęgową na sferze, która jest wizualnie przekonująca, ale nie jest to prawdziwy 3D zbiór Mandelbrota o charakterze holomorficznym.
Dlaczego używana jest moc 8 dla Mandelbulbu?
Przy mocy 2 iteracja sferyczna produkuje gładką, pozbawioną cech kulę. Wraz ze wzrostem potęgi n powierzchnia rozwija stopniowo bardziej samopodobne detale; przy n = 8 – wartości wybranej przez odkrywców Daniela White'a i Paula Nylanda w 2009 roku – fraktal prezentuje głęboko osadowane, spiralne bulby z brzegiem wymiaru Hausdorffa szacowanym na około 2,97.
Co to jest estimator odległości i dlaczego ray marching go potrzebuje?
Estimator odległości (DE) to funkcja dostarczająca bezpiecznego dolnego ograniczenia odległości od punktu do powierzchni fraktala. Ray marching porusza się po promieniu o dokładnie tę bezpieczną odległość w każdym kroku, zamiast stałej wartości, co zapobiega przekroczeniu cienkich cech. Dla Mandelbulbu DE wyprowadzony jest z wartości bezwzględnej iloczynu bieżącej pochodnej iteracji: DE = 0,5 · log(|z|) · |z| / |dz|.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz the simulation i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację the simulation