Buddabrot

Buddhabrot został powtórzony 20 000 razy.

Buddhabrot to rozkład prawdopodobieństwa na trajektoriach punktów, które wymykają się fraktalowi Mandelbrota . Jego nazwa odzwierciedla pareidoliczne podobieństwo do klasycznych przedstawień Buddy Gautamy , siedzącego w pozie medytacyjnej ze znakiem na czole ( tikka ), tradycyjnym kokiem ( ushnisha ) i lokami.

Odkrycie

Technika renderowania Buddhabrot została odkryta przez Melindę Green, która później opisała ją w poście w Usenecie z 1993 roku dla sci.fractals.

Poprzedni badacze byli bardzo bliscy znalezienia precyzyjnej techniki Buddhabrota. W 1988 roku Linas Vepstas przekazał podobne obrazy Cliffowi Pickoverowi w celu włączenia ich do mającej się wówczas ukazać książki Pickovera Computers, Pattern, Chaos, and Beauty . Doprowadziło to bezpośrednio do odkrycia łodyg Pickover . Noel Griffin również zaimplementował ten pomysł w opcji „Mandelcloud” z 1993 roku w Fractint . Jednak badacze ci nie odfiltrowali nieuciekających trajektorii wymaganych do wytworzenia upiornych form przypominających sztukę hinduską. Odwrotny filtr „Anti-Buddhabrot” tworzy obrazy podobne do braku filtrowania.

Green po raz pierwszy nazwał ten wzór Ganesh, ponieważ indyjski współpracownik „natychmiast rozpoznał go jako boga„ Ganesha ”, który ma głowę słonia”. Nazwa Buddhabrot została wymyślona później przez Lori Gardi.

Metoda renderowania

Fałszywy kolor Buddhabrot Zoom, w którym kanały czerwony, zielony i niebieski miały maksymalne wartości iteracji odpowiednio 5000, 500 i 50.
20,000 x 25,000 pixel rendering of a Buddhabrot
Renderowanie Buddhabrota w rozdzielczości 20 000 x 25 000 pikseli

zbiór Mandelbrota składa się ze zbioru punktów na płaszczyźnie zespolonej dla których iteracyjnie zdefiniowana sekwencja

