将一对/点定义为沿路径长度的一对/点 METAPOST

将一对/点定义为沿路径长度的一对/点 METAPOST

是否可以将一对定义为沿指定路径长度的点?

例如

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.

相关内容