Inscrire et circonscrire

Inscrire une sphère dans un polyèdre. Inscrire un polyèdre dans une sphère.
samedi 20 mai 2006
par  Bernard Vuilleumier
popularité : 1%

Le module « Graphics`Polyhedra` » contient des commandes donnant les rayons des sphères inscrites et circonscrites pour les différents polyèdres convexes qu’il permet de dessiner. Mais les sphères ayant ces rayons ne sont inscrites et circonscrites que si la longueur des arêtes des polyèdres vaut 1. Or, l’arête par défaut des polyèdres n’est pas unitaire. Nous définissons ici une fonction qui permet de calculer la longueur de l’arête des polyèdres convexes et nous montrons comment utiliser cette fonction pour inscrire une sphère dans un polyèdre ou inscrire le polyèdre dans une sphère.

- Rayon de la sphère inscrite et rayon de la sphère circonscrite

Le module Graphics`Polyhedra` permet de trouver les rayons de la sphère inscrite et de la sphère circonscrite aux polyèdres convexes dont l’arête vaut 1. La sphère est un figure du module Graphics`Shapes`. Ces deux modules se chargent à l’aide des commandes :

Needs["Graphics`Polyhedra`"]
Needs["Graphics`Shapes`"]

Pour un tétraèdre dont l’arête vaut 1, on obtient par exemple :

InscribedRadius[Tetrahedron]

$\frac{1}{2\sqrt{6}}$

CircumscribedRadius[Tetrahedron]

$\frac{\sqrt\frac{3}{2}}{2}$

Si l’arête du polyèdre n’est pas unitaire et vaut a, il faut multiplier les rayons obtenus par a pour obtenir les bonnes sphères.

- Calculer la longueur de l’arête d’un polyèdre

Pour calculer la longueur de l’arête d’un polyèdre, nous allons définir une fonction permettant de :

  • trouver les coordonnées de deux sommets contigus
  • obtenir les composantes du vecteur reliant ces deux sommets
  • calculer la norme de ce vecteur
longueurArete[poly_]:=
Sqrt[Dot[(Vertices[poly][[2]]-Vertices[poly][[1]]),
             (Vertices[poly][[2]]-Vertices[poly][[1]])
     ]
]

La fonction Vertices[poly] donne les valeurs exactes des coordonnées des sommets du polyèdre. Vertices[poly][[i]] donne les coordonnées du ie sommet. La norme du vecteur reliant deux sommets s’obtient en prenant la racine carrée Sqrt du produit scalaire Dot du vecteur par lui-même.

longueurArete[Tetrahedron]

- Modifier la taille d’un polyèdre et le translater

La position et la taille d’un polyèdre peuvent être modifiées à l’aide d’arguments. Le premier argument est une liste de trois nombres {x,y,z} permettant de déplacer le polyèdre de la quantité souhaitée selon les axes x, y, z et le deuxième est un facteur d’échelle qui modifie sa taille. N. B. Il est obligatoire de donner les deux arguments même si l’on ne souhaite agir que sur la position ou sur la taille. Dans l’exemple ci-dessous, Tetrahedron reçoit deux arguments, le premier {2,0,0} translate le tétraèdre de 2 unités selon l’axe x et le second 1/longueurArete[Tetrahedron] divise ses dimensions par la longueur de son arête pour obtenir une arête unité :

Tetrahedron[{2, 0, 0}, 1/longueurArete[Tetrahedron]]

Dessinons le polyèdre par défaut ainsi que le nouveau polyèdre translaté et réduit :

Show[Graphics3D[{Tetrahedron[],
     Tetrahedron[{2, 0, 0}, 1/longueurArete[Tetrahedron]]}], Boxed -> False];

Tétraèdre par défaut et tétraèdre translaté et d'arête 1

Conclusion

La fonction longueurArete[poly] permet de trouver la longueur a de l’arête d’un polyèdre. Lorsqu’on connaît le longueur a de l’arête :
- a*CircumscribedRadius[poly] donne le rayon de la sphère circonscrite
- a*InscribedRadius[poly] donne le rayon de la sphère inscrite.

Polyèdres convexes

Activités
- Dessinez les cinq solides platoniciens (les cinq polyèdres convexes réguliers).
- Inscrivez une sphère dans chacun d’eux.
- Circonscrivez une sphère à chacun d’eux.
- Dressez le tableau des valeurs exactes des rayons de ces sphères.
- Estimez le rayon du ballon sur la photographie ci-dessous, puis

  • dessinez une sphère de même rayon
  • incrivez un octaèdre dans cette sphère
  • circonscrivez un dodécaèdre à cette sphère.