%verbatimtex
%&latex
%\documentclass{article}
%\usepackage[latin1]{inputenc}
%\begin{document}
%etex

input geometriesyr12;
input TEX;

string pos,sol;

%Macro pour représenter graphiquement les solutions d'une inéquation
vardef soline(expr valeur,ang,couleur)=
  save $;
  picture dep,$;
  pair ww;
  dep=image(
    drawarrow (xpart(z.so*cm),ypart(placepoint(0,0)))--(xpart(z.ne*cm),ypart(placepoint(0,0))) withpen pencircle scaled 2bp;
    graduantx.bot;
    pair O;
    O=placepoint(0,0);
    marque_p:="plein";
    pointe(O);
    label.bot(btex $O$ etex,O);
    );
  $=image(
    trace dep;
    ww=placepoint(valeur,0);
    pointe(ww);
    marque_p:="non";
    if pos="inf":
      draw hachurage(placepoint(valeur,0.4)--placepoint(valeur,-0.4)--(xpart(z.ne*cm),ypart(placepoint(0,-0.4)))--(xpart(z.ne*cm),ypart(placepoint(0,0.4)))--cycle,ang,0.3,0) withcolor couleur;
      if sol="non":
	draw placepoint(valeur+0.3,0.5)--placepoint(valeur,0.5)--placepoint(valeur,-0.5)--placepoint(valeur+0.3,-0.5) withpen pencircle scaled 2bp withcolor couleur
      elseif sol="oui":
	draw placepoint(valeur-0.3,0.5)--placepoint(valeur,0.5)--placepoint(valeur,-0.5)--placepoint(valeur-0.3,-0.5) withpen pencircle scaled 2bp withcolor couleur
      fi;
      long:=abs((xpart(z.ne*cm),ypart(placepoint(0,-0.4)))-placepoint(valeur,-0.4));
      label.bot(TEX("$\underbrace{\hbox to"&decimal(long)&"pt{}}_{\hbox{Ce qui ne convient pas}}$"),iso(placepoint(valeur,-0.4),(xpart(z.ne*cm),ypart(placepoint(0,-0.4)))));
      label.top(TEX("$"&decimal(valeur)&"$"),placepoint(valeur,0.5));
    elseif pos="sup":
      draw hachurage(placepoint(valeur,0.4)--placepoint(valeur,-0.4)--(xpart(z.so*cm),ypart(placepoint(0,-0.4)))--(xpart(z.so*cm),ypart(placepoint(0,0.4)))--cycle,ang,0.3,0) withcolor couleur;
      if sol="non":
	draw placepoint(valeur-0.3,0.5)--placepoint(valeur,0.5)--placepoint(valeur,-0.5)--placepoint(valeur-0.3,-0.5) withpen pencircle scaled 2bp withcolor couleur
      elseif sol="oui":
	draw placepoint(valeur+0.3,0.5)--placepoint(valeur,0.5)--placepoint(valeur,-0.5)--placepoint(valeur+0.3,-0.5) withpen pencircle scaled 2bp withcolor couleur
      fi;
      long:=abs((xpart(z.so*cm),ypart(placepoint(0,-0.4)))-placepoint(valeur,-0.4));
      label.bot(TEX("$\underbrace{\hbox to"&decimal(long)&"pt{}}_{\hbox{Ce qui ne convient pas}}$"),iso(placepoint(valeur,-0.4),(xpart(z.so*cm),ypart(placepoint(0,-0.4)))));
      label.top(TEX("$"&decimal(valeur)&"$"),placepoint(valeur,0.5));
    fi;
    );
  $
enddef;
figure(0,0,10u,2u);
cadre((0,0),(10,2));
trace grille(0.5) withcolor gris;
origine((5,2));
pos:="inf";
sol:="oui";
draw soline(7,120,bleu);
fin;
figure(0,0,10u,2u);
cadre((0,0),(10,2));
trace grille(0.5) withcolor gris;
origine((10,2));
pos:="sup";
sol:="non";
draw soline(-2,120,bleu);
fin;
figure(0,0,10u,2u);
cadre((0,0),(10,2));
trace grille(0.5) withcolor gris;
origine((10,2));
pos:="sup";
sol:="oui";
draw soline(2,120,bleu);
fin;
figure(0,0,10u,2u);
cadre((0,0),(10,2));
trace grille(0.5) withcolor gris;
origine((10,2));
pos:="inf";
sol:="non";
draw soline(-1,120,bleu);
fin;
figure(0,0,10u,2u);
cadre((0,0),(10,2));
trace grille(0.5) withcolor gris;
origine((10,2));
drawarrow (xpart(z.so*cm),ypart(placepoint(0,0)))--(xpart(z.ne*cm),ypart(placepoint(0,0))) withpen pencircle scaled 2bp;
graduantx.bot;
pair O;
O=placepoint(0,0);
marque_p:="plein";
pointe(O);
label.bot(btex $O$ etex,O);
fin;
figure(0,0,10u,2u);
cadre((0,0),(10,2));
trace grille(0.5) withcolor gris;
origine((10,2));
drawarrow (xpart(z.so*cm),ypart(placepoint(0,0)))--(xpart(z.ne*cm),ypart(placepoint(0,0))) withpen pencircle scaled 2bp;
graduantx.bot;
pair O;
O=placepoint(0,0);
marque_p:="plein";
pointe(O);
label.bot(btex $O$ etex,O);
fin;
end
