Vingt-quatre tétraèdres pour un cube

Le volume d'un tétraèdre de côté [math]a[/math] est [math]\frac{(\sqrt{2}a)^3}{24}[/math]. Cette construction aide à comprendre cette formule: Vingt-quatre tétraèdres, tous du même volume, dont huit tétraèdres réguliers et 16 tétraèdres isocèles rectangles, composent un cube. Il y en a 4 pour chacune des directions de l'espace qui complètent la stella octangula de Kepler, qui est un octaèdre auquel on adjoint un tétraèdre régulier sur chacune de ses huit faces. L'octaèdre central lui-même est composé de quatre tétraèdre isocèles rectangles. Chacun de ces tétraèdre a même base (un triangle équilatéral) et même hauteur (deux applications du théorème de Pythagore vous la donneront). Ils ont donc même volume, qui est le vingt-quatrième du volume du cub de côté [math]\sqrt {2}a[math] qu'ils composent.

Vous pouvez afficher la fenêtre graphique et modifier comme vous l'entendez le curseur d'animation.

Prouvez que les deux types de tétraèdres ont le même volume. Retrouvez analytiquement la formule du volume.

g = 0.8320000000000006 (slider from 0 to 1, step 0.001)
e = If(g  <  0.4, 0, If[g  <  0.6, ((g - 0.4) * 5), 1])
d, G, face12, face14, face13, face15, arête15, arête14, arête17, arête16, arête19, arête18 = Tetrahedron((1, 0, 0), (0, 1, 0), (0, 0, 1))
b, A, B, C, D, E, face4, face6, face5, face7, face8, faceBCDE, arête5, arête4, arête7, arête9, arête6, arêteAE, arêteBE, arêteBC, arête8, arêteCD, arête10, arêteDE = Cube((1, 1, -1), (-1, 1, -1), (-1, -1, -1))
c = If(g  <  0.01, 0, If[g  <  0.4, (g * 2.5), 1])
a, face9, face10, face11, arête11, arête12, arête13 = Pyramid(Polygon[B, C, (0, 0, 1)], (0, 1, 0))
liste1 = Sequence(Rotate[Translate[a, Vector[(c * (B + C))]], (k * π / 2), xAxis], k, 0, 3)
liste1' = Rotate(liste1, (2 * π / 3), Line[(0, 0, 0), B])
liste1'_1 = Rotate(liste1, (-2 * π / 3), Line[(0, 0, 0), B])
liste2 = Sequence(Rotate[Translate[d, Vector[(e * B)]], (k * π / 2), xAxis], k, 0, 3)
liste2' = Rotate(liste2, π, zAxis)
a' = Rotate(a, π, Line[(0, 1, 0), (0, 0, 1)])
f = If(g  <  0.6, 0, ((g - 0.6) * 2.5))
liste3 = Sequence(Rotate[Translate[a', Vector[(f * (B + C))]], (k * π / 2), xAxis], k, 0, 3)