2011-08-12 55 views
0

我有一个由两个点AB和半径r定义的胶囊。射线由公式定义:X = O + D*t。现在我需要为所有(0-2)交点获得tRay-Capsule交叉点

一种可能的解决方案是计算与球体的交点AB以及与圆柱体的交点。然后,因为胶囊是凸的,我只需要最小和最大的所有t值。

但是如wikipedia所述,胶囊相交测试应该比柱面相交测试更简单。有人能指点我一个有效的胶囊射线相交算法吗?

回答

5

要测试的胶囊是否相交的射线线的线段交叉点AB和射线线之间只是测试距离。如果距离小于半径r则存在两个相交点,如果相等,则存在一个接触点。

按照您所描述的计算交点。

0

只是一个猜测:维基百科意味着两个胶囊的交集,它确实似乎是两个柱面的交集更简单。

我就像描述搜索交点...

1

使用射线和线段之间的最近点在所有情况下都不起作用,如果射线位于胶囊的半径内并且与胶囊大致平行/较浅的角度,则可以导致计算碰撞胶囊的另一端