多边形扫描转换填充 ■因此,多边形扫描转换填充的基本过程包括 扫描线和多边形边求交 交点按横坐标排序(水平扫描线) 交点两两配对 配对交点之间的像素取整、填充 2-12
2-12 多边形扫描转换填充 ◼ 因此,多边形扫描转换填充的基本过程包括: ◼ 扫描线和多边形边求交 ◼ 交点按横坐标排序(水平扫描线) ◼ 交点两两配对 ◼ 配对交点之间的像素取整、填充
多边形扫描转换填充 ■扫描转换的步骤 找到扫描线和多边形的所有交点(利用递推运算 求,而不是解析地计算所有边与扫描线交点 增量计算 交点按x坐标排序 按给定的填充规则,填充每对交点间在多边形内 部的像素 2-13
2-13 多边形扫描转换填充 ◼ 扫描转换的步骤 ◼ 找到扫描线和多边形的所有交点(利用递推运算 求,而不是解析地计算所有边与扫描线交点)- 增量计算 ◼ 交点按x坐标排序 ◼ 按给定的填充规则,填充每对交点间在多边形内 部的像素
多边形扫描转换填充 ■填充规则:设置状态标志0M1,初始化为0;每遇到 个交点就变换一次。当状态标志为1时,开始画 像素;为0时,结束画像素(1、0对之间才填充) 扫描线 E C A 2-14
2-14 多边形扫描转换填充 ◼ 填充规则:设置状态标志0/1,初始化为0;每遇到 一个交点就变换一次。当状态标志为1时,开始画 像素;为0时,结束画像素(1、0对之间才填充)
多边形扫描转换填充 步骤3所涉及的关键问题 如果交点是多边形边的交点(共享顶点),如何处理? 如果扫描线穿过共享顶点时,按一个交点计,则图中 扫描线2所示的填充存在问题 如果按两个交点计,扫描线1将无法填充 如果多边形有一条水平边,如何处理? 如果交点的x坐标带小数,如何判定在多边形内还是在多 边形外? 扫描线2 teepee C 扫描线1 2-15
2-15 多边形扫描转换填充 ◼ 步骤3所涉及的关键问题 ◼ 如果交点是多边形边的交点(共享顶点),如何处理? ◼ 如果扫描线穿过共享顶点时,按一个交点计,则图中 扫描线2所示的填充存在问题 ◼ 如果按两个交点计,扫描线1将无法填充 ◼ 如果多边形有一条水平边,如何处理? ◼ 如果交点的x坐标带小数,如何判定在多边形内还是在多 边形外?
扫描线与顶点相交处理 ■扫描线穿过共享顶点的另外一个例子: 扫描线y1穿过一个顶点(共享顶点的两条边位于扫描线的 同侧),它与偶数条边相交,沿扫描线y1的相交点正确地 分辨出了内部像素分布; 扫描线y穿过一个顶点(顶点的两条相交边位于扫描线的 异侧),与五条多边形边相交。因此,必须要作一些额外 的处理才能确定正确的内部点(偶数次变换才正确) 交点 交点交点 交点 扫描线 扫描线 占 交点 交点交点交点 2-16
2-16 扫描线与顶点相交处理 ◼ 扫描线穿过共享顶点的另外一个例子: ◼ 扫描线y1穿过一个顶点(共享顶点的两条边位于扫描线的 同侧),它与偶数条边相交,沿扫描线y1的相交点正确地 分辨出了内部像素分布; ◼ 扫描线y穿过一个顶点(顶点的两条相交边位于扫描线的 异侧),与五条多边形边相交。因此,必须要作一些额外 的处理才能确定正确的内部点(偶数次变换才正确)