next up previous contents
suivant: La géométrie dans l'espace monter: La roue hexagonale ou précédent: La roue hexagonale   Table des matières

La roue isopolygonale

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))



Documentation de giac écrite par Renée De Graeve