Figures récursives
On peut décrire la figure suivante de façon récursive :
La figure est formée d’un cercle et de deux copies de ce cercle ayant subies une réduction d’un facteur 2, ces deux petits cercles étant tangents extérieurement au cercle initial et tels que les lignes des centres sont parallèles aux axes du repère. Ces deux petits cercles deviennent à leur tour “cercle initial” pour poursuivre la figure.
On peut traduire avec Python ce descriptif récursif de la façon suivante :
import pylab F = pylab.gca() # F peut être vue comme un objet ’figure’ def cercle(x, y, r): """ cercle de centre (x,y) et de rayon r """ # création du cercle: cir = pylab.Circle([x, y], radius = r, fill = False) # ajout du cercle à la figure : F.add_patch(cir) def CerclesRec(x, y, r): """ construction récursive de la figure """ cercle(x, y, r) if r > 1: CerclesRec(x+3*r/2, y, r/2) CerclesRec(x, y-3*r/2, r/2) # appel de la fonction CerclesRec CerclesRec(0, 0, 8) # pour placer toute la figure dans un repère orthonormé : pylab.axis('scaled') # affichage de la figure : pylab.show()
CerclesRec(0, 0, 8)
par CerclesRec(0, 0, 64)
, qu’obtiendra-t-on ?On pourra utiliser un paramètre supplémentaire pour définir la fonction récursive (abscisse du centre, ordonnée du centre, rayon du cercle, position du voisin) où position sera l’une des chaînes de caractères : haut, bas, droite, gauche.
pylab.Rectangle((x,y), a, b, fill=False)
permet de définir un rectangle dont les côtés, de longueurs a
et b
, sont parallèles aux axes et dont le sommet “sud-ouest” a pour coordonnées (x,y)
.
L’instruction pylab.Polygon([(xa,ya), (xb,yb), (xc,yc)], fill=False)
permet de définir un triangle dont les sommets ont pour coordonnées (xa,ya)
, (xb,yb)
, (xc,yc)
.