Algorithm 射线囊交点
我有一个由两点定义的胶囊Algorithm 射线囊交点,algorithm,math,geometry,intersection,Algorithm,Math,Geometry,Intersection,我有一个由两点定义的胶囊a和B和半径r。射线由方程定义:X=O+D*t。现在我需要得到所有(0-2)交点的t 一种可能的解决方案是计算在A和B处与球体的交点以及与圆柱体的交点。因为胶囊是凸的,所以我只取所有结果t值的最小值和最大值 但按照国家规定,胶囊交叉试验应该比圆柱交叉试验更简单。有人能给我指出一种有效的胶囊射线相交算法吗?只是一个猜测:维基百科的意思是两个胶囊的相交,两个圆柱体的相交似乎更简单 我会像您描述的那样搜索交点…要测试胶囊是否与射线线相交,只需测试线段交叉点a和B与射线线之间的距
a
和B
和半径r
。射线由方程定义:X=O+D*t
。现在我需要得到所有(0-2)交点的t
一种可能的解决方案是计算在A
和B
处与球体的交点以及与圆柱体的交点。因为胶囊是凸的,所以我只取所有结果t
值的最小值和最大值
但按照国家规定,胶囊交叉试验应该比圆柱交叉试验更简单。有人能给我指出一种有效的胶囊射线相交算法吗?只是一个猜测:维基百科的意思是两个胶囊的相交,两个圆柱体的相交似乎更简单
我会像您描述的那样搜索交点…要测试胶囊是否与射线线相交,只需测试线段交叉点
a
和B
与射线线之间的距离。如果距离小于半径r
,则有两个相交点,如果相等,则有一个接触点
要计算交叉点,请按照您描述的操作 在所有情况下,使用光线和线段之间的最近点都不起作用。如果光线在胶囊半径范围内且与胶囊大致平行/浅角度,则可能导致在胶囊的另一端计算碰撞