Actualisez la page pour obtenir un autre motif !
from kandinsky import *
from math import sqrt
from random import randint
# nb d'anneaux (couleurs alternées) et largeur anneau
(nb, r) = (randint(3,40), randint(2,10))
p = nb * r
COUL = (70, 75, 75)
fill_rect(0, 0, 320, 222, (255, 210, 0))
def cercles(u,v,du,dv):
# Bord opposé (en diagonale) au point de départ (u,v)
(u2, v2) = (u + du * nb * r, v + dv * nb * r)
# Pour chaque pixel du carré p * p
for x in range(p):
for y in range(p):
# Recherche du n° de l'anneau
d = int(sqrt(x ** 2 + y ** 2) / r)
# Si c'est un nb impair et qu'il est inférieur au nb d'anneaux total
if d & 1 and d < nb:
# On le dessine (gris foncé)
set_pixel(u + du * x, v + dv * y, COUL)
# Distance point par rapport à l'autre extrémité
# et calcul du n° de l'anneau
d2 = int(sqrt((x - p) ** 2 + (y - p) ** 2) / r)
# On dessine pixel si en dehors des anneaux précédents
if d2 > nb - 2:
set_pixel(u2 - du * x, v2 - dv * y, COUL)
def motif(x,y):
# (a,b) = position départ du motif et (c,d) = directions du remplissage en x et y
# Faire varier (c,d) avec d'autres combinaisons de 1 et -1
for (a,b,c,d) in ((1,1,-1,-1),(2,0,-1,1),(0,2,1,-1),(1,1,1,1)):
cercles(x + a * p, y + b * p, c, d)
for c in range(1+ 160 // p):
for l in range(1 + 110 // p): motif(2 * c * p,2 * l * p)
from kandinsky import * from math import sqrt from random import randint nb, r = randint(3,40), randint(2,10) p = nb * r COUL = (70, 75, 75) fill_rect(0, 0, 320, 222, (255, 210, 0)) def cercles(u,v,du,dv): (u2, v2) = (u + du * nb * r, v + dv * nb * r) for x in range(p): for y in range(p): d = int(sqrt(x ** 2 + y ** 2) / r) if d & 1 and d < nb: set_pixel(u + du * x, v + dv * y, COUL) d2 = int(sqrt((x - p) ** 2 + (y - p) ** 2) / r) if d2 > nb - 2: set_pixel(u2 - du * x, v2 - dv * y, COUL) def motif(x,y): for (a,b,c,d) in ((1,1,-1,-1),(2,0,-1,1),(0,2,1,-1),(1,1,1,1)): cercles(x + a * p, y + b * p, c, d) for c in range(1+ 160 // p): for l in range(1 + 110 // p): motif(2 * c * p,2 * l * p)