Un polygone régulier roule sur l’axe des x.
Tracer la trajectoire d’un sommet A.
Exprimer la distance parcourue par le
point A quand la "roue" a fait un tour complet.
Avec Xcas on pourra exécuter hexagone.xws pour avoir la correction.
On peut chercher la liste S des affixes des sommets de l”hexagone
lorsque A est en 0 et B est en 1, puis utiliser
polygone(S) ou utiliser directement hexagone(0,1) ou
isopolygone(0,1,6).
Lorsque la "roue" a fait un tour complet, le point A décrit 6 arcs de
cercle et on met dans L les extrémités de ces arcs (le dernier arc
est de rayon nul donc on peut dire que la trajectoire est formée de 5 arcs).
Pour calculer ces extrémités on tape :
a:=normal(affixe(rotation(1,-pi/3,0)));
b:=normal(affixe(rotation(2,-pi/3,a))),
puis on complète par symétrie par rapport à x=3
AL est la liste de ces 5 arcs lorsque la "roue" a fait un tour complet.
BL est la liste AL translatée : on a ainsi la trajectoire du
point A lorsque la "roue" a fait 2 tours complets.
On définit Hs la figure formée par l’hexagone de centre O
et le segment AO : on visualise ainsi le point A.
Pour faire une animation on va créer la liste LH contenant plusieurs
positions de Hs obtenues par deux rotations de centre 1 d’angle −π/6
et −π/3, deux rotations de centre 2 d’angle −π/6 et −π/3 etc...
On obtient ainsi une liste de 12 éléments.
On tape :
L:=[0,1/2+i*sqrt(3)/2,2+i*sqrt(3),4+i*sqrt(3),11/2+i*sqrt(3)/2,6]; affichage((AL:=seq(arc(L[k],L[k+1],-pi/3),k,0,4)),hidden_name); affichage((BL:=translation(6,AL)),hidden_name); Hs:=[isopolygone(0,1,6),segment(0,(1+i*sqrt(3))/2)]; LH:=[Hs]; for (j:=0;j<12;j++){LH:=concat(LH,[rotation(j+1,-pi/6,LH[2*j]),rotation(j+1,-pi/3,LH[2*j])])}:; affichage((A:=seq(arc(L[k],L[k+1],-pi/3),k,0,4)),hidden_name); affichage((B:=translation(6,A)),hidden_name); animation(LH);
Le point A décrit des 6 arcs de cercles qui sont :
donc la distance parcourue par le point A quand la ‘"roue" a fait un tour
complet est π(4+2√3)/3.
On peut aussi calculer cette longueur à l’aide d’une boucle.
On tape :
dist:=0;
for (k:=0;k<5;k++){arc(L[k],L[k+1],-pi/3,C,R);
dist:=dist+R*pi/3;};
normal(dist)
Avec Xcas on pourra exécuter rouepoly.xws pour avoir la correction.
On va écrire des procédures de param‘etre n qui représente le
nombre de côtés de l’isopolygône.
Lsarc(n) renvoie la liste des sommets des arcs qui forment la
trajectoire de A.
Lpoly(n) renvoie la liste des positions successives de la figure formée
par P l’isopolgône de centre O, et S le segment
OA. On pourra ainsi faire facilement une animation.
tracerarc(n) ou tracer(n) trace la trajectoire lorsque
la "roue" a fait 2 tours complets.
longtrajet(n) renvoie la longueur d’une arche : le résultat est
approché, mais on peut supprimer evalf pour avoir un résultat exact
lorsque n=3,4,6.
On tape :
Lsarc(n):={ local L,j; L:=[point(0)]; for (j:=1;j<n;j++){ L:=concat(L,normal(rotation(j,-2*pi/n,L[j-1]))); } return(L); }; Lpoly(n):={ local LP,j,P,S; P:=normal(isopolygone(0,1,n)); S:=segment(0,evalf(1/2+i/2/tan(pi/n))); LP:=[[P,S]]; for (j:=0;j<2*n;j++){ LP:=concat(LP,[rotation(j+1,evalf(-pi/n),LP[2*j]), rotation(j+1,evalf(-2*pi/n),LP[2*j])]); } return LP; }; tracerarc(n):={ local A,B,Ls; Ls:=evalf(Lsarc(n)); A:=seq(arc(Ls[k],Ls[k+1],evalf(-2*pi/n)),k,0,n-2); B:=translation(n,A); return concat(A,B); }; //ou encore tracer(n):={ local A,B,j,Ls; Ls:=evalf(Lsarc(n)); A:=[arc(Ls[0],Ls[1],evalf(-2*pi/n))]; for (j:=1;j<n-1;j++){ A:=concat(A,arc(Ls[j],Ls[j+1],-2*pi/n)); } B:=translation(n,A); return(A,B) }; longtrajet(n):={ local dist,k,C,R; dist:=0 for (k:=0;k<(n-1);k++){ arc((Lsarc(n))[k],(Lsarc(n))[k+1],-pi/3,C,R); dist:=evalf(dist+R*pi/3); }; return normal(dist); }
On tape par exemple, pour avoir une animation :
tracerarc(5);animation(Lpoly(5))