2d几何推送算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2d几何推送算法相关的知识,希望对你有一定的参考价值。
我有一个矩形板,其中有一些不相交的2D形状,如矩形,多边形和更复杂的几何形状,如带弧/线边的简单形状。通常它们是紧凑的,但对于某些形状,我们可能能够旋转或平移它们。如果我们根据给定方向移动一个几何体,则还应移动或旋转相邻几何体。看起来第一个几何体推动第二个几何体。第二个几何体可能会推动另外两个几何体。最后,我们可能会达到另一个稳定的状态,或者没有空间推动。
对此有任何调查吗?让我们首先关注简单的多边形,凸面和非凸面。推动可能是任何方向。 example image
我正在做一些调查,但找不到关于这个主题的现有论文。我们可以通过力学或动力学来模拟它吗?还是纯几何算法?
只是纸张搜索的一些关键字也非常有用。
它与EDA的自动推送概念类似。用户可以移动电路的一个元件(引脚/线),然后软件自动推送相邻元件,以保持拓扑并满足设计规则。
我想我可以在力学中使用一些概念,至少计算移动方向:如果多边形A和多边形B的连通部分是一个点,那么按一个方向推A然后沿法线方向向B产生一个力。但这股力量可能不会产生动作。我们需要循环所有部件或到达边界以检查它可以移动多少。让我们先忽略轮换。
答案
我发布了一个答案,因为我没有足够的评论声誉。如果我不误解这个问题,几何上这听起来像是一个碰撞检测问题。您必须对几何体应用变换(平移,旋转),并检查此新位置是否与另一个几何体重叠。如果是这种情况,则必须对第二个应用另一个转换。碰撞检测是游戏和模拟中的一个重要话题。
以上是关于2d几何推送算法的主要内容,如果未能解决你的问题,请参考以下文章