裁剪空间法-引出平面


在这里另外一种扩展视景体空间的方法就是基于裁剪空间属性。

假设一个点p=(x,y,z,1)位于3D空间中。同样假设一个模型变换矩阵M和投影矩阵P。点p经过矩阵M和矩阵P变换之后的在裁剪空间中的点pc=(xc,yc,zc,wc)

pc是本地坐标,当规范化后的点pcn:

在规范化的裁剪空间中视景体是中心在原点的轴对齐的长方体,是通过下面的平面包围的:

1. 左平面:x’= -1;

2. 右平面:x’=  1;

3. 顶平面:y’ = 1;

4. 底平面:y’ = -1;

5. 近平面:z’= -1;

6. 远平面:z’= 1;

如果点pcn=(x’,y’,z’)在视景体内部那么:

那么没有规范化的点pc,要在视景体内部要满足:

基于这些信息可能可以找到六个平面,在世界坐标中,视景体包围盒,点pc在左平面的右边需要:

假设p和A = MP,可以用下面描述:

裁剪空间法-引出平面_第1张图片

其中的xc和wc可以用函数p=(x,y,z,w)和A来定义:

那么如果点p在左平面的右边必须满足:

修整不等式得到:

因此左边平面的方程(Ax+By+Cz+D=0):

裁剪空间法-引出平面_第2张图片

其中col1和col4分别代表矩阵A第1行和第四行。

如果只是简单的判断点是在视景体之外还是之内用定义的平面就可以了。然而当测试球体时,就需要计算球体中心到平面的距离,最好是规范化平面

右边平面也可以用相似的方法来计算:

下面的系数是用来定义右平面:

裁剪空间法-引出平面_第3张图片

剩下的平面如下:

底平面:

裁剪空间法-引出平面_第4张图片

顶平面:

裁剪空间法-引出平面_第5张图片

近平面:

裁剪空间法-引出平面_第6张图片

远平面:

裁剪空间法-引出平面_第7张图片

英文地址


我的博客地址:http://www.arcosu.com/post/index/105

你可能感兴趣的:(裁剪空间法-引出平面)