
指定された長さのパスに沿ったポイントとしてペアを定義することは可能ですか?
例えば
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
答え1
の平行MetaPost の Metafun 形式で定義された演算子は、パスの一部である点を指定します。
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.
フラグを使用してコンパイルしますmem
:mpost --mem=metafun yourfile.mp
結果:
代わりに、mp-tool.mpii
プログラムの先頭でパッケージをロードすることもできます (ただし、その場合、透明性などの Metafun の全機能を利用できなくなります)。
input mp-tool.mpii;
あるいは、フォーマットに忠実に従いたい場合は、演算子を自分でplain
定義することもできます。along
Metafun マニュアル、61ページ:
primarydef pct along pat =
(arctime (pct * (arclength pat)) of pat) of pat
enddef;
Metafun形式(マニュアル参照、61ページ)では、の上次元を持つ点の位置を指定する演算子が定義されています。
primarydef len on pat =
(arctime len of pat) of pat
enddef;
これを私たちのプログラムに適用すると、同じ結果を得るために次のように使用されます。
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.