3
我有一个有趣的问题,我一直试图解决一段时间。没有“正确的”解决方案,因为没有成功的严格标准。我想做到的是两个简单的多边形之间的多边形B.多边形多边形B.完全包含在一个平稳过渡,从多边形A两个相交多边形之间的平滑过渡(有趣的问题)
我对这个过渡标准是:
- 的过渡是在时间和空间上连续
- 从多边形A“填充”为多边形B的区域应填充好像A中有液体倒出成B形
- 重要的是,这个动画可以在飞行中进行计算,也可以通过一组需要的参数进行定义空间,比如少于几个Kb。
作弊是完美的罚款,任何方式来解决这个问题,使它看起来不错是一个可能的解决方案。
解决方案,我认为,和大多排除:
- 配对起来一个顶点和B,只需插。看起来不好,在凹多边形的情况下不起作用。
- 将区域B-A划分成凸多边形,也许是一个Voronoi图,并通过在较小的凸多边形上执行BFS来计算多边形的离散状态。然后我在离散状态之间进行插值。注意:如果多边形B-A是凸的,则转换相当平凡。我没有采用这个解决方案,因为将B-A划分成尺寸相同的小凸多边形令人惊讶地困难
- 模拟:细分多边形A.以离散的小步骤沿着多边形线正常(向外)移动每个顶点。对于每一步,检查顶点是否仍然在B内。如果不是,则返回到前一个位置。重复,直到A等于B.我不喜欢这个解决方案,因为检查一个顶点是否在一个多边形内是很慢的。
有没有人有任何不同的想法?
对于堆栈溢出,这不是一个合适的问题。它太宽泛了,你基本上要求别人为你写代码(或者至少为你提供一个算法)。 – user1118321