二维几何推送算法

时间:2017-12-11 10:20:23

标签: algorithm geometry computational-geometry

我有一个矩形板,其中有一些不相交的2D形状,如矩形,多边形和更复杂的几何形状,例如带有弧形/线条边缘的简单形状。 通常它们是紧凑的,但对于某些形状,我们可能能够旋转或平移它们。 如果我们根据给定方向移动一个几何体,则还应移动或旋转相邻几何体。看起来第一个几何体推动第二个几何体。第二个几何体可能会推动另外两个几何体。最后,我们可能会达到另一个稳定状态,或者没有空间推动。

对此有任何调查吗? 让我们首先关注简单的多边形,凸面和非凸面。 推动可能是任何方向。 example image

我正在做一些调查,但找不到有关此主题的现有文章。 我们可以通过力学或动力学来模拟它吗?还是纯几何算法?

纸质搜索的一些关键字也非常有用。

与EDA的自动推送概念类似。用户可以移动电路的一个元件(引脚/线),然后软件自动推送相邻元件,以保持拓扑结构并符合设计规则。

我想我可以在力学中使用一些概念,至少计算移动方向: 如果多边形A和多边形B的连接部分是一个点,则沿一个方向推A然后沿法线方向向B产生力。但这股力量可能不会产生动作。我们需要循环所有部件或到达边界以检查它可以移动多少。 让我们先忽略轮换。

1 个答案:

答案 0 :(得分:0)

我发布了一个答案,因为我没有足够的评论声誉。如果我不误解这个问题,几何上这听起来像是一个碰撞检测问题。您必须对几何体应用变换(平移,旋转),并检查此新位置是否与另一个几何体重叠。如果是这种情况,则必须对第二个应用另一个转换。碰撞检测是游戏和模拟中的一个重要话题。