我需要检查一个点是否在由三角形组成的任意凹面网格内。
我正在使用“向任意方向发射光线并检查三重交点的数量……偶数表示点在外部,奇数表示点在内部”方法来对此进行测试。
如果光线总是射到三角形的内部,就没有问题。但是,如果光线击中边或顶点,就会导致问题。
例如,假设 4 个三角形都共享一个公共(public)顶点。如果光线穿过该顶点,则所有 4 个三角形都将报告命中。在那种情况下,即使起点在网格内部,它也会报告 4 个交点并考虑网格外部的点。当光线穿过由多个三元组共享的边时,会出现类似的问题。
有什么好的方法可以解决这个问题吗?我的第一个想法是简单地排除与其他已经测试过的 tris 共享顶点的 tris...但这只会产生更多问题。
最佳答案
我想在那种情况下,您可以简单地将所有生命值信息收集在一个数组中,然后遍历该数组以获取不同的点并且不计入重复点,然后检查简化数组的偶数或奇数长度。
关于testing - 网格点测试 : dealing with problematic cases?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10219852/