Publicité
Choux romanesco, Vache qui rit et intégrales curvilignes
18 février 2018

Dessinons avec des (épi)ⁿ-cycloïdes

Depuis quelques jours circule une très chouette animation montrant des épicycloïdes dessiner la jeune fille à la perle de Johannes Vermeer. Parce que, oui, les épicycloïdes dessinent très bien, et ça ressemble à ceci :


Quand on voit cette animation, on est en droit de ce demander par quelle sorcellerie une telle prouesse est possible ? Pour le savoir, il va falloir fouiller du côté des épicycloïdes et de la théorie de Fourier.

Les (épi)cycloïdes
On appelle épicycloïde la courbe que l'on obtient en suivant la trajectoire d'un point situé situé sur le périmètre d'un cercle roulant sur un autre cercle; L'exemple le plus simple d'épicycloïde est la cardioide, obtenue en regardant un disque rouler sur le périmètre d'un disque de même rayon.

Source: Externe

Je voulais sortir cet article pour la saint-Valentin, mais c'est raté

Pour simplifier nos équations, on va considérer un autre type d'épicyloïdes (qui ne mériteraient pas de porter ce nom, mais on va faire avec). Au lieu de faire rouler un cercle sur le périmètre d'un autre, on va plutôt faire rouler le centre du cercle sur le périmètre d'un autre. En prenant, par exemple, un cercle porteur de rayon 4, et un cercle porté de rayon 2, et on faisant tourner ce deuxième cercle deux fois plus vite que le premier, on obtient... à nouveau une cardioïde :

cardop

Une bien jolie cardioïde

On peut bien sûr faire varier les paramètres (taille des cercles et vitesse de rotation), ce qui donne toute une collections d'épicycloïdes :

epi joli A epi joli B

epi joli C


De bien jolies épicycloïdes

Mais rien ne nous empêche de faire porter au cercle tournoyant un nouveau cercle tournant, ce qui permet d'obtenir des épi-épi-cycloïdes. Avec trois cercles, il y a donc de nombreux paramètres à prendre en compte, ce qui nous donne toute une galerie de courbes possibles. En prenant, par exemple, des cercles de rayon 5, 2.5 et 1.5, et des vitesses de rotations de respectivement 1, 2 et 3, on obtient la courbe suivante :

Source: Externe
Une bien jolie épi-épicycloïde

Une excellente question à se poser, c'est celle de l'équation des courbes que l'on obtient. Pour comprendre l'idée, reprenons la situation précédente. On a donc les rayons de rayons respectifs 5, 2.5 et 1.5, et ces rayons forment des angles mesurant respectivement α, 2α et 3α par rapport à l'horizontale (on suppose ici que les phases sont toutes de 0, c'est à dire que avant de se mettre à tourner, les rayons colorés sont tous alignés). On peut alors déterminer les coordonnées du point traceur M en fonction de α :


Les coordonnées du point M peuvent s'exprimer à l'aide de l'angle α entre l'horizontale et le rayon du cerlce porteur

  • on peut alors voir, sur le schéma, que l'abscisse de M est donné par xM(α) = 5 cos(α) + 2.5 cos(2α) + 1.5 cos(3α)
  • de la même manière, son ordonnée est donné par yM(α)=5 sin(α) + 2.5 sin(2α) + 1.5 sin(3α)

De manière générale, si on a N cercles, de rayons r1, r2, ... rN, et qu'ils tournent à des vitesse de respectivement k1, k2, ..., kN, on obtient pour le point M les coordonnées :

  • xN(α) = r1 cos(k1 α) + r2 cos(k2 α) + ... rN cos(kN α)
  • yN(α) =r1 sin(k1 α) + r2sin(k2 α) + ... rN sin(kN α)

Tout ça, c'est lorsque les cercles ont toutes la même phase, de 0. Ce que je vais appeler la phase, c'est la direction de référence sur les cercles par rapport à laquelle on calcule l'angle α. En choisissant une autre phase β pour par exemple le premier des trois cercles, on obtient une épicycloïde radicalement différente :



De manière générale, si on a N cercles, de rayons r1, r2, ...,rN, de phase β1, β2, ..., βN, et qu'ils tournent à des vitesse de respectivement k1, k2, ..., kN,, on obtient pour le point M les coordonnées :

  • xN(α) = r1 cos(k1 α+β1) + r2 cos(k2 α+β2) + ... rN cos(kN α+βN)
  • yN(α) =r1 sin(k1 α+β1) + r2 sin(k2 α+β2) + ... rN sin(kN α+βN)

