我正在尝试在我的 C++ 代码中实现椭球-椭球碰撞。简而言之,这个任务可以描述如下:假设我们在空间中有两个任意方向的椭圆,并且这个椭圆相交。这个椭圆最初位于坐标系的中心。我们需要找出我们需要将一个椭圆相对于另一个椭圆沿着连接它们的中心的线移动多远,直到不再相交。这是一个非常简单的数学任务。我使用下一个方程:
1)矩阵形式的椭球方程 2) 法线相等 其中是方向上的单位向量一个中心到另一个。我正在从这个系统中
我在本文的最后一页找到了这个系统及其解决方案http://www.matthiasmueller.info/publications/orientatedparticles.pdf似乎一切都很好,这个算法在大多数情况下都很好,但是我注意到了,对于某些椭圆会发生错误(我的意思是该算法给出的结果不准确)。我还注意到,该错误主要发生在椭圆半径之间的比率大于 2 时。为了解决这个问题,我将代码中的所有变量从浮点数更改为双精度数,但它没有给出任何结果。似乎输入数据中的小错误会导致输出数据中的非常大的错误。有人知道我如何克服这种不稳定吗?