Ray-Capsule交叉口

时间:2011-08-12 07:03:33

标签: algorithm math geometry intersection

我有一个由两个点AB以及半径r定义的包。光线由等式X = O + D*t定义。现在我需要为所有(0-2)交叉点获得t

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

但正如wikipedia所述,胶囊相交测试应该比圆柱相交测试更简单。有人能指出我有效的胶囊射线交叉算法吗?

3 个答案:

答案 0 :(得分:5)

要测试胶囊是否与光线相交,只需测试线段交叉点AB与光线之间的距离。如果距离小于半径r,则有两个相交点,如果相等则有一个触点。

如您所述计算交点。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

我会像你描述的那样搜索交叉点......