胶囊到球体碰撞

时间:2019-05-26 19:03:58

标签: collision-detection

对于我在大学的数学系,我们必须手动计算球体是否与胶囊对撞机相撞。

Position Diagram

我要处理的信息是这个

您拥有以下Sphere:

LadyBird3-CentrePoint =(0,0,0),Radius = 18.0 还有以下胶囊

Sanic-BottomPoint =(0,2,6),TopPoint =(0,12,6),Radius = 5.0 确定是否发生以下成对冲突:

Sanic和LadyBird3 在我们的演讲中,我们被告知以下内容;

注意:在此步骤进行规范化并不重要

首先,我们要检查AC和AB的点积

如果该点积小于0,则表示从线段到C的最近点是A

所以我们可以返回AC的平方长度并停止任何进一步的计算

现在我们对BA和BC的点积进行相同的测试

再次,如果点积小于0,则B将是线段上最接近C的点,因此我们只返回BC的长度并停止任何进一步的计算。

投影...如果线段的两个点的点积返回> 0,我们需要将C投影到AB上以获得距离。如果这是我们关心的全部问题,则有一种有效的方法来获取平方距离:

SquaredDistance = AC.LengthSq-(AC。AB)*(AC。AB)/ AB.LengthSq

在此处执行点积运算时,我们需要确保其未标准化。

最后一步是使用该平方距离并将其与两个半径平方之和进行比较,以确定是否存在相交。

因此,我正在尝试计算它们是否相交或不使用上面的信息。

我所能想到的就是这个(从Sanics职位(TP,BP)中删除LadyBird3职位)

AC =(0,2,6)

AB =(0,-10,0)

点积= -20

BA =(0,10,0)

BC =(0,12,6)

点积= 120

感觉到我得到的值不正确,或者我正在执行的过程是错误的……有人能指出我正确的方向吗?

0 个答案:

没有答案