为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一种膨胀/放气(折中,缓冲)多边形的算法我如何“膨胀”一个多边形?也就是说,我想做一些类似的事情:要求新的(膨胀的)多边形的边/点与旧的(原始的)多边形的边/点的距离是相同的(在示例图片中它们不是,因为那样的话,它就必须用弧线来表示膨胀的顶点,但是现在我们不要考虑这个问题了;)。我要找的数学术语实际上是内/外多边形偏移..加1到巴林特指出这一点。另一种命名是多边形缓冲.我的搜索结果:以下是一些链接:多边形偏移策略综述多边形偏移量,问题缓冲多边形数据
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

我想我可以简单地提一下我自己的多边形裁剪和偏移库 - 剪刀.

剪刀主要是专为多边形裁剪操作,它也做多边形偏移。图书馆是开源免费软件写成Delphi、C+和C#..它有一个非常不受约束的助推许可证允许在免费软件和商业应用中免费使用。

多边形偏移可以使用三种偏移方式之一-平方,圆形和人造板。


查看完整回答
反对 回复 2019-07-11
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您正在寻找的多边形称为内向/外向偏移多边形在计算几何中,它与直骨架.

这些是一个复杂多边形的几个等距多边形:

这是另一个多边形的直骨架:

正如在其他注释中所指出的那样,取决于您计划“膨胀/缩小”多边形的程度,您的输出结果可能会有不同的连接性。

从计算的角度看:一旦你有了直线骨架,你就应该能够相对容易地构造出偏置多边形。开放源码和(对非商业性的免费)CGAL库有一个实现这些结构的包。看见此代码示例使用CGAL计算偏移多边形。

这个包装手册应该为您提供一个关于如何构造这些结构的良好起点,即使您不打算使用CGAL,并且包含对具有数学定义和属性的论文的引用:

CGAL手册:2D直骨架和多边形偏移


查看完整回答
反对 回复 2019-07-11
?
慕容森

TA贡献1853条经验 获得超18个赞

听起来你想要的是:

  • 从顶点开始,沿相邻边缘逆时针方向面对.
  • 用放置在距离处的新的平行边替换边缘

    d

    旧的“左边”。
  • 重复所有边缘。
  • 找出新边的交点,得到新的顶点。
  • 检测你是否已经成为一个交叉多项式,并决定如何处理它。可能在交界处增加一个新的顶点,去掉一些旧的顶点。我不确定是否有更好的方法来检测这一点,而不是仅仅比较每一对不相邻的边缘,看看它们的交集是否位于两个顶点之间。

生成的多边形位于与旧多边形“足够远”的顶点之间所需的距离。在顶点附近,距离上的一组点。d从旧的多边形,正如你说的,不是多边形,所以所述的要求不能得到满足。

我不知道这个算法是否有一个名字,在网络上的示例代码,或一个可怕的优化,但我认为它描述了你想要的。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 704 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信