GJK中的碰撞点

时间:2010-06-19 16:15:15

标签: algorithm collision-detection

有没有办法修改Gilbert-Johnson-Keerthi算法,以便找到两个物体之间碰撞的点而不是真/假结果?根据我的理解,可以使用接收到的距离值来找到这些点。我在网上搜索但没有找到任何提示。

2 个答案:

答案 0 :(得分:3)

你所要求的并不是很好。如果它们是碰撞的,则交叉点是未定义的 - 因为交叉点实际上是重叠区域,因此可以是任意数量的可能点。相反,您应该将“交点”视为时空中的坐标(dx,dy,dz,t),表示撞击的时间,以及两个物体之间的平移向量,为您提供相对配置

修改GJK以计算时空交集的一种方法是在扫描体积上进行二元搜索,以找到影响之前的时刻。使用此数据,您可以计算两个物体的分离轴和相应的极值点,从而使您可以近似地看到撞击点。如果您重复使用先前迭代搜索中的单纯形来加速后续测试,则此方法也可以很快。 Christer Ercisson在这里有一些关于这种技术的注释:http://realtimecollisiondetection.net/pubs/SIGGRAPH04_Ericson_GJK_notes.pdf

答案 1 :(得分:1)

本文涵盖了我相信的问题,并且是最新的。我没有任何代码。并且不打算重新解释它,但是,作者在YouTube上也有一个解释它的pres up。现在正在处理代码,它们的例子很少。但这就是你想要的。您可以使用上述“效果较差”的方式。在纸上作为。因为它将很好地适合您的工作。除非您的目标是实现极高的性能。

“改进GJK算法,以实现凸对象之间更快,更可靠的距离查询”

MATTIA MONTANARI和NIK PETRINIC牛津大学

ETTORE BARBIERI伦敦玛丽皇后大学

https://ora.ox.ac.uk/objects/uuid:69c743d9-73de-4aff-8e6f-b4dd7c010907/download_file?safe_filename=GJK.PDF&file_format=application%2Fpdf&type_of_work=Journal+article