首页 > 编程语言 > 详细

CGA裁剪算法之线段裁剪算法

时间:2015-12-25 01:08:23      阅读:278      评论:0      收藏:0      [点我收藏+]

CGA裁剪算法之线段裁剪算法

  常用的线段裁剪算法有三种:【1】Cohen_SutherLand裁剪算法,【2】中点分割裁剪算法,【3】参数化方法。

1. Cohen_SutherLand裁剪算法

  为了能快速的判断一条直线矩形窗口属于何种位置关系,Cohen_SutherLand裁剪算法采用如下的编码方案,因此又称为“编码裁剪算法”。

  在编码裁剪算法中采用了如下图所示的空间划分和编码方案:

  编码的[上, 下, 右, 左], 即上: 1000, 下:0100,右:0010, 左:0001,分别对应的十进制数: 上:8, 下:4, 右:2, 左:1。所以在矩形窗口(包含四个边的边界)左上,左下,右上,右下编码如下图。

  技术分享

  裁剪一条线段时,先求出两端点所在的区号code1和code2,有如下情况:

  (1)若code1 = 0且code2 = 0,则说明线段的两个端点均在窗口内,那么整条线段必在窗口内,应取之,直线可以直接显示;

  (2)若code1和code2经按位与运算的结果不为0,则说明两个端点同在窗口的上 方、下方、左方或右方。这种情况下,对线段的处理是弃之,直线不进行显示。

  (3)如果上述两种条件都不成立,则按第三种情况处理。求出线段与窗口某边的交点,在交点处把线段一分 为二,其中必有一段完全在窗口外,可弃之,对另一段则重复上述处理,如线段P1P2, 则最终得到的显示线段为P3P4,即为裁剪后的线段,然后进行显示。

  算法分析:

  因为需要对窗口的不同防线进行编码,所以只适合方形的窗口,不适合圆形的窗口裁剪处理。

  程序如下:

 

CGA裁剪算法之线段裁剪算法

原文:http://www.cnblogs.com/icmzn/p/5074761.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!