通过另一条路径的方向定义路径上的一个点

通过另一条路径的方向定义路径上的一个点

当我有两条路径时,是否可以定义一个点,例如:

beginfig(1);
  u := 1cm;
  path p[];
  p0 := (1u,3u)--(2u,2u);
  p1 := (2u,0)--(3u,2u);
  for i=p0,p1: draw i; endfor;
endfig;
end

这样如果继续p0的话p1,想要的点就在那里。

在此处输入图片描述

我尝试过dir* 命令,但我发现的所有示例似乎要么过于复杂,超出我的理解范围,要么在曲线定义中使用它们。

答案1

这就是你想要的吗?该whatever命令表示沿着连接两个点(作为参数给出)的直线的任意点,以便z5 = whatever[z1,z2]=whatever[z3,z4];求解结果方程并得出直线相交的点。

在此处输入图片描述

beginfig(1);
  u := 1cm;
  z1=(1u,3u);
  z2=(2u,2u);
  z3=(2u,0);
  z4=(3u,2u);
  draw z1--z2;
  draw z3--z4;
  z5 = whatever[z1,z2]=whatever[z3,z4];
  dotlabel.lrt("z5",z5);
endfig;
end

答案2

beginfig(1);
  u := 1cm;
  path p[];
  p0 := (1u,3u)..(.5u,2u)..(u,u);
  p1 := (2u,0)--(3u,2u);
  for i=p0,p1: draw i; endfor;
  z1-(u,u)=100*direction infinity of p0;
  z2-(u,u)=-100*direction infinity of p0;
  p2 := z1--z2;
  pickup pencircle scaled 4pt;
  drawdot p1 intersectionpoint p2;
endfig;
end

direction需要“时间”;因为p0是一条开放路径,时间点infinity是终点。因此,我计算切线上的两个点,并将切线定义为路径,找到它与路径的交点p1

在此处输入图片描述

这是您的原始图片:

beginfig(1);
  u := 1cm;
  path p[];
  p0 := (1u,3u)--(2u,2u);
  p1 := (2u,0)--(3u,2u);
  for i=p0,p1: draw i; endfor;
  z1-(2u,2u)=100*direction infinity of p0;
  z2-(2u,2u)=-100*direction infinity of p0;
  p2 := z1--z2;
  pickup pencircle scaled 4pt;
  drawdot p1 intersectionpoint p2;
endfig;
end

在此处输入图片描述

相关内容