jeudi 14 juin 2018

tracé d'une surface et noeud de trèfle

L'informatique fait souvent croire qu'a l'aide d'un ordinateur on peut réaliser  des opérations très complexes sans comprendre où maîtriser les théories mises en œuvre. Ce mythe est très populaire quand il s'agit de mathématique, a tel point que Claude Allègre, alors ministre de l'éducation nationale, déclarait dans le journal France-soir, du 29/11/99 : "Les maths sont en train de se dévaluer de manière quasi inéluctable. Désormais, il y a des machines pour faire les calculs". Pourtant tracer le graphe  d'une simple surface demande un minimum de compréhension mathématique quelque soit le logiciel utilisé. Petit exemple avec la jolie surface  engendrée par un cercle se déplaçant le long d'un nœud de trèfle!



Pour tracer une surface le plus simple est de trouver une équation paramétrique, c'est à dire une fonction  $ S: {\mathbb R}^2\longrightarrow {\mathbb R}^3$  qui à 2 coordonnées (par exemple $(\theta,\phi)$) associe un point dans l'espace (donc dans $ {\mathbb R}^3$). Par exemple tracer une sphère avec scilab  il faut coder la fonction sphère en utilisant la description des points de la sphère, avec des coordonnées sphériques $(\theta,\phi)$, puis de lui fournir un découpage des coordonnées $(\theta,\phi)$ qui permet de tracer la structure de la sphère sous forme de facettes qui sont coloriées automatiquement



function [x,y,z]=sphere(theta,phi)
x=cos(theta).*sin(phi);   //  on utilise la multiplication terme à terme .*
y=sin(theta).*sin(phi);   //  appliquer sphere à des matrices de paramètres
z=cos(phi);
endfunction

theta=[0:%pi/30:2*%pi];  // découpage des theta
phi=[0:%pi/30:%pi]         // découpage des phi
[Theta,Phi]=meshgrid(theta,phi) ;  // matrices de paramètres
[x,y,z]=sphere(Theta,Phi) ;  // calcul des points de la sphere
F=gcf() ;
F.colormap=jetcolormap(64); //table de couleur
surf(x,y,z)   // tracé de la sphère




C'est de cette même manière qu'on décrit le tracé de n'importe quelle surface comme je l'ai déjà fait dans les articles sur  la bouteille de Klein ou la surface de Boy mais pour cela il faut trouver des équations pour tracer la surface. En cherchant un peu on trouve facilement l'équation de la courbe paramétrée donnant le nœud de trèfle (par exemple sur l'excellent site math curve ) :

 $$\begin{align*}
x(\theta)&=\cos(\theta)+2\cos(2\theta)\\
y(\theta)&=\sin(\theta)-2\sin(2\theta)\\
z(\theta)&=2\sin(3\theta)\\
\end{align*}$$

mais vous aurez beaucoup plus de mal à trouver comment  passer de cette équation décrivant une ligne au tracé effectif d'une surface englobant cette ligne. Cela ne se fait pas directement il faut comprendre comment est définie cette surface, pour cela on va ce concentrer sur le dessin ci-dessous :


le nœud de trèfle apparaît en cyan ci-dessus, si on veut dessiner  la surface qui englobe cette courbe il  faut pouvoir construire en chaque point $M(\theta)$ de la courbe les points $S(\theta,\varphi)$ d'un cercle centrée sur $M(\theta)$. Pour cela on sait que dans un repère orthonormé  $( M(\theta),{\bf N}_1,{\bf N}_2)$ les points du cercles on pour coordonnées $\cos(\varphi),\sin(\varphi))$ avec $\varphi\in[0,2\pi]$. Il faut donc trouver un moyen de construire les deux vecteurs normaux associé au point courant de la courbe. C'est là qu'on a besoin d'un minimum de connaissances en géométrie différentielle :

  • Pour obtenir un vecteur tangent à la courbe $\theta\mapsto M(\theta)$ il suffit de dériver cette expression :
    $${\bf T}(\theta)={d\over d\theta}M(\theta)=
    \begin{pmatrix}-\sin(\theta)-4\sin(2\theta)\\
    \cos(\theta)-4\cos(2\theta)\\ 6\cos(3\theta)\end{pmatrix}
    \begin{pmatrix}T_x\\T_y\\T_z\end{pmatrix}$$
  • On peut construire un premier vecteur normal à partir des coordonnées de ${\bf T}$ en s'arrangeant pour annuler simplement le produit scalaire :
    $${\bf N}_1=\begin{pmatrix}-T_y\\T_x\\0\end{pmatrix}\Rightarrow \langle {\bf T},{\bf N}_1\rangle =-T_xT_y+T_xT_y+0=0$$
  • On peut obtenir un deuxième vecteur orthogonal aux deux précédents en faisant leur produit vectoriel :
    $${\bf N}_2={\bf T}\wedge {\bf N}_1=\begin{pmatrix}-T_xT_z\\-T_yT_z\\T_x^2+T_y^2\end{pmatrix}$$
En toute rigueur il faudrait être sûr  que l'on a jamais $T_x=T_y=T_z=0$ au quel cas les trois vecteurs deviendraient nuls, et la surface se réduirait à la courbe. Par chance c'est bien le cas et à défaut d'écrire  une formule exacte  pour l'équation paramétrique de la surface on peut en donner un algorithme de calcul :

fonction Noeud(theta,phi)
calculer M(theta)=le point du noeud de trèfle 
calculer T(theta)=la tangente au noeud de trèfle en M(theta)
calculer les vecteurs normaux  à T(theta)
       N1(theta)=(-Ty,Tx,0)
       N2(theta)=produit vectoriel de N1(theta) et T(theta)
renvoyer les coordonnées x,y,z du point 
M(theta)+cos(phi).*N1(theta)+sin(phi).*N2(theta)

il ne restera plus qu'a tracer la surface avec les même commandes que pour la sphère :

phi=[0:%pi/30:%pi]         // découpage des phi
[Theta,Phi]=meshgrid(theta,phi) ;  // matrices de paramètres
[x,y,z]=Noeud(Theta,Phi) ;  // calcul des points du noeud de trèfle
F=gcf() ;
F.colormap=jetcolormap(64); //table de couleur
surf(x,y,z)   // tracé du noeud de trèfle





1 commentaire:

Pour écrire des formules mathématiques vous pouvez utiliser la syntaxe latex en mettant vos formules entre des "dollars" $ \$....\$ $ par exemple :
- $\sum_{n=1}^\infty {1\over n^2}={\pi^2\over 6}$ s'obtient avec \sum_{n=1}^\infty {1\over n^2}={\pi^2\over 6}
- $\mathbb R$ s'obtient avec {\mathbb R} et $\mathcal D$ s'obtient avec {\mathcal D}
- pour les crochets $\langle .,. \rangle$ dans les commentaires utilisez \langle .,. \rangle
vous pouvez écrire du html dans les commentaires :
- italique <i> ... </i> gras <b> ... </b>
- lien <a href="http://adresse "> .... </a>