Defina um par/ponto como um par/ponto ao longo de um comprimento de caminho METAPOST

Defina um par/ponto como um par/ponto ao longo de um comprimento de caminho METAPOST

É possível definir um par como um ponto ao longo de um comprimento especificado de um caminho?

então por exemplo

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 

Responder1

Ojuntooperador definido no formato Metafun do MetaPost especifica um ponto como fração de um caminho:

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.

Para ser compilado com a membandeira: mpost --mem=metafun yourfile.mp. Resultado:

insira a descrição da imagem aqui

Como alternativa, você pode carregar o mp-tool.mpiipacote no início do seu programa (mas não se beneficiará de todas as capacidades do Metafun, como a transparência):

input mp-tool.mpii;

Ou se quiser manter o plainformato, você mesmo pode definir o alongoperador. É definido como tal noManual metafun, pág. 61:

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

No formato Metafun (cf. manual, idem p. 61) é também osobreoperador definido, que especifica a posição de um ponto com uma dimensão:

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

Aplicado ao nosso programa, seria usado assim, para o mesmo resultado:

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.

informação relacionada