如果我想编写一个Python脚本,以PDF格式生成矢量图形,那么什么工具适合这份工作?特别是,我需要绘制圆角的填充多边形(即由直线和圆弧组成的平面图形)。在
似乎matplotlib使绘制圆角矩形和具有锐角的一般多边形变得相当容易。然而,要绘制圆角多边形,似乎我必须首先计算出一条近似形状的Bézier曲线。在
还有更直接的方法吗?或者有没有另一个库可以用来计算Bézier曲线,它近似于我想要生成的形状?理想情况下,我只需为每个顶点指定(位置,角半径)对。在
下面是一个示例:我想指定红色多边形(+每个角的半径),库将输出灰色图形:
(对于凸多边形,我可以作弊,用粗笔画出多边形的轮廓。但是,这在非凸的情况下不起作用。)
至于生成PDF文件,我建议您看看cairo库,这是一个支持“绘制”到PDF表面的矢量图形库。它也有Python绑定。在
至于绘制圆角多边形,我不知道有任何图形库支持这种现成的。在
但在给定角半径的情况下,计算多边形角点的圆弧坐标也不必太复杂。基本上,你必须在两个相邻边的角平分线上找到一个点,这两个边的距离是
r
(即所需的半径)。这是圆弧的中心,为了找到起点和终点,您将从该点投影到两条边。在可能有一些不重要的情况,例如,如果多边形的边太短而无法容纳两个圆弧(我想在这种情况下,您必须选择一个较小的半径),或者其他情况,我目前不知道。。。在
高温
这里有一个有点老套的matplotlib解决方案。主要的复杂性与使用matplotlib
Path
对象构建复合Path
有关。在相关问题 更多 >
编程相关推荐