Aller au contenu principal
sports_esports Lab Canvas 2D DFT Épicycles Zéro dépendance

Épicycles de Fourier — décomposer un dessin par la transformée de Fourier discrète

Dessinez une courbe fermée : ses points, lus comme des nombres complexes, passent par une transformée de Fourier discrète (DFT) implémentée à la main. Chaque fréquence devient un cercle qui tourne — un épicycle — et la chaîne de cercles, montés bout à bout et triés par amplitude décroissante, retrace exactement votre dessin. Zéro dépendance.

Dessinez une courbe fermée à la souris R : effacer et redessiner Espace : mettre en pause

Un dessin, vu comme une somme de rotations

Quand vous tracez une courbe fermée à la souris, je n'enregistre pas une image : j'enregistre une suite de points. En lisant chaque point comme un nombre complexe — l'abscisse pour la partie réelle, l'ordonnée pour la partie imaginaire — le dessin devient un signal périodique. Et tout signal périodique se décompose en une somme de rotations pures, chacune tournant à une fréquence bien précise. C'est l'idée de la transformée de Fourier, appliquée ici à un tracé plutôt qu'à un son.

La DFT, implémentée à la main

La transformée de Fourier discrète (DFT) prend mes N points et en ressort N termes. Chaque terme porte trois informations : une fréquence (combien de tours il fait pendant que la courbe se dessine une fois), une amplitude (le rayon de sa rotation) et une phase (l'angle de départ). Je ne fais appel à aucune bibliothèque : c'est une double boucle qui projette le signal sur chaque fréquence, exactement la formule mathématique posée telle quelle dans le code.

Des épicycles montés bout à bout

Chaque terme devient un cercle qui tourne — un épicycle. Je les monte les uns au bout des autres : le centre de chaque cercle est accroché à l'extrémité du précédent. Tous tournent en même temps, chacun à sa fréquence, et l'extrémité du dernier cercle retrace exactement la courbe de départ, en laissant derrière elle la trace ambre. Rien n'est « rejoué » depuis le dessin d'origine : la forme réapparaît uniquement parce que la somme des rotations la reconstitue point par point.

Trier par amplitude décroissante

J'affiche les épicycles du plus grand au plus petit. Les premiers cercles, larges, posent la silhouette générale ; les suivants, de plus en plus fins, ajoutent le détail. C'est la même hiérarchie qu'en compression : les grandes amplitudes portent l'essentiel de l'information, les petites peaufinent. On pourrait tronquer les termes négligeables et obtenir une version simplifiée mais reconnaissable de la courbe — précisément ce que fait un algorithme de compression.

Décomposer pour mieux maîtriser

Cette démo illustre un réflexe d'ingénieur que j'applique à tous mes projets : décomposer un phénomène complexe en briques simples et bien comprises. Un signal devient une somme de fréquences ; un système devient une somme de composants isolés, testables, remplaçables. Pour un client, c'est ce qui fait la différence entre un logiciel opaque qu'on subit et une architecture claire qu'on maîtrise, qu'on fait évoluer sereinement et dont on reste pleinement propriétaire.

Photo d'Emmanuel BALLERY, fondateur de x10

À propos de l'auteur

Emmanuel BALLERY est le fondateur de x10 solutions. Ces petits jeux sont surtout un plaisir de développeur, codés le week-end — pas une vitrine de mes missions, qui sont bien plus exigeantes. J'y soigne quand même la performance et la lisibilité, par habitude.

Voir plus arrow_forward
rocket_launch

Un vrai projet en tête ?

Ce petit jeu m'amuse, mais il ne dit pas grand-chose de mon métier : mes missions sont bien plus complexes. Si vous avez une application à concevoir ou à fiabiliser, c'est là que je suis vraiment utile.

Discuter de mon projet arrow_forward