我需要检查一个点是否在由 tris 组成的任意凹面网格内。
我正在使用“向任意方向发射光线并检查三交叉点的数量......偶数表示点在外面,奇数表示在里面”方法来测试这一点。
如果光线总是击中 tri 的内部,则没有问题。但是,如果光线击中边缘或顶点,则可能会导致问题。
例如,假设 4 个 tris 都共享一个公共顶点。如果光线通过该顶点,所有 4 个 tris 都将报告命中。在这种情况下,即使起点在网格内,它也会报告 4 个交点并考虑网格外的点。当一条光线穿过一个由多个 tri 共享的边时,也会出现类似的问题。
有什么好的方法可以解决这个问题吗?我的第一个想法是简单地排除与其他已经测试过的 tris 共享顶点的 tris……但这只会产生更多问题。