前言:
通过扫描线算法对多边形面进行颜色随机填充。再使用Z-buffer算法比较重叠物体的点的深度,即对同一个X,Y位置的多个点,选择深度浅的点显示。
扫描线算法(本文的扫描线算法是对该文的补充扫描线算法完全解析):
对每个物体的表面分别进行扫描线算法,扫描线自底向上,扫描范围为物体的最低点的Y值到最高点的Y值。扫描线每次向上移动1个单位距离(1个像素)。
在openGL中,如果我们把画布大小定义为600X600px,画布坐标轴定义为(0,600,0,600),则在运算中,y或者x每增加1,相当于在屏幕上增加1个像素距离。
扫描线算法实行两两配对原则,即填充扫描线和多边形边产生的2个交点之间范围的点。为了保证每次都是产生偶数个交点,需要对形如上图的F点和A点进行区别处理。