Animations

La courbe de Joukovski

Animation flash


jou.mp
%@AUTEUR: Maxime Chupin
%@DATE: 25 janvier 2008
 
% La courbe de Joukovski 
% Soit C un cercle coupant l'axe des abscisses en A(a,0). On crée le
% cercle C' par l'application complexe qui à un point Z (d'affixe z) du
% cercle associe le complexe Z' d'affixe z'=a^2/z. On définit ainsi pour
% chaque couple (Z,Z') le point M milieu du segment [ZZ']. Quand Z décrit
% le cercle C, M décrit la courbe de Joukovski. Ceci revient à réaliser
% l'image du cercle C par la transformation conforme de Joukovski qui à z
% associe z+a^2/z.
 
 
 
verbatimtex
%&latex
\documentclass{article}
\usepackage{amsmath}
\usepackage[garamond]{mathdesign}
\begin{document}
etex
 
u:=0.5cm;
 
vardef jouk(expr P,a) =
  save x,y; numeric x,y;
  save H; pair H;
  x:=xpart P;
  y:=ypart P;
  H:=(0.5*(x+x/(x*x+y*y)*a*a),0.5*(y-y/(x*x+y*y)*a*a));
  H
enddef;
 
vardef joukcer(expr P,a) =
  save x,y; numeric x,y;
  save H; pair H;
  x:=xpart P;
  y:=ypart P;
  H:=(x/(x*x+y*y)*a*a,-(y/(x*x+y*y)*a*a));
  H
enddef;
 
 
 
path cerd,cerjou, joukov,jougeo;
numeric a;
 
cerd:=fullcircle scaled 10u shifted (u,3u);
a:=5u;
 
numeric ymin, ymax, xmin, xmax;
 
for i:=0 upto 360:
  pair Z,Zj;
  Z:=(5u*cosd(i)+u,5u*sind(i)+3u);
  Zj:=joukcer(Z,a);
  if i=0:
    ymin:=ypart Zj;
    ymax:=ypart Zj;
    xmin:=xpart Zj;
    xmax:=xpart Zj;
  fi;
  if ((i<>0) and ((xpart Zj)>xmax)):
      xmax:= xpart Zj;
  fi;
  if ((i<>0) and ((xpart Zj)<xmin)):
      xmin:= xpart Zj;
  fi;
  if ((i<>0) and ((ypart Zj)>ymax)):
      ymax:= ypart Zj;
  fi;
  if ((i<>0) and ((ypart Zj)<ymin)):
      ymin:= ypart Zj;
  fi;  
  if i=0:
    cerjou:=Zj;
  else:
    cerjou:=cerjou--Zj;
  fi;
endfor;
 
for i:=0 upto 360:
  pair Z,Zj;
  Z:=(5u*cosd(i)+u,5u*sind(i)+3u);
  Zj:=jouk(Z,a);
  if i=0:
    joukov:=Zj;
  else:
    joukov:=joukov--Zj;
  fi; 
endfor;
 
for i:=0 upto 360:
beginfig(i);
  pair Z,Zj,M,A;
  drawarrow (xmin-u,0)--(xmax+u,0) withpen pencircle scaled 0.7pt;
  drawarrow (0,ymin-u)--(0,ymax+2u) withpen pencircle scaled 0.7pt;
  Z:=(5u*cosd(i)+u,5u*sind(i)+3u);
  Zj:=joukcer(Z,a);
  M:=0.5[Z,Zj];
  A:=(5u,0);
  if i=0:
    jougeo:=M;
  else:
    jougeo:=jougeo--M;
  fi;
  draw cerd dashed evenly withpen pencircle scaled 0.8pt withcolor blue;
  draw cerjou dashed evenly withpen pencircle scaled 0.8pt withcolor blue;
  draw Z--Zj dashed evenly withpen pencircle scaled 0.9pt withcolor green;
  draw jougeo withpen pencircle scaled 1pt withcolor red;
 
  dotlabel.urt(btex $Z$ etex, Z);
  dotlabel.urt(btex $Z'$ etex, Zj);
  dotlabel.urt(btex $M$ etex,M);
  dotlabel.lrt(btex $A(a,0)$ etex, A);
  label.top(btex $x$ etex, (xmax+0.5u,0));
  label.lft(btex $y$ etex, (0,ymax+u));
  label.rt(btex $\mathcal{C}$ etex,(0,ymax/2+2u));
  label.rt(btex $\mathcal{C}'$ etex, (0,ymax+0.4u));
  label.rt(btex \textit{Courbe de} \textsc{Joukovski} etex, (xmin,ymax+u));
endfig;
endfor;
end.