“添加”内的点坐标

“添加”内的点坐标

我是渐近线方面的初学者。

我想从点 B 到点 A 画一条线(带箭头的曲线),该线的张力比正常情况下更大(导致环路更小)。我决定创建一个函数来计算 A 和 B 之间的点 C,然后创建一条经过该点的路径,如下所示:B..C..A。

使用“dot”绘制点时,我发现它的位置很好。但是,在 add(...) 中使用“dot”,该点的位置不同,因此(红)线的位置也不同。

我错过了什么?

这是我得到的代码和图像:

real u = 8cm;
unitsize(u);
real m = 3mm;

pair inbetween(pair a, pair b, real y)
{
    return ( (b.x - a.x)*0.5 + a.x, y );
}


pair pos3 = (3,0);
pair pos4 = (4,0);

object n3 = draw("n3",box,pos3,m);
object n4 = draw("n4",box,pos4,m);

pair p4_3 = inbetween(pos3, pos4, -1);
dot(p4_3);

add(new void(picture pic, transform t) {    
    path c = point(n4,E,t){SE}..{NE}point(n3,W,t);
    draw(pic, c, Arrow );

    dot(pic,p4_3,red);
    path c = point(n4,E,t){SE}..p4_3..{NE}point(n3,W,t);
    draw(pic, c, red, Arrow );
});

这是输出。

答案1

这并不能直接回答您的问题,但我认为它提供了一种更简单的方法来完成您想要完成的任务:

real u = 8cm;
unitsize(u);

real m = 3mm;

pair inbetween(pair a, pair b, real y)
{
    return ( (b.x - a.x)*0.5 + a.x, y );
}


pair pos3 = (3,0);
pair pos4 = (4,0);

// Using currentpicture.copy() preserves the size information.
picture n3=currentpicture.copy(), n4=currentpicture.copy();
draw(n3,"n3",box,pos3,m);
add(n3);
draw(n4,"n4",box,pos4,m);
add(n4);

pair p4_3 = inbetween(pos3, pos4, -1);
dot(p4_3);
pair a = truepoint(n4,E,user=true);
pair b = truepoint(n3,W,user=true);
draw(a{SE} .. p4_3 .. {NE}b, arrow=Arrow());

结果:(请注意,如果您愿意使用,那么巨大的边界框是固定的settings.outformat = "pdf";。)

在此处输入图片描述

我还要指出的是,还有另一种内置方法来指定张力,尽管结果与你所做的并不相同:

settings.outformat="pdf";

real u = 8cm;
unitsize(u);

real m = 3mm;

pair pos3 = (3,0);
pair pos4 = (4,0);

// Using currentpicture.copy() preserves the size information.
picture n3=currentpicture.copy(), n4=currentpicture.copy();
draw(n3,"n3",box,pos3,m);
add(n3);
draw(n4,"n4",box,pos4,m);
add(n4);

pair a = truepoint(n4,E,user=true);
pair b = truepoint(n3,W,user=true);

//A more built-in way to handle tension:
int n = 5;
for (int i = 1; i <= n; ++i) {
  real weight = i/n;
  pen thepen = weight*blue + (1-weight)*red;
  draw(a{SE} .. tension i .. {NE}b, p=thepen, arrow=Arrow(TeXHead));
}

在此处输入图片描述

相关内容