Des vecteurs et des repères (mp-geom2d)

Auteur ou autrice : Jean-Michel Sarlat.

Mise en ligne le 19 mai 2025

Image du résultat de l’exemple

mp-geom2d a été écrit avec le but de proposer des macros MetaPost permettant de réaliser une figure de géométrie en collant d’assez près à une description impérative :

  • Soit $A$ le point de coordonnées $(2,3)$.
  • Soit $B$ le point de coordonnées $(4,5)$.
  • Trace la droite $(A,B)$.
  • ...

Ici, on montre les exemples de la galerie de la documentation à la fois dans l’interface en français et celle en anglais.

Code



input geom2d;

labeloffset := 4;
gddU:=1.cm;

beginfig(1);
  O = Point(0,0);
  I = Point(1,0);
  J = Point(0.3,0.8);
  M = PointDansRepere(5,3,O,I,J);
  H = PointDansRepere(5,0,O,I,J);
  K = PointDansRepere(0,3,O,I,J);
  O' = Point(3,2);
  I' = Point(3.7,1.8);
  J' = Point(2.8,3);

  pair Mt;
  Mt = CoordonneesRepere(M,O',I',J');
  H' = PointDansRepere(xpart Mt,0,O',I',J');
  K' = PointDansRepere(0,ypart Mt,O',I',J');

  Repere(8,6,1.5,1.5,1,1);
  Debut;
    trace Droite(O,I);
    trace Droite(O,J);
    trace Droite(O',I');
    trace Droite(O',J');

    trace Pt(K)--Pt(M)--Pt(H) dashed evenly;
    trace Pt(K')--Pt(M)--Pt(H') dashed evenly;

    marque.urt  "M";

    drawoptions(withpen pencircle scaled 1pt withcolor DodgerBlue);
    fleche Segment(O,K);
    fleche Segment(O,H);
    fleche Segment(O,M);

    drawoptions(withpen pencircle scaled 1pt withcolor LimeGreen);
    fleche Segment(O',M);
    fleche Segment(O',H');
    fleche Segment(O',K');

    drawoptions(withpen pencircle scaled 1.5pt withcolor Crimson);
    fleche Segment(O,I);
    fleche Segment(O,J);
    fleche Segment(O',I');
    fleche Segment(O',J');

    drawoptions(withpen pencircle scaled 1pt withcolor LightCoral);
    fleche Segment(O,O');

    drawoptions();
    marque.llft "O";
    marque.llft "O'";

    label.bot(textext("\(x\)"), PtR(H));
    label.lft(textext("\(y\)"), PtR(K));
    label.bot(textext("\(\vec\imath\)"), PtR(I));
    label.lft(textext("\(\vec\jmath\)"), PtR(J));

    label.bot(textext("\(x'\)"), PtR(H'));
    label.urt(textext("\(y'\)"), PtR(K'));
    label.bot(textext("\(\vec\imath'\)"), PtR(I'));
    label.lft(textext("\(\vec\jmath'\)"), PtR(J'));

  Fin;
endfig;
end


%%%% English version

labeloffset := 4;
gddU:=1.cm;

beginfig(1);
  O = Point(0,0);
  I = Point(1,0);
  J = Point(0.3,0.8);
  M = PointInBasis(5,3,O,I,J);
  H = PointInBasis(5,0,O,I,J);
  K = PointInBasis(0,3,O,I,J);
  O' = Point(3,2);
  I' = Point(3.7,1.8);
  J' = Point(2.8,3);

  pair Mt;
  Mt = CoordinatesInBasis(M,O',I',J');
  H' = PointInBasis(xpart Mt,0,O',I',J');
  K' = PointInBasis(0,ypart Mt,O',I',J');

  Frame(8,6,1.5,1.5,1,1);
  gddBegin;
    gddDraw Line(O,I);
    gddDraw Line(O,J);
    gddDraw Line(O',I');
    gddDraw Line(O',J');

    gddDraw Pt(K)--Pt(M)--Pt(H) dashed evenly;
    gddDraw Pt(K')--Pt(M)--Pt(H') dashed evenly;

    gddMark.urt  "M";

    drawoptions(withpen pencircle scaled 1pt withcolor DodgerBlue);
    gddArrow Segment(O,K);
    gddArrow Segment(O,H);
    gddArrow Segment(O,M);

    drawoptions(withpen pencircle scaled 1pt withcolor LimeGreen);
    gddArrow Segment(O',M);
    gddArrow Segment(O',H');
    gddArrow Segment(O',K');

    drawoptions(withpen pencircle scaled 1.5pt withcolor Crimson);
    gddArrow Segment(O,I);
    gddArrow Segment(O,J);
    gddArrow Segment(O',I');
    gddArrow Segment(O',J');

    drawoptions(withpen pencircle scaled 1pt withcolor LightCoral);
    gddArrow Segment(O,O');

    drawoptions();
    gddMark.llft "O";
    gddMark.llft "O'";

    label.bot(textext("\(x\)"), PtR(H));
    label.lft(textext("\(y\)"), PtR(K));
    label.bot(textext("\(\vec\imath\)"), PtR(I));
    label.lft(textext("\(\vec\jmath\)"), PtR(J));

    label.bot(textext("\(x'\)"), PtR(H'));
    label.urt(textext("\(y'\)"), PtR(K'));
    label.bot(textext("\(\vec\imath'\)"), PtR(I'));
    label.lft(textext("\(\vec\jmath'\)"), PtR(J'));

  gddEnd;
endfig;
end


Mots clés : géométrievecteurrepèremp-geom2d

Cet exemple fait partie de la collection d’exemples Documentation de mp-geom2d.

Fichiers

Télécharger l’archive complète