
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 mem
Flag kompiliert: mpost --mem=metafun yourfile.mp
. Ergebnis:
Alternativ können Sie das mp-tool.mpii
Paket 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 along
Operator 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.