怎么求射线与TopoDS_Shape的交点?

img

我现在想要从某点发射一条射线与TopoDS_Shape相交并获取交点。
因为我没找到射线与TopoDS_Shape相交的方法,所以只能通过射线与TopoDS_Face逐个求交,取距离源点最短那个交点的办法来获取交点。
但是由图中可知所求出来的交点不只1个,于是选择哪个就是个问题。
我想通过判定点是否在曲面上的办法求出交点,但是发现指定精度阈值以后,感官看上去的交点丢失了。于是怎么设置阈值又是个问题。
所以我想问的问题是
怎么求射线与TopoDS_Shape的交点?这里我想要的是最佳实践。
OpenCascade版本是7.5.0

在OpenCASCADE(OCE)中,可以使用BRepIntCurveSurface_Inter.hxx头文件中的BRepIntCurveSurface_Inter类求射线与TopoDS_Shape的交点。

下面是一个简单的代码示例:

img


这是一个简单的代码示例,你可以根据自己的需求修改。希望对您有所帮助!