XX图1-4显示控制视图1.3.2显示控制原理显示控制命令可以实现图形的局部放大,从而也使一部分图形移出图形区外而不显示。比如,窗口缩放就是使图形的一部分在窗口内,而另一部份在窗口外。这种窗口内图形显示,窗口外图形不显示的控制原理就是裁剪原理,是通过裁剪运算实现的。在计算机图形学原Yk理中有多种裁剪方法,如失量裁剪算法、基于编码的求交算法、基于编码的中点分割算法等。裁剪方法可以作XI用于多种不同的图形元素,如线段、多边形、圆、任意Xr曲线和字符等。图1-5绘图区窗口下面以基于编码的求交算法为例,介绍图形的裁剪原理。裁剪元素以直线为例,如图1-5所示,在绘图区输入A、B、C、D、E、F直线。图中细实线区为选择窗口,则裁剪运算流程如图1-6所示。基于编码的求交算法基本原理是由裁剪窗口的边框将整个屏幕分成9个区域,每个区域用4位二进制码表示,任一线段两个端点的编码与它们所在区号相对应。编码由左向右,四位编码中每一位对应线段端点的定义是:第1位:如果端点在上边框线Yt的上面,则为1,否则为0:第2位:如果端点在下边框线Yb的下边,则为1,否则为0;第3位:如果端点在右边框线Xr的右边,则为1,否则为0;第4位:如果端点在左边框线X1的左边,则为1,否则为0
6 图 1-4 显示控制视图 1.3.2 显示控制原理 显示控制命令可以实现图形的局部放大,从而也使 一部分图形移出图形区外而不显示。比如,窗口缩放就 是使图形的一部分在窗口内,而另一部份在窗口外。这 种窗口内图形显示,窗口外图形不显示的控制原理就是 裁剪原理,是通过裁剪运算实现的。在计算机图形学原 理中有多种裁剪方法,如失量裁剪算法、基于编码的求 交算法、基于编码的中点分割算法等。裁剪方法可以作 用于多种不同的图形元素,如线段、多边形、圆、任意 曲线和字符等。 下面以基于编码的求交算法为例,介绍图形的裁剪 原理。裁剪元素以直线为例,如图 1-5 所示,在绘图区输入 A、B、C、D、E、F 直线。图 中细实线区为选择窗口,则裁剪运算流程如图 1-6 所示。基于编码的求交算法基本原理是由 裁剪窗口的边框将整个屏幕分成 9 个区域,每个区域用 4 位二进制码表示,任一线段两个端 点的编码与它们所在区号相对应。编码由左向右,四位编码中每一位对应线段端点的定义是: 第 1 位:如果端点在上边框线 Yt 的上面,则为 1,否则为 0; 第 2 位:如果端点在下边框线 Yb 的下边,则为 1,否则为 0; 第 3 位:如果端点在右边框线 Xr 的右边,则为 1,否则为 0; 第 4 位:如果端点在左边框线 Xl 的左边,则为 1,否则为 0。 图 1-5 绘图区窗口
开始输入直线数据是各直线段是否完输出直线段全在窗口内?否是直线段是否显剪去该直线然不可见否计算直线与窗口边界的交点否是交点两侧的直线段是否显然完全不可见图1-6裁剪算法流程编码后的绘图区域如图1-7所示。显然,若线段两端点的四位编码均为0,则此线段必全部10011000在窗口内:若线段两端点编码的逻辑乘非零,则1010Yt-此线段完全不在窗口内。A\如果一条线段不能由上面方法决定其是否在000100000010窗口内,则需要对该线段进行再分割。简单的分D/Yb割方法就是求该线段与窗口一个边框的交点,重0101N100复上述编码判断,把不在窗口内的线段丢弃。0110XlBXr如图1-7所示,线段AB的A'点的编码为0001,B'点的编码为0100,A'B’两端点编图1-7编码裁剪算法码的逻辑乘为零,则先将线段与XI求交点,丢弃AC段,得到新的线段CB/。C'点的编码为0000,C'B两端点编码逻辑乘为零,则线段CB'与Yb求交点D,丢弃DB'段,得到新线段C'D'。由于C'点和D点的编码均为0000,因此线段C'D就是裁剪后得到的线段。1.4绘图环境的设置在AutoCAD绘图前经常要对绘图环境的某些参数进行设置,以方便使用,如绘图单位、7
7 图 1-6 裁剪算法流程 编码后的绘图区域如图 1-7 所示。显然,若 线段两端点的四位编码均为 0,则此线段必全部 在窗口内;若线段两端点编码的逻辑乘非零,则 此线段完全不在窗口内。 如果一条线段不能由上面方法决定其是否在 窗口内,则需要对该线段进行再分割。简单的分 割方法就是求该线段与窗口一个边框的交点,重 复上述编码判断,把不在窗口内的线段丢弃。 如图 1-7 所示,线段 A′B′的 A′点的编码 为 0001,B′点的编码为 0100,A′B′两端点编 码的逻辑乘为零,则先将线段与 Xl 求交点,丢弃 A′C′段,得到新的线段 C′B′。C′点的编码为 0000,C′B′两端点编码逻辑乘为零, 则线段 C′B′与 Yb 求交点 D′,丢弃 D′B′段,得到新线段 C′D′。由于 C′点和 D′ 点的编码均为 0000,因此线段 C′D′就是裁剪后得到的线段。 1.4 绘图环境的设置 在 AutoCAD 绘图前经常要对绘图环境的某些参数进行设置,以方便使用,如绘图单位、 开始 输入直线数据 各直线段是否完 全在窗口内? 输出直线段 是 否 直线段是否显 然不可见 是 剪去该直线 否 计算直线与窗 口边界的交点 交点两侧的直线段是 否显然完全不可见 否 是 1010 0010 0110 1000 0000 0100 1001 0001 0101 B′ C′ D′ 图 1-7 编码裁剪算法 A′ ‘’