Sutherland-Hodgman 算法
Sutherland-Hodgman算法逐平面对多边形进行剪裁。
对于每个剪裁面来说,输入多边形顶点序列,v1-v2-v3-…-v1,
对每条边剪裁,输出新的顶点序列 q1-q2-q2-….
当使用一个平面对一条线段剪裁时,可能有4种情况:
- v1,v2都在平面内侧,输出v1
- v1在平面内侧,v2在平面外侧,输出v1和交点
- v1,v2都在平面外侧,跳过
- v1在平面外侧,v2在平面内侧,输出交点 输出后,继续考察下一条边
求平面和直线的交点
已知平面上一点p和法向量n,已知直线上一点a和方向v
则交点为:(ax + t * vx, az + t * vz, az + t * vz)
其中,t = dot(p - a, n) / dot(n, v)
属性差值
每当得到新的点(上面第2,4种情况),则需要对新的点的属性差值。
由于此时位于投影空间,仍然需要对
1/z 差值,其中
z 是相机空间的