如何为多边形创建一个内螺旋?

4
对于任何形状,如何在其中创建一个类似形状的螺旋。这与包围(使用Minkowski和)的想法类似。但不是在形状内创建相同的形状,而是创建相同形状的螺旋。
我找到了这个 - http://www.cis.upenn.edu/~cis110/13su/lectures/Spiral.java
它基于传递的参数创建螺旋,因此可以用于任何常规形状。
我想要上述所有形状,即不规则多边形。
我对几何术语并不非常熟悉,但我已经查过纠线和内部螺旋搜索算法,但对我没有用。
有人知道我在哪里可以找到这样的算法或者至少有什么想法吗?
2个回答

3

这项任务非常难。

  1. 需要有要用螺旋线填充的边界多边形

    我想你已经有了它

  2. 通过向内移动所有线条来创建新的较小多边形,步距为螺旋线宽度。

    这类似于在多边形周围创建描边线。步距是螺旋线宽度,因此在多边形的起点处为0,在末端处为d

  3. 从新生成的螺旋线中删除无效线条

    一些拐角和曲率上的线条会相交。这很难可靠地检测/修复,请参见

  4. 重复(进行下一个螺旋线)......直到找不到螺旋线的空间

    但现在,在第一个螺旋线之后,步距始终为d,这不一定会填满整个形状。例如,如果您在形状上有一些较薄的点,则会更快地填充它们,因此仍然可能存在一些孔。

    您应该检测它们并根据需要处理,请参见

    请注意,检测区域是否填充也不是简单的。

这就是这种方法的外观:

overview

[注]

如果您忘记螺旋线,并希望使用锯齿形或类似图案填充内部,则这并不难。

螺旋填充涉及许多困难的几何问题,如果您不熟悉几何和向量数学,那么这项任务可能对初学者甚至中等技能水平的程序员来说都是一个巨大的挑战,难以正常工作。这至少是我的观点(因为我以前做过这个),所以要认真对待。


0

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