2011-07-01 133 views
3

我选择了基于堆栈的遍历算法(递归射线遍历算法),并且我对理解它有点麻烦。递归射线遍历算法 - 遍历k-d树

这是我的理解。

我需要找到的点处射线进入体素(然后计算距离射线原点和点),其中在其离开(再计算射线原点和点之间的距离),射线原点之间的距离平面(在一些文件,我看到的公式:?

(splitPoint - rayOrigin[currentAxle])/rayOrientation[currentAxle] 

我的射线取向是(0, 0, -1),然后在某些情况下,我将与零(因为x = 0y = 0)来划分这可怎么

而在算法init中,射线的原点位于主要体素中,我如何获得射线进入体素的距离?

我理解正确吗?有人可以解释吗?

回答

0

它来自“基于物理的从理论到实现的渲染”一书。

enter image description here 两种情况下,一个节点的两个孩子并不需要被处理,因为射线 不重叠它们。 (a)顶射线与分裂平面相交,超出射线的位置,因此不会进入远处的孩子。底部光线背离分割平面,由负值t_split值表示。 (b)该射线在射线的t_min值之前与该平面相交,表明近处的小孩不需要处理。