🐉 Krzywa smoka — fraktal sekwencji skrętów Heighwaya

Wygeneruj krzywą smoka Heighwaya z jej rekurencyjnej sekwencji skrętów L/R i obserwuj, jak rozwija się dzięki grafice żółwia. Dostosuj głębokość iteracji, animuj prędkość rysowania i pokoloruj krzywą według głębokości.

O tej symulacji

Autor: Zespół MySimulator · Recenzja: Redakcja MySimulator

Ostatnia aktualizacja: 11 lipca 2026

To narzędzie generuje krzywą smoka Heighwaya, samopodobny fraktal zbudowany z rekurencyjnie podwajanej sekwencji skrętów w lewo i w prawo. Zaczynając od pustej sekwencji skrętów, każda iteracja podwaja ją, dodając R oraz odwróconą, zamienioną literami kopię poprzedniej sekwencji. Żółw przechodzi wtedy przez sekwencję, skręcając przy każdym symbolu, wykreślając złożony kształt smoka segment po segmencie.

🔬 Co pokazuje

Sekwencja skrętów jest budowana przez rekurencję seq(n) = seq(n−1) + R + reverse(complement(seq(n−1))), zaczynając od pustego ciągu. Przechodzenie stałej długości segmentu i skręcanie w lewo lub w prawo zgodnie z każdym symbolem wykreśla 2n prostych segmentów połączonych w 2n−1 skrętach, tworząc złożony kształt smoka.

🎮 Jak korzystać

Przeciągnij suwak iteracji, by rozwinąć krzywą od pojedynczego segmentu do 217 segmentów, i użyj suwaka prędkości rysowania, by spowolnić lub przyspieszyć pojawianie się nowych segmentów. Przełącz Kolor według głębokości, by cieniować każdy segment według jego pozycji wzdłuż ścieżki, i naciśnij Reset / Wyśrodkuj, by dopasować krzywą do płótna.

💡 Czy wiesz, że...?

Krzywa smoka wzięła swoją nazwę od sposobu, w jaki przypomina zwiniętego smoka przy umiarkowanych iteracjach, i jest dokładnie kształtem, który powstaje ze złożenia paska papieru na pół tym samym sposobem za każdym razem, a następnie rozłożenia każdego zagięcia do kąta prostego.

Najczęściej zadawane pytania

Czym jest krzywa smoka?

Krzywa smoka (lub smok Heighwaya) to samopodobny fraktal wykreślony przez wielokrotne składanie paska papieru na pół i rozkładanie każdego zagięcia do kąta prostego. Można ją również wygenerować wyłącznie z sekwencji skrętów w lewo i w prawo, bez żadnego papieru, i należy do tej samej rodziny krzywych co krzywa Lévy'ego C i inne fraktale składania papieru.

Jak generowana jest sekwencja skrętów?

Powstaje przez podwajanie: zaczynając od pustej sekwencji, każda nowa iteracja jest tworzona przez wzięcie poprzedniej sekwencji, dodanie R, a następnie dodanie odwrócenia poprzedniej sekwencji z zamienionym każdym L i R. Ta rekurencja, seq(n) = seq(n-1) + R + reverse(complement(seq(n-1))), tworzy ciąg o długości 2^n - 1 opisujący każdy skręt wzdłuż ścieżki.

Dlaczego krzywa smoka się nie przecina?

Mimo że krzywa wielokrotnie zawija się na siebie, można udowodnić, że smok Heighwaya nigdy się nie przecina. Sąsiednie segmenty zawsze stykają się tylko we wspólnym punkcie końcowym, dlatego kontur wygląda na postrzępiony i wypełniający przestrzeń, ale sama ścieżka pozostaje prostą, nieprzecinającą się krzywą.

Jaki jest wymiar fraktalny krzywej smoka?

Krzywa smoka ma wymiar fraktalny (Hausdorffa) dokładnie równy 2, mimo że jest jednowymiarową krzywą osadzoną na płaszczyźnie. Odzwierciedla to, jak ściśle ścieżka zawija się sama na siebie: przy wysokich iteracjach zbliża się do wypełnienia całej płaszczyzny, co jest też powodem, dla którego kopie krzywej smoka mogą dokładnie wypełnić płaszczyznę teselacją.

Dlaczego wyższa iteracja wymaga dłuższego rysowania?

Każda kolejna iteracja podwaja liczbę segmentów, więc liczba prostych odcinków do narysowania rośnie jak 2^n. Przy n = 17 daje to 131 072 segmenty, więc animacja naturalnie wymaga więcej klatek rysowania przy wysokich iteracjach, mimo że każdy pojedynczy segment jest obliczany natychmiastowo.