Definieren Sie ein Paar/Punkt als Paar/Punkt entlang einer Pfadlänge METAPOST

Definieren Sie ein Paar/Punkt als Paar/Punkt entlang einer Pfadlänge METAPOST

Ist es möglich, ein Paar als Punkt entlang einer bestimmten Pfadlänge zu definieren?

also zum Beispiel

beginfig
u=2cm;
path x;
x=(0,0)..u*dir(225);
%v= a point along a fraction of the length of x in a specific direction 
endfig 

Antwort1

DerentlangDer im Metafun-Format von MetaPost definierte Operator gibt einen Punkt als Bruchteil eines Pfades an:

beginfig(1);
  u=2cm;
  path x; x=(0,0)..u*dir(225); draw x;
  pair v; v = point .3 along x;
  dotlabel.lrt(btex v etex, v);
endfig;
end.

Wird mit dem memFlag kompiliert: mpost --mem=metafun yourfile.mp. Ergebnis:

Bildbeschreibung hier eingeben

Alternativ können Sie das mp-tool.mpiiPaket auch am Anfang Ihres Programms laden (dann profitieren Sie allerdings nicht von den gesamten Möglichkeiten von Metafun, wie etwa Transparenz):

input mp-tool.mpii;

Oder wenn Sie das Format beibehalten möchten plain, können Sie den alongOperator selbst definieren. Er ist als solcher definiert inMetafun-Handbuch, S. 61:

primarydef pct along pat = 
  (arctime (pct * (arclength pat)) of pat) of pat
enddef;

Im Metafun-Format (vgl. Handbuch, ebenda S. 61) ist auch dieAnOperator definiert, der die Position eines Punktes mit einer Dimension angibt:

primarydef len on pat =
  (arctime len of pat) of pat 
enddef;

Auf unser Programm angewendet würde es folgendermaßen verwendet werden und zum gleichen Ergebnis führen:

beginfig(1);
  u=2cm;
  path x; x=(0,0)..u*dir(225); draw x;
  pair v; v = point .6cm on x;
  dotlabel.lrt(btex v etex, v);
endfig;
end.

verwandte Informationen