Le cube en rotation

Prenez un cube par sa grande diagonale et faites le tourner sur lui-même — un Rubik’s Cube tenu entre le pouce et l’index par exemple, vous obtenez un volume balayé par le cube en rotation.

Le cube en rotation par Rob Johnson

L’excellente illustration ci-dessus est tirée d’un post de Rob Johnson trouvé sur internet (robjohn, « Question about a rotating cube? », 2017).

Avec Claude Cardot, un brillant ingénieur — qui aurait eu 100 ans cette année — nous avions publié en 2004 un petit problème mathématique avec sa solution dans la revue de son école d’ingénieur (Récréations scientifiques.La jaune et la rouge, №594, 41–46, 2004).

Le problème était formulé ainsi : un cube tourne autour de sa grande diagonale, quel est le volume de la portion d’espace balayé par le cube en rotation ?

La réponse est :

En fait, le volume peut être décomposé en trois parties : deux troncs de cône identiques, et un hyperboloïde à une nappe, obtenu comme enveloppe du cube en rotation (Weisstein, Eric W. “Cube.” From MathWorld — A Wolfram Web Resource).

Il se trouve que le volume de chacun des deux troncs de cône vaut les 2/9ème du volume total, et que le volume de l’hyperboloïde en vaut, quant à lui, les 5/9ème. Au final, en sommant ces trois grandeurs, on obtient la formule ci-dessus grâce à une heureuse simplification.

Les détails du calcul peuvent être trouvés dans la revue, et également dans la publication postée ultérieurement sur internet et déjà mentionnée.

En résumé, le volume d’un cône vaut 1/3 × base × hauteur, soit ici 1/3× (π.2/3)×(√3/3). Quant au volume de l’hyperboloïde, il est calculé par la formule des 3 niveaux, soit 1/6×[π.2/3 + 4π.1/2 + π.2/3]×(√3/3).
Le cube en rotation par Sándor Kabai

L’illustration ci-dessus provient du site de MathWorld et a été très certainement réalisée par Sándor Kabai avec le logiciel Mathematica. Mais la production graphique de cet ingénieur hongrois est tellement abondante — motifs géométriques, polygones, polyèdres, fractales, cycloïdes, spirales, hélices, étoiles, rhomboèdres — que je ne l’ai pas retrouvée sur son site.

Pour un cube de 1 de côté, le volume vaut approximativement 1,813799.

Ce nombre est égal au périmètre du cercle inscrit dans un triangle équilatéral de 1 de côté (William Hunt, The Gaugers Magazine: Wherein the Foundation of His Art is Briefly Explain’d and Illustrated with Such Figures, as May Render the Whole Intelligible to a Mean Capacity, p. 183, 1687).

Il est répertorié par le site de On-Line Encyclopedia of Integer Sequences.

L’été dernier, j’ai fait la connaissance de Balthasar Brennenstuhl, un artiste sculpteur et peintre, né en Suisse et installé en Provence dans son Atelier Balthasar.

L’une de ses œuvres préférées, réalisée avec des tiges de laiton assemblées par brasage, est constituée des cinq polyèdres convexes réguliers : le tétraèdre, l’octaèdre, le cube, le dodécaèdre et enfin l’icosaèdre. (Matila C. Ghyka, Esthétique des proportions dans la nature et dans les arts, 1927).

Les cinq polyèdres réguliers par Balthasar Brennenstuhl

Je lui ai aussitôt demandé de braser une sculpture représentant un cube en rotation et le résultat est vraiment superbe. L’artiste est parvenu à braser un cube isolé, et à côté, 4 cubes enchevêtrés, surmontés d’une bille bleue et décalés de 30°, matérialisant le mouvement de rotation avec une esthétique certaine. Je suis sûr que Claude Cardot l’aurait appréciée. Au total, il y a tout de même 60 tiges de laiton.

Le cube en rotation par Balthasar Brennenstuhl

Ce volume de révolution a également inspiré le Dr. Lingguo Bu — professeur associé à la Southern Illinois University — qui a utilisé des techniques d’impression 3D pour réaliser un modèle du cube en rotation (LGBU, Cube Spinning Cage Hyperboloid, 2018.

Un cube en rotation par le Dr. Lingguo Bu

Dans l’illustration ci-dessus, qui témoigne des calculs rigoureux nécessaires à une telle réalisation, on voit clairement les deux familles de droites qui forment un treillis et qui génèrent l’hyperboloïde (David Hilbert and Stephan Cohn-Vossen, Geometry and the Imagination, 1952). Les droites proviennent des 8 arêtes du cube qui ne sont pas directement reliées à l’un des deux sommets autour desquels il pivote.

Récemment, j’ai découvert la librairie Python ipyvolume qui permet de visualiser des volumes 3d dans le notebook Jupyter. J’ai donc décidé d’implémenter le cube en rotation en utilisant mon langage favori.

Cette librairie implémente la fonction plot_trisuf() qui dessine un maillage de triangles, défini par les coordonnées des sommets et les indices de triangles. Elle prend comme arguments 3 tableaux X, Y et Z de longueur identique et correspondants aux coordonnées des sommets du volume, ainsi que la liste des triangles s’appuyant sur ces sommets et matérialisant la surface du volume considéré.

Tout d’abord, on peut facilement modéliser un cube simple, donné par ses 8 sommets ainsi que 12 triangles isocèles rectangles pour représenter ses 6 faces carrées.

La librairie ipyvolume permet également d’animer les représentations 3D. Faisons tourner le cube. Pour une raison inexpliquée, dans le passage en gif animé, l’axe Z est aussi animé d’un petit mouvement de rotation alors qu’il devrait bien évidemment rester immobile…

Le cube en rotation — c’est-à-dire, le volume de révolution que le cube balaie — est un peu plus complexe à modéliser. Le volume doit être discrétisé selon différentes positions du cube en mouvement, en quelque sorte de la même manière que les cubes en laiton enchevêtrés dans la sculpture.

Le nombre de positions formant une rotation complète doit être un multiple de 6. En effet, 2 sommets du milieu, reliés par une arête, sont positionnés avec un angle de 2π/6 l’un par rapport à l’autre.

Ici, avec n positions, nous avons les 2 sommets de la diagonale principale, et les autres sommets qui forment 2 polygones réguliers de n/2 côtés et positionnés sur des cercles de rayon √2/√3 et situés sur l’axe Z à √3/3 et 2√3/3.

Il y a aussi n triangles formant chacun des troncs de cône et enfin 2n triangles constituant l’hyperboloïde à une nappe.

Le résultat est le volume de révolution du cube en rotation.

Volume 3D du cube en rotation

Post Scriptum : En repensant aux impressions 3D du Dr. Lingguo Bu, je me suis dit qu’il serait intéressant d’utiliser ses fichiers de stéréolithographie au format STL pour les afficher en Python. Ce format de fichier — qui existe en ASCII ou en binaire — énumère l’ensemble des triangles matérialisant une surface. Fort heureusement, la librairie Python numpy-stl permet de passer d’un fichier STL à un objet mesh — un maillage tridimensionnel — et la librairie ipyvolume implemente également la fonction plot_mesh() qui permet de visualiser un tel objet.

Le cube en rotation à partir d’un fichier STL

Voir le notebook Jupyter avec le code Python : spinning cube.