Le puzzle de DudeneyRenée De Graeve2017 |
Contents
- 1 Introduction
- 2 Les 4 pièces du puzzle
- 3 Le pavage correspondant au puzzle de Dudeney
- 4 Pour animer la transformation
- 5 Prolongement : transformer un carré en un triangle isocèle
- 6 Prolongement : transformer un rectangle en un triangle équilatéral
1 Introduction
Les quatre pièces du puzzle de Dudeney permettent
de construire un carré ou un triangle équilatéral.
L’animation 1 ci-dessous l’illustre,
appuyer sur + puis sur - pour passer de l’un à l’autre.
Ernest Dudeney (1857-1930) a montré ce puzzle en 1905 lors d’une séance à la Royal Society à Londres. Sur ce modéle nous avons réalisé ici d’autres puzzles de 4 pièces qui transforment
- un carré en un triangle équilatéral (ci-dessus)
- un carré en un triangle isocèle (animation 2 ci-dessous)
- un rectangle en un triangle équilatéral (animation 3 ci-dessous)
Voici l’animation 2 (vous pouvez changer la valeur 1.6 de en une valeur
entre 0.27 et 2, vous pouvez aussi changer le pas de 0.01 en 0.1) :
Voici l’animation 3 (vous pouvez changer la valeur 1.6 de en une valeur
entre 0.58 et 1.73, vous pouvez aussi changer le pas de 0.01 en 0.1) :
2 Les 4 pièces du puzzle
Voici la décomposition du carré en 4 morceaux qui s’assemblent en formant le triangle équilatéral :
A:=point(0);B:=point(2);C:=point(2+2*i);D:=point(2*i); M:=milieu(A,B);N:=milieu(C,D);la:=evalf(sqrt(4*sqrt(3)/3-1)); P:=point(i*(2-la));Q:=point(2+i*la);R:=rotation(M,pi/3,Q); segment(P,N);segment(R,Q);segment(R,M); segment(M,Q);segment(M,P);segment(N,Q); N1:=symetrie(Q,N);R1:=symetrie(Q,R); R2:=symetrie(M,R);P2:=symetrie(M,P); segment(Q,R1);segment(R1,R2); segment(M,R2);segment(B,P2); C1:=symetrie(Q,C);segment(N1,C1); affichage(polygone(A,M,R,P),1+rempli); affichage(triangle(N,D,P),2+rempli); affichage(polygone(C,N,R,Q),3+rempli); affichage(polygone(B,M,R,Q),4+rempli); polygone(M,P,N,Q); R:=R;Q:=Q;M:=M;B:=B;C:=C;
onload
Etant donné un carré, trouver la construction de ces pièces et prouvez
que l’on a bien obtenu après réorganisation un triangle équilatéral.
La solution
Supposons le problème résolu
Si le carré est de côté 2a et le côté du triangle
équilatéral est de côté 2b.
On doit avoir (égalité des aires) : .
On voit que si les figures sont exactes pour obtenir un triangle équilatéral
à partir du carré de côté 2a il faut, sans bouger la pièce
bleue, faire subir :
- à la pièce rouge une symétrie par rapport à
- à la pièce jaune une symétrie par rapport à
- à la pièce verte une translation de vecteur ( étant le
symétrique de par rapport à ).
Supposons que le triangle soit équilatéral.
On a alors :
, , et
Le triangle est donc équilatéral.
Les droites , et sont donc parallèles.
Puisque , et on a :
Donc et est un parallélogramme.
Puisque et , les triangles rectangles et sont
égaux, donc .
Les triangles rectangles et sont aussi égaux ().
On a :
et donc la quadrilatère est un parallélogramme.
Puisque est un triangle équilatéral de côté , on en déduit
que la distance entre les parallèles et vaut
( est la hauteur du triangle équilatéral de côté ).
Le point est donc l’intersection de la médiatrice de avec
et il est aussi le transformé de par la rotation de
centre et d’angle .
Calculons .
Dans le triangle rectangle , on a , et ,
donc :
donc
Donc
La construction
Lorsque , construisons :
le carré , _
le milieu (resp ) de (resp )
le point (resp ) du segment (resp ) tel que
(resp()
Le point intersection de la médiatrice de avec
est le symétrique de par rapport à et
est le symétrique de par rapport à donc
est parallèle à et .
Les triangles rectangles et sont donc égaux.
Donc , et
est le symétrique de par rapport à donc
donc .
Les triangles rectangles et sont aussi égaux ().
On a :
et donc la quadrilatère est un parallélogramme.
Remarque
n’est pas un rectangle car :
On a donc :
L’aire des triangles rectangles et plus l’aire des triangles
rectangles et est égale à l’aire du rectangle c’est à
dire est ègale à .
L’aire du parallélogramme vaut donc .
Puisque on en déduit que la distance entre les parallèles
et vaut (puisque ).
est la hauteur du triangle isocèle de base donc
le triangle est équilatéral ()
On tape pour avoir les pièces du puzzle (on prend pour simplifier ) i.e. le carré a des côtés de longueur 2 :
fonction pieces() local l,M,N,P,Q,R,L; L:=NULL; l:=evalf(sqrt(4*sqrt(3)/3-1)); M:=point(1); N:=point(1+2*i); P:=point(i*(2-l)); Q:=point(2+i*l); R:=inter_unique(droite(P,N),mediatrice(M,Q)); L:=L,affichage(quadrilatere(M,2,Q,R),4+rempli); L:=L,affichage(quadrilatere(Q,2+2*i,1+2i,R),3+rempli); L:=L,affichage(triangle(P,2i,1+2i),2+rempli); L:=L,affichage(quadrilatere(0,M,R,i*(2-l)),1+rempli); retourne L; ffonction :;
onload
3 Le pavage correspondant au puzzle de Dudeney
On tape les procédures dudeney0 (la pièce triangle est en bas à gauche) et dudeney1 (la pièce triangle est en haut à droite) :
fonction dudeney0(z0) local M,P,Q,R,l,L; l:=sqrt(4*sqrt(3)/3-1); M:=point(1+z0); P:=point(2+i*(2-l)+z0); Q:=evalf(point(i*l+z0)); L:=NULL; R:=rotation(M,-pi/3,Q); L:=L,affichage(quadrilatere(M,z0,Q,R),4+rempli); L:=L,affichage(quadrilatere(Q,2*i+z0,1+2*i+z0,R),3+rempli); L:=L,affichage(triangle(P,2+2i+z0,1+2*i+z0),2+rempli); L:=L,affichage(quadrilatere(2+z0,M,R,i*(2-l)+z0+2),1+rempli); retourne L; ffonction:; fonction dudeney1(z0) local M,N,P,Q,R,l,L; l:=sqrt(4*sqrt(3)/3-1); M:=point(1+z0+2*i); N:=point(1+z0); P:=point(i*(l)+z0); Q:=evalf(point(2-i*l+2*i+z0)); L:=NULL; R:=inter_unique(segment(P,N),mediatrice(M,Q)); L:=L,affichage(quadrilatere(M,2+z0+2*i,Q,R),4+rempli); L:=L,affichage(quadrilatere(Q,2+z0,1+z0,R),3+rempli); L:=L,affichage(triangle(P,z0,1+z0),2+rempli); L:=L,affichage(quadrilatere(0+z0+2*i,M,R,i*(l)+z0),1+rempli); retourne L; ffonction :;
onload
4 Pour animer la transformation
fonction animtri(t) local l,M,N,B,C,D1,P,Q,R,Q1,N1,B1,C1,N2,P3,P2,L,B,C,R1,P1; l:=sqrt(4*sqrt(3.)/3-1); B:=point(2);C:=point(2+2*i); M:=point(1);N:=point(1+2*i); P:=point(i*(2-l)); Q:=evalf(point(2+i*l)); R:=evalf(inter_unique(segment(P,N),mediatrice(M,Q))); L:=NULL; L:=L,affichage(quadrilatere(M,0,P,R),1+rempli); L:=L,affichage(rotation(M,t,evalf(quadrilatere(M,2,Q,R))),4+rempli); Q1:=rotation(M,t,Q); R1:=rotation(M,t,R); N1:=rotation(M,t,N); B1:=rotation(M,t,B); C1:=rotation(M,t,C); D1:=rotation(Q1,t,rotation(M,t,point(2*i))); P1:=rotation(Q1,t,rotation(M,t,P)); N2:=rotation(Q1,t,N1); P3:=quadrilatere(Q1,R1,N1,C1); L:=L,affichage(rotation(Q1,t,P3),3+rempli); P2:=triangle(P1,D1,N2); L:=L,affichage(rotation(N2,t,P2),2+rempli); return L; ffonction:;
onload
Voici l’animation :
5 Prolongement : transformer un carré en un triangle isocèle
On peut faire la même construction en faisant varier entre 0 et , avec
comme condition : le point se trouve sur le segment si .
On transformera ainsi, un carré de côté , en un triangle
isocèle de base et de hauteur .
On a .
Si , le point est l’intersection de la médiatrice de avec .
Si , pour que soit sur sur le segment il faut que :
re(affixe(R)] soit entre 0 et et
im(affixe(R)] soit entre 0 et .
On choisit ici et on tape :
fonction affixeR() local M,N,P,Q,R,l,zR; purge(l); M:=point(1); N:=point(1+2*i); P:=point(i*(2-l)); Q:=point(2+i*l); R:=inter_unique(mediatrice(M,Q),droite(P,N)); zR:= affixe(R); return simplify(re(zR)),simplify(im(zR)); ffonction :;
onload
puisque ,il faut donc choisir :
.
Les triangles isocèles ont comme base et une aire de
donc la hauteur vaut .
Soit . on a donc :
donc
soit :
.
Voici la fonction pour animer la transformation :
fonction animtransfo(l) local M,N,B,C,D1,P,Q,R,Q1,N1,B1,C1,N2,P3,P2,L,B,C,R1,R2,P1; B:=point(2);C:=point(2+2*i); M:=point(1);N:=point(1+2*i); P:=point(i*(2-l)); Q:=evalf(point(2+i*l)); R:=inter_unique(mediatrice(M,Q),droite(P,N)); L:=affichage(quadrilatere(M,0,P,R),1+rempli); L:=L,affichage(rotation(M,pi,evalf(quadrilatere(M,0,P,R))),1+rempli); N1:=symetrie(Q,N);R1:=symetrie(Q,R); C1:=symetrie(Q,C);segment(N1,C1); R1:=symetrie(Q,R); R2:=symetrie(M,R); P2:=symetrie(M,P); L:=L,affichage(polygone(2,M,R,Q),4+rempli); L:=L,affichage(polygone(P,2*i,N),2+rempli); L:=L,affichage(polygone(P2,C1,N1),2+rempli) L:=L,affichage(polygone(0,P,R,,M),1+rempli); L:=L,affichage(polygone(B,P2,R2,,M),1+rempli); L:=L,affichage(polygone(N,R,Q,C),3+rempli); L:=L,affichage(polygone(N1,R1,Q,C1),3+rempli); return L; ffonction:;
onload
Voici l’animation quand varie entre 0 et 2 :
On peut faire aussi l’animation qui transforme le carré en un triangle isocèle.
fonction animtriso(t,l) local M,N,B,C,D1,P,Q,R,Q1,N1,B1,C1,N2,P3,P2,L,B,C,R1,P1; //l:=sqrt(4*sqrt(3.)/3-1); B:=point(2);C:=point(2+2*i); M:=point(1);N:=point(1+2*i); P:=point(i*(2-l)); Q:=evalf(point(2+i*l)); R:=evalf(inter_unique(segment(P,N),mediatrice(M,Q))); L:=NULL; L:=L,affichage(quadrilatere(M,0,P,R),1+rempli); L:=L,affichage(rotation(M,t,evalf(quadrilatere(M,2,Q,R))),4+rempli); Q1:=rotation(M,t,Q); R1:=rotation(M,t,R); N1:=rotation(M,t,N); B1:=rotation(M,t,B); C1:=rotation(M,t,C); D1:=rotation(Q1,t,rotation(M,t,point(2*i))); P1:=rotation(Q1,t,rotation(M,t,P)); N2:=rotation(Q1,t,N1); P3:=quadrilatere(Q1,R1,N1,C1); L:=L,affichage(rotation(Q1,t,P3),3+rempli); P2:=triangle(P1,D1,N2); L:=L,affichage(rotation(N2,t,P2),2+rempli); return L; ffonction:;
onload
Voici l’animation (vous pouvez changer la valeur 1.6 de en une valeur entre
0.27 et 2) :
6 Prolongement : transformer un rectangle en un triangle équilatéral
Peut-on transformer un rectangle en un triangle équilatéral
avec la méthode de Dudeney ?
On a vu précédemment que pour que la méthode de Dudeney fonctionne il
fallait avoir soit , soit le point sur le segment ( est
l’intersection de la médiatrice de et du segment , est un
parallélogramme et ).
6.1 Valeur de pour transformer un rectangle en un triangle équilatéral
Pour trouver la valeur de il suffit d’égaler la surface d’un triangle
équilatéral de côté avec la surface d’un rectangle de
côté .
On doit donc avoir :
Donc donc .
Cas particuler
est équivalent à et dans se cas le puzzle se
réduit à 3 pièces :
On peut supposer, quitte à faire une homothetie, que .
fonction dudeneyrect0() local a,l,M,N,B,C,P,Q,R,Q1,N1,B1,C1,N2,P3,P2,L,B,C,R1,R2,P1; a:=sqrt(3)/4;l:=0; B:=point(2);C:=point(2+2a*i); M:=point(1);N:=point(1+2a*i); P:=point(i*(2a-l)):; Q:=evalf(point(2+i*l)); R:=inter_unique(mediatrice(M,Q),droite(P,N)); L:=NULL; L:=L,affichage(quadrilatere(M,0,P,R),1+rempli); L:=L,affichage(rotation(M,pi,evalf(quadrilatere(M,0,P,R))),1+rempli); N1:=symetrie(Q,N);R1:=symetrie(Q,R); C1:=symetrie(Q,C);segment(N1,C1); R1:=symetrie(Q,R); R2:=symetrie(M,R); P2:=symetrie(M,P); L:=L,affichage(polygone(2,M,R,Q),4+rempli); L:=L,affichage(polygone(P,2*a*i,N),2+rempli); L:=L,affichage(polygone(P2,C1,N1),2+rempli) L:=L,affichage(polygone(0,P,R,,M),1+rempli); L:=L,affichage(polygone(B,P2,R2,,M),1+rempli); L:=L,affichage(polygone(N,R,Q,C),3+rempli); L:=L,affichage(polygone(N1,R1,Q,C1),3+rempli); retourne L; ffonction :;
onload
6.2 Les conditions sur et
Cherchons les conditions pour que soit entre et .
Pour simplifier, on peut supposer, quitte à faire une homothetie que .
Pour que , d’affixe , soit entre et , il faut et il suffit
que :
et
Soit zP,zN,zQ,zM les affixes de P,N,Q,M.
Cherchons les coordonnèes et du point , pour cela
on demande à Xcas (on peut bien sûr faire les calculs à la
main !) :
fonction coordR() local P,Q,M,N,a,l2,l,R; purge(a); l2:=4a/sqrt(3)-1; l:=sqrt(abs(l2)); P:=point((2a-l)*i); Q:=point(2+l*i); M:=point(1); N:=point(1+2*a*i); R:=inter_unique(droite(P,N),mediatrice(Q,M)); retourne coordonnees(R) ffonction:;
onload
Puis on cherche les coordonnées de et on résout les inéquations
et ;
:
Donc, puisque implique que ,
on pourra transformer un rectangle en un triangle équilatéral
avec la méthode de Dudeney si et seulement si on a :
ou encore :
On pourra transformer un rectangle en un triangle équilatéral
avec la méthode de Dudeney si et seulement si on a :
ou encore
On pourra donc aussi transformer un rectangle en un triangle
équilatéral avec la méthode de Dudeney si et seulement si on a :
ce qui signifie que l’on pourra avoir 2 puzzles différents.
Autre méthode On choisit , et
Mr:=point(1);Qr:=point(2+1.57*i); Nr:=point(1+3*i);Pr:=point((3-1.57)*i); affichage(polygone(0,2,2+3*i,3*i),epaisseur_ligne_2); affichage(polygone(Mr,Qr,Nr,Pr),epaisseur_ligne_2); triangle_equilateral(Mr,Qr,Rr); affichage(parallelogramme(Rr,Mr,Qr),1); affichage(parallelogramme(Mr,Qr,Rr),4); angle(Mr,Qr,Pr,"t"); affichage(angle(Qr,Rr,Mr,"\pi/3"),4);
onload
Pour que la construction soit possible il faut que l’on puisse inscrire le
triangle équilatéral dans le parallélogramme :
la hauteur
Le triangle a comme côté et comme hauteur
.
Il faut et il suffit que :
ce qui équivalent à :
ce qui équivalent à :
On a donc :
La condition s’écrit alors :
ou encore :
et
La condition devient donc :
En posant , il faut résoudre l’inéquation :
donc il faut que soit compris entre les 2 racines
de qui sont :
et .
La condition pour que le puzzle soit possible est donc :
ou encore :
6.3 La transformation
Cas général
est défini par :
l=sqrt(4ac/sqrt(3)-c^
2) car
On a alors :
Lorsque le triangle est équilatéral sa hauteur est :
.
Donc lorsque le triangle est équilatéral, la hauteur du
paraléllogramme est .
Pour l’animation, on choisit et on fait varier entre et
:
fonction dudeneyrect(a,c) local L,A,B,C,C1,D,M,N,N1,P,P2,Q,R,R1,R2,l; l:=evalf(sqrt(4a*c/sqrt(3)-c^2)); L:=NULL; A:=point(0); B:=point(2*c); C:=point(2*c+2*a*i); D:=point(2*a*i); //polygone(A,B,C,D); P:=point((2*a-l)*i); Q:=point(2*c+l*i); M:=point(c); N:=point(c+2*a*i); R:=inter_unique(mediatrice(M,Q),segment(N,P)); L:=L,affichage(triangle(D,P,N),2+rempli); L:=L,affichage(polygone(A,P,R,M),1+rempli); L:=L,affichage(polygone(C,N,R,Q),3+rempli); L:=L,affichage(polygone(B,M,R,Q),4+rempli); R2:=symetrie(M,R); P2:=symetrie(M,P); N1:=symetrie(Q,N); C1:=symetrie(Q,C); R1:=symetrie(Q,R); L:=L,affichage(polygone(C1,N1,R1,Q),3+rempli); L:=L,affichage(polygone(B,P2,R2,M),1+rempli); L:=L,affichage(triangle(C1,P2,N1),2+rempli); retourne L; ffonction :;
onload
On peut echanger le role de et , on tape ( désigne une translation
qui permet de faire les 2 dessins sur la même figure).
fonction dudeneyrect1(t,a,c) local L,A,B,C,C1,D,M,N,N1,P,P2,Q,R,R1,R2,l; l:=evalf(sqrt(4a*c/sqrt(3)-c^2)); L:=NULL; A:=point(t);B:=point(t+2*c);C:=point(t+2c+2a*i);D:=point(t+2a*i); //polygone(A,B,C,D); P:=point(t+(2a-l)*i);Q:=point(t+2c+l*i); M:=point(t+c);N:=point(t+c+2*a*i); R:=inter_unique(mediatrice(M,Q),segment(N,P)); L:=L,affichage(triangle(D,P,N),2+rempli); L:=L,affichage(polygone(A,P,R,M),3+rempli); L:=L,affichage(polygone(C,N,R,Q),1+rempli); L:=L,affichage(polygone(B,M,R,Q),4+rempli); R2:=symetrie(M,R); P2:=symetrie(M,P); N1:=symetrie(Q,N); C1:=symetrie(Q,C); R1:=symetrie(Q,R); L:=L,affichage(polygone(C1,N1,R1,Q),1+rempli); L:=L,affichage(polygone(B,P2,R2,M),3+rempli); L:=L,affichage(triangle(C1,P2,N1),2+rempli); retourne L; ffonction :;
onload
Voici l’animation :
Les voilà en superposition :
fonction dudeneyrect2(a,c) local L1,L2,A,B,C,D,M1,M2,N2,N1,P1,P2,Q1,Q2,R1,R2,l1,l2; l1:=sqrt(4a*c/sqrt(3)-c^2); l2:=sqrt(4a*c/sqrt(3)-a^2); L1:=NULL; L2:=NULL; A:=point(0); B:=point(2*c); C:=point(2*c+2*a*i); D:=point(2*a*i); P1:=point((2*a-l1)*i); Q1:=point(2*c+l1*i); M1:=point(c); N1:=point(c+2*a*i); R1:=inter_unique(mediatrice(M1,Q1),segment(N1,P1)); P2:=point(l2+2a*i); Q2:=point(2c-l2); M2:=point(2*c+a*i); N2:=point(a*i); R2:=inter_unique(mediatrice(M2,Q2),segment(N2,P2)); L1:=L1,polygone(M1,B,Q1,R1); L1:=L1,segment(P1,N1); L2:=L2,polygone(M2,B,Q2,R2); L2:=L2,segment(P2,N2); return affichage(L1,1),affichage(L2,4),polygone(A,B,C,D); ffonction:;
onload
fonction animrectr(t,a) local l,M,N,B,C,D1,P,Q,R,Q1,N1,B1,C1,N2,P3,P2,L,B,C,R1,P1; l:=evalf(sqrt(4a/sqrt(3)-1)); B:=point(2);C:=point(2+2a*i); M:=point(1);N:=point(1+2a*i); P:=point(i*(2a-l)); Q:=evalf(point(2+i*l)); R:=evalf(inter_unique(segment(P,N),mediatrice(M,Q))); L:=NULL; L:=L,affichage(quadrilatere(M,0,P,R),1+rempli); L:=L,affichage(rotation(M,t,evalf(quadrilatere(M,2,Q,R))),4+rempli); Q1:=rotation(M,t,Q); R1:=rotation(M,t,R); N1:=rotation(M,t,N); B1:=rotation(M,t,B); C1:=rotation(M,t,C); D1:=rotation(Q1,t,rotation(M,t,point(2a*i))); P1:=rotation(Q1,t,rotation(M,t,P)); N2:=rotation(Q1,t,N1); P3:=quadrilatere(Q1,R1,N1,C1); L:=L,affichage(rotation(Q1,t,P3),3+rempli); P2:=triangle(P1,D1,N2); L:=L,affichage(rotation(N2,t,P2),2+rempli); return L; ffonction:;
onload
Voici l’animation (vous pouvez changer la valeur 1.6 de en une valeur entre
0.58 et 1.73) :