Ce mini projet que j'ai intitulé "curve stitching" est né d'une envie que j'ai eu de rejouer avec certains algorithmes que j'avais découverts durant mon adolescence, lorsque je m'initiais à la programmation sur mon Commodore 64. Pour la petite histoire, c'était dans les années 80, et le langage de prédilection à l'époque, pour les débutants en programmation, c'était ce bon vieux langage BASIC. Avec les 320 sur 200 pixels de mon Commodore 64, les graphiques obtenus étaient passablement pixellisés, mais avec le recul, je dirais que cela leur donnait un certain charme ;).

J'ai donc eu envie de voir ce que ces algorithmes pouvaient donner avec la résolution des machines d'aujourd'hui, et j'ai décidé de réécrire certains de ces algorithmes en Javascript, en m'appuyant sur l'API Canvas du HTML5.

Il n'est pas évident de traduire l'expression "Curve Stitching" ("courbes en couture", "courbes en points".. ?). Nos amis anglophones utilisent aussi fréquemment le terme "string art" (l'art de la ficelle) pour désigner ces techniques de tracé, qui peuvent aussi se réaliser à la main (avec de la ficelle justement), et qui touchent à plusieurs domaines (calcul, géométrie, algorithmique, activité manuelle et artistique). On trouve beaucoup de ressources sur ce sujet sur internet (notamment sur youtube).

Il faut savoir que ces techniques graphiques ont été inventées par Mary Everest Boole (1832-1916), une géniale mathématicienne autodidacte, épouse d'un autre mathématicien autodidacte et non moins génial - mais plus célèbre - George Boole. Mary Everest Boole avait mené des travaux précurseurs dans l'enseignement des sciences, en particulier à destination des enfants. Sa fille, Alicia Boole Stott, avait très certainement bénéficié de ses enseignements, car elle deviendra elle-même une brillante géomètre. A noter que Alicia Boole Stott mènera un important travail de recherche dans le domaine de la géométrie en 4 dimensions. On lui doit notamment des développements majeurs dans l'étude des polytopes.

Un premier livre de référence sur le sujet : "Curve Stitching, The art of sewing beautiful mathematical patterns", de John Millington (Tarquin Publications). Ce livre aujourd'hui épuisé est difficile à trouver en France, mais on peut le commander d'occasion sur Amazon.uk par exemple.

Un autre livre de référence sur le sujet, que j'ai découvert grâce au livre de John Millington, mais qui est beaucoup plus ancien (1906) : "A Rhythmic Approach to Mathematics", de Edith Somerwell. C'est très certainement le tout premier livre sur le sujet, quand on sait qu'Edith Somerwell était une amie de Mary Everest Boole, et que cette dernière a préfacé le livre. Riche en illustrations, c'est un livre passionnant, autant comme document historique que pour son contenu pédagogique. Heureusement pour nous, il a été numérisé et on peut le trouver en PDF via Google (le site sur lequel j'ai trouvé mon exemplaire étant bizarre... je ne vais pas donner de lien ici, je vous laisse le soin de le trouver). Ce livre est probablement dans le domaine public, mais comme je n'en suis pas absolument certain, je ne vais pas prendre le risque d'en mettre une copie sur mon site.

Pour une approche théorique contemporaine sur certaines des formes obtenues en "curve stitching", je vous recommande de regarder la vidéo Times Tables, Mandelbrot and the Heart of Mathematics de Mathologer.

Je vous invite à tester les différents générateurs de forme que j'ai placés dans ce menu, et notamment le graphique "Op Art". Je trouve les formes obtenues avec cet algorithme assez impressionnantes, et les rendus très différents selon que l'on utilise le tracé "horlogique", le tracé "anti-horlogique", ou les deux combinés. Pensez, pour chaque graphique, à comparer l'affichage "instantané", et l'affichage "progressif". Vous constaterez que le rendu obtenu avec l'affichage progressif est plus "pixellisé" que le rendu obtenu en affichage "instantané" (qui lui est très proche d'un rendu vectoriel). Ce décalage en terme de rendu est un phénomène surprenant que je ne m'explique pas pour l'instant, mais je vous avoue que je n'ai pas poussé très loin l'analyse, faute de temps.

Je dois dire que j'ai été agréablement surpris par l'accueil que mes enfants ont fait à ce mini projet. Ils se sont véritablement pris au jeu, testant avec soin les différents paramètres à leur disposition. Il est vrai que certaines des figures obtenues sont assez fascinantes.

A noter que j'ai écrit les 3 premiers générateurs (Op'Art, Napperon et Epicycloïde) en Javascript natif, et même si je suis assez content du résultat, je trouve mon code Javascript un peu lourd, du fait que l'API Canvas est une API "bas niveau" qui nécessite pour certaines opérations (comme l'effet d'animation pour l'affichage "progressif") un travail d'écriture conséquent. Pour mes prochaines expérimentations dans le domaine des graphiques mathématiques, et du "curve stitching", je m'appuierai davantage sur P5.js, ce que j'ai d'ailleurs commencé à faire avec les exemples suivants ("8 paraboles dans un carré" et "courbes dans un cercle") que j'ai intégralement écrits avec P5.js.