【发布时间】:2009-07-11 01:31:06
【问题描述】:
我的问题很简单。我有两个四面体,每个四面体都有一个当前位置、一个空间线速度、一个角速度和一个质心(实际上是旋转中心)。
有了这些数据,我试图找到一种(快速)算法,它可以精确地确定(1)它们是否会在某个时间点发生碰撞,如果是这样,(2)在它们碰撞多长时间后(3) 碰撞点。
大多数人会通过进行三角形-三角形碰撞检测来解决这个问题,但这会在冗余操作上浪费一些 CPU 周期,例如在检查不同三角形时检查一个四面体的同一边与另一个四面体的同一边。这只是意味着我会稍微优化一下。没什么好担心的。
问题是我不知道任何考虑自旋转的公共 CCD(连续碰撞检测)三角形三角形算法。
因此,我需要一个可以输入以下数据的算法:
- 三个三角形的顶点数据
- 旋转/质量的位置和中心
- 线速度和角速度
并会输出以下内容:
- 是否有碰撞
- 碰撞发生多长时间后
- 碰撞发生在空间的哪个点
提前感谢您的帮助。
【问题讨论】:
-
+1 只是因为标题太酷了——如果你在尝试,你就不可能做得更好!-)。 (抱歉,我在 3D 计算几何方面没有足够的专业知识来实际提供帮助)。
-
是的,这是一个很酷的标题。我不记得足够的数学来解决这个问题,但我相信你会想要解决一个微分参数方程,建模当前位置 (x,y,z) = (f(t),g(t),h(t )) 对于每个对象。您可以通过首先根据每个对象的最小球体确定它们是否足够接近以使其成为碰撞来优化它。如果它们不是,它们就不会发生碰撞。如果是,那么您可以进行复杂的计算。
-
在这里操作。我可能会使用其他技术来过滤哪些对象对实际上需要进行碰撞测试(有些人称之为broadphase)。如果没有人提出任何真正的方程或更好的方法,我将把所有东西放在一个距离方程中(关于时间)并编写一个算法来试图找到它的解决方案。老实说,我真的不想这样做,尤其是如果它已经完成的话。
标签: physics collision-detection