如何围绕线生成缓冲或任何类型的几何形状?
对Shapely等可用软件包不感兴趣,但希望实施。
答案 0 :(得分:4)
在数学上,此操作是Minkowski sum。你应该在一本关于计算几何的好书中找到一个参考和一些伪代码。尝试O' Rourke的Computational Geometry in C,或Berg等的Computational Geometry: Algorithms and Applications。
答案 1 :(得分:3)
<强>编辑:强> 这可以看作间接解决方案。如果您可以将几何形状作为图像,即2D矩阵,那么您可以实现(见下文)简单的函数,如膨胀/侵蚀(相当简单的内核作业)等,以使图像上的所有形状(现在像素)周围的周围区域。
这比做硬数学更直接。以下显示了一个实验。 算法很简单:
就是这样。
显然,对于花哨的输出,您可以使用轮廓或其他功能从输出中生成线条。
<强>更新强> 请注意,如上所述,这个想法非常简单,实际上是基于多边形,线条或问题中的任何内容的矩阵演示。也就是说,分辨率由表示矩阵的维度定义。然而,一个优点是它适用于任何复杂的输入。
角落看起来是圆形的。[/ p>
答案 2 :(得分:0)
这是扩张的一种解决方案。
使用bresenham的线条算法。
for each pixel <p> along the line.
check surrounding pixels and fill all pixels <p'> that have that have distance(p,p') < radius <r>.
半径r是您要使用的圆的预定半径。