GJK 中的碰撞点

发布于 2024-09-05 23:22:59 字数 103 浏览 4 评论 0原文

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

Is there a way to modify a Gilbert-Johnson-Keerthi Algorithm so it finds points of the collision between two bodies instead of a true/false result ? From what I've understood the received distance value could be used to find these points. I searched the web but didn't find any hints.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤芳又自赏 2024-09-12 23:22:59

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

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

What you are asking for is not well-posed. If they are colliding, then a point of intersection is undefined -- since the intersection is actually a region of overlap and thus could be any number of possible points. Instead, you should think about a "point of intersection" as a coordinate in space-time, (dx,dy,dz,t), representing the time of impact, together with a translation vector between the two bodies giving you their relative configurations.

One way to modify GJK to compute a space-time intersection is to do a binary search over the swept volume to find the moment of time right before impact. Using this data, you can compute a separating axis and corresponding extremal points for both bodies, which gives you a close approximation of the point of impact. This approach can also be fast if you reuse the simplices from previous iterations of the search to speed up subsequent tests. Christer Ercisson has some notes on this technique here: http://realtimecollisiondetection.net/pubs/SIGGRAPH04_Ericson_GJK_notes.pdf

泪冰清 2024-09-12 23:22:59

我相信这篇论文涵盖了您的问题,并且是最新的。我没有任何代码。不打算重新解释它,但是,作者在 YouTube 上也有一个解释它的前置。现在正在编写代码,他们的例子很少。但这就是你想要的。您可以使用提到的“效果较差”的方法。在论文中作为a。因为它非常适合您的工作。除非你的目标是极高的性能。

“改进 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=期刊+文章

This paper covers your question i believe, and is up to date. i'm don't have anycode. and not going to re-explain it, but, the author also has a pres up on YouTube explaining it. working on the code now, and their is very little examples. but this is what you want. you can use the "less effective" way mentioned. in the paper as a. as it will work just fine for your work. unless you goal is extremely high performance.

"Improving the GJK algorithm for faster and more reliable distance queries between convex objects"

MATTIA MONTANARI and NIK PETRINIC University of Oxford

ETTORE BARBIERI Queen Mary University of London

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文