SVG 中的图案

SVG 中的图案

我正在尝试使用 Asymptote 中的填充图案填充不规则的 2D 形状并将其输出为 svg。结果是一个低分辨率的像素化光栅图像。除了从头开始编写实现之外,还有其他方法可以生成矢量图案吗?

答案1

好的,这是我针对填充图案想出的解决方案:

void hatchfill(path path_to_fill, real angle, real dist, pen p=currentpen)
{
    picture pic;
    pair p1 = min(path_to_fill);
    pair p2 = max(path_to_fill);
    real diag = abs(p2 - p1);
    pair center = 0.5 * (p1 + p2);

    for (int i = 0; i < floor(diag / dist); ++i)
    {
        pair strt = center - 0.5*(diag, diag) + i*(dist, 0);
        pair end = strt + (0, diag);
        draw(pic, rotate(angle, center)*(strt -- end), p);
    }

    clip(pic, path_to_fill);
    add(pic);
}

相关内容