我有一个由两个点A
和B
和半径r
定义的胶囊。射线由公式定义:X = O + D*t
。现在我需要为所有(0-2)交点获得t
。Ray-Capsule交叉点
一种可能的解决方案是计算与球体的交点A
和B
以及与圆柱体的交点。然后,因为胶囊是凸的,我只需要最小和最大的所有t
值。
但是如wikipedia所述,胶囊相交测试应该比柱面相交测试更简单。有人能指点我一个有效的胶囊射线相交算法吗?
我有一个由两个点A
和B
和半径r
定义的胶囊。射线由公式定义:X = O + D*t
。现在我需要为所有(0-2)交点获得t
。Ray-Capsule交叉点
一种可能的解决方案是计算与球体的交点A
和B
以及与圆柱体的交点。然后,因为胶囊是凸的,我只需要最小和最大的所有t
值。
但是如wikipedia所述,胶囊相交测试应该比柱面相交测试更简单。有人能指点我一个有效的胶囊射线相交算法吗?
要测试的胶囊是否相交的射线线的线段交叉点A
和B
和射线线之间只是测试距离。如果距离小于半径r
则存在两个相交点,如果相等,则存在一个接触点。
按照您所描述的计算交点。
只是一个猜测:维基百科意味着两个胶囊的交集,它确实似乎是两个柱面的交集更简单。
我就像描述搜索交点...
使用射线和线段之间的最近点在所有情况下都不起作用,如果射线位于胶囊的半径内并且与胶囊大致平行/较浅的角度,则可以导致计算碰撞胶囊的另一端