轮廓向量形状算法

4

假设红线是由一系列点组成的序列。

enter image description here

我正在寻找一种算法,可以创建粗黑形状的轮廓(也作为一系列点的形式),使它们有清晰的顺序。此外,这个轮廓还应该保持到自身的最小距离。

应该使用什么算法来实现这一目标呢?


外形的标准是什么? - Apalala
应该是一条干净的线(大红色区域中没有任何点,只有在边界上)。 - Mat
@Mat - 我认为@Apalala的问题是,红线和黑边框之间的关系是什么?如果不知道它们之间的关系,就无法定义一个算法来从一个生成另一个。 - Ted Hopp
啊,我明白了。黑色边框与红线保持着恒定的最小距离,并且它还与任何其他黑色轮廓保持另一个最小距离。与其他黑色轮廓的距离约束优先于红线约束。 - Mat
就黑-黑规则而言,最小距离显然并不能完全描述您的意图(例如,为什么它不适用于形状的内部上角?相邻点怎么办——它们很可能会落在最小距离以下?)。您能进一步量化黑-黑规则吗? - wnrph
显示剩余2条评论
1个回答

2
您需要两种偏移算法
  1. 在两个方向上偏移曲线以产生轨道。
  2. 向内偏移封闭曲线以产生一个或多个较小的封闭多边形。

设r为到红线的距离,b为黑线/轨道之间所需的墙壁厚度。

  • 使用算法1将红线偏移r。这可能会产生重叠的轨道,即具有“斑点状”区域。
  • 使用算法2向内偏移红线。使用二分搜索找到使形状分裂成两个或消失的距离d。如果d > b,则向内偏移d - b以产生第二个区域。否则,算法失败。
  • 从第一个区域中减去第二个区域。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接