很多时候需要检测一个点是否位于物体内部。vtk中很好的提供了这样的方法:vtkSelectEnclosePoints
vtk wiki中给出了一个很详细的例子说明使用方法:见参考文献1;
自己实际测试 发现其获取的结果不准确。同一个点重复检测都会出现不一致的结果。经过查询资料。得到了一个很好的了解。见参考文献2.
首先说一下该类的检测原理。按照参考文献2给出的解释:从待检测点发射一条射线。当射线与三维物体的交点为奇数个,则在物体内部。为偶数个则在物体外部。这个原理称之为奇偶规则。
获取结果不一致可能原因有三方面
1、保证物体的封闭性 不封闭的情况下可以进行漏洞填补(fillsHolesFilter)。填补完成要重新计算法向量
2、保证你的三维网格模型都为三角面片组成
3、设置合适的容差(tolerate)。按照列表中解释。vtkSelectEnclosePoints默认