在多边形路径中每条线段的末端绘制箭头

在多边形路径中每条线段的末端绘制箭头

我需要绘制多边形路径,并在每个线段的末端放置一个箭头,如下图所示。

在此处输入图片描述

上面的图片是用 Inkscape 制作的(我必须逐字逐句地在 A 和 B 处创建箭头的三角形并适当地调整它们的方向)。

我可以在 Asymptote 中自动获得这样的箭头吗?从手册中我了解到的信息来看,有各种各样的箭头形状可供选择,但没有选项可以将它们放置在多边形路径的每个段的末端。

例如下面的代码产生

unitsize(5cm);
settings.outformat = "png"; 

draw((0,0) -- (1,0.2) -- (0,1)--(2,2), arrow=Arrow); 

在此处输入图片描述

其中箭头仅位于端点 (2,2)。

答案1

我不知道有内置方法可以做到这一点,但这是我编写的一个简短函数来实现这一点。它使用内置length()subpath()函数。

unitsize(5cm);
settings.outformat = "png"; 

void segmentArrows(path p) {
    for (int i = 0; i < length(p); ++i) {
        draw(subpath(p, i, i+1), arrow=Arrow);
    }
}

segmentArrows((0,0)--(1,0.2)--(0,1)--(2,2)); 

在此处输入图片描述

相关内容