Mettons ces équations dans un coin de notre tête, et parlons à présent de tout autre chose chose

Décomposition d'une courbe paramétrique à l'aide de ses coefficients de Fourier
Avertissement : je n'y comprends pas grand chose en théorie de Fourier, j'espère ne pas dire de contre-vérités dans les paragraphes qui vont suivre. Si c'est le cas, dites-le moi très vite.

Prenons un joli dessin. Disons, la silhouette de la France dessinnée à main levée sur Geogebra, mais vous pouvez prendre ce que vous voulez du moment qu'il s'agit d'une courbe refermée sur elle-même.



La France métropolitaine continentale (vue d'artiste)

Comment trouver une équation paramétrique de cette courbe qui soit suffisamment proche de la courbe originale ? Il nous faut, en fonction de α ∈ [0;2π], les coordonnées (x(α);y(α)) des points de la courbe. Une méthode pas trop compliquée à mettre en place est de déterminer la décomposition sous la forme d'un polynôme trigonométrique des fonctions x et y, c'est à dire écrire x et y sous la forme :

xN(α) = a0   +   a1 cos(α) + b1 sin(α)   +   a2 cos(2 α) + b2 sin(2 α)   +... +   aN cos(N α) + bN sin(N α)
yN(α) = a'0   +   a'1 cos(α) + b'1 sin(α)   +   a'2 cos(2 α) + b'2 sin(2 α)   +... +   a'N cos(N α) + b'N sin(N α)

Comment s'y prendre pour déterminer tous ces coefficients ? Le plus simple, c'est d'échantillonner le dessin que j'ai fait au-dessus.  En l'occurence, celui-ci est constitué de M=578 points, que l'on va soigneusement numéroter de 1 à 578  :



Comptez bien, il y a 578 points

 J'ai donc maintenant deux suites (xj) et (yj), et ce sont celles-ci qu'il faut approcher par les bonnes fonctions α↦x(α) et α↦y(α) :


Les 578 abscisses en bleus, et les 578 ordonnées en rouge

 En l'occurence, il se trouve que l'on peut calculer les coefficients a0, a1, .. aN et b1, b2, ..., bN de la fonction

α↦xN(α) = a0 + a1 cos(α) + b1 sin(α) + a2 cos(2 α) + b2 sin(2 α) +... + aN cos(N α) + bN sin(N α)

à l'aide d'une transformée de Fourier discrète, ce qui ressemble, sauf erreur de ma part, à :

  • a0 = 1/M Σj xj
  • ak = 2/M Σj xj cos(k 2π/M j)
  • bk = 2/M Σj xj sin(k 2π/M j)

et de même pour les coefficients a'0, a'1, .. a'N et b'1, b'2, ..., b'N de pour la fonction yN.

En faisant tous ces calculs avec N=10, on détermine les équations de deux fonctions trigonométriques ayant l'allure recherchée :



Courbes approchant pas trop mal l'échantillonage réalisé au-dessus.

Il n'y a plus qu'à tracer la courbe paramétrée par (xN(α);yN(α)), et paf, on obtient les grandes lignes de notre carte de France !

 

La France d'ordre N=10

Bien sûr, puisque l'on a pris des des fonctions trigonométriques de périodes d'au plus N=10, la courbe obtenue est relativement sommaire. On pourrait avoir un peu plus de détails en prenant une meilleure valeur de N, par exemple avec N=20 :

 
La France d'ordre N=20, bien plus pécise

Le lien entre tout ça
On a donc, d'un côté, des épicycloides, d'équations paramétriques :

  • x(α) = r1 cos(k1 α+β1) + r2 cos(k2 α+β2) + ... rN cos(kN α+β)
  • y(α) =r1 sin(k1 α+β1) + r2 sin(k2 α+β2) + ... rN sin(kN α+β)
  • α∈[0;2π]

De l'autre, on a des courbes fermées d'équations paramétriques,

  • x(α) = a0 + a1 cos(α) + b1 sin(α) + a2 cos(2 α) + b2 sin(2 α) +... + aN cos(N α) + bN sin(N α)
  • y(α) = a'0 + a'1 cos(α) + b'1 sin(α) + a'2 cos(2 α) + b'2 sin(2 α) +... + a'N cos(N α) + b'N sin(N α)
  • α∈[0;2π]

On peut en fait transformer l'écriture de ces derniers polynômes, en remarquant que
a cos(kα) + b sin(α) = r cos(kα + β) avec r et β tels que a - ib = r e i β

Bref, l'équation paramétrique du joli dessin que l'on cherche à recréer s'écrit sous la forme

  • x(α) = a0 + r1 cos(α+β1) + r2 cos(2α+β2) + ... rN cos(Nα+βN)
  • y(α) =a'0 + r'1 cos(α+β'1) + r'2 cos(2α+β'2) + ... r'N cos(Nα+β'N)
  • α∈[0;2π]

 Il nous faut donc construire deux épicycloides :

  • la première, au-dessus de notre dessin, constitués de N cercles de rayons r1, r2, ..., rN, de phase β1, β2, ...,βN et de périodes 1, 2, ..., N, dont l'abscisse du point externe sera l'abscisse des points du dessin
  • la deuxième, à gauche, constitués de N cercles de rayons r'1, r'2, ..., r'N, de phase β'1, β'2, ...,β'N et de périodes 1, 2, ..., N, dont l'abscisse du point externe sera l'ordonnée des points du dessin (pour ce faire, une petite symétrie est nécéssaire).

Et... voilà !

Source: Externe

Publicité
Publicité
Commentaires
Y
Comment l'échantillonnage est-il réalisé sur Geogebra ?
Répondre
M
Bonjour,<br /> <br /> <br /> <br /> Merci pour votre page !<br /> <br /> <br /> <br /> Je ne connaissais pas cette manière d'approcher des courbes fermées.<br /> <br /> <br /> <br /> J'ai une petite remarque : lorsque vous définissez une épicycloïde (par la première méthode), il faut bien préciser que les deux cercles doivent rouler SANS GLISSER l'un sur l'autre (ou DANS l'autre pour une hypocycloïde).<br /> <br /> En conséquence, l'épi ou l'hypo doivent présenter des points de rebroussement, ce qui est le cas (1 seul point) dans votre premier exemple, celui de la cardioïde.<br /> <br /> <br /> <br /> Dans votre paragraphe "On peut bien sûr faire varier les paramètres (taille des cercles et vitesse de rotation), ce qui donne toute une collections d'épicycloïdes", sur les trois courbes violette proposées, la première n'est pas une épi car elle ne présente pas de point de rebroussement, dans cette première figure, vos deux cercles certes roulent l'un sur l'autre (autrement dit ils sont tangents) mais en glissant.<br /> <br /> <br /> <br /> Autre chose aussi, vous dites : "...plutôt faire rouler le centre du cercle sur le périmètre d'un autre...".<br /> <br /> Personnellement j'écrirais : "on impose une trajectoire circulaire au centre du cercle" car le concept de roulement, en mécanique, s'applique à des solides mais pas à un point... On peut dire qu'un solide roule, mais pas dire qu'un point roule...<br /> <br /> <br /> <br /> Dans la même idée, il est incorrect de dire qu'"un point est en rotation" car la rotation est définie uniquement pour le solide, on dira plutôt "la trajectoire de ce point, vis-à-vis de tel repère, est un morceau de cercle"...<br /> <br /> <br /> <br /> Idem pour la translation, dire "la trajectoire du point A vis-à-vis d'un repère est un morceau de droite" mais pas "le point A se translate".<br /> <br /> <br /> <br /> Bonne continuation !
Répondre
B
Merci pour ces superbes explications ! Je crois que j'ai enfin compris comment on s'y prend pour les calculs. J'ai fait une petite démo JS ici https://bunex-industries.com/fourier (en espérant ne pas y dire trop d'âneries...).
Répondre
A
Simplement fascinant ! <br /> <br /> Et jamais je n'aurais cru que la trigonométrie pouvait être amusante ! :) ;)
Répondre
X
Même question que Grob:<br /> <br /> Un seul epicycloide qui dessine la madame: https://twitter.com/jagarikin/status/964037102655586304<br /> <br /> Ou homer simpson: https://www.youtube.com/watch?feature=youtu.be&v=QVuU2YCwHjw<br /> <br /> <br /> <br /> J'ai trouvé un début de réponse ici: https://www.quora.com/What-is-an-intuitive-way-of-explaining-how-the-Fourier-transform-works<br /> <br /> <br /> <br /> Mais je n'ai pas (encore) le niveau pour me mettre à coder un truc pareil, une explication par Eljj serait la bienvenue! :)
Répondre
Publicité
Publicité