2

我需要检查一个点是否在由 tris 组成的任意凹面网格内。

我正在使用“向任意方向发射光线并检查三交叉点的数量......偶数表示点在外面,奇数表示在里面”方法来测试这一点。

如果光线总是击中 tri 的内部,则没有问题。但是,如果光线击中边缘或顶点,则可能会导致问题。

例如,假设 4 个 tris 都共享一个公共顶点。如果光线通过该顶点,所有 4 个 tris 都将报告命中。在这种情况下,即使起点在网格内,它也会报告 4 个交点并考虑网格外的点。当一条光线穿过一个由多个 tri 共享的边时,也会出现类似的问题。

有什么好的方法可以解决这个问题吗?我的第一个想法是简单地排除与其他已经测试过的 tris 共享顶点的 tris……但这只会产生更多问题。

4

1 回答 1

0

我想在这种情况下,您可以简单地在一个数组中收集所有命中点信息,然后遍历该数组以获得不同的点并且不计入重复点,然后检查减少的数组的偶数或奇数长度。

于 2012-07-14T08:04:16.137 回答