将一个2D多边形完全置于另一个内部的翻译是什么?

时间:2018-01-25 18:29:17

标签: geometry

给定两个2D多边形,如何计算第一个在第二个内部带来第一个的最短平移?

  1. 假设有一个解决方案(即第一个确实适合第二个)
  2. 首选简单的算法而不是解决方案的完整性。例如,如果通过假设关于具有一定数量的边,凹面等的形状来简化算法,则进行这些假设。
  3. 我可以想象一个强力解决方案,我首先计算哪些是位于初始多边形之外的有问题的顶点。然后,我遍历这些外部顶点并找到每个顶点的最近边缘。然后,我被卡住了。从外部顶点到边缘的每个距离都会产生约束("需要移动")。然后我需要解决这个约束系统来找到满足它们的运动,而不会产生任何新的违规。

1 个答案:

答案 0 :(得分:2)

我不确定这是否可以作为一般解决方案,但至少应该从以下几点开始:

我们想将绿色多边形移动到红色多边形中。我们使用几种翻译。每个翻译都由起点和终点定义。

步骤1:起点是绿色多边形中最左侧顶点和最右侧顶点之间的中点。终点,与红色多边形相同的标准:

enter image description here

步骤2:起点是最顶点和最低点之间的中点。终点,与红色多边形相同的标准:

enter image description here

请注意,setps 1& 2是一种居中。具有中点的此方法类似于使用边界框。其他方式是使用外接圆,但它们很难获得。

步骤3:找到最靠近绿色多边形边缘的红色多边形中的顶点。您将需要迭代所有这些。找到垂直于该边缘的直线:

enter image description here

嗯,这并不完美。根据给定的多边形,最好以另一种方式进行:绿色的最近顶点和红色的边缘。选择最小距离。

最后,沿着那条线移动绿色多边形:

enter image description here

如果这种方法不起作用(我确定它有失败的情况),那么你也可以沿着一条线移动内部多边形(红色边缘或解决问题的垂直方向。并继续前进,直到找不到问题。