对于任何形状,我如何在其内部创建类似形状的螺旋。这与边界类似(使用Minkowski总和)。而不是在形状内部创建相同的形状,虽然它将是相同形状的螺旋。
我发现了这个 - http://www.cis.upenn.edu/~cis110/13su/lectures/Spiral.java
它根据传递的参数创建螺旋,因此它可以用于任何常规形状。
我想要所有形状的上述内容,即不规则多边形。
我对几何术语并不是很熟悉,但我也查找了渐开线和内部螺旋搜索算法,但对我没用。
有没有人知道我在哪里找到这样的算法,或者至少我想出怎样的想法呢?
答案 0 :(得分:2)
这项任务极难做到。
需要使用螺旋
填充边界多边形我认为你已经拥有它
通过将所有行向内移动来创建新的较小多边形。
类似于在多边形周围创建笔划线。 Step是螺丝宽度,因此在多边形开始时为0
,最后为d
从新生成的螺丝中删除无效行
角落和曲率上的某些线条将相交。这很难被可靠地检测/修复
重复(做下一个螺丝)......直到找不到螺丝的空间
但是现在在第一个螺丝之后,步骤总是d
,这不一定会填满整个形状。例如,如果你在形状上有一些较薄的斑点,那么它的填充速度会比其余部分快得多,所以仍然会留下一些洞。
你应该检测它们并按照你的需要处理
请注意检测区域是否填充也不是一件容易的事
这就是这种方法的样子:
<强> [注释] 强>
如果你忘记了螺旋,想要用锯齿形或类似的图案填充内部,那么这并不难。
螺旋填充会产生很多困难的几何问题,如果您不熟悉几何和矢量数学,那么这项任务对于初学者甚至是该领域的中等技术程序员来说都是一个太大的挑战,无法使其正常工作。这至少是我的意见(正如我之前所做的那样)所以这样处理它。
答案 1 :(得分:0)
我使用基于Voronoi图的中轴的polgyon的偏移来研究这样的事情。这并不简单。我无法分享代码,因为它属于我所在的公司,可能不完全符合您的需求。
但是我发现其他人也有类似的事情:
http://www.me.berkeley.edu/~mcmains/pubs/DAC05OffsetPolygon.pdf
http://www.cosy.sbg.ac.at/~held/teaching/seminar/seminar_2010-11/hsm.pdf