plot(atan,(-2,2))
plot(-x^2 + 0.3*cos(20*x))
var('u, v')
f1=(4+(3+cos(v))*sin(u),4+(3+cos(v))*cos(u), 4+sin(v))
f2=(8+(3+cos(v))*cos(u),3+sin(v), 4+(3+cos(v))*sin(u))
p1=parametric_plot3d(f1,(u,0,2*pi),(v,0,2*pi),color="red", opacity=0.5, aspect_ratio=[1,1,1])
p2=parametric_plot3d(f2,(u,0,2*pi),(v,0,2*pi),color="blue", opacity=0.5)
p1+p2
Vous allez maintenant essayer de tracer le flocon de Koch
Avec la commande line()
, tracez un triangle.
La commande line()
(comme circle()
ou plot()
) renvoie un graphique, que vous pouvez aussi créer directement Graphics()
. Vous pouvez ajouter des objet à un graphique et vous avez des options d'affichage par exemple G.show(axes=False)
.
En vous souvenant de la matrice de la rotation d'angle $\pi/3$, tracez un triangle équilatéral puis une étoile de David.
Pour tracer le flocon de Koch, nous avons besoin d'une fonction qui sous-divise un segment en quatre segments. Écrivez-donc une fonction subdivise(segment)
qui prend en argument une liste de deux points (chaque point est lui-même une liste de deux coordonnées) et qui renvoie une liste de quatre segments (chaque segment est une liste de deux points, etc.) comme dans le flocon de Koch.
line([(0,0),(1,0),(1.5,0.866),(2,0),(3,0)]).show(axes=False,aspect_ratio=True)
Il faut maintenant appeler récursivement la fonction subdivise()
(disons avec une profondeur de 3 pour commencer). Écrivez une fonction trace_Koch(segment,profondeur=3)
qui trace le segment si la profondeur est nulle et qui s'appelle elle-même avec les quatre sous-segments et une profondeur diminuée de 1 sinon. (Le profondeur=3
dans l'appel de la fonction signifie que 3 est la valeur par défaut de profondeur
, c'est-à-dire que l'utilisateur peut choisir d'omettre ce deuxième paramètre: trace_Koch([(1,0),(0,0)])
dans ce cas la fonction reçoit profondeur=3
.)