使用minkowski和进行碰撞预测

时间:2013-07-12 21:07:20

标签: algorithm collision-detection collision convex-hull

我想使用minkowski和来预测两个凸形之间的确切碰撞点。根据我的理解,速度矢量与minkowski和相交的点是我必须沿着矢量移动我的物体的量,所以它们只是触摸(我已经知道它们会碰撞)。这是我的意思的一个例子(为简单起见,我只使用了矩形):

enter image description here

我的意思是我可以计算与凸包的每一条线的交点,并且只使用最接近的但看起来非常低效。我的想法是计算最接近向量的单纯形,但我不知道如何做到最好。我发现了一种算法,它可以计算物体之间的最小距离,或者更精确地确定从minkowski总和到原点的最小距离(http://www.codezealot.org/archives/153)。该算法的一部分试图找到最接近原点的单纯形,这是我想做的事情。我试图改变它以满足我的需求,但我没有成功。对我而言,听起来应该有一个非常简单的解决方案,但我对矢量数学并不是那么好。

我希望我的问题可以解决,因为我的英语不太好:D

1 个答案:

答案 0 :(得分:0)

您可以按如下方式转换问题:

1)旋转平面,使速度矢量变为水平

2)考虑多边形轮廓彼此面对的部分(这些是两条凸多边形线);现在你必须找到这两条折线之间的最短水平距离

3)通过其中一条折线的每个顶点,画一条水平线;这会将飞机划分为一组水平切片

4)使用剪切变换对每个切片进行变换,剪切变换通过水平移动将两个顶点定义到Y轴上;此变换保留水平距离

5)当第一条折线转换为直线(Y轴)时,另一条折线转换为另一条折线;找到最接近Y轴的顶点。这为您提供了碰撞矢量的长度。

作为副产品,如果Y值的范围重叠,步骤2)将告诉您多边形是否发生碰撞。