Pavage de Trchet étendu avec PyGGB

Lien vers PyGGB :
[url=https://www.geogebra.org/python/index.html?name=Truchet+Etendu+PyGGB&code=eJzVVs1q20AQvuspBkKJHQtFq6TQBhQIpT0ZbHotIWzktbtE2hUrKdjX9mn6Cj0mL9aZ1Y9lRRZ1k6Z0wZZW%2B83sN7Mz0rc0OgHD1QIvMkm1yU%2Bc8gq5TITjHMFo7W7GkGmVQywyiLQ2C63U4%2FeHHzhdCEi1xDVdgFZ4nwmIOeSFjIWH1gpERoagdHJrRIPP8FIY4Glq9Bp3MtY5N5F1GQkT4ZwcRDpmIHK6Bm0WRSwKYxHpWb1HquPNSiuyV7nhMbmqyRDQOkpbbmoD2pScSmW3r20yNMKgFhTrUiqJa8W6WgK3gQXl%2Fscy4SsbYb3AIOUGjM55LsnPcaGAqxUyRdB7%2F%2FHbw0%2FHWYhlhaZMu8qliOkvGF84gGM6Z%2BGXa3u71AbuQCo6spUYqQmrMDRmEMKccmv9yOzmXmbyNhbhJx5nYtzgrra4ie%2B9HcTOEfuZ%2BIvRlXt3qk7OPHZ%2BGrizFsTrmjdLyNzDExZqMZqXBtu%2F6Tw4NKoJczf4OyCyQfRzYwv6Ypt%2BYOgWA69mgZ0FdrZzQHupoYfaccWkk4K9dg2hyi49C%2BdlgY%2FQ6QQBVFbahLa4KoinUx7JfBOWjPFBLJW4yb%2FK6A4bIwv9bXAz9DdcX60Tn41rs5RtecxtaZccWMWBdTmwfg7N9oOF0DqYFoWgRaGVhppC0KUQPKWw7dTg5Tp14EC7FU1BU1X%2FJ936%2B7361%2BN6Xqf%2BaZ8OdPjrderQC%2BNVevVfdCr5cspkUM%2Fitz2TarSQSU%2FPUjlvtuWMoFY50%2BJ63yINuUR9NNmM3wRh6O8u0eBYEaSuKBO%2BW4XQsee9ljT2qIInWIEZHfDQelvZfHZo9Fu%2FLPO%2BfQ9j3hc7KVQvi4VIR77n%2B4xqqCyi9kAN93FNCi4qSIVdwFWeozwkQWYlqLpkvgt4tHAZvvNgymFFaCtwTSXcChRy96W4SzApAm4FL1CDpiTkcpGkKEQdchHCORyRM6GyHUuPHp7gz1EIYr5TKVj8YDDXd%2F3r%2BgG%2BZzHfLrvG0t0p2xJe32AqqhJv4nx68wtx8Er7&autorun=false]LINK[/url]
CODE:
[code]from random import*[br]import time[br][br]# (x,y) sont les coordonnées de point ou on pose la tuile.[br]# n est le nombre de points pour approximer les arcs de cercles.[br]# col1 et col2 sont les couleurs.[br]# p3 est le polygone central de la tuile[br]# p1 et p2 sont les polygones des coins de la tuiles[br]# on défini deux tuiles , la tuile2 est l'image de la tuile1 par rotation d'un angle de 90º[br][br]def tuile1(x,y,n,col1,col2):[br] LP1=[][br] for k in range(n+1):[br] O = Point(x,y,is_visible=False)[br] A = Point(x+0.5,y,is_visible=False)[br] P = Rotate(A,k/n*3.14/2,O)[br] P.is_visible=False[br] LP1.append(P)[br] [br] [br] LP2=[][br] for k in range(n+1):[br] O = Point(x+1,y+1,is_visible=False)[br] A = Point(x+0.5,y+1,is_visible=False)[br] P = Rotate(A,k/n*3.14/2,O)[br] P.is_visible=False[br] LP2.append(P)[br] [br] LC1 = LP1[br] LC2 = LP2[br] O = Point(x,y+1,is_visible=False)[br] LC1.append(O)[br] O = Point(x+1,y,is_visible=False)[br] LC2.append(O)[br] p3=Polygon(LC1+LC2,color=col2)[br] p3.opacity=1[br] p3.line_thickness=0[br] [br] O=Point(x,y,is_visible=False)[br] LP1.append(O) [br] p1=Polygon(LP1,color=col1)[br] p1.opacity=1[br] p1.line_thickness=0[br] O=Point(x+1,y+1,is_visible=False)[br] LP2.append(O) [br] p2=Polygon(LP2,color=col1)[br] p2.opacity=1[br] p2.line_thickness=0[br][br]def tuile2(x,y,n,col1,col2):[br] LP1=[][br] for k in range(n+1):[br] O = Point(x+1,y,is_visible=False)[br] A = Point(x+1,y+0.5,is_visible=False)[br] P = Rotate(A,k/n*3.14/2,O)[br] P.is_visible=False[br] LP1.append(P)[br] [br] [br] LP2=[][br] for k in range(n+1):[br] O = Point(x,y+1,is_visible=False)[br] A = Point(x,y+0.5,is_visible=False)[br] P = Rotate(A,k/n*3.14/2,O)[br] P.is_visible=False[br] LP2.append(P)[br] [br] LC1 = LP1[br] LC2 = LP2[br] O = Point(x,y,is_visible=False)[br] LC1.append(O)[br] O = Point(x+1,y+1,is_visible=False)[br] LC2.append(O)[br] p3=Polygon(LC1+LC2,color=col2)[br] p3.opacity=1[br] p3.line_thickness=0[br] [br] O=Point(x+1,y,is_visible=False)[br] LP1.append(O) [br] p1=Polygon(LP1,color=col1)[br] p1.opacity=1[br] p1.line_thickness=0[br] O=Point(x,y+1,is_visible=False)[br] LP2.append(O) [br] p2=Polygon(LP2,color=col1)[br] p2.opacity=1[br] p2.line_thickness=0[br] [br][br][br] [br]def dessin(dim,n,col1,col2):[br] for y in range(dim):[br] for x in range(dim):[br] if (x+y)%2==0:[br] a = randint(0,1)[br] if a==0:[br] tuile1(x,y,n,col1,col2)[br] else:[br] tuile2(x,y,n,col2,col1)[br] else:[br] a = randint(0,1)[br] if a==0:[br] tuile1(x,y,n,col2,col1)[br] else:[br] tuile2(x,y,n,col1,col2)[br] time.sleep(0.001) [br] [br]# Exécution: Attention pour n>10, dim >=8. La génération du pavage demande beaucoup de temps.[br][br]dim = 4 # dimension du pavage. dim*dim[br]n = 10[br]couleur1=[1,0,0][br]couleur2=[0,1,1][br]dessin(dim,n,couleur1,couleur2)[br][br] [br][/code]
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

Information: Pavage de Trchet étendu avec PyGGB