Animations

Besace

La besace (étudiée par Cramer en 1750) :
On trace un cercle passant par l'origine 0 et coupant l'axe des abscisses à une distance a de 0 et l'axe de ordonnées à une distance b. On trace alors un rayon vecteur avec pour origine O tel qu'il coupe le cercle en P. On projette ensuite P sur (Oy) puis on rapport la distance OP sur (QP) : QM=QM'=OP. Si on fait varier le vecteur rayon OP le point M décrit alors la besace.

Animation flash


besace.mp
%@AUTEUR: Maxime Chupin
%@DATE: 20 mars 2007
 
verbatimtex
%&latex
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{array}
\begin{document}
etex
u:=2.5cm;
a:=3u;
b:=-2u;
 
path cercle,besacea, besaceb;
cercle := (0,0)..(a,0)..(a,b)..(0,b)..cycle ;
 
vardef proj(expr P,M,N) =
    % On protège le symbole H si toutefois il est déjà utilisé et on 
    % déclare que c'est un point.
    save H;
    pair H;
    % On indique que H est un barycentre de M et N, sans préciser
    % exactement le coefficient...
    H = whatever [M,N];
    % On indique que le vecteur PH est égal à un certain nombre de fois
    % le vecteur NM tourné de 90 degrés.
    H - P = whatever * (M - N) rotated 90;
    % Les équations ci-dessus étant suffisante pour définir H, on demande 
    % à la macro de le rendre.
    H
enddef;
 
for i:=0 upto 37:
    beginfig(i+1);
 
    pair N,P,Q,O,I,J,M,M';
    numeric p,j;
    path droite;
    j:=5*i;
 
    O:=(0,0);
    I:=(u,0);
    J:=(0,u);
 
    pickup pencircle scaled 0.9pt;
    drawarrow  (-6u,0)--(5u,0);
    label.top(btex $x$ etex scaled 1.4,(4.8u,0));
    drawarrow (0,2b)--(0,-b);
    label.lft(btex $y$ etex scaled 1.4,(0,-0.9*b));
    pickup pencircle scaled 0.5pt;
    draw cercle dashed evenly withcolor green;
    label.llft(btex $a$ etex scaled 1.4,(a/2,0));
    label.lft(btex $b$ etex scaled 1.4,(0,b/2));
 
    label.lft(btex $\boxed{\gamma=\left\lbrace\begin{array}{l}x=a\cos t-b\sin t\\
	y=-\sin (t) x\\0<t<2\pi\\\end{array}\right.}$ etex scaled 1.6,(1.5a,-0.7*b));
 
    pickup pencircle scaled 1pt;
    if i=0:
	besacea := (0,0);
        draw besacea withcolor red;
	besaceb := (0,0);
        draw besaceb withcolor red;
 
    elseif i=37:
	besacea:= besacea..(0,0);
	draw besacea withcolor red;
	besaceb:= besaceb..(0,0);
	draw besaceb withcolor red;
    else:
	pickup pencircle scaled 0.5pt;
	N:=(cosd(j-130)*u,sind(j-130)*u);
	droite := (0.1*cosd(j-130),0.1*sind(j-130))--4*N;
 
	P =  droite intersectionpoint cercle;
	dotlabel.lft(btex $P$ etex scaled 1.4,P) ;
	draw O--P  withcolor blue;
	Q := proj(P,O,J);
	dotlabel.ulft(btex $Q$ etex scaled 1.4,Q);
	draw 12[P,((xpart Q)-6u,ypart Q)]--12[((xpart Q)-6u,ypart Q),P] dashed evenly;
 
	p:=abs(O-P);
	M:=(p,ypart Q);
	M':=(-p,ypart Q);
	draw M--M' withcolor blue;
	draw O--M dashed evenly;
	draw O--M' dashed evenly;
 
	pickup pencircle scaled 1pt;
	besacea := besacea..M;
	draw besacea withcolor red;
	besaceb := besaceb..M';
	draw besaceb withcolor red;
	dotlabel.lft(btex $M$ etex scaled 1.4,M);
	dotlabel.lft(btex $M'$ etex scaled 1.4,M');
	label.lft(btex $p$ etex scaled 1.4, ((xpart P)/2,(ypart P)/2));
	label.top(btex $p$ etex  scaled 1.4, ((xpart Q +xpart M)/2,(ypart Q +ypart M)/2));
	label.top(btex $p$ etex scaled 1.4, ((xpart Q +xpart M')/2,(ypart Q +ypart M')/2));
    fi;
    dotlabel.llft(btex $O$ etex scaled 1.4,O);
 
 
    clip  currentpicture to (-5u,-5u)--(5u,-5u)--(5u,5u)--(-5u,5u)--cycle;
    endfig;
endfor;
end