algorithm - GJK 中的碰撞点

标签 algorithm collision-detection

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

最佳答案

您要求的内容不合适。如果它们发生碰撞,则交点是未定义的——因为交点实际上是一个重叠区域,因此可能是任意数量的点。相反,您应该将“交点”视为时空坐标 (dx,dy,dz,t),代表撞击时间,以及两个物体之间的平移矢量,为您提供它们的相对配置.

修改 GJK 以计算时空交集的一种方法是对扫描体积进行二分搜索,以找到撞击前的时刻。使用此数据,您可以计算两个物体的分离轴和相应的极值点,从而为您提供接近撞击点的近似值。如果您重复使用先前搜索迭代中的单纯形来加速后续测试,则此方法也可以很快。 Christer Ercisson 在此处对这项技术做了一些说明:http://realtimecollisiondetection.net/pubs/SIGGRAPH04_Ericson_GJK_notes.pdf

关于algorithm - GJK 中的碰撞点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3076204/

相关文章:

javascript - 我的碰撞检测算法似乎甚至在物体接触之前就触发了

python - 如何使用不同的步骤迭代两个文件而不使用python将它们全部加载到内存中?

android - Android 可用的最快颜色量化算法是什么?

java - 写一个算法来找到最大值

c++ - 我将如何编写一个 for 循环来检查每个像素是否发生碰撞?

python - Pygame 碰撞检测对象和矩形

javascript - 使用 Crafty.js 游戏引擎进行水平碰撞检测

algorithm - 无除法快速平均

Python Pandas 优化算法 : compare datetime and retrieve datas

java - 如何检测物体之间的碰撞