我正在尝试使用 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);
}