next up previous contents index
suivant: Le pantalon monter: Quelques exemples de géométrie précédent: Morphing   Table des matières   Index

Enveloppe de droites

Commençons par un exemple :
On cherche l'enveloppe des droites définies par y - 2tx - t2 lorsque t varie.
On va tracer le lieu des points d'intersection M des droites ed d'équation y - 2tx - t2 = 0 et des droites ed1 d'équation -2x - 2t = 0 obtenue en dérivant y - 2tx - t2 = 0 par rapport à t. Les instructions suivantes tracent les droites ed et ed1 de paramètre t et le lieu de M.
Ces instructions se trouvent dans le fichier envelopp.
ed:=y-2*t*x-t^2;
ed1:=derive(ed,t);
M:=solve([ed,ed1],[x,y])[0];
plotparam(M[0]+i*M[1],t);
t:=element(-3..3);
d:=plotfunc(2*t*x-t^2,x);
On peut aussi définir la droite d'équation ay + bx + c = 0 par la liste [a, b, c].
On traite alors l'exemple avec les instructions ci-dessous (elles se trouvent dans le fichier envelopl).
//ld=[a,b,c] si ay+bx+c=0
xyztrange(-6,6,-7,4,-10,10,-3,3,-6,6,-5,1,1);
purge(t);
ld:=[1,-2*t,-t^2];
a:=ld[0]:
b:=ld[1];
c:=ld[2];
ld1:=derive(ld,t);
dpd1:=a*ld1[1]-b*ld1[0];
//dpd1=-2 <>0 donc ici ld et ld1 ne sont pas paralleles
M:=(i*(-c*ld1[1]+b*ld1[2])+(c*ld1[0]-a*ld1[2]))/dpd1;
plotparam(M,t);
t:=element(-3..3);
d:=plotfunc(2*t*x+t^2,x);
On écrit maintenant deux fonctions (enveloppe3 et enveloppe) qui tracent l'enveloppe d'une famille de droites.
La fonction enveloppe3 a trois paramètres a,b,c qui sont des fonctions de la variable t et qui représente les droites d'équation ay+bx+c=0.
//enveloppe d'une droite def par a(t),b(t),c(t) (ay+bx+c=0)
enveloppe3(a,b,c):={
  local ld,ld1,dd1,M;
  ld:=[a,b,c];
  ld1:=derive(ld,t);
  dd1:=ld[0]*ld1[1]-ld[1]*ld1[0];
  if (dd1!=0) {
     M:=(i*(-ld[2]*ld1[1]+ld[1]*ld1[2])+
         (ld[2]*ld1[0]-ld[0]*ld1[2]))/dd1;
     return(plotparam(M,t));
  } else {
    return("droites paralleles");
  }
}
La fonction enveloppe a un paramètre d qui est :
d est l'expression a(t)y+b(t)x+c(t) (on sous-endend = 0 et les variables doivent être x,y,t).
enveloppe(d):={
  local zM,a,b,c,a1,b1,c1,dpd1;
  a:=derive(d,y);
  b:=derive(d,x);
  c:=subst(subst(d,x=0),y=0);
  a1:=derive(a,t);b1:=derive(b,t);c1:=derive(c,t);
  dpd1:=a*b1-b*a1;
  if (dpd1!=0) {
     zM:=(i*(-c*b1+b*c1)+(c*a1-a*c1))/dpd1;
     return(plotparam(zM,t));
  }
  else 
    return("Droites paralleles");
};
On peut alors écrire les fichiers envelopt et envelop3t pour avoir une figure animée : l'enveloppe E et les différentes droites qui bougent selon les valeurs de t en restant tangentes à E.
Voici le fichier envelop3t qui trace l'enveloppe des droites :
cos(t)*(1 - cos(2t))y + sin(t)*cos(2t)x = sin(t)cos(t) :
purge(t);
purge(tt);
purge(x);
purge(y);
xyztrange(-6,6,-7,4,-10,10,-3,3,-6,6,-2,4,1);
a:=cos(t)*(1-cos(2*t));
b:=sin(t)*cos(2*t);
c:=-sin(t)*cos(t);
enveloppe3(a,b,c);
tt:=element(-3..4);
aa:=subst(a,t,tt);
bb:=subst(b,t,tt);
cc:=subst(c,t,tt);
plotfunc((-bb*x-cc)/aa,x);
Voici le fichier envelopt qui trace l'enveloppe des droites x*(cos(2*t) - cos(t)) + y*(sin(2*t) - sin(t)) - sin(2*t) = 0 :
xyztrange(-6,6,-7,4,-10,10,-3,3,-6,6,-2,4,1);
purge(x);
purge(y);
purge(t);
purge(tt);
d:=x*(cos(2*t)-cos(t))+y*(sin(2*t)-sin(t))-sin(2*t);
enveloppe(d);
tt:=element(-3..4);
dd:=subst(d,t,tt);
aa:=derive(dd,y);
bb:=derive(dd,x);
cc:=subst(subst(dd,x=0),y=0);
plotfunc((-bb*x-cc)/aa,x);

next up previous contents index
suivant: Le pantalon monter: Quelques exemples de géométrie précédent: Morphing   Table des matières   Index
Documentation de giac écrite par Renée De Graeve