三角形求交算法

三角形求交算法在光线追踪中,我们常常要处理对于Mesh的渲染,由于Mesh一般由一个个三角形所构成,因此需要我们去计算光线和Mesh每个三角形之间是否存在交点。这可以看做是一个射线和三角形的求交问题。《FundamentalsofComputerGraphics(3rdedition)》中提出了一个in

大家好,欢迎来到IT知识分享网。

在光线追踪中,我们常常要处理对于Mesh的渲染,由于Mesh一般由一个个三角形所构成,因此需要我们去计算光线和Mesh每个三角形之间是否存在交点。这可以看做是一个射线和三角形的求交问题。《Fundamentals of Computer Graphics (3rd edition)》中提出了一个in-place的算法,在这里予以介绍。

设光线的起点为e,方向为d,三角形三个顶点为a,b,c。那么可以得到:

e+td=a+β(ba)+γ(ca)

其中,β、γ为三角形的重心坐标。β+γ<1,且0<=β<=1,0<=γ<=1。那么可以得到以下公式:

 三角形求交算法

将它化为线性方程组:

三角形求交算法

那么我们要求解的其实就是β、γ和t,接下来利用Cramer法则求解即可。

三角形求交算法

 

三角形求交算法

其中矩阵A为:

三角形求交算法

当|A|为0,或β+γ>1,β<0,β>1,γ<0,γ>1时,说明光线和该三角形不相交,否则可计算出交点p=e+td

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/33527.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信