Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 射线囊交点_Algorithm_Math_Geometry_Intersection - Fatal编程技术网

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
,则有两个相交点,如果相等,则有一个接触点


要计算交叉点,请按照您描述的操作

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