from random import*
import time
#JB Etienne 20-21 janvier 2025
def centregravite(A,B,C,D,E,F):
return Point((A.x+B.x+C.x+D.x+E.x+F.x)/6,(A.y+B.y+C.y+D.y+E.y+F.y)/6,is_visible=False)
# image du point M par l'homothétie de centre O et de rapport k:
def image(M,O,k):
return Point(k*(M.x-O.x)+O.x,k*(M.y-O.y)+O.y,is_visible=False)
# On génère une grille de points que l'on stocke dans une liste de listes M
def dessin(dim,cx,cy):
M=[]
for y in range(0,dim,1):
L=[]
for x in range(0,dim,1):
P=Point(x+uniform(-cx,cx),y+uniform(-cy,cy),is_visible=False)
L.append(P)
M.append(L)
for j in range(0,dim-3,2):
for i in range(1,dim-3,4):
G=centregravite(M[j][i],M[j][i+1],M[j+1][i+2],M[j+2][i+1],M[j+2][i],M[j+1][i-1])
for k in range(1,5):
coef = 1-k/5
p=Polygon([image(M[j][i],G,coef),image(M[j][i+1],G,coef)
,image(M[j+1][i+2],G,coef),image(M[j+2][i+1],G,coef),image(M[j+2][i],G,coef)
,image(M[j+1][i-1],G,coef)],color=[(k+1)/5,(k+1)/5,1/(i+j+3)],opacity=1)
time.sleep(0.005)
G=centregravite(M[j+1][i+2],M[j+1][i+1+2],M[j+1+1][i+2+2],M[j+2+1][i+1+2],M[j+2+1][i+2],M[j+1+1][i-1+2])
for k in range(1,5):
coef = 1-k/5
p=Polygon([image(M[j+1][i+2],G,coef),image(M[j+1][i+1+2],G,coef)
,image(M[j+1+1][i+2+2],G,coef),image(M[j+2+1][i+1+2],G,coef),image(M[j+2+1][i+2],G,coef)
,image(M[j+1+1][i-1+2],G,coef)],color=[(k+1)/5,(k+1)/5,1/(i+j+3)],opacity=1)
time.sleep(0.005)
# Exécution :
fond=Polygon(Point(-10,-10,is_visible=False),Point(30,-10,is_visible=False)
,4,color="black",opacity=1)
dessin(10,0.05,0.05)