简短介绍: 我有一个由外表面表示的体,以STL形式给出(三角形元素集和它们的外向法向量)。 我试图检测坐标给出的点是在体内还是体外。
问题: 如何找到给定点的最近元素? 更具体地说,您已经找到了到该点的最近顶点,并且该顶点由两个(或更多)元素共享。哪个是“最近的”? 请注意,最终结果是确定该点是在体内还是体外。简单的正常距离(具有法线的点积)不能解决问题,并且可能导致基于选择共享节点的哪个元素的模糊结果。 使用元素的质心也存在问题。
最受欢迎的是任何建议,想法(特别是那些曾参与此问题的人)!
编辑: 我会稍微努力一点。假设有一个开放的表面(但它覆盖整个域,以便每个点都在表面的两侧之一,根据相对于法线的方向进出。 这也需要使用相同的方法来回答。
EDIT2: 答案被发现了!
希望这有帮助!
答案 0 :(得分:0)
通过光线交叉法的变化来回答问题。 1.使用L2范数(平方)找到最近的顶点。 2.考虑共享顶点的元素。建议使用连接列表,而不是每次都映射它们。 3.投射光线从兴趣点投射到第一个元素的质心。 4.检查< 2>中的元素。与光线相交并选择具有最短交叉距离的光线。使用交叉向量的点积与元素法线(负号=外部,否则在内部)
(这已添加到问题帖子中)