%%%
% Panneaux routiers
%%%
\def\filedatePanneauxRoutiers{2026/03/24}%
\def\fileversionPanneauxRoutiers{0.1c}%
\message{-- \filedatePanneauxRoutiers\space v\fileversionPanneauxRoutiers}%
%
\setKVdefault[Panneaux]{Echelle=0.4,Traces={},Impression=false,AB1=false,AB2=false,AB3a=false,AB3b=false,AB25=false,AB4=false,AB5=false,AB6=false,AB7=false,A1a=false,A1b=false,A1c=false,A1d=false,A2a=false,A2b=false,A3=false,A3a=false,A3b=false,A14=false,A16=false,A17=false,A18=false,B0=false,B1=false,B11=false,B12=false,B13=false,B14110=false,B14130=false,B1415=false,B1430=false,B1450=false,B1470=false,B1480=false,B1490=false,B14100=false,B15=false,B16=false,B2a=false,B2b=false,B2c=false,B31=false,B33110=false,B33130=false,B3315=false,B3330=false,B3350=false,B3370=false,B3380=false,B3390=false,B33100=false,B35=false,B6a1=false,B6a2=false,B6a3=false,B6d=false,B211=false,B212=false,B21a1=false,B21a2=false,B21b=false,B21c1=false,B21c2=false,B21d1=false,B21d2=false,B21e=false,B25=false,B43=false,C12=false,C13a=false,C13b=false,C18=false,C1a=false,C27=false,C4a50=false,C4b50=false,CE1=false,C64d1=false,PrioriteDroite=false,VoiePrioritaire=false,SensGiratoire=false,CedezlePassageA=false,CedezlePassageB=false,StopA=false,StopB=false,RoutePrioritaire=false,FinRoutePrioritaire=false,VirageDroite=false,VirageDroite=false,VirageGauche=false,ViragesDroite=false,ViragesGauche=false,Cassis=false,Ralentisseur=false,Retrecissement=false,RetrecissementGauche=false,RetrecissementDroite=false,AutreDanger=false,DescenteDanger=false,FeuTricolore=false,CirculationDeuxSens=false,InterdictionCirculer=false,LimitationLargeurs=false,LimitationHauteurs=false,LimitationMasses=false,LimitationVitesses=false,CedezSensInverse=false,InterditKlaxonner=false,SensInterdit=false,InterditTournerG=false,InterditTournerD=false,InterditDemiTour=false,FinToutesInterdictions=false,FinLimitationVitesses=false,FinInterdictionKlaxonner=false,StationnementInterdit=false,StationnementInterdit15=false,StationnementInterdit31=false,ArretStationnementInterdit=false,ObligationDroite=false,ObligationGauche=false,ObligationToutDroit=false,ObligationTournerDroite=false,ObligationTournerGauche=false,ObligationToutDroitOuDroite=false,ObligationToutDroitOuGauche=false,ObligationGaucheOuDroite=false,ObligationContournementDroite=false,ObligationContournementGauche=false,ObligationVitesseMinis=false,FinVitesseMinis=false,SensUnique=false,Impasse=false,ImpasseB=false,PrioriteFaceSensInverse=false,Parking=false,PosteSecours=false,PaiementAutoPieces=false,ChausseeSurElevee=false,VitesseConseillees=false,FinVitesseConseillees=false,LimitationLargeur={},LimitationHauteur={},LimitationMasse={},LimitationVitesse={},FinLimitationVitesse={},ObligationVitesseMini={},FinVitesseMini={},VitesseConseillee={},FinVitesseConseillee={}}
\defKV[Panneaux]{%
  LimitationLargeur=\ifempty{#1}{}{\setKV[Panneaux]{LimitationLargeurs}},%
  LimitationHauteur=\ifempty{#1}{}{\setKV[Panneaux]{LimitationHauteurs}},%
  LimitationMasse=\ifempty{#1}{}{\setKV[Panneaux]{LimitationMasses}},%
  LimitationVitesse=\ifempty{#1}{}{\setKV[Panneaux]{LimitationVitesses}},%
  FinLimitationVitesse=\ifempty{#1}{}{\setKV[Panneaux]{FinLimitationVitesses}},%
  ObligationVitesseMini=\ifempty{#1}{}{\setKV[Panneaux]{ObligationVitesseMinis}},%
  FinVitesseMini=\ifempty{#1}{}{\setKV[Panneaux]{FinVitesseMinis}},%
  VitesseConseillee=\ifempty{#1}{}{\setKV[Panneaux]{VitesseConseillees}},%
  FinVitesseConseillee=\ifempty{#1}{}{\setKV[Panneaux]{FinVitesseConseillees}}%
}%

\NewDocumentCommand\PfCPanneaux{o}{%
  \useKVdefault[Panneaux]%
  \setKV[Panneaux]{#1}%
  \ifboolKV[Panneaux]{AB1}{\MPABUn}{}%
  \ifboolKV[Panneaux]{PrioriteDroite}{\MPABUn}{}%
  \ifboolKV[Panneaux]{AB2}{\MPABDeux}{}%
  \ifboolKV[Panneaux]{VoiePrioritaire}{\MPABDeux}{}%
  \ifboolKV[Panneaux]{AB25}{\MPABVingtCinq}{}%
  \ifboolKV[Panneaux]{SensGiratoire}{\MPABVingtCinq}{}%
  \ifboolKV[Panneaux]{AB3a}{\MPABTroisa}{}%
  \ifboolKV[Panneaux]{CedezlePassageA}{\MPABTroisa}{}%
  \ifboolKV[Panneaux]{AB3b}{\MPABTroisb}{}%
  \ifboolKV[Panneaux]{CedezlePassageB}{\MPABTroisb}{}%
  \ifboolKV[Panneaux]{AB4}{\MPABQuatre}{}%
  \ifboolKV[Panneaux]{StopA}{\MPABQuatre}{}%
  \ifboolKV[Panneaux]{AB5}{\MPABCinq}{}%
  \ifboolKV[Panneaux]{StopB}{\MPABCinq}{}%
  \ifboolKV[Panneaux]{AB6}{\MPABSix}{}%
  \ifboolKV[Panneaux]{RoutePrioritaire}{\MPABSix}{}%
  \ifboolKV[Panneaux]{AB7}{\MPABSept}{}%
  \ifboolKV[Panneaux]{FinRoutePrioritaire}{\MPABSept}{}%
  \ifboolKV[Panneaux]{A1a}{\MPAUna}{}%
  \ifboolKV[Panneaux]{VirageDroite}{\MPAUna}{}%
  \ifboolKV[Panneaux]{A1b}{\MPAUnb}{}%
  \ifboolKV[Panneaux]{VirageGauche}{\MPAUnb}{}%
  \ifboolKV[Panneaux]{A1c}{\MPAUnc}{}%
  \ifboolKV[Panneaux]{ViragesDroite}{\MPAUnc}{}%
  \ifboolKV[Panneaux]{A1d}{\MPAUnd}{}%
  \ifboolKV[Panneaux]{ViragesGauche}{\MPAUnd}{}%
  \ifboolKV[Panneaux]{A2a}{\MPADeuxa}{}%
  \ifboolKV[Panneaux]{Cassis}{\MPADeuxa}{}%
  \ifboolKV[Panneaux]{A2b}{\MPADeuxb}{}%
  \ifboolKV[Panneaux]{Ralentisseur}{\MPADeuxb}{}%
  \ifboolKV[Panneaux]{A3}{\MPATrois}{}%
  \ifboolKV[Panneaux]{Retrecissement}{\MPATrois}{}%
  \ifboolKV[Panneaux]{A3a}{\MPATroisa}{}%
  \ifboolKV[Panneaux]{RetrecissementDroite}{\MPATroisa}{}%
  \ifboolKV[Panneaux]{A3b}{\MPATroisb}{}%
  \ifboolKV[Panneaux]{RetrecissementGauche}{\MPATroisb}{}%
  \ifboolKV[Panneaux]{A14}{\MPAQuatorze}{}%
  \ifboolKV[Panneaux]{AutreDanger}{\MPAQuatorze}{}%
  \ifboolKV[Panneaux]{A16}{\MPASeize}{}%
  \ifboolKV[Panneaux]{DescenteDanger}{\MPASeize}{}%
  \ifboolKV[Panneaux]{A17}{\MPADixSept}{}%
  \ifboolKV[Panneaux]{FeuTricolore}{\MPADixSept}{}%
  \ifboolKV[Panneaux]{A18}{\MPADixHuit}{}%
  \ifboolKV[Panneaux]{CirculationDeuxSens}{\MPADixHuit}{}%
  \ifboolKV[Panneaux]{B0}{\MPBZero}{}%
  \ifboolKV[Panneaux]{InterdictionCirculer}{\MPBZero}{}%
  \ifboolKV[Panneaux]{B11}{\MPBOnze}{}%
  \ifboolKV[Panneaux]{LimitationLargeurs}{\MPBOnze[{\useKV[Panneaux]{LimitationLargeur}}]}{}%
  \ifboolKV[Panneaux]{B12}{\MPBDouze}{}%
  \ifboolKV[Panneaux]{LimitationHauteurs}{\MPBDouze[{\useKV[Panneaux]{LimitationHauteur}}]}{}%
  \ifboolKV[Panneaux]{B13}{\MPBTreize}{}%
  \ifboolKV[Panneaux]{LimitationMasses}{\MPBTreize[{\useKV[Panneaux]{LimitationMasse}}]}{}%
  \ifboolKV[Panneaux]{B14110}{\MPBQuatorze[110]}{}%
  \ifboolKV[Panneaux]{B14130}{\MPBQuatorze[130]}{}%
  \ifboolKV[Panneaux]{B1415}{\MPBQuatorze[15]}{}%
  \ifboolKV[Panneaux]{B1430}{\MPBQuatorze[30]}{}%
  \ifboolKV[Panneaux]{B1450}{\MPBQuatorze[50]}{}%
  \ifboolKV[Panneaux]{B1470}{\MPBQuatorze[70]}{}%
  \ifboolKV[Panneaux]{B1480}{\MPBQuatorze[80]}{}%
  \ifboolKV[Panneaux]{B1490}{\MPBQuatorze[90]}{}%
  \ifboolKV[Panneaux]{B14100}{\MPBQuatorze[100]}{}%
  \ifboolKV[Panneaux]{LimitationVitesses}{\MPBQuatorze[{\useKV[Panneaux]{LimitationVitesse}}]}{}%
  \ifboolKV[Panneaux]{B15}{\MPBQuinze}{}%
  \ifboolKV[Panneaux]{CedezSensInverse}{\MPBQuinze}{}%
  \ifboolKV[Panneaux]{B16}{\MPBSeize}{}%
  \ifboolKV[Panneaux]{InterditKlaxonner}{\MPBSeize}{}%
  \ifboolKV[Panneaux]{B1}{\MPBUn}{}%
  \ifboolKV[Panneaux]{SensInterdit}{\MPBUn}{}%
  \ifboolKV[Panneaux]{B2a}{\MPBDeuxa}{}%
  \ifboolKV[Panneaux]{InterditTournerG}{\MPBDeuxa}{}%
  \ifboolKV[Panneaux]{B2b}{\MPBDeuxb}{}%
  \ifboolKV[Panneaux]{InterditTournerD}{\MPBDeuxb}{}%
  \ifboolKV[Panneaux]{B2c}{\MPBDeuxc}{}%
  \ifboolKV[Panneaux]{InterditDemiTour}{\MPBDeuxc}{}%
  \ifboolKV[Panneaux]{B31}{\MPBTroisUn}{}%
  \ifboolKV[Panneaux]{FinToutesInterdictions}{\MPBTroisUn}{}%
  \ifboolKV[Panneaux]{B33110}{\MPBTrenteTrois[110]}{}%
  \ifboolKV[Panneaux]{B33130}{\MPBTrenteTrois[130]}{}%
  \ifboolKV[Panneaux]{B3315}{\MPBTrenteTrois[15]}{}%
  \ifboolKV[Panneaux]{B3330}{\MPBTrenteTrois[30]}{}%
  \ifboolKV[Panneaux]{B3350}{\MPBTrenteTrois[50]}{}%
  \ifboolKV[Panneaux]{B3370}{\MPBTrenteTrois[70]}{}%
  \ifboolKV[Panneaux]{B3380}{\MPBTrenteTrois[80]}{}%
  \ifboolKV[Panneaux]{B3390}{\MPBTrenteTrois[90]}{}%
  \ifboolKV[Panneaux]{B33100}{\MPBTrenteTrois[100]}{}%
  \ifboolKV[Panneaux]{FinLimitationVitesses}{\MPBTrenteTrois[{\useKV[Panneaux]{FinLimitationVitesse}}]}{}%
  \ifboolKV[Panneaux]{B35}{\MPBTrenteCinq}{}%
  \ifboolKV[Panneaux]{FinInterdictionKlaxonner}{\MPBTrenteCinq}{}%
  \ifboolKV[Panneaux]{B6a1}{\MPBSixAUn}{}%
  \ifboolKV[Panneaux]{StationnementInterdit}{\MPBSixAUn}{}%
  \ifboolKV[Panneaux]{B6a2}{\MPBSixADeux}{}%
  \ifboolKV[Panneaux]{StationnementInterdit15}{\MPBSixADeux}{}%
  \ifboolKV[Panneaux]{B6a3}{\MPBSixATrois}{}%
  \ifboolKV[Panneaux]{StationnementInterdit31}{\MPBSixATrois}{}%
  \ifboolKV[Panneaux]{B6d}{\MPBSixD}{}%
  \ifboolKV[Panneaux]{ArretStationnementInterdit}{\MPBSixD}{}%
  \ifboolKV[Panneaux]{B211}{\MPBVingtEtUnUn}{}%
  \ifboolKV[Panneaux]{ObligationDroite}{\MPBVingtEtUnUn}{}%
  \ifboolKV[Panneaux]{B212}{\MPBVingtEtUnDeux}{}%
  \ifboolKV[Panneaux]{ObligationGauche}{\MPBVingtEtUnDeux}{}%
  \ifboolKV[Panneaux]{B21a1}{\MPBVingtEtUnAUn}{}%
  \ifboolKV[Panneaux]{ObligationContournementDroite}{\MPBVingtEtUnAUn}{}%
  \ifboolKV[Panneaux]{B21a2}{\MPBVingtEtUnADeux}{}%
  \ifboolKV[Panneaux]{ObligationContournementGauche}{\MPBVingtEtUnADeux}{}%
  \ifboolKV[Panneaux]{B21b}{\MPBVingtEtUnB}{}%
  \ifboolKV[Panneaux]{ObligationToutDroit}{\MPBVingtEtUnB}{}%
  \ifboolKV[Panneaux]{B21c1}{\MPBVingtEtUnCUn}{}%
  \ifboolKV[Panneaux]{ObligationTournerDroite}{\MPBVingtEtUnCUn}{}%
  \ifboolKV[Panneaux]{B21c2}{\MPBVingtEtUnCDeux}{}%
  \ifboolKV[Panneaux]{ObligationTournerGauche}{\MPBVingtEtUnCDeux}{}%
  \ifboolKV[Panneaux]{B21d1}{\MPBVingtEtUnDUn}{}%
  \ifboolKV[Panneaux]{ObligationToutDroitOuDroite}{\MPBVingtEtUnDUn}{}%
  \ifboolKV[Panneaux]{B21d2}{\MPBVingtEtUnDDeux}{}%
  \ifboolKV[Panneaux]{ObligationToutDroitOuGauche}{\MPBVingtEtUnDDeux}{}%
  \ifboolKV[Panneaux]{B21e}{\MPBVingtEtUnE}{}%
  \ifboolKV[Panneaux]{ObligationGaucheOuDroite}{\MPBVingtEtUnE}{}%
  \ifboolKV[Panneaux]{B25}{\MPBVingtCinq[30]}{}%
  \ifboolKV[Panneaux]{ObligationVitesseMinis}{\MPBVingtCinq[{\useKV[Panneaux]{ObligationVitesseMini}}]}{}%
  \ifboolKV[Panneaux]{B43}{\MPBQuaranteTrois[30]}{}%
  \ifboolKV[Panneaux]{FinVitesseMinis}{\MPBVingtCinq[{\useKV[Panneaux]{FinVitesseMini}}]}{}%
  \ifboolKV[Panneaux]{C12}{\MPCDouze}{}%
  \ifboolKV[Panneaux]{SensUnique}{\MPCDouze}{}%
  \ifboolKV[Panneaux]{C13a}{\MPCTreizeA}{}%
  \ifboolKV[Panneaux]{Impasse}{\MPCTreizeA}{}%
  \ifboolKV[Panneaux]{C13b}{\MPCTreizeB}{}%
  \ifboolKV[Panneaux]{ImpasseB}{\MPCTreizeB}{}%
  \ifboolKV[Panneaux]{C18}{\MPCDixHuit}{}%
  \ifboolKV[Panneaux]{PrioriteFaceSensInverse}{\MPCDixHuit}{}%
  \ifboolKV[Panneaux]{C1a}{\MPCUnA}{}%
  \ifboolKV[Panneaux]{Parking}{\MPCUnA}{}%
  \ifboolKV[Panneaux]{C27}{\MPCVingtSept}{}%
  \ifboolKV[Panneaux]{ChausseeSurElevee}{\MPCVingtSept}{}%
  \ifboolKV[Panneaux]{C4a50}{\MPCQuatreACinquante[50]}{}%
  \ifboolKV[Panneaux]{VitesseConseillees}{\MPCQuatreACinquante[{\useKV[Panneaux]{VitesseConseillee}}]}{}%
  \ifboolKV[Panneaux]{C4b50}{\MPCQuatreBCinquante[50]}{}%
  \ifboolKV[Panneaux]{FinVitesseConseillees}{\MPCQuatreBCinquante[{\useKV[Panneaux]{FinVitesseConseillee}}]}{}%
  \ifboolKV[Panneaux]{CE1}{\MPCEUn}{}%
  \ifboolKV[Panneaux]{PosteSecours}{\MPCEUn}{}%
  \ifboolKV[Panneaux]{C64d1}{\MPCSoixanteQuatreDUn}{}%
  \ifboolKV[Panneaux]{PaiementAutoPieces}{\MPCSoixanteQuatreDUn}{}%
}%

\def\MPPanneauCode{%
  %
  boolean Impression;
  Impression=\useKV[Panneaux]{Impression};
  if Impression:
  red:=0.5white;
  Yellow:=0.7white;
  LightGreen:=0.9white;
  blue:=0.7white;
  fi;
  %
  vardef MiseEchelle=
    if \useKV[Panneaux]{Echelle}<>1:
      picture RetiensPicture;
      RetiensPicture:=currentpicture;
      currentpicture:=nullpicture;
      draw RetiensPicture scaled \useKV[Panneaux]{Echelle};
      %
    fi;
    \ifemptyKV[Panneaux]{Traces}{}{%
      \useKV[Panneaux]{Traces};
    }%
  enddef;
  %
  vardef CadrePanneauTri(expr ptaa,ptbb,ptcc,arc)=
  save $;
  path $;
  $=(ptaa+arc*unitvector(ptbb-ptaa))--(ptbb+arc*unitvector(ptaa-ptbb)){dir0}..{dir120}(ptbb+arc*unitvector(ptcc-ptbb))--(ptcc+arc*unitvector(ptbb-ptcc)){dir120}..{dir-120}(ptcc+arc*unitvector(ptaa-ptcc))--(ptaa+arc*unitvector(ptcc-ptaa))..{dir0}cycle;
  $
  enddef;
  %
  vardef DisqueInterdiction(expr ptaa,ptbb)=
    save $;
    picture $;
    $=image(%
    path cdinterne;
    cdinterne=homothetie(cercles(ptaa,ptbb),ptaa,0.7);
    trace cercles(ptaa,ptbb);
    fill cercles(ptaa,ptbb) withcolor white;
    fill homothetie(cercles(ptaa,ptbb),ptaa,0.95) withcolor red;
    fill cdinterne withcolor white;
    );
  $
  enddef;
  %
  vardef DisqueFinInterdiction(expr ptaa,ptbb)=
    save $;
    picture $;
    $=image(%
    path lisseretinterne;
    lisseretinterne=homothetie(cercles(ptaa,ptbb),ptaa,0.95);
    trace cercles(ptaa,ptbb);
    fill cercles(ptaa,ptbb);
    fill lisseretinterne withcolor white;
    trace 0.065[pointarc(lisseretinterne,45),pointarc(lisseretinterne,225)]--0.935[pointarc(lisseretinterne,45),pointarc(lisseretinterne,225)] withpen pensquare rotated 45 scaled 20;
    );
  $
  enddef;
  % 
  vardef DisqueObligation(expr ptaa,ptbb)=
    save $;
    picture $;
    $=image(%
    path cdinterne;
    cdinterne=homothetie(cercles(ptaa,ptbb),ptaa,0.95);
    trace cercles(ptaa,ptbb);
    fill cercles(ptaa,ptbb) withcolor white;
    fill homothetie(cercles(ptaa,ptbb),ptaa,0.95) withcolor blue;
    );
  $
  enddef;
  %
  vardef CadrePanneauPrio(expr ptaa,ptbb,ptcc,ptdd,arc)=
  save $;
  path $;
  $=(ptaa+arc*unitvector(ptbb-ptaa))--(ptbb+arc*unitvector(ptaa-ptbb)){dir0}..{dir90}(ptbb+arc*unitvector(ptcc-ptbb))--(ptcc+arc*unitvector(ptbb-ptcc)){dir90}..{dir180}(ptcc+arc*unitvector(ptdd-ptcc))--(ptdd+arc*unitvector(ptcc-ptdd)){dir180}..{dir-90}(ptdd+arc*unitvector(ptaa-ptdd))--(ptaa+arc*unitvector(ptdd-ptaa))..{dir0}cycle;
  $
  enddef;
  %
  vardef CadreOcto(expr ptcc,ptaa)=
  save $;
  path $;
  $=pointarc(cercles(ptcc,ptaa),22.5) for k=2 upto 8:--pointarc(cercles(ptcc,ptaa),22.5+(k-1)*45) endfor --cycle;
  $
  enddef;
  %
  vardef CadreBox(expr Texte)=
  pair PfMA,PfMB,PfMC,PfMD;
  bboxmargin:=2pt;
  PfMA=llcorner bbox Texte;
  PfMB=lrcorner bbox Texte;
  PfMC=urcorner bbox Texte;
  PfMD=ulcorner bbox Texte;
  save $;
  path $;
  $=(PfMA+1mm*unitvector(PfMB-PfMA))--(PfMB+1mm*unitvector(PfMA-PfMB)){dir 0}..{dir90}(PfMB+1mm*unitvector(PfMC-PfMB))--(PfMC+1mm*unitvector(PfMB-PfMC)){dir90}..{dir180}(PfMC+1mm*unitvector(PfMD-PfMC))--(PfMD+1mm*unitvector(PfMC-PfMD)){dir180}..{dir-90}(PfMD+1mm*unitvector(PfMA-PfMD))--(PfMA+1mm*unitvector(PfMD-PfMA))..{dir0}cycle;
  $
  enddef;
  %
}%

\NewDocumentCommand\MPABUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    trace ((O+u*(-0.5,0.5))--(O+u*(0.5,-0.5))) shifted (u*(0,-0.1)) withpen (pensquare rotated 45 scaled 8);
    trace ((O+u*(-0.5,-0.5))--(O+u*(0.5,0.5))) shifted (u*(0,-0.1)) withpen (pensquare rotated 45 scaled 8);
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPABDeux{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    O:=O+u*(0,0.25);
trace ((O+u*(-0.5,0))--(O+u*(0.5,0))) shifted (u*(0,-0.1)) withpen (pensquare scaled 8);
fill (O+u*(0,1))--(O+u*(-0.25,0.5))--(O+u*(-0.25,-1))--(O+u*(0,-0.9))--(O+u*(0.25,-1))--(O+u*(0.25,0.5))--cycle;
  MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPABTroisa{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace rotation(CadrePanneauTri(A,B,C,5mm),O,180);
    fill rotation(CadrePanneauTri(Aa,Bb,Cc,2.5mm),O,180) withcolor red;
    fill rotation(polygone(I,J,K),O,180) withcolor white;
    picture Indications;
    Indications=image(
    label(TEX("\setlength{\tabcolsep}{0pt}\begin{tabular}{c}CÉDEZ LE\\PASSAGE\\\end{tabular}"),(0,0));
    );
    trace Indications shifted(rotation(homothetie(C,O,0.9),O,180)-iso(urcorner Indications,ulcorner Indications)-(0,2pt));
    trace CadreBox(Indications) shifted(rotation(homothetie(C,O,0.9),O,180)-iso(urcorner Indications,ulcorner Indications)-(0,2pt));
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPABTroisb{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace rotation(CadrePanneauTri(A,B,C,5mm),O,180);
    fill rotation(CadrePanneauTri(Aa,Bb,Cc,2.5mm),O,180) withcolor red;
    fill rotation(polygone(I,J,K),O,180) withcolor white;
    picture Indications;
    Indications=image(
    label(TEX("\Lg[m]{150}"),(0,0));
    );
    trace Indications shifted(rotation(homothetie(C,O,0.9),O,180)-iso(urcorner Indications,ulcorner Indications)-(0,2pt));
    trace CadreBox(Indications) shifted(rotation(homothetie(C,O,0.9),O,180)-iso(urcorner Indications,ulcorner Indications)-(0,2pt));
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPABVingtCinq{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    drawoptions(withpen pencircle scaled 4);
    path rond;
    rond=cercles(O,0.7u);
    picture branch;
    branch=image(
    draw subpath(0.25,2.25) of rond;
    draw (point(2.25) of rond)--(1/5[point(2.25) of rond,point(7.25) of rond]);
    draw symetrie((point(2.25) of rond)--(1/5[point(2.25) of rond,point(7.25) of rond]),point(2.25) of rond,(point(2.25) of rond)+u*(1,0));
    );
    trace branch;
    trace rotation(branch,O,120);
    trace rotation(branch,O,240);
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPABQuatre{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(2.5,0);
    Bb=homothetie(B,A,0.9);
    trace CadreOcto(A,B);
    fill CadreOcto(A,Bb) withcolor red;
    drawoptions(withcolor white);
    label(TEX("\fontsize{40}{40}\selectfont\sffamily\bfseries STOP"),A);
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPABCinq{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace rotation(CadrePanneauTri(A,B,C,5mm),O,180);
    fill rotation(CadrePanneauTri(Aa,Bb,Cc,2.5mm),O,180) withcolor red;
    fill rotation(polygone(I,J,K),O,180) withcolor white;
    picture Indications;
    Indications=image(
    label(TEX("\setlength{\tabcolsep}{10pt}\begin{tabular}{c}STOP\\\Lg[m]{150}\\\end{tabular}"),(0,0));
    );
    trace Indications shifted(rotation(homothetie(C,O,0.9),O,180)-iso(urcorner Indications,ulcorner Indications)-(0,2pt));
    trace CadreBox(Indications) shifted(rotation(homothetie(C,O,0.9),O,180)-iso(urcorner Indications,ulcorner Indications)-(0,2pt));
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPABSix{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    L=homothetie(D,O,0.7);
    trace rotation(CadrePanneauPrio(A,B,C,D,2mm),O,45);
    fill rotation(polygone(I,J,K,L),O,45) withcolor Yellow;
    trace rotation(polygone(I,J,K,L),O,45);
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPABSept{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    L=homothetie(D,O,0.7);
    fill rotation(polygone(I,J,K,L),O,45) withcolor Yellow;
    trace rotation(iso(A,D)--iso(B,C),O,45) withpen (pensquare rotated 45 scaled 20);
    clip currentpicture to rotation(polygone(A,B,C,D),O,45);
    trace rotation(CadrePanneauPrio(A,B,C,D,2mm),O,45);
    trace rotation(polygone(I,J,K,L),O,45);
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPAUna{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    path rond;
    rond=cercles(O+u*(0.3,-0.1),1u);
    picture branch;
    branch=image(
    drawoptions(withpen pencircle scaled 8);
    draw reverse(subpath(2,4) of rond);
    draw (point(4) of rond)--((point(4) of rond)+u*(0,-0.65));
    drawoptions(withpen pensquare rotated 45 scaled 8 withcolor white);
    draw ((point(4) of rond)+u*(0,-0.7))--((point(4) of rond)+u*(0,-0.65));
    drawoptions(withpen ((pensquare rotated 45) scaled 5.75) withcolor black);
    draw (point(2) of rond)--((point(2) of rond)+u*(0.1,0));
    drawoptions();
    );
    trace branch;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPAUnb{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    path rond;
    rond=cercles(O+u*(0.3,-0.1),1u);
    picture branch;
    branch=image(
    drawoptions(withpen pencircle scaled 8);
    draw reverse(subpath(2,4) of rond);
    draw (point(4) of rond)--((point(4) of rond)+u*(0,-0.65));
    drawoptions(withpen pensquare rotated 45 scaled 8 withcolor white);
    draw ((point(4) of rond)+u*(0,-0.7))--((point(4) of rond)+u*(0,-0.65));
    drawoptions(withpen ((pensquare rotated 45) scaled 5.75) withcolor black);
    draw (point(2) of rond)--((point(2) of rond)+u*(0.1,0));
    drawoptions();
    );
    trace symetrie(branch,C,iso(A,B));
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPAUnc{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    path rond;
    rond=cercles(O+u*(0.3,-0.1),0.8u);
    picture branch;
    branch=image(
    drawoptions(withpen pencircle scaled 8);
    draw ((point(4) of rond)+u*(0,0.4))--((point(4) of rond)+u*(0,-0.65));
    draw ((point(4) of rond)+u*(0,0.4))--((point(4) of rond)+u*(0.8,-0.05));
    draw ((point(4) of rond)+u*(0.8,-0.05))--((point(4) of rond)+u*(0.8,1.1));
    drawoptions(withpen pensquare rotated 45 scaled 8 withcolor white);
    draw ((point(4) of rond)+u*(0,-0.7))--((point(4) of rond)+u*(0,-0.65));
    drawoptions(withpen ((pensquare rotated 45) scaled 5.7) withcolor black);
    draw ((point(4) of rond)+u*(0.8,1.185))--((point(4) of rond)+u*(0.8,1.1));
    drawoptions();
    );
    % trace symetrie(branch,C,iso(A,B));
    trace branch;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPAUnd{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    path rond;
    rond=cercles(O+u*(0.3,-0.1),0.8u);
    picture branch;
    branch=image(
    drawoptions(withpen pencircle scaled 8);
    draw ((point(4) of rond)+u*(0,0.4))--((point(4) of rond)+u*(0,-0.65));
    draw ((point(4) of rond)+u*(0,0.4))--((point(4) of rond)+u*(0.8,-0.05));
    draw ((point(4) of rond)+u*(0.8,-0.05))--((point(4) of rond)+u*(0.8,1.1));
    drawoptions(withpen pensquare rotated 45 scaled 8 withcolor white);
    draw ((point(4) of rond)+u*(0,-0.7))--((point(4) of rond)+u*(0,-0.65));
    drawoptions(withpen ((pensquare rotated 45) scaled 5.7) withcolor black);
    draw ((point(4) of rond)+u*(0.8,1.185))--((point(4) of rond)+u*(0.8,1.1));
    drawoptions();
    );
    trace symetrie(branch,C,iso(A,B));
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPADeuxa{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    pair M[];
    M0=O+u*(-1.25,-0.75);
    M1=O+u*(1.25,-0.75);
    M2-M1=u*(0,0.3);
    M3-M2=u*(-0.2,0.125);
    M4-M3=u*(-0.7,0);
    M5-M4=M4-M3;
    M6-M5=M5-M4;
    M7-M6=u*(-0.2,-0.125);;
    fill M0--M1--M2{dir180}..{dir120}M3{dir120}..{dir-120}M4{dir-120}..{dir120}M5{dir120}..{dir-120}M6{dir-120}..{dir180}M7--cycle;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPADeuxb{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    pair M[];
    M0=O+u*(-1.25,-0.75);
    M1=O+u*(1.25,-0.75);
    M2-M1=u*(0,0.1);
    M3-M2=u*(-0.2,0);
    M4-M3=u*(-1.05,0.5);
    M5-M4=u*(-1.05,-0.5);;
    M6-M5=M3-M2;
    fill M0--M1--M2--M3{dir180}..{dir180}M4{dir180}..{dir-180}M5--M6--cycle;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
%%%
\NewDocumentCommand\MPATroisa{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    pair M[];
    M0=O+u*(-0.25,-0.75);
    M1-M0=u*(0,1.75);
    M5=O+u*(0.25,1);
    M4-M5=u*(0,-0.6);
    M3-M4=u*(0.25,-0.55);
    M2-M3=u*(0,-0.6);
    draw M0--M1 withpen pensquare scaled 8;
    draw M2--0.825[M2,M3] withpen pensquare scaled 8;
    draw 0.2[M4,M5]--M5 withpen pensquare scaled 8;
    draw 0.175[M4,M3]--0.175[M3,M4] withpen pensquare rotated angle(M3-M4) scaled 8;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPATroisb{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    pair M[];
    M0=O+u*(-0.25,-0.75);
    M1-M0=u*(0,1.75);
    M5=O+u*(0.25,1);
    M4-M5=u*(0,-0.6);
    M3-M4=u*(0.25,-0.55);
    M2-M3=u*(0,-0.6);
    draw symetrie(M0--M1,O,iso(A,B)) withpen pensquare scaled 8;
    draw symetrie(M2--0.825[M2,M3],O,iso(A,B)) withpen pensquare scaled 8;
    draw symetrie(0.2[M4,M5]--M5,O,iso(A,B)) withpen pensquare scaled 8;
    draw symetrie(0.175[M4,M3]--0.175[M3,M4],O,iso(A,B)) withpen pensquare rotated (90-angle(M3-M4)) scaled 8;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPATrois{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    pair M[];
    M0=O+u*(-0.25,-0.75);
    M1-M0=u*(0,1.75);
    M5=O+u*(0.25,1);
    M4-M5=u*(0,-0.6);
    M3-M4=u*(0.25,-0.55);
    M2-M3=u*(0,-0.6);
    %draw symetrie(M0--M1,O,iso(A,B)) withpen pensquare scaled 8;
    draw symetrie(M2--0.825[M2,M3],O,iso(A,B)) withpen pensquare scaled 8;
    draw symetrie(0.2[M4,M5]--M5,O,iso(A,B)) withpen pensquare scaled 8;
    draw symetrie(0.175[M4,M3]--0.175[M3,M4],O,iso(A,B)) withpen pensquare rotated (90-angle(M3-M4)) scaled 8;
    draw M2--0.825[M2,M3] withpen pensquare scaled 8;
    draw 0.2[M4,M5]--M5 withpen pensquare scaled 8;
    draw 0.175[M4,M3]--0.175[M3,M4] withpen pensquare rotated angle(M3-M4) scaled 8;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPAQuatorze{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    label(TEX("\fontsize{90}{90}\selectfont\bfseries !"),O+u*(0,0.25));
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPASeize{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K,L,M,N,H;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    L=homothetie(A,O,0.68);
    N=homothetie(B,O,0.68);
    M=homothetie(C,O,0.68);
    H=0.75[L,projection(N,L,M)];
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    fill polygone(L,H,N);
    drawoptions(withcolor white);
    labeloffset:=0pt;
    label.bot(TEX("\Large\bfseries \SI{10}{\percent}") rotated angle(N-H),1/6[H,N]);
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPADixSept{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K,L,M,N,H;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    drawoptions(withpen pencircle scaled 18);
    draw (O+u*(0,-0.45))--(O+u*(0,0.95));
    drawoptions();
    fill (fullcircle scaled 15) shifted(O+u*(0,-0.375)) withcolor LightGreen;
    fill (fullcircle scaled 15) shifted(O+u*(0,0.25)) withcolor Yellow;
    fill (fullcircle scaled 15) shifted(O+u*(0,0.875)) withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
%
\NewDocumentCommand\MPADixHuit{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,O,Aa,Bb,Cc,I,J,K,L,M,N,P;
    A=(0,0);
    B-A=u*(5,0);
    C=rotation(B,A,60);
    O=iso(A,B,C);
    Aa=homothetie(A,O,0.9);
    Bb=homothetie(B,O,0.9);
    Cc=homothetie(C,O,0.9);
    I=homothetie(A,O,0.7);
    J=homothetie(B,O,0.7);
    K=homothetie(C,O,0.7);
    L=homothetie(A,O,0.15);
    M=homothetie(B,O,0.15);
    N=homothetie(C,O,0.15);
    trace CadrePanneauTri(A,B,C,5mm);
    fill CadrePanneauTri(Aa,Bb,Cc,2.5mm) withcolor red;
    fill polygone(I,J,K) withcolor white;
    pair M[];
%    M0=O+u*(-0.35,-0.5);
%    M1-M0=u*(0,1);
    M5=O+u*(0.35,0.6);
    % M4-M5=M0-M1;
    M4-M5=u*(0,-1.2);
    picture fleche;
    fleche=image(
    draw M4--M5 withpen pensquare scaled 8;
    fill polygone(L,M,N) shifted(M5-O);
    );
    P=O+(0,(abs(ulcorner fleche-(xpart(ulcorner fleche),ypart(O)))-abs(llcorner fleche-(xpart(llcorner fleche),ypart(O))))/2);
    draw fleche;
    draw symetrie(fleche,P);
    MiseEchelle;
  \end{mplibcode}%
}%
%
\NewDocumentCommand\MPBZero{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBOnze{O{2.5}}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    fill arccercle(pointarc(cdinterne,170),pointarc(cdinterne,190),A)--(pointarc(cdinterne,180)+u*(0.35,0))--cycle;
    fill arccercle(pointarc(cdinterne,350),pointarc(cdinterne,10),A)--(pointarc(cdinterne,0)+u*(-0.35,0))--cycle;
    label(TEX("\sffamily\bfseries\fontsize{40}{40}\selectfont\num{#1}\si{\meter}"),A);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBDouze{O{3.5}}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    fill arccercle(pointarc(cdinterne,80),pointarc(cdinterne,100),A)--(pointarc(cdinterne,90)+u*(0,-0.35))--cycle;
    fill arccercle(pointarc(cdinterne,260),pointarc(cdinterne,280),A)--(pointarc(cdinterne,270)+u*(0,0.35))--cycle;
    label(TEX("\sffamily\bfseries\fontsize{40}{40}\selectfont\num{#1}\si{\meter}"),A);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBTreize{O{5.5}}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    label(TEX("\sffamily\bfseries\fontsize{40}{40}\selectfont\num{#1}\si{\tonne}"),A);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBQuatorze{O{90}}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    label(TEX("\sffamily\bfseries\fontsize{60}{60}\selectfont\num{#1}"),A);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBQuinze{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    pair M[],P,L,O,N;
    L=homothetie(pointarc(cdinterne,210),A,sqrt(3)/5);
    O=homothetie(pointarc(cdinterne,330),A,sqrt(3)/5);
    N=homothetie(pointarc(cdinterne,90),A,sqrt(3)/5);
    M5=A+u*(0.65,0.6);
    % M4-M5=M0-M1;
    M4-M5=u*(0,-1.4);
    picture fleche;
    fleche=image(
    draw M4--M5 withpen pensquare scaled 12;
    fill polygone(L,O,N) shifted(M5-A);
    );
    P=A+(0,(abs(ulcorner fleche-(xpart(ulcorner fleche),ypart(A)))-abs(llcorner fleche-(xpart(llcorner fleche),ypart(A))))/2);
    draw fleche;
    draw symetrie(fleche,P) xscaled 0.75 withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBSeize{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    pair M[];
    M0=A+u*(1.15,0);
    M1-M0=u*(0,0.375);
    M2-M1=u*(-0.125,0);
    M3-A=u*(-1.15,0.75);
    M4-A=u*(-1.15,0);
    path klaxon[];
    klaxon1=M0--M1--M2{dir-135}..{dir135}M3--M4;
    klaxon2=klaxon1--symetrie(reverse(klaxon1),A,M0)--cycle;
    fill klaxon2;
    trace pointarc(cdinterne,135)--pointarc(cdinterne,315) withpen pensquare scaled 8 withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    fill cdinterne withcolor red;
    trace cdinterne withpen pencircle scaled 2 withcolor red;
    draw (A+u*(-1.15,0))--(A+u*(1.15,0))  withpen pensquare scaled 20 withcolor white;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBDeuxa{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    pair M[],L,O,N;
    L=homothetie(pointarc(cdinterne,210),A,sqrt(3)/8);
    O=homothetie(pointarc(cdinterne,330),A,sqrt(3)/8);
    N=homothetie(pointarc(cdinterne,90),A,sqrt(3)/8);
    M0-A=u*(0.5,-1.15);
    M1-A=u*(0.5,-0.1);
    M2-A=u*(0,0.4);
    M3-A=u*(-1,0.4);
    trace M0--M1{dir90}..{dir180}M2--M3 withpen pencircle scaled 10;
    trace (M0+u*(0,-0.01))--(M0+u*(0,0.2)) withpen pensquare scaled 10;
    fill rotation(polygone(L,N,O),A,90) shifted (M3-rotation(iso(L,O),A,90));
    trace pointarc(cdinterne,135)--pointarc(cdinterne,315) withpen pensquare scaled 8 withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBDeuxb{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    pair M[],L,O,N;
    L=homothetie(pointarc(cdinterne,210),A,sqrt(3)/8);
    O=homothetie(pointarc(cdinterne,330),A,sqrt(3)/8);
    N=homothetie(pointarc(cdinterne,90),A,sqrt(3)/8);
    M0-A=u*(0.5,-1.15);
    M1-A=u*(0.5,-0.1);
    M2-A=u*(0,0.4);
    M3-A=u*(-1,0.4);
    picture Tournergroute;
    Tournergroute=image(
    trace M0--M1{dir90}..{dir180}M2--M3 withpen pencircle scaled 10;
    trace (M0+u*(0,-0.01))--(M0+u*(0,0.2)) withpen pensquare scaled 10;
    fill rotation(polygone(L,N,O),A,90) shifted (M3-rotation(iso(L,O),A,90));
    );
    trace symetrie(Tournergroute,A,A+u*(0,1));
    trace pointarc(cdinterne,135)--pointarc(cdinterne,315) withpen pensquare scaled 8 withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBDeuxc{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    pair M[],L,O,N;
    L=homothetie(pointarc(cdinterne,210),A,sqrt(3)/8);
    O=homothetie(pointarc(cdinterne,330),A,sqrt(3)/8);
    N=homothetie(pointarc(cdinterne,90),A,sqrt(3)/8);
    M0-A=u*(0.65,-1.15);
    M1-A=u*(0.65,0.55);
    M2-A=u*(-0.65,0.55);
    M3-A=u*(-0.65,-0.35);
    trace M0--M1{dir90}..{dir-90}M2--M3 withpen pencircle scaled 10;
    trace (M0+u*(0,-0.01))--(M0+u*(0,0.2)) withpen pensquare scaled 10;
    fill rotation(polygone(L,N,O),A,180) shifted (M3-rotation(iso(L,O),A,180));
    trace pointarc(cdinterne,135)--pointarc(cdinterne,315) withpen pensquare scaled 8 withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBTroisUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueFinInterdiction(A,B);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBTrenteTrois{O{90}}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueFinInterdiction(A,B);
    picture Vitesse;
    Vitesse=image(
      label(TEX("\sffamily\bfseries\fontsize{80}{80}\selectfont\num{#1}"),A);
      );
    bboxmargin:=10;
    pair M[];
    M0=droite(urcorner bbox Vitesse,ulcorner bbox Vitesse) intersectionpoint lisseretinterne;
    M1=symetrie(M0,A,B);
    M3=symetrie(M1,A);
    M2=symetrie(M0,A);
    fill polygone(M0,M1,M2,M3) withcolor white;
    trace Vitesse;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBTrenteCinq{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueFinInterdiction(A,B);
    pair M[];
    M0=A+u*(1.15,0);
    M1-M0=u*(0,0.375);
    M2-M1=u*(-0.125,0);
    M3-A=u*(-1.15,0.75);
    M4-A=u*(-1.15,0);
    path klaxon[];
    klaxon1=M0--M1--M2{dir-135}..{dir135}M3--M4;
    klaxon2=klaxon1--symetrie(reverse(klaxon1),A,M0)--cycle;
    picture BlocKlaxon;
    BlocKlaxon=image(
    fill klaxon2;
    );
    bboxmargin:=10;
    pair M[];
    M0=droite(urcorner bbox BlocKlaxon,ulcorner bbox BlocKlaxon) intersectionpoint lisseretinterne;
    M1=symetrie(M0,A,B);
    M3=symetrie(M1,A);
    M2=symetrie(M0,A);
    fill polygone(M0,M1,M2,M3) withcolor white;
    trace BlocKlaxon;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBSixAUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    fill cdinterne withcolor blue;
    trace cdinterne withcolor blue;
    trace pointarc(cdinterne,135)--pointarc(cdinterne,315) withpen pensquare scaled 8 withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBSixADeux{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    fill cdinterne withcolor blue;
    trace cdinterne withcolor blue;
    trace pointarc(cdinterne,135)--pointarc(cdinterne,315) withpen pensquare scaled 8 withcolor red;
    drawoptions(withcolor white);
    label(TEX("\sffamily\bfseries\fontsize{22}{22}\selectfont1.15"),A+u*(0.5,0.85));
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBSixATrois{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    fill cdinterne withcolor blue;
    trace cdinterne withcolor blue;
    trace pointarc(cdinterne,135)--pointarc(cdinterne,315) withpen pensquare scaled 8 withcolor red;
    drawoptions(withcolor white);
    label(TEX("\sffamily\bfseries\fontsize{22}{22}\selectfont16.31"),A+u*(-0.5,-0.85));
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBSixD{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueInterdiction(A,B);
    fill cdinterne withcolor blue;
    trace cdinterne withcolor blue;
    trace pointarc(cdinterne,135)--pointarc(cdinterne,315) withpen pensquare scaled 8 withcolor red;
    trace pointarc(cdinterne,45)--pointarc(cdinterne,225) withpen pensquare scaled 8 withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(-1.5,0);
    M1-A=u*(1.15,0);
    M2-(M1+u*(0.45,0))=u*(-0.85,0.85);
    M3-(M1+u*(0.45,0))=u*(-0.85,-0.85);
    trace M1--M0 withpen pensquare scaled 12 withcolor white;
    trace M2--(M1+u*(0.45,0)) withpen pensquare rotated(90+angle(M2-(M1+u*(0.45,0)))) scaled 10 withcolor white;
    trace M3--(M1+u*(0.45,0)) withpen pensquare rotated(angle((M1+u*(0.45,0))-M3)) scaled 10 withcolor white;
    trace (M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)) withpen pensquare scaled 7 withcolor white;
    trace symetrie((M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)),A,B) withpen pensquare scaled 7 withcolor white;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnDeux{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(-1.5,0);
    M1-A=u*(1.15,0);
    M2-(M1+u*(0.45,0))=u*(-0.85,0.85);
    M3-(M1+u*(0.45,0))=u*(-0.85,-0.85);
    picture fleche;
    fleche=image(
    trace M1--M0 withpen pensquare scaled 12 withcolor white;
    trace M2--(M1+u*(0.45,0)) withpen pensquare rotated(90+angle(M2-(M1+u*(0.45,0)))) scaled 10 withcolor white;
    trace M3--(M1+u*(0.45,0)) withpen pensquare rotated(angle((M1+u*(0.45,0))-M3)) scaled 10 withcolor white;
    trace (M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)) withpen pensquare scaled 7 withcolor white;
    trace symetrie((M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)),A,B) withpen pensquare scaled 7 withcolor white;
    );
    trace rotation(fleche,A,180);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnAUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(-1.5,0);
    M1-A=u*(1.15,0);
    M2-(M1+u*(0.45,0))=u*(-0.85,0.85);
    M3-(M1+u*(0.45,0))=u*(-0.85,-0.85);
    picture fleche;
    fleche=image(
    trace M1--M0 withpen pensquare scaled 12 withcolor white;
    trace M2--(M1+u*(0.45,0)) withpen pensquare rotated(90+angle(M2-(M1+u*(0.45,0)))) scaled 10 withcolor white;
    trace M3--(M1+u*(0.45,0)) withpen pensquare rotated(angle((M1+u*(0.45,0))-M3)) scaled 10 withcolor white;
    trace (M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)) withpen pensquare scaled 7 withcolor white;
    trace symetrie((M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)),A,B) withpen pensquare scaled 7 withcolor white;
    );
    trace rotation(fleche,A,-45);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnADeux{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(-1.5,0);
    M1-A=u*(1.15,0);
    M2-(M1+u*(0.45,0))=u*(-0.85,0.85);
    M3-(M1+u*(0.45,0))=u*(-0.85,-0.85);
    picture fleche;
    fleche=image(
    trace M1--M0 withpen pensquare scaled 12 withcolor white;
    trace M2--(M1+u*(0.45,0)) withpen pensquare rotated(90+angle(M2-(M1+u*(0.45,0)))) scaled 10 withcolor white;
    trace M3--(M1+u*(0.45,0)) withpen pensquare rotated(angle((M1+u*(0.45,0))-M3)) scaled 10 withcolor white;
    trace (M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)) withpen pensquare scaled 7 withcolor white;
    trace symetrie((M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)),A,B) withpen pensquare scaled 7 withcolor white;
    );
    trace rotation(fleche,A,-135);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnB{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(-1.5,0);
    M1-A=u*(1.15,0);
    M2-(M1+u*(0.45,0))=u*(-0.85,0.85);
    M3-(M1+u*(0.45,0))=u*(-0.85,-0.85);
    picture fleche;
    fleche=image(
    trace M1--M0 withpen pensquare scaled 12 withcolor white;
    trace M2--(M1+u*(0.45,0)) withpen pensquare rotated(90+angle(M2-(M1+u*(0.45,0)))) scaled 10 withcolor white;
    trace M3--(M1+u*(0.45,0)) withpen pensquare rotated(angle((M1+u*(0.45,0))-M3)) scaled 10 withcolor white;
    trace (M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)) withpen pensquare scaled 7 withcolor white;
    trace symetrie((M3+u*(-0.125,-0.125))--(M3+u*(-0.125,-0.12)),A,B) withpen pensquare scaled 7 withcolor white;
    );
    trace rotation(fleche,A,90);
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnCUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(1,-1.15);
    M1-A=u*(1,-0.25);
    M2-A=u*(-0.25,0.75);
    M3-A=u*(-0.75,0.75);
    M4-M3=u*(0.5,0.65);
    picture fleche;
    fleche=image(
    drawoptions(withcolor white);
    trace M0--M1{dir90}..{dir180}M2--M3 withpen pencircle scaled 10;
    trace (M0+u*(0,-0.01))--(M0+u*(0,0.2)) withpen pensquare scaled 10;
    trace 0.05[M3,M4]--M4 withpen pensquare rotated(angle(M4-M3)) scaled 10;
    trace symetrie(0.05[M3,M4]--M4,M3,M2) withpen pensquare rotated(-angle(M4-M3)) scaled 10;
    drawoptions();
    );
    trace symetrie(fleche,A,A+u*(0,1));
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnCDeux{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(1,-1.15);
    M1-A=u*(1,-0.25);
    M2-A=u*(-0.25,0.75);
    M3-A=u*(-0.75,0.75);
    M4-M3=u*(0.5,0.65);
    drawoptions(withcolor white);
    trace M0--M1{dir90}..{dir180}M2--M3 withpen pencircle scaled 10;
    trace (M0+u*(0,-0.01))--(M0+u*(0,0.2)) withpen pensquare scaled 10;
    trace 0.05[M3,M4]--M4 withpen pensquare rotated(angle(M4-M3)) scaled 10;
    trace symetrie(0.05[M3,M4]--M4,M3,M2) withpen pensquare rotated(-angle(M4-M3)) scaled 10;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnDUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(0.5,-1.75);
    M1-M0=u*(0,0.75);
    M2-M1=u*(-0.75,0.5);
    M3-M2=u*(-1.25,0);
    M4-M3=u*(0.5,0.65);
    M5-M0=u*(0,3.25);
    M6-M5=u*(0.65,-0.5);
    picture fleche;
    fleche=image(
    drawoptions(withcolor white);
    trace M0--M1{dir90}..{dir180}M2--M3 withpen pencircle scaled 9.75;
    trace (M0+u*(0,-0.01))--(M0+u*(0,0.2)) withpen pensquare scaled 10;
    trace 0.05[M3,M4]--M4 withpen pensquare rotated(angle(M4-M3)) scaled 10;
    trace symetrie(0.05[M3,M4]--M4,M3,M2) withpen pensquare rotated(-angle(M4-M3)) scaled 10;
    % direct
    trace M0--M5 withpen pencircle scaled 10;
    trace 0.05[M5,M6]--M6 withpen pensquare rotated(angle(M6-M5)) scaled 10;
    trace symetrie(0.05[M5,M6]--M6,M0,M5) withpen pensquare rotated(-angle(M6-M5)) scaled 10;
    drawoptions();
    );
    trace symetrie(fleche,A,A+u*(0,1));
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnDDeux{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(0.5,-1.75);
    M1-M0=u*(0,0.75);
    M2-M1=u*(-0.75,0.5);
    M3-M2=u*(-1.25,0);
    M4-M3=u*(0.5,0.65);
    M5-M0=u*(0,3.25);
    M6-M5=u*(0.65,-0.5);
    picture fleche;
    fleche=image(
    drawoptions(withcolor white);
    trace M0--M1{dir90}..{dir180}M2--M3 withpen pencircle scaled 9.75;
    trace (M0+u*(0,-0.01))--(M0+u*(0,0.2)) withpen pensquare scaled 10;
    trace 0.05[M3,M4]--M4 withpen pensquare rotated(angle(M4-M3)) scaled 10;
    trace symetrie(0.05[M3,M4]--M4,M3,M2) withpen pensquare rotated(-angle(M4-M3)) scaled 10;
    % direct
    trace M0--M5 withpen pencircle scaled 10;
    trace 0.05[M5,M6]--M6 withpen pensquare rotated(angle(M6-M5)) scaled 10;
    trace symetrie(0.05[M5,M6]--M6,M0,M5) withpen pensquare rotated(-angle(M6-M5)) scaled 10;
    drawoptions();
    );
    trace fleche;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtEtUnE{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    pair M[];
    M0-A=u*(0,-1.75);
    M1-M0=u*(0,1.5);
    M2-M1=u*(-0.5,0.5);
    M3-M2=u*(-1.25,0);
    M4-M3=u*(0.5,0.65);
    % M5-M0=u*(0,3.25);
    % M6-M5=u*(0.65,-0.5);
    drawoptions(withcolor white);
    trace M0--M1 withpen pencircle scaled 10;
    trace (M0+u*(0,-0.01))--(M0+u*(0,0.2)) withpen pensquare scaled 10;
    picture fleche;
    fleche=image(
      trace M1{dir90}..{dir180}M2--M3 withpen pencircle scaled 9.75;
      trace 0.05[M3,M4]--M4 withpen pensquare rotated(angle(M4-M3)) scaled 10;
      trace symetrie(0.05[M3,M4]--M4,M3,M2) withpen pensquare rotated(-angle(M4-M3)) scaled 10;
    );
    trace fleche;
    trace symetrie(fleche,A,A+(0,1));
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBVingtCinq{O{30}}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    drawoptions(withcolor white);
    picture Vitesse;
    Vitesse=image(
      label(TEX("\sffamily\bfseries\fontsize{80}{80}\selectfont\num{#1}"),A);
    );
    draw Vitesse;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPBQuaranteTrois{O{30}}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B;
    A=(0,0);
    B-A=u*(2.5,0);
    trace DisqueObligation(A,B);
    drawoptions(withcolor white);
    picture Vitesse;
    Vitesse=image(
      label(TEX("\sffamily\bfseries\fontsize{80}{80}\selectfont\num{#1}"),A);
    );
    draw Vitesse;
    drawoptions();
    draw 0.0375[pointarc(cdinterne,45),pointarc(cdinterne,225)]--0.9625[pointarc(cdinterne,45),pointarc(cdinterne,225)] withpen pensquare scaled 10 rotated 45 withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
%
\NewDocumentCommand\MPCDouze{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    pair M[];
    M0-O=u*(0,-2);
    M1-M0=u*(-0.75,0);
    M2-M1=u*(0,2.25);
    M3-M2=u*(-1,-0.125);
    M4-O=u*(0,2);
    path Fleche;
    Fleche=M0--M1--M2--M3--M4--symetrie(reverse(M0--M1--M2--M3--M4),M0,M4)--cycle;
    fill Fleche withcolor white;
    MiseEchelle;
  \end{mplibcode}%
}%
%
\NewDocumentCommand\MPCTreizeA{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    pair M[];
    M0-O=u*(0,-2);
    M1-M0=u*(-0.25,0);
    M2-M1=u*(0,2.75);
    M3-M2=u*(-0.5,0);
    M4-M3=u*(0,1);
    M5=(xpart(O),ypart(M4));
    M6=symetrie(M4,O,M5);
    M7=symetrie(M3,O,M5);
    path Fleche;
    Fleche=M0--M1--M2--M3--M4--M5--symetrie(reverse(M0--M1--M2--M3--M4--M5),M0,M5)--cycle;
    fill Fleche withcolor white;
    fill homothetie(polygone(M3,M4,M6,M7),iso(M3,M4,M6,M7),0.9) withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
%
\NewDocumentCommand\MPCTreizeB{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    pair M[];
    M0-O=u*(0,-1.75);
    M1-M0=u*(-0.25,0);
    M2-M1=u*(0,2.75);
    M3-M2=u*(-0.5,0);
    M4-M3=u*(0,1);
    M5=(xpart(O),ypart(M4));
    M6=symetrie(M4,O,M5);
    M7=symetrie(M3,O,M5);
    M8-O=u*(-1.5,-1.75);
    M9-M8=u*(0,3.5);
    picture Titi;
    Titi=image(
    path Fleche;
    Fleche=M0--M1--M2--M3--M4--M5--symetrie(reverse(M0--M1--M2--M3--M4--M5),M0,M5)--cycle;
    fill Fleche withcolor white;
    fill homothetie(polygone(M3,M4,M6,M7),iso(M3,M4,M6,M7),0.9) withcolor red;
    );
    draw rotation(Titi,O,-90);
    draw M8--M9 withpen pensquare scaled 15 withcolor white;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPCDixHuit{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    pair M[];
    Aa-O=u*(0.75,0);
    Bb-O=u*(-1.25,0);
    M0-Aa=u*(0,-2);
    M1-M0=u*(-0.5,0);
    M2-M1=u*(0,2.25);
    M3-M2=u*(-0.5,0);
    M4-Aa=u*(0,2);
    M5-Bb=u*(0,-2);
    M6-M5=u*(-0.25,0);
    M7-M6=u*(0,2.75);
    M8-M7=u*(-0.25,0);
    M9-Bb=u*(0,2);
    path Fleche,FlecheR;
    Fleche=M0--M1--M2--M3--M4--symetrie(reverse(M0--M1--M2--M3--M4),M0,M4)--cycle;
    FlecheR=M5--M6--M7--M8--M9--symetrie(reverse(M5--M6--M7--M8--M9),M5,M9)--cycle;
    fill Fleche withcolor white;
    trace Fleche withpen pencircle scaled 3 withcolor white;
    fill symetrie(FlecheR,Bb) withcolor red;
    trace symetrie(FlecheR,Bb) withpen pencircle scaled 3 withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPCUnA{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    drawoptions(withcolor white);
    label(TEX("\bfseries\sffamily\fontsize{150}{150}\selectfont P"),O);
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPCVingtSept{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    drawoptions(withcolor white);
    Aa=A+u*(0.5,0.75);%pointarc(cercles(O,2u),210);
    Bb=B+u*(-0.5,0.75);%pointarc(cercles(O,2u),330);
    Cc=rotation(Bb,Aa,60);%pointarc(cercles(O,2u),90);
    fill polygone(Aa,Bb,Cc) withcolor white;
    drawoptions();
    pair M[];
    M0=O+u*(-1.25,-1.5);
    M1=O+u*(1.25,-1.5);
    M2-M1=u*(0,0.1);
    M3-M2=u*(-0.2,0);
    M4-M3=u*(-1.05,0.5);
    M5-M4=u*(-1.05,-0.5);;
    M6-M5=M3-M2;
    fill M0--M1--M2--M3{dir180}..{dir180}M4{dir180}..{dir-180}M5--M6--cycle;
    MiseEchelle;
  \end{mplibcode}%
}%
%
\NewDocumentCommand\MPCQuatreACinquante{O{30}}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    drawoptions(withcolor white);
    picture Vitesse;
    Vitesse=image(
      label(TEX("\sffamily\bfseries\fontsize{100}{100}\selectfont\num{#1}"),O);
    );
    draw Vitesse;
    drawoptions();
    MiseEchelle;
  \end{mplibcode}%
}%
\NewDocumentCommand\MPCQuatreBCinquante{O{30}}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    trace I--K withpen pensquare scaled 10 rotated 45 withcolor red;
    clip currentpicture to polygone(I,J,K,L);
    picture RetiensPicture;
    RetiensPicture=currentpicture;
    currentpicture:=nullpicture;
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    drawoptions(withcolor white);
    picture Vitesse;
    Vitesse=image(
      label(TEX("\sffamily\bfseries\fontsize{100}{100}\selectfont\num{#1}"),O);
    );
    draw Vitesse;
    drawoptions();
    draw RetiensPicture;
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPCEUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L,R,S,T,U;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    R=homothetie(A,O,0.75);
    S=homothetie(B,O,0.75);
    T=homothetie(C,O,0.75);
    U=homothetie(D,O,0.75);
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    fill polygone(R,S,T,U) withcolor white;
    pair M[];
    M0-O=u*(0.5,0.5);
    M1-iso(T,U)=u*(0.5,-0.1);
    M2-iso(T,U)=u*(-0.5,-0.1);
    M3=rotation(M0,O,90);
    M4=rotation(M1,O,90);
    M5=rotation(M2,O,90);
    M6=rotation(M0,O,180);
    M7=rotation(M1,O,180);
    M8=rotation(M2,O,180);
    M9=rotation(M0,O,-90);
    M10=rotation(M1,O,-90);
    M11=rotation(M2,O,-90);
    path Croix;
    Croix=polygone(M0,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11);
    fill Croix withcolor red;
    MiseEchelle;
  \end{mplibcode}%
}%

\NewDocumentCommand\MPCSoixanteQuatreDUn{}{%
  \mplibforcehmode%
  \begin{mplibcode}
    \MPPanneauCode
    pair A,B,C,D,O,Aa,Bb,Cc,I,J,K,L,R,S,T,U,V,W;
    A=(0,0);
    B-A=u*(5,0);
    D=rotation(B,A,90);
    C-D=B-A;
    O=iso(A,B,C,D);
    I=homothetie(A,O,0.9);
    J=homothetie(B,O,0.9);
    K=homothetie(C,O,0.9);
    L=homothetie(D,O,0.9);
    path cc;
    cc=cercles(O,1.5u);
    R=pointarc(cc,30);
    S=pointarc(cc,90);
    T=pointarc(cc,150);
    U=pointarc(cc,210);
    V=pointarc(cc,270);
    W=pointarc(cc,330);
    path HexaPaiement;
    HexaPaiement=polygone(R,S,T,U,V,W);
    trace CadrePanneauPrio(A,B,C,D,2mm);
    fill polygone(I,J,K,L) withcolor blue;
    fill HexaPaiement withcolor 0.5[Yellow,Orange];
    fill homothetie(HexaPaiement,O,0.8) withcolor blue;
    MiseEchelle;
  \end{mplibcode}%
}%