Académique Documents
Professionnel Documents
Culture Documents
def motiftriangle(a, b, c, d): # a partir du segment ([a,b], [c,d]), construis une liste donnant les
points pour faire
L=[] # un petit triangle equilateral sur le meme segment. le cote du triangle
equilateral est 1/3
u1=vector(a, b) # fois la longueur du segmenet initial.
u5=vector(c, d)
L.append([u1.x,u1.y])
dis=u5-u1
cottri=1/3*dis
u2=u1+1/3*dis
L.append([u2.x,u2.y])
u4=u2+cottri
cottrirot=vector(cos(-pi/3)*cottri.x+sin(-pi/3)*cottri.y , -sin(-pi/3)*cottri.x+cos(-pi/3)*cottri.y)
u3=u2+cottrirot
L.append([u3.x,u3.y])
L.append([u4.x,u4.y])
L.append([u5.x,u5.y])
return L
def motifcarre(a, b, c, d): # a partir du segment ([a,b], [c,d]), construis une liste donnant les
points pour faire
L=[] # un petit carre sur le meme segment. le cote du carre est 1/3
u1=vector(a, b) # fois la longueur du segment initial.
u6=vector(c, d)
L.append([u1.x,u1.y])
dis=u6-u1
cottri=1/3*dis
u2=u1+1/3*dis
L.append([u2.x,u2.y])
u5=u2+cottri
cottrirot=vector(cos(-pi/2)*cottri.x+sin(-pi/2)*cottri.y , -sin(-pi/2)*cottri.x+cos(-pi/2)*cottri.y)
u3=u2+cottrirot
u4=u5+cottrirot
L.append([u3.x,u3.y])
L.append([u4.x,u4.y])
L.append([u5.x,u5.y])
L.append([u6.x,u6.y])
return L
def transfomotifcarre(L,k): # revnvoie une liste avec les carres construits sur les segments de
la liste de départ L
S=[]
for i in range(len(L)-1):
S=S+motifcarre(L[i][0],L[i][1],L[i+1][0],L[i+1][1])
if i!=len(L)-2:
S.pop()
return S
def transfomotiftriangle(L,k): # revnvoie une liste avec les triangles construits sur les
segments de la liste de départ L
S=[]
for i in range(len(L)-1):
S=S+motiftriangle(L[i][0],L[i][1],L[i+1][0],L[i+1][1])
if i!=len(L)-2:
S.pop()
return S
def floconkoch(Tinit,n):
S=Tinit
for i in range(n):
S=transfomotiftriangle(S,1)
speed(0)
reliepoints(S)
def floconcarre(Cinit,n):
S=Cinit
for i in range(n):
S=transfomotifcarre(S,1)
speed(0)
reliepoints(S)