射线与三角型、多边形相交测试

          一个点是否在多边形里面,只将这个点向任意方向作一个射线,若与这条射线有奇数条边相交则点在多边形里面,如果有偶数条边相交则在外面.
         实际上两个三角形合在一起,是一个四边形,对于这种多个图形合在一起的图形不要做公共边的测试就行了,把他当成一个多边形.或者两个三角形分开来测试也行。

GameRes论坛上的corpus说当交点接近公用边时,可能是因为计算误差,有时会出现两个三角形都发生相交或者都没发生相交的错误现象。我的那个程序里因为要处理任意模型,而且相交测试只是要返回具体交了那些面。所以公用边三角面合并成多变形的方法不太适用。我觉得主要还是在计算误差上,就类似说咱们最常见的光栅化,为什么网格模型渲染出来后你看不到三角面之间有重叠或者有缝隙一样。

6377说:这个算法是有毛病,我们现在都不用了。

tarkey说:判断下浮点误差就好了.
http://www.ziggyware.com/readarticle.php?article_id=78 这里有几个比较稳定的关于ray-tri intersection的,你可以看看.

这个问题我以后研究一下。待续。。。

GameRes的帖子地址:http://bbs.gameres.com/showthread.asp?threadid=72834



 

你可能感兴趣的:(图形算法)