一种膨胀/放气(折中,缓冲)多边形的算法

一种膨胀/放气(折中,缓冲)多边形的算法

我如何“膨胀”一个多边形?也就是说,我想做一些类似的事情:

要求新的(膨胀的)多边形的边/点与旧的(原始的)多边形的边/点的距离是相同的(在示例图片中它们不是,因为那样的话,它就必须用弧线来表示膨胀的顶点,但是现在我们不要考虑这个问题了;)。

我要找的数学术语实际上是内/外多边形偏移..加1到巴林特指出这一点。另一种命名是多边形缓冲.

我的搜索结果:

以下是一些链接:


慕婉清6462132
浏览 720回答 3
3回答

胡说叔叔

我想我可以简单地提一下我自己的多边形裁剪和偏移库 - 剪刀.当剪刀主要是专为多边形裁剪操作,它也做多边形偏移。图书馆是开源免费软件写成Delphi、C+和C#..它有一个非常不受约束的助推许可证允许在免费软件和商业应用中免费使用。多边形偏移可以使用三种偏移方式之一-平方,圆形和人造板。

缥缈止盈

您正在寻找的多边形称为内向/外向偏移多边形在计算几何中,它与直骨架.这些是一个复杂多边形的几个等距多边形:这是另一个多边形的直骨架:正如在其他注释中所指出的那样,取决于您计划“膨胀/缩小”多边形的程度,您的输出结果可能会有不同的连接性。从计算的角度看:一旦你有了直线骨架,你就应该能够相对容易地构造出偏置多边形。开放源码和(对非商业性的免费)CGAL库有一个实现这些结构的包。看见此代码示例使用CGAL计算偏移多边形。这个包装手册应该为您提供一个关于如何构造这些结构的良好起点,即使您不打算使用CGAL,并且包含对具有数学定义和属性的论文的引用:CGAL手册:2D直骨架和多边形偏移

慕容森

听起来你想要的是:从顶点开始,沿相邻边缘逆时针方向面对.用放置在距离处的新的平行边替换边缘d旧的“左边”。重复所有边缘。找出新边的交点,得到新的顶点。检测你是否已经成为一个交叉多项式,并决定如何处理它。可能在交界处增加一个新的顶点,去掉一些旧的顶点。我不确定是否有更好的方法来检测这一点,而不是仅仅比较每一对不相邻的边缘,看看它们的交集是否位于两个顶点之间。生成的多边形位于与旧多边形“足够远”的顶点之间所需的距离。在顶点附近,距离上的一组点。d从旧的多边形,正如你说的,不是多边形,所以所述的要求不能得到满足。我不知道这个算法是否有一个名字,在网络上的示例代码,或一个可怕的优化,但我认为它描述了你想要的。
打开App,查看更多内容
随时随地看视频慕课网APP