Det pythagoreiske treet er en flat fraktal konstruert ved hjelp av firkanter . Det kalles Pythagoras fordi hver triplett av firkanter i kontakt omslutter en høyre trekant , en konfigurasjon som tradisjonelt brukes til å illustrere Pythagoras teorem .
Byggingen av det pythagoreiske treet begynner med en enkel firkant . På denne firkanten er det bygget to kvadrater til, hver side er mindre med en faktor ½√2 sammenlignet med kvadratet i forrige trinn, slik at kvadratene i kvadratene er i kontakt. Fremgangsmåten brukes rekursivt på hvert kvadrat, opp til uendelig. Illustrasjonen nedenfor illustrerer de første gjentakelsene av konstruksjonen.
Bestill 0 | Bestilling 1 | Bestilling 2 | Bestilling 3 |
De koordinater er i abscissen, ordinat skjema .
Det er nok å kjenne X1, Y1, X2 og Y2 for å kunne beregne de andre.
I neste iterasjon vil vi utføre disse beregningene to ganger: første gang med (X1, Y1, X2, Y2) = (C, D, E, F) og den andre med (X1, Y1, X2, Y2) = ( G, H, I, J).
Den n- te iterasjon tilfører 2 n kvadratene av side (½√2) n , for et totalt område av 1. Således, det totale arealet av treet synes a priori for å tendere mot uendelig. Imidlertid er noen av rutene lagret fra 5 th iterasjon, har skaftet således et begrenset område og passer inn i et rektangel med 6 x 4 cm.
Ved å holde begrensningen for å danne en rett trekant fra tre firkanter, men gi forskjellige størrelser til hver av rutene som er lagt til i hver iterasjon, er det mulig å lage fraktale former som ligner på det pythagoriske treet. Illustrasjonen nedenfor illustrerer en slik variasjon
Bestill 0 | Bestilling 1 | Bestilling 2 | Bestilling 5 |
α (alfa) er vinkelen gitt i starten, den varierer aldri. Trekanten er fremdeles rektangel, men mer likbenede rektangel som den var i den klassiske formen til det pythagoranske treet, med alfa = 45 °.
β (beta) er vinkelen som ligger mellom segmentet [X1Y1X2Y2] og det horisontale, her representert av den blå linjen.
H er skjæringspunktet for linjen (X1Y1X2Y2) og høyden h fra AB. Bare navnet på punktet er gitt fordi vi ikke vil beregne koordinatene.
HX1Y1 er avstanden mellom koordinatpunktet (X1, Y1) og H-punktet.
ABX1Y1 er avstanden mellom koordinatpunktet (A, B) og koordinatpunktet (X1, Y1).
Python fungerer med radianer , så 90 grader = pi / 2 radianer
from math import sqrt, cos, sin, tan, pi from cmath import phase beta = phase(X2 + Y2 * 1j - (X1 + Y1 * 1j)) HX1Y1 = sqrt((Y2 - Y1)**2 + (X2 - X1)**2) * cos(alpha)**2 ABX1Y1 = HX1Y1 / cos(alpha) A = X1 + ABX1Y1 * cos(alpha + beta) B = Y1 + ABX1Y1 * sin(alpha + beta) C = X1 - (B - Y1) D = Y1 + (A - X1) E = A - (B - Y1) F = B + (A - X1) G = A - (Y2 - B) H = B + (X2 - A) I = X2 - (Y2 - B) J = Y2 + (X2 - A)