Animations

La courbe du forçat...

image

Animation flash

Références : MathCurve, Palais de la Découverte.


forcat.mp
%@AUTEUR: Maxime Chupin
%@DATE: 5 décembre 2010
verbatimtex
%&latex
\documentclass{minimal}
\usepackage[latin1]{inputenc}
\usepackage[garamond]{mathdesign}
\usepackage{amsmath}
\begin{document}
etex
 
 
e:=2.718281828;
 
%% coef tractrice :
a:=2;
 
% hyperbolic functions
 
vardef exp(expr x)=
  e**x
enddef;
vardef sinh( expr x) =
  save xx ; xx = exp(x) ; (xx-1/xx)/2
enddef ;
vardef cosh(expr x) =
  save xx ; xx = exp(x) ; (xx+1/xx)/2
enddef ;
vardef tanh(expr x)=
  (sinh(x)/cosh(x))
enddef;
vardef coth(expr x)=
  (cosh(x)/sinh(x))
enddef;
 
vardef tractrice (expr t) =
  save trc;
  pair trc;
  trc:=(a*(t-tanh(t)),a/cosh(t));
  trc
enddef;
 
 
% vecteur derivé
vardef derive_tract(expr t)=
  save der;
  pair der;
  der:=(a-a/(cosh(t)**2),-a*sinh(t)/(cosh(t)**2));
  der
enddef;
 
% tangente à la tractrice
vardef tangente_tract(expr t,unit)=
  save tangente,A,B,vect;
  pair vect;
  vect:=derive_tract(t);
  path tangente;
  pair A,B;
  A:=unit*(tractrice(t)+vect);
  B:=unit*(tractrice(t)-vect);
  tangente:=20[A,B]--20[B,A];
  tangente
enddef;
 
u:=1cm;
 
%% tractrice
% reglage de l'intervalle de temps [-tmp,tmp]
tmp:=4.5;
 
% construction de la tractrice
path tract;
for i:=-tmp step 0.1 until tmp:
  if i=-tmp:
    tract:=u*tractrice(i);
  else:
    tract:=tract--u*tractrice(i);
  fi;
endfor;
% on définit le matériel
path tang,forcat;
pair M,P,N;
fig:=0;
cadrex:=5u;
cadreyB:=-1u;
cadreyT:=5u;
 
% on construit nos images
for i:=-tmp step 0.1 until tmp:
  beginfig(fig);
    % le point qui parcours la tractrice
    P:=u*tractrice(i);
    % la tangente à la tractrice en P
    %% attention à la tangente verticale
    if fig=tmp*10:
      tang:=(0,cadreyB)--(0,cadreyT);
      draw tang withcolor red;
    else:
      tang:=tangente_tract(i,u);
    fi;
    % intersection de la tangente avec l'axe des abscisses
    N:=tang intersectionpoint (5[(-u,0),(u,0)]--5[(u,0),(-u,0)]);
    % symétrique de N par rapport à P
    M:=P+arclength(N--P)*unitvector(P-N);
    % on construit la courbe du forçat
    if i=-tmp:
      forcat:=M;
    else:
      forcat:=forcat--M;
    fi;
    % on dessine
    %% axes
    drawarrow (-cadrex,0)--(cadrex,0);
    drawarrow (0,cadreyB)--(0,cadreyT);
    %% tractrice
    draw tract withcolor (0.5,0.5,0.5) withpen pencircle scaled 0.8pt;
    %% tangente
    draw tang dashed evenly withcolor green withpen pencircle scaled 0.9pt;
    %% la partie de la tangente qui permet la construction
    draw N--M withcolor blue withpen pencircle scaled 1pt;
    %% la courbe du forcat
    draw forcat withcolor red withpen pencircle scaled 1pt;
    %% les annotations
    dotlabel.urt(btex $M$ etex,M);
    dotlabel.urt(btex $P$ etex,P);
    dotlabel.urt(btex $N$ etex,N);
    label.bot(btex $x$ etex, 0.9*(cadrex,0));
    label.rt(btex $y$ etex,0.9*(0,cadreyT));
    label(btex \textit{La courbe du forçat} etex, 0.6(cadrex,cadreyT+u));
    draw btex  $\left\{\begin{array}{l}x=a(\theta - 2\mathrm{th}\theta)\\y=\dfrac{2a}{\mathrm{ch}\theta}\end{array}\right.$  etex scaled 0.8 shifted (0.6(cadrex,cadreyT+u)-(u,u));
    draw btex $(\mathcal{T})$ etex shifted (0.9*(-cadrex,0.6u)) withcolor (.5,.5,.5);
    clip currentpicture to (-cadrex,cadreyB)--(cadrex,cadreyB)--(cadrex,cadreyT)--(-cadrex,cadreyT)--cycle;
  endfig;
  fig:=fig+1;
endfor;
end.