Fragmety zbudowane z trójkąta prostego
Drzewo Pitagorasa to drzewo fraktalne wynalezione w 1942 roku przez holenderskiego nauczyciela matematyki Alberta Bosmana. Rozpoczyna się ono od jednego kwadratu. Na tym kwadracie wznosi się trójkąt prostokątny, którego przeciwprostokączna jest dokładnie górną krawędzią kwadratu; następnie buduje się dwa nowe, mniejsze kwadraty na dwóch bokach trójkąta. Powtarzaj tę samą konstrukcję na każdym nowym kwadracie, w nieskończoność, i otrzymasz drzewo o rozgałęziającym się kształcie – fraktal – a nazywa się ono Drzewem Pitagorasa, ponieważ sumy pól dwóch dziecięcych kwadratów zawsze równa się dokładnie polu rodzica, co jest po prostu twierdzeniem Pitagorasa: a² + b² = c², które mówi o kwadratach zbudowanych na bokach trójkąta, a nie tylko ich długościach.
Rekurencja krok po kroku
Jeśli kąt prosty trójkąta znajduje się w odległości odpowiadającej ułamkowi długości boku górnego krawędzi kwadratu (kontrolowanej parametrem kąta), to dwa dziecięce kwadraty kończą się różnymi rozmiarami – mniejszym i większym, co dokładnie nadaje klasycznemu drzewu Pitagorasa asymetryczny, wiatr zawiewający wygląd zamiast idealnie symetrycznego. Przy 45°, oba dziecięce kwadraty są równe, a fraktal rośnie jako symetryczna podwójna spirala zamiast tego.
funkcja grow(kwadrat, głębokość): jeśli głębokość == 0: return trójkąt = trójkąt_na_górnej_krawędzi(kwadrat, kąt) lewy_kwadrat = kwadrat_na_boku(trójkąt, strona="lewa") prawy_kwadrat = kwadrat_na_boku(trójkąt, strona="prawa") narysuj(kwadrat) grow(lewy_kwadrat, głębokość - 1) grow(prawy_kwadrat, głębokość - 1) Ponieważ oba dziecięce kwadraty zmniejszają się w stosunku do rodzica (każyna długość boku jest skalowana przez sinus i cosinus kąta drzewa), całkowita powierzchnia przyczyniająca się na każdym poziomie głębokości maleje geometrycznie. Oznacza to, że nieskończone drzewo – głębokość idąca w nieskończoność – nadal obejmuje skończoną całkowitą powierzchnię, cecha współdzielona przez wiele klasycznych fraktali: nieskończony poziom szczegółu zamknięty w ograniczonym obszarze. Przy około 45°, ta ograniczająca się powierzchnia wynosi dokładnie dwa razy powierzchnię początkowego kwadratu, jeden z bardziej uporządkowanych wyników w rekreacyjnej geometrii fraktalnej.
grow(square, depth):
if depth == 0: return
triangle = right_triangle_on_top_edge(square, angle)
left_sq = square_on_side(triangle, side="left")
right_sq = square_on_side(triangle, side="right")
draw(square)
grow(left_sq, depth - 1)
grow(right_sq, depth - 1)
Głębokość, nachylenie i dlaczego wygląda to organicznie
Kontrola głębokości określa liczbę rekurencyjnych poziomów rysowanych — każdy dodatkowy poziom w przybliżeniu podwaja liczbę kwadratów na ekranie, więc głębokość 10 oznacza już ponad tysiąc nowych kwadratów na najdrobniejszym poziomie, co jest powodem, dla którego większość implementacji ogranicza głębokość do około 12–14 przed rozpoczęciem zmniejszania się kwadratów, ponieważ dodawanie kolejnych nie wpływa na obraz. Dodanie niewielkiej ilości losowego szumu do kąta w każdym rekurencyjnym wywołaniu — powszechne ozdobienie poza surową konstrukcją Bosmana — sprawia, że generowane drzewa Pitagorasa wyglądają jak prawdziwe rozgałęzienia roślin zamiast sztywnego, mechanicznie powtarzanego kształtu; prawdziwe drzewa, paprocie i delty rzeczne wykazują tę samą formę statystycznej samo-podobieństwa, w której każdy gałąź przypomina całość, ale nigdy dokładnie.
Frequently asked questions
Dlaczego drzewo nazywane jest drzewem Pitagorasa?
Każdy etap konstrukcji buduje trójkąt prostokątny z kwadratem na każdą z jego trzech stron, a zgodnie z twierdzeniem Pitagorowym powierzchnie dwóch mniejszych kwadratów zawsze sumują się dokładnie do powierzchni większego kwadratu, to samo stosunek a² + b² = c² opisuje dla długości boków.
Czy drzewo kiedykolwiek przestaje rosnąć?
Matematycznie konstrukcja może trwać w nieskończoność, dodając nieograniczoną liczbę kwadratów, ale ponieważ każdy pokoleniowy kwadrat jest mniejszy o stały stosunek, całkowita pokryta powierzchnia zbiega się do skończonej liczby zamiast rosnąć bez ograniczeń – pod kątem 45 stopni, ten limit wynosi dokładnie dwa razy powierzchnię pierwszego kwadratu.
Dlaczego zmiana suwaka kąta powoduje tak duże zmiany w kształcie drzewa?
Kąt decyduje o tym, gdzie znajduje się kąt prosty każdego trójkąta rekurencyjnego wzdłuż górnej krawędzi kwadratu rodzica. Kąt 45 stopni daje dwa równe kwadraty potomne i symetryczne drzewo podwójnie spiralne; oddalanie się od 45 stopni sprawia, że jeden kwadrat potomny jest większy niż drugi, co tworzy skośny, wietrzny wygląd klasycznego drzewa Pitagorasa.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Pythagoras Tree 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ę Pythagoras Tree