nie dąży do nieskończoności gdy dąży do nieskończoności dla { .

Fałszywy kolor Buddhabrot, w którym kanały czerwony, zielony i niebieski miały maksymalne wartości iteracji odpowiednio 5000, 500 i 50.

Obraz Buddhabrot można zbudować, najpierw tworząc dwuwymiarową tablicę pudełek , z których każda odpowiada ostatniemu pikselowi obrazu. Każde pudełko dla i ma rozmiar we współrzędnych zespolonych i , gdzie i dla obrazu o szerokości i wysokości . Dla każdego pola odpowiedni licznik jest inicjalizowany na zero. Następnie losowe próbkowanie iterowane przez funkcję Mandelbrota. Dla punktów, które uciekają w wybranej maksymalnej liczbie iteracji, a zatem nie znajdują się w zbiorze Mandelbrota, licznik dla każdego pola wprowadzonego podczas ucieczki do nieskończoności jest zwiększany o 1. Innymi słowy, dla każdej sekwencji odpowiadającej , który ucieka, dla każdego punktu ucieczki, pole, które leży w obrębie zwiększa się o 1. Punkty, które nie uciekają w ciągu maksymalnej liczby iteracji (i uważane za należące do zbioru Mandelbrota) są odrzucane. Po powtórzeniu dużej liczby odcienie szarości następnie wybierane na podstawie rozkładu wartości zapisanych w tablicy. Rezultatem jest wykres gęstości podkreślający regiony, w których czasu na drodze do nieskończoności.

Antybuddhabrot
Buddhabrot wraz ze wzrostem maksymalnej liczby iteracji

Niuanse

Renderowanie obrazów Buddhabrota jest zwykle bardziej wymagające obliczeniowo niż standardowe techniki renderowania Mandelbrota. Wynika to częściowo z konieczności iteracji większej liczby przypadkowych punktów niż pikseli w obrazie w celu uzyskania ostrego obrazu. Renderowanie bardzo powiększonych obszarów wymaga jeszcze więcej obliczeń niż w przypadku standardowych obrazów Mandelbrota, w których dany piksel można obliczyć bezpośrednio, niezależnie od poziomu powiększenia. I odwrotnie, na piksel w powiększonym regionie obrazu Buddhabrot mogą wpływać początkowe punkty z obszarów daleko poza renderowanym. Bez uciekania się do bardziej złożonych technik probabilistycznych renderowanie powiększonych części Buddhabrot polega jedynie na przycięciu dużego, pełnowymiarowego renderowania.

Maksymalna wybrana liczba iteracji wpływa na obraz – wyższe wartości dają mniej szczegółowy wygląd, ponieważ kilka punktów przechodzi przez dużą liczbę pikseli, zanim uciekną, co powoduje, że ich ścieżki są bardziej widoczne. Gdyby zastosowano niższe maksimum, punkty te nie uciekłyby w czasie i zostałyby uznane za nieuciekające w ogóle. Liczba wybranych próbek wpływa również na obraz, ponieważ większa liczba próbek nie tylko zmniejsza szum obrazu, ale może zmniejszyć widoczność wolno poruszających się punktów i małych atraktorów, które mogą pojawić się jako widoczne smugi w renderowaniu mniejszej liczby próbek . Niektóre z tych smug są widoczne na poniższym obrazie z 1 000 000 iteracji.

Green później zdał sobie sprawę, że zapewniło to naturalny sposób tworzenia kolorowych obrazów Buddhabrot poprzez wykonanie trzech takich obrazów w skali szarości , różniących się jedynie maksymalną liczbą użytych iteracji, i połączenie ich w jeden kolorowy obraz przy użyciu tej samej metody, której używali astronomowie do tworzenia fałszywych kolorów obrazy mgławic i innych ciał niebieskich. Na przykład można przypisać obraz o maksymalnej iteracji 2000 do kanału czerwonego, obraz o maksymalnej iteracji 200 do kanału zielonego i obraz o maksymalnej iteracji 20 do kanału niebieskiego obrazu w przestrzeni kolorów RGB . Niektórzy oznaczyli obrazy Buddhabrot przy użyciu tej techniki Nebulabrots .

Maksymalna liczba iteracji: 20
Maksymalna liczba iteracji: 100
Maksymalna liczba iteracji: 1000
Maksymalna liczba iteracji: 20 000
Maksymalna liczba iteracji: 1 000 000

Związek z mapą logistyczną

Buddhabrot i jego mapa logistyczna.
Animacja przedstawiająca Buddhabrota i jego mapę logistyczną.

Związek między zbiorem Mandelbrota przez iterację a mapą logistyczną jest dobrze znany. Oba są powiązane przez transformację kwadratową:

Tradycyjnym sposobem zilustrowania tej zależności jest wyrównanie mapy logistycznej i zestawu Mandelbrota za pomocą relacji między i , przy użyciu wspólnej osi x i innej osi y- { osi, pokazując jednowymiarową zależność.

Melinda Green odkryła „przez przypadek”, że paradygmat anty-Buddhabrot w pełni integruje mapę logistyczną. Oba oparte są na śledzeniu ścieżek z punktów nieuciekających, iterowanych z (losowego) punktu początkowego, a funkcje iteracyjne są powiązane przez transformację podaną powyżej. Łatwo wtedy zauważyć, że Anti-Buddhabrot dla c z generuje mapę logistyczną na płaszczyźnie , przy użyciu podanej transformacji. Do celów renderowania używamy . Na mapie logistycznej wszystkie tę samą ścieżkę

Ponieważ zarówno zestaw Mandelbrota, jak i mapa logistyczna są integralną częścią Anty-Buddhabrota, możemy teraz pokazać trójwymiarową relację między nimi, używając osi 3D { . Animacja przedstawia klasycznego Anti-Buddhabrota z i , to jest zestaw 2D Mandelbrota na płaszczyźnie , a także anty-Buddhabrot gdzie do i logistyka 2D mapa w płaszczyźnie . Obracamy płaszczyznę wokół najpierw , a następnie obracając o 90 °, aby pokazać , a następnie obracając dodatkowe 90 °, aby pokazać . Moglibyśmy obrócić dodatkowe 180 °, ale daje to te same obrazy, odbite lustrzanie wokół .

podzbiorem klasycznego Anti-Buddhabrota, lub ) 3D prostopadle do płaszczyzna . Podkreślamy to, pokazując krótko, przy obrocie o 90 °, tylko rzutowaną płaszczyznę, zakłóconą” przez rzuty płaszczyzn o niezerowym do .

Linki zewnętrzne