下载后可任意编辑直线裁剪算法讨论摘要: 直线裁剪是计算机图形学中的一个重要技术, 在对常见的直经线裁剪的算法分析的基础上, 针对Cohen-Sutherland算法和Liang-Barsky算法进行了分析讨论。并对两种算法了计算直线与窗口边界的交点时, 进行了有效有比较。关键词: 裁剪; 算法; Cohen-Sutherland; Liang-Barsky; 1 引言直线是图形系统中使用最多的一个基本元素。因此对于直线段的裁剪算法是被讨论最深化的一类算法, 当前在矩形窗口的直线裁剪算法中, 出现了许多有效的算法。其中比较著名的有: Cohen-Sutherland算法、 中点分割算法、 Liang-Barsky算法、 Sobkow-Pospisil-Yang算法, 及Nicholl-Lee-Ncholl算法等。2 直线裁剪的基本原理图1所示的为直线与窗口边界之间可能出现的几种关系。能够经过检查直线的两个端点是否在窗口之内确定如何对此直线裁剪。假如一直线的两个端点均在窗口边界之内( 如图1中P5到P6的直线) , 则此直线应保留。假如一条直线的一个端点在窗口外( 如P9) 另一个点在窗口内( 如P10) , 则应从直线与边界的交点( P9) 处裁剪掉边界之外的线段。假如直线的两个端点均在边界外, 则可分为两种情况: 一种情况是该直线全部在窗口之外; 另一种情况是直线穿过两个窗口边界。图中从P3到P4的直线属于前一种情况, 应全部裁剪掉; 从P7到P8的直线属于后一种情况, 应保留P7到P8的线段, 其余部分均裁剪掉。下载后可任意编辑图 1 直线相对干窗口边界的栽剪 直线裁剪算法应首先确定哪些直线全部保留或全部裁剪, 剩下的即为部分裁剪的直线。对于部分裁剪的直线则首先要求出这些直线与窗口边界的交点, 把从交点开始在边界外的部分裁剪掉。一个复杂的画面中可能包含有几千条直线, 为了提高算法效率, 加快裁剪速度, 应当采纳计算量较小的算法求直线与窗口边界的交点。3 cohen-sutherland 直线裁剪算法Cohen-Sutherland算法的大意是: 对于每条线段P1P2, 分为3种情况处理。①若P1P2完全在窗口内, 则显示该线段P1P2, 简称”取”之。②若P1P2明显在窗口外, 则丢弃该线段, 简称”弃”之。③若线段既不满足”取”的条件, 也不满足”弃”的条件, 则把线段分为两段。其中一段完全在窗口外, 可弃之。然后对另一段重复上述处理。1.区域码及其建立Cohen-Sutherland直线裁剪算法的核心是把所有直线的端点均分配一个表示其相对位置的4位二进制代码。此代码称为区域码。区域码根据端点与窗口边界的相对位置...