Zbiór Burning Ship

Artykuł w Wikipedii

Niech funkcja $g: \mathbb{C} \rightarrow \mathbb{C}$ będzie określona wzorem: $g(z) = g(x+y\cdot\imath) = |x| + |y|\cdot\imath$. Dla każdej liczby zespolonej $c$ definiujemy rekurencyjnie ciąg liczb zespolonych: $z_0=0,\,z_{n+1}=g(z_n^2) + c$ dla $n \ge 0$. Liczba $c$ należy do zbioru Burning Ship wtedy i tylko wtedy gdy otrzymany ciąg (orbita liczby $0$) jest ograniczony.

Opis algorytmu

Program wylicza początkowe wyrazy opisanych wyżej ciągów (domyślnie $512$). Jeżeli $n$-ty wyraz ciągu spełnia nierówność $|z_n| \gt 2$, to łatwo wykazać że ciąg $(z_n)$ jest nieograniczony, zatem liczba $c$ (punkt płaszczyzny) nie należy do zbioru BurningShip, wyliczanie jest przerywane i liczba $c$ rysowana jest kolorem zależnym od $n$. W przeciwnym wypadku program zakłada (być może niesłusznie) że ciąg jest ograniczony ⇒ liczba $c$ należy do zbioru Burning Ship i rysowana jest kolorem czarnym.

Kolorowanie dopełnienia zbioru Burning Ship

Sposób kolorowania zależy od użytkownika.

Powiększanie i pomniejszanie

Narysowany zbiór Burning Ship można skalować, przyciski Powiększenie i Pomniejszenie przeskalowują aktualny (a nie oryginalny rysunek). Przykładowo, po sekwencji
Rysowanie ⇒ suwak na $1,3$ ⇒ Powiększenie ⇒ Powiększenie ⇒ suwak na $1,6$ ⇒ Pomniejszenie oryginalny rysunek jest powiększony w stosunku $1,06 = \frac{1,3\cdot 1,3}{1,6}$, liczba $1,06$ pojawia się w polu Akt. powiększenie.

Jeżeli wypadkowy współczynnik skalowania jest mniejszy niż $1$), to jest zwiększany do $1$.

Orbita

Po wybraniu liczby $c$ można (przycisk Orbita) wyznaczyć orbitę liczby $0$: rysowane są punkty orbity, łączące je odcinki, a do listy rozwijanej Lista punktów dopisywane są współrzędne punktów orbity.