我有一个由两个点A
和B
以及半径r
定义的包。光线由等式X = O + D*t
定义。现在我需要为所有(0-2)交叉点获得t
。
一种可能的解决方案是计算与A
和B
处的球体的交点以及与圆柱体的交点。然后因为胶囊是凸的,我只会得到所有t
值的最小值和最大值。
但正如wikipedia所述,胶囊相交测试应该比圆柱相交测试更简单。有人能指出我有效的胶囊射线交叉算法吗?
答案 0 :(得分:5)
要测试胶囊是否与光线相交,只需测试线段交叉点A
和B
与光线之间的距离。如果距离小于半径r
,则有两个相交点,如果相等则有一个触点。
如您所述计算交点。
答案 1 :(得分:2)
答案 2 :(得分:0)
只是一个猜测:维基百科意味着两个胶囊的交叉,它确实似乎更简单,两个圆柱的交叉。
我会像你描述的那样搜索交叉点......