二、凹区域裁剪Weiler-Atherton算法

    Weiler-Atherton算法是一个通用的多边形裁剪算法,它适用于凸的、凹的和带孔的多边形的裁剪。
    无论是被裁剪的多边形,还是裁剪区域多边形,都用边界的有向顶点序列表示,并约定外环(由多边形的外部边界构成)取顺时针方向,内环(由多边形的内部边界构成)取逆时针方向(见图3.17)。
    该算法的基本思想是:沿作被裁剪多边形的边的方向来处理顶点,并采用如下规则:
��1) 对于由外到内穿入裁剪区域的顶点对V1V2,从线段V1V2与裁剪边界的交点V1′开始,继续沿作多边形的方向V1′V2前进。这种"由外到内"的交点称为"入点"。
��2) 对于由内到外穿出裁剪区域的顶点对V3V4,从线段V3V4与裁剪边界的交点V3′开始,按顺时针沿作裁剪边界的方向前进。这种"由内到外"的交点称为"出点"。在转向裁剪边界的方向前进之前,保存V3′V4作为恢复多边形搜索的入口。
��3) "入点"和"出点"总是交替地成对出现,形成一个结果多边形。
��4) 转到前一个"出点"的入口V3′V4,重复上述步骤1)到3)。如此继续,直到最初的开始点V1为止。