、
如上图所示,解题思路,已知一个点Eye为视线方向上的点,通过相机的视景体范围,确定视线方向上投影到视景体上的near和far点,即CStart,CEnd。立方体的三个维度已知,那么只需要根据CStart去求得与立方体的近似点InnerStart,CEnd求得与立方体的近似点InnerEnd.
if PtStart[0] > dimension.x || PtStart[0] < 0 || PPtStart[1] > dimension.y || PtStart[1] < 0 || PtStart[2] > dimension.z || PtStart[2] < 0
for start in x,y,z ; dimension in x, y, z; i in 3 :
if start < dimension
distance = dimension - start
else if start < 0
distance = 0 - start
if (distance)
InnerStart[i] = PtStart[i] + distance
InnerEnd求法同上。
需要注意的是,需要求当前维度的距离的向量间隔值,dimension.x - PtStart.x = vector.x; distance / vector.x = t; 那么当每个维度需要靠近时需要把其他的方向的距离相应的移动t*vector.y和t*vector.z