Google Classroom
GeoGebraClasse GeoGebra

Pavage de Trchet étendu avec PyGGB

Lien vers PyGGB :

CODE:

from random import* import time # (x,y) sont les coordonnées de point ou on pose la tuile. # n est le nombre de points pour approximer les arcs de cercles. # col1 et col2 sont les couleurs. # p3 est le polygone central de la tuile # p1 et p2 sont les polygones des coins de la tuiles # on défini deux tuiles , la tuile2 est l'image de la tuile1 par rotation d'un angle de 90º def tuile1(x,y,n,col1,col2): LP1=[] for k in range(n+1): O = Point(x,y,is_visible=False) A = Point(x+0.5,y,is_visible=False) P = Rotate(A,k/n*3.14/2,O) P.is_visible=False LP1.append(P) LP2=[] for k in range(n+1): O = Point(x+1,y+1,is_visible=False) A = Point(x+0.5,y+1,is_visible=False) P = Rotate(A,k/n*3.14/2,O) P.is_visible=False LP2.append(P) LC1 = LP1 LC2 = LP2 O = Point(x,y+1,is_visible=False) LC1.append(O) O = Point(x+1,y,is_visible=False) LC2.append(O) p3=Polygon(LC1+LC2,color=col2) p3.opacity=1 p3.line_thickness=0 O=Point(x,y,is_visible=False) LP1.append(O) p1=Polygon(LP1,color=col1) p1.opacity=1 p1.line_thickness=0 O=Point(x+1,y+1,is_visible=False) LP2.append(O) p2=Polygon(LP2,color=col1) p2.opacity=1 p2.line_thickness=0 def tuile2(x,y,n,col1,col2): LP1=[] for k in range(n+1): O = Point(x+1,y,is_visible=False) A = Point(x+1,y+0.5,is_visible=False) P = Rotate(A,k/n*3.14/2,O) P.is_visible=False LP1.append(P) LP2=[] for k in range(n+1): O = Point(x,y+1,is_visible=False) A = Point(x,y+0.5,is_visible=False) P = Rotate(A,k/n*3.14/2,O) P.is_visible=False LP2.append(P) LC1 = LP1 LC2 = LP2 O = Point(x,y,is_visible=False) LC1.append(O) O = Point(x+1,y+1,is_visible=False) LC2.append(O) p3=Polygon(LC1+LC2,color=col2) p3.opacity=1 p3.line_thickness=0 O=Point(x+1,y,is_visible=False) LP1.append(O) p1=Polygon(LP1,color=col1) p1.opacity=1 p1.line_thickness=0 O=Point(x,y+1,is_visible=False) LP2.append(O) p2=Polygon(LP2,color=col1) p2.opacity=1 p2.line_thickness=0 def dessin(dim,n,col1,col2): for y in range(dim): for x in range(dim): if (x+y)%2==0: a = randint(0,1) if a==0: tuile1(x,y,n,col1,col2) else: tuile2(x,y,n,col2,col1) else: a = randint(0,1) if a==0: tuile1(x,y,n,col2,col1) else: tuile2(x,y,n,col1,col2) time.sleep(0.001) # Exécution: Attention pour n>10, dim >=8. La génération du pavage demande beaucoup de temps. dim = 4 # dimension du pavage. dim*dim n = 10 couleur1=[1,0,0] couleur2=[0,1,1] dessin(dim,n,couleur1,couleur2)

Résultat obtenu pour dim=8 et n=10

Résultat obtenu pour dim=8 et n=2

Résultat obtenu pour dim=8 et n=1