Определить пару/точку как пару/точку вдоль длины пути 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

TheвдольОператор, определенный в формате Metafun MetaPost, определяет точку как часть пути:

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.

Связанный контент