[code][br]# 12/12/2024[br]# Un pavage (ou motif) de Truchet étendu. Variante avec des lignes polygonales[br]# aléatoires.[br]from random import*[br]import time[br][br]nbp=0[br][br]# fonction ligne polygonale déformée de façon aléatoire [br]def liste(P,Q,R,n):[br] r = random()/10[br] p = randint(1,2)[br] L=[][br] vx=Q.x-P.x[br] vy=Q.y-P.y[br] L.append(P)[br] for i in range(1,n):[br] L.append(Point(P.x+i/n * vx+(-1)**p*r*random(),P.y+i/n * vy+(-1)**p*r*random(),is_visible=False))[br] L.append(Q)[br] L.append(R)[br] return L[br][br][br]# fonction ligne brisée . En entrée une liste L de points.[br]def ligneb(L):[br] for i in range(len(L)-1):[br] s =Segment(L[i],L[i+1])[br][br]# les 2 types de tuiles [br]# avec du bleu dans le coin supérieur gauche et le coin inférieur droit: [br]def t11(x,y):[br] A = Point(x,y,is_visible = False)[br] B = Point(x+1,y,is_visible = False)[br] C = Point(x+1,y+1,is_visible = False)[br] D = Point(x,y+1,is_visible = False)[br] E = Point(x+0.5,y,is_visible = False)[br] F = Point(x+1,y+0.5,is_visible = False)[br] G = Point(x+0.5,y+1,is_visible = False)[br] H = Point(x,y+0.5,is_visible = False)[br] L1 = liste(E,F,B,nbp)[br] L2 = liste(H,G,D,nbp)[br] p2 = Polygon(L1,color="blue",opacity=1,line_thickness=0)[br] p3 = Polygon(L2,color="blue",opacity=1,line_thickness=0)[br] del L1[-1][br] del L2[-1][br] L1.append(C)[br] L2.reverse()[br] L2.append(A)[br] L= L2+L1[br] p1 = Polygon(L,color="yellow",opacity=1,line_thickness=0)[br] del L1[-1][br] del L2[-1][br] ligneb(L1)[br] ligneb(L2)[br][br]def t12(x,y):[br] A = Point(x,y,is_visible = False)[br] B = Point(x+1,y,is_visible = False)[br] C = Point(x+1,y+1,is_visible = False)[br] D = Point(x,y+1,is_visible = False)[br] E = Point(x+0.5,y,is_visible = False)[br] F = Point(x+1,y+0.5,is_visible = False)[br] G = Point(x+0.5,y+1,is_visible = False)[br] H = Point(x,y+0.5,is_visible = False)[br] L1 = liste(H,E,A,nbp)[br] L2 = liste(F,G,C,nbp)[br] p2 = Polygon(L1,color="yellow",opacity=1,line_thickness=0)[br] p3 = Polygon(L2,color="yellow",opacity=1,line_thickness=0)[br] del L1[-1][br] del L2[-1][br] L1.append(B)[br] L2.append(D)[br] L= L2+L1[br] p1 = Polygon(L,color="blue",opacity=1,line_thickness=0)[br] del L1[-1][br] del L2[-1][br] ligneb(L1)[br] ligneb(L2) [br] [br]# les 2 types de tuiles [br]# avec du jaune dans le coin supérieur gauche et le coin inférieur droit: [br][br]def t21(x,y):[br] A = Point(x,y,is_visible = False)[br] B = Point(x+1,y,is_visible = False)[br] C = Point(x+1,y+1,is_visible = False)[br] D = Point(x,y+1,is_visible = False)[br] E = Point(x+0.5,y,is_visible = False)[br] F = Point(x+1,y+0.5,is_visible = False)[br] G = Point(x+0.5,y+1,is_visible = False)[br] H = Point(x,y+0.5,is_visible = False)[br] L1 = liste(E,F,B,nbp)[br] L2 = liste(H,G,D,nbp)[br] p2 = Polygon(L1,color="yellow",opacity=1,line_thickness=0)[br] p3 = Polygon(L2,color="yellow",opacity=1,line_thickness=0)[br] del L1[-1][br] del L2[-1][br] L1.append(C)[br] L2.reverse()[br] L2.append(A)[br] L= L2+L1[br] p1 = Polygon(L,color="blue",opacity=1,line_thickness=0)[br] del L1[-1][br] del L2[-1][br] ligneb(L1)[br] ligneb(L2) [br] [br]def t22(x,y):[br] A = Point(x,y,is_visible = False)[br] B = Point(x+1,y,is_visible = False)[br] C = Point(x+1,y+1,is_visible = False)[br] D = Point(x,y+1,is_visible = False)[br] E = Point(x+0.5,y,is_visible = False)[br] F = Point(x+1,y+0.5,is_visible = False)[br] G = Point(x+0.5,y+1,is_visible = False)[br] H = Point(x,y+0.5,is_visible = False)[br] L1 = liste(H,E,A,nbp)[br] L2 = liste(F,G,C,nbp)[br] p2 = Polygon(L1,color="blue",opacity=1,line_thickness=0)[br] p3 = Polygon(L2,color="blue",opacity=1,line_thickness=0)[br] del L1[-1][br] del L2[-1][br] L1.append(B)[br] L2.append(D)[br] L= L2+L1[br] p1 = Polygon(L,color="yellow",opacity=1,line_thickness=0) [br] del L1[-1][br] del L2[-1][br] ligneb(L1)[br] ligneb(L2) [br]#bordure[br][br]def b11(x,y):[br] A = Point(x,y,is_visible = False)[br] B = Point(x+1,y,is_visible = False)[br] C = Point(x+1,y+1,is_visible = False)[br] D = Point(x,y+1,is_visible = False)[br] E = Point(x+0.5,y,is_visible = False)[br] F = Point(x+1,y+0.5,is_visible = False)[br] G = Point(x+0.5,y+1,is_visible = False)[br] H = Point(x,y+0.5,is_visible = False)[br] L1 = liste(E,F,B,nbp)[br] L2 = liste(H,G,D,nbp)[br] #p2 = Polygon(L1,color="blue",opacity=1,line_thickness=0)[br] p3 = Polygon(L2,color="yellow",opacity=1,line_thickness=0)[br] #del L1[-1][br] del L2[-1][br] ligneb(L2)[br] #L1.append(C)[br] L2.append(C)[br] L2.append(B)[br] L2.append(A)[br] [br] #L= L2+L1[br] p1 = Polygon(L2,color="blue",opacity=1,line_thickness=0)[br] [br]def b12(x,y):[br] A = Point(x,y,is_visible = False)[br] B = Point(x+1,y,is_visible = False)[br] C = Point(x+1,y+1,is_visible = False)[br] D = Point(x,y+1,is_visible = False)[br] E = Point(x+0.5,y,is_visible = False)[br] F = Point(x+1,y+0.5,is_visible = False)[br] G = Point(x+0.5,y+1,is_visible = False)[br] H = Point(x,y+0.5,is_visible = False)[br] L1 = liste(H,E,A,nbp)[br] L2 = liste(F,G,C,nbp)[br] #p2 = Polygon(L1,color="blue",opacity=1,line_thickness=0)[br] p3 = Polygon(L2,color="yellow",opacity=1,line_thickness=0)[br] #del L1[-1][br] del L2[-1][br] ligneb(L2) [br] L2.append(D)[br] L2.append(A)[br] L2.append(B)[br] p1 = Polygon(L2,color="blue",opacity=1,line_thickness=0) [br] [br]def b21(x,y):[br] A = Point(x,y,is_visible = False)[br] B = Point(x+1,y,is_visible = False)[br] C = Point(x+1,y+1,is_visible = False)[br] D = Point(x,y+1,is_visible = False)[br] E = Point(x+0.5,y,is_visible = False)[br] F = Point(x+1,y+0.5,is_visible = False)[br] G = Point(x+0.5,y+1,is_visible = False)[br] H = Point(x,y+0.5,is_visible = False)[br] L1 = liste(E,F,B,nbp)[br] #L2 = liste(H,G,D,nbp)[br] p2 = Polygon(L1,color="yellow",opacity=1,line_thickness=0)[br] #p3 = Polygon(L2,color="yellow",opacity=1,line_thickness=0)[br] del L1[-1][br] [br] ligneb(L1)[br] #L1.append(C)[br] L1.append(C)[br] L1.append(D)[br] L1.append(A)[br] [br] #L= L2+L1[br] p1 = Polygon(L1,color="blue",opacity=1,line_thickness=0) [br] [br]def b22(x,y):[br] A = Point(x,y,is_visible = False)[br] B = Point(x+1,y,is_visible = False)[br] C = Point(x+1,y+1,is_visible = False)[br] D = Point(x,y+1,is_visible = False)[br] E = Point(x+0.5,y,is_visible = False)[br] F = Point(x+1,y+0.5,is_visible = False)[br] G = Point(x+0.5,y+1,is_visible = False)[br] H = Point(x,y+0.5,is_visible = False)[br] L1 = liste(H,E,A,nbp)[br] #L2 = liste(F,G,C,nbp)[br] p2 = Polygon(L1,color="yellow",opacity=1,line_thickness=0)[br] #p3 = Polygon(L2,color="yellow",opacity=1,line_thickness=0)[br] #del L1[-1][br] del L1[-1][br] ligneb(L1) [br] L1.append(B)[br] L1.append(C)[br] L1.append(D)[br] p1 = Polygon(L1,color="blue",opacity=1,line_thickness=0) [br] [br] [br]# Dessin du motif [br] [br]def dessin(n):[br] for y in range(n):[br] for x in range(n):[br] a = randint(1,2)[br] #global nbp[br] #nbp = x[br] if (x+y)%2==0:[br] if a==1:[br] t11(x,y)[br] else:[br] t12(x,y)[br] else:[br] if a==1:[br] t21(x,y)[br] else:[br] t22(x,y)[br] time.sleep(0.01) [br] [br] [br][br]################### Exécution ##########################[br]nbp = 3 # nombre de points des lignes polygonales/brisées[br]n = 8 # nombre de lignes et de colonnes, nombre entier PAIR[br][br][br]fond = Polygon(Point(-2,-2,is_visible=False),Point(n+2,-2,is_visible=False),4[br],opacity=1,color="white",line_thickness=0)[br][br]dessin(n)[br][br]#bordure( bug pour n impair !) :[br][br][br]for i in range(0,n,2):[br] b11(i,-1)[br] time.sleep(0.01) [br]for i in range(1,n,2):[br] b12(i,-1)[br] time.sleep(0.01) [br]for i in range(-1,n,2):[br] b11(n,i)[br] time.sleep(0.01) [br]for i in range(-1,n,2):[br] b12(-1,i)[br] time.sleep(0.01) [br]for i in range(0,n,2):[br] b21(-1,i)[br] time.sleep(0.01) [br]for i in range(-1,n,2):[br] b21(i,n)[br] time.sleep(0.01) [br]for i in range(0,n,2):[br] b22(i,n)[br] time.sleep(0.01) [br]for i in range(0,n+1,2):[br] b22(n,i)[br] time.sleep(0.01) [br][br][br][br][br][/code]