Pour illustrer cette période de Noël, et pour rester tout de même dans la thématique de mon site, rien de tel qu’un code Python pour faire un beau sapin de Noël…
Sapin de Noël réalisé à l’aide de Python
Parce qu’un sapin pourri du genre:
Sapin de Noël bien pourri
non merci!
Moi, je voulais un beau sapin de Noël en Python ! Je me suis donc mis à fouiller Internet, et je suis tombé sur la page https://perso.crans.org/besson/infoMP/TPs/solutions/_modules/sapinNoel.html. Malheureusement, le script ne fonctionne pas totalement… L’auteur nous promet une animation, mais quand on lance le script, l’animation ne se crée pas car la partie concernant l’animation est a priori obsolète. Et j’ai beau chercher, je ne trouve pas comment modifier simplement ce script pour faire clignoter les boules.
J’ai donc épuré le script afin qu’il dessine au moins un arbre statique, et cela donne :
c = [couleurs[k % len(couleurs)]for k inrange(len(x))]
sca = plt.scatter(x, y, s=60, c=c, zorder=2)
plt.axis('equal')
plt.ylim(0, 1.45)
plt.xticks([])
plt.yticks([])
plt.show()
tracer(7)
""" Script original : Arnaud Basson
- URL : https://perso.crans.org/besson/infoMP/TPs/solutions/sapinNoel.html
- *Date :* Noël 2015 ! (24 décembre 2015),
- *Licence :* MIT Licence (http://lbesson.mit-license.org).
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.collections as coll
def simil(u, v):
b = u
a = 1j*(u-v)
def f(z):
return a * z + b
return f
f1 = simil(0.2j, 0.2j + 0.5*np.exp(1j*np.pi/7))
f2 = simil(0.22j, 0.22j + 0.45j*np.exp(1j*60*np.pi/180))
f3 = simil(0.55j, 0.55j + 0.35*np.exp(1j*30*np.pi/180))
f4 = simil(0.57j, 0.57j + 0.3j*np.exp(1j*np.pi/3))
f5 = simil(0.7j, 1.2j-0.01)
def iterer(n):
L = [0, 0.7j]
L1 = L[:]
for _ in range(n):
L2 = []
for f in [f1, f2, f3, f4, f5]:
L2.extend([f(z) for z in L1])
L.extend(L2)
L1 = L2
return L
def tracer(n):
L = iterer(n)
pts = [(z.real, z.imag) for z in L]
fig = plt.figure()
segments = coll.LineCollection(zip(pts[::2], pts[1::2]), color='darkgreen')
ax = plt.gca()
ax.add_collection(segments)
nb = 30
l = len(L)
p = l//nb if l >= nb else 1
x = [z.real for z in L[1::p]]
y = [z.imag for z in L[1::p]]
couleurs = ['red', 'blue', 'yellow']
c = [couleurs[k % len(couleurs)] for k in range(len(x))]
sca = plt.scatter(x, y, s=60, c=c, zorder=2)
plt.axis('equal')
plt.ylim(0, 1.45)
plt.xticks([])
plt.yticks([])
plt.show()
tracer(7)
""" Script original : Arnaud Basson
- URL : https://perso.crans.org/besson/infoMP/TPs/solutions/sapinNoel.html
- *Date :* Noël 2015 ! (24 décembre 2015),
- *Licence :* MIT Licence (http://lbesson.mit-license.org).
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.collections as coll
def simil(u, v):
b = u
a = 1j*(u-v)
def f(z):
return a * z + b
return f
f1 = simil(0.2j, 0.2j + 0.5*np.exp(1j*np.pi/7))
f2 = simil(0.22j, 0.22j + 0.45j*np.exp(1j*60*np.pi/180))
f3 = simil(0.55j, 0.55j + 0.35*np.exp(1j*30*np.pi/180))
f4 = simil(0.57j, 0.57j + 0.3j*np.exp(1j*np.pi/3))
f5 = simil(0.7j, 1.2j-0.01)
def iterer(n):
L = [0, 0.7j]
L1 = L[:]
for _ in range(n):
L2 = []
for f in [f1, f2, f3, f4, f5]:
L2.extend([f(z) for z in L1])
L.extend(L2)
L1 = L2
return L
def tracer(n):
L = iterer(n)
pts = [(z.real, z.imag) for z in L]
fig = plt.figure()
segments = coll.LineCollection(zip(pts[::2], pts[1::2]), color='darkgreen')
ax = plt.gca()
ax.add_collection(segments)
nb = 30
l = len(L)
p = l//nb if l >= nb else 1
x = [z.real for z in L[1::p]]
y = [z.imag for z in L[1::p]]
couleurs = ['red', 'blue', 'yellow']
c = [couleurs[k % len(couleurs)] for k in range(len(x))]
sca = plt.scatter(x, y, s=60, c=c, zorder=2)
plt.axis('equal')
plt.ylim(0, 1.45)
plt.xticks([])
plt.yticks([])
plt.show()
tracer(7)
Si vous avez une suggestion pour créer une animation, n’hésitez-pas à la proposer !
Créer un QCM et les corriger automatiquement, c’est une chose que l’on peut faire avec https://www.auto-multiple-choice.net/fr/install/, mais ceci n’est installable facilement que sur Linux ou MacOS. L’installer sous windows nécessite d’installer un émulateur Linux. J’envisage Lire la suite…
tikz-tabular.sty est le nouveau package LaTeX que je viens de créé. Mais est-il réellement utile? Je me pose cette question car après m’être pris la tête pour l’écrire, je trouve qu’il est un peu compliqué Lire la suite…
wpDiscuz
0
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x