查找最接近点的元素 STL 格式

Finding nearest element to a point STL format

简短介绍: 我有一个 body,由 outer-surface 表示,以 STL 形式给出(一组三角形元素及其 outside-pointing 法向量)。 我正在尝试检测坐标给定的点是在 body.

内部还是外部

问题: 如何找到距给定点最近的元素? 更具体地说,假设您找到了离该点最近的顶点,并且该顶点由两个(或更多)元素共享。 "nearest" 哪个是? 请注意,最终结果是确定该点是在 body 内部还是外部。简单的法线距离(与法线的点积)不能解决问题,并且可能导致基于选择共享节点的元素中的哪个元素产生不明确的结果。 使用元素的质心也是有问题的。

非常欢迎任何建议和想法(尤其是来自以前参与过此问题的人)!

编辑: 我会让这个问题稍微难一点。假设有一个开放的表面(但它覆盖了整个域,因此每个点都位于表面的两侧之一,根据相对于法线的方向,无论是向内还是向外。 这也需要用同样的方法来回答。

编辑2: 已找到答案!

希望对您有所帮助!

问题已通过射线相交法的变体得到解决。 1. 使用 L2 范数(平方)找到最近的顶点。 2. 考虑共享顶点的元素。建议有一个连接列表,不要每次都映射它们。 3. Cast a ray 从兴趣点投射到第一个元素的质心。 4. 检查 <2> 中与射线相交的元素和 select 相交距离最短的元素 5. 使用交点向量与元素法线的点积(负号 = 外部,否则内部)

(已添加到问题 post 本身)