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

问题描述 投票:0回答:1

简介: 我有一个由外表面表示的主体,以 STL 形式给出(一组三角形元素及其指向外的法向量)。 我正在尝试检测坐标给定的点是在身体内部还是外部。

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

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

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

编辑2: 找到答案了!

希望这有帮助!

math geometry nearest-neighbor cad
1个回答
0
投票

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

(这已添加到问题帖子本身)

© www.soinside.com 2019 - 2024. All rights reserved.