设要被裁剪的线段是P0P1。为了避免将线段裁剪为许多零碎小段,只需分别计算距两个端点P0和P1最近的可见点A和B(见图3.11)即可;这两个可见点的连线AB就是原线段的可见部分。 从P0出发,计算其最近可见点的算法如下: 1) 计算出P0P1的中点Pm; 2) 计算P0和Pm的区域码的位与,若结果不等于0,则取PmP1代替P0P1;否则,取P0Pm 代替P0P1; 3) 如果P1Pm的长度小于给定的容差,即|P1Pm| < ε,转步4);否则转步1); 4) 结果输出:Pm就是P0的最近可见点。 5) 算法结束。 ��如果将P0和P1交换,上述算法即为求P1点的最近可见点的算法。 |