Tree 递归光线遍历算法——遍历k-d树

Tree 递归光线遍历算法——遍历k-d树,tree,traversal,line-intersection,Tree,Traversal,Line Intersection,我选择了一种基于堆栈的遍历算法(递归光线遍历算法),理解它有点困难 以下是我的理解 我需要找到光线进入体素的点(然后计算光线原点和该点的距离)、光线退出的点(然后计算光线原点和该点之间的距离)、光线原点和平面之间的距离(在一些论文中我看到了公式: (splitPoint - rayOrigin[currentAxle]) / rayOrientation[currentAxle] 我的光线方向是(0,0,-1),在某些情况下,我将用零除(因为x=0和y=0),这是怎么回事 在算法的初始阶段,光

我选择了一种基于堆栈的遍历算法(递归光线遍历算法),理解它有点困难

以下是我的理解

我需要找到光线进入体素的点(然后计算光线原点和该点的距离)、光线退出的点(然后计算光线原点和该点之间的距离)、光线原点和平面之间的距离(在一些论文中我看到了公式:

(splitPoint - rayOrigin[currentAxle]) / rayOrientation[currentAxle]
我的光线方向是
(0,0,-1)
,在某些情况下,我将用零除(因为
x=0
y=0
),这是怎么回事

在算法的初始阶段,光线的原点在主体素中,如何计算光线进入体素的距离


我理解正确吗?有人能解释一下吗?

这是《从理论到实现的基于物理的渲染》一书中的内容

两种情况下,节点的两个子节点都不需要处理,因为光线 没有重叠

(a) 顶部光线在光线的t_max位置之外与分割平面相交,因此不会进入远子级。底部光线背向分割平面,由负t_split值表示

(b) 光线在光线的t_min值之前与平面相交,表示附近的子对象不需要处理