计算机图形学中二维裁剪算法的研究 算法设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机图形学中二维裁剪算法的研究
胡婷娟
安徽中医学院医药信息工程学院,安徽合肥 230031
摘要:随着计算机技术的发展,计算机图形学也日益成熟。

在我们的日常生活中,也成了随处可见的必需部分。

在医学、娱乐、图形艺术、商业、教育培训、科学工程等众多领域,计算机图形学的应用非常普遍。

计算机图形学主要研究的是在计算机中构造图形,将用数学模型描述的图形数据采用合适的算法转换为屏幕上图形的显示。

计算机图形学学科研究的对象为二维图形学和三维图形学及其显示和变化情况。

点、线、面为二维图形学范畴,几何体和场等数学构造方法则为三维图形学范畴。

现在,计算机图形学的一些基本算法已经形成了固化在硬件中的规范软件包,这个学科也日趋成熟和完善。

但是依然有很多算法还需要不断的改进才能应用到实际中,而裁剪算法就是其中之一。

本文主要对二维图形裁剪中的椭圆形窗口裁剪算法进行了研究,使其具有较高的效率和稳定性。

关键词:计算机图形学裁剪算法椭圆形窗口线裁剪算法
中图分类号: TP301. 6 文献标识码: A 文章编号:1673- 0712( 2010) 04- 0077- 03
Computer graphics 2 d cut out of the algorithm
HU Ting-juan
( Anhui institute of traditional Chinese medicine and medical information engineering college Hefei , Anhui 230031 )
Abstract:With the development of computer technology, computer graphics is increasingly mature. In our daily life, also became ubiquitous necessary parts. In medicine, entertainment, graphic arts, business, education training, science and engineering, etc, computer graphics applications are common. Computer graphics is research in computer graphics is constructed of, will use mathematical model to describe the graphics data using appropriate algorithm into the screen graphic display. Computer graphics discipline research object for 2 d graphics and 3 d graphics and its display and change. Dot, line, face for 2 d graphics category, such as geometry and field mathematical structural method is for 3 d graphics category. Now, some of the basic computer graphics algorithm has already formed the curing of standard package in the hardware, the subject has become more and more mature and perfect. But still have a lot of algorithm needs to continue to improve the practical application of, and cutting algorithm is one of them. This paper focuses on the 2 d graphics the oval window cut cut algorithm, which make it has high efficiency and stability.
Keywords:computer graphics oval window line cutting algorithm cutting algorithm
1 裁剪概述
裁剪算法,简称裁剪,是计算机图形学中很多重要问题的基础,它就是从数据集合中识别指定区域内或指定区域外图形部分的过程。

裁剪用途很广泛,最典型的就是确定场景中位于指定区域内的景物部分。

其中,指定区域成为裁剪窗口,一般为矩形,由四条边组成,上、下、左、右,即:(X l,Y b), (X r,Y t)。

实质上来说,裁剪就是确定哪些多边形等几何体位于裁剪窗口内。

对于点(X,Y),只要判断两对不等式:X l≤X ≤X r,Y b≤Y≤Y t 即可。

如果四个点坐标的不等式都不成立,则这个点在矩形窗口外,否则,在窗口内。

有一种最简单的裁剪方法,就是将所有图形扫描转换成点,然后在进行判断。

但是这种方法时间消耗太大,非常不可取。

倘若将全部在窗口外的图形完全排除而不进行扫描转换,则时间上面可以高效很多故一般采用先裁剪再扫描的方法。

按裁减对象来分,裁剪算法大概分为如下几种:点裁剪、直线段裁剪、区域多边形裁剪、曲线裁剪和文字裁剪。

裁剪有多方面应用,主要包括:使用实体造型创建对象、在三维视图中标示出可见面、对图形的一部分进行删除、复制或移动操作、防止图形边界混淆、从特定场景中抽取指定部分等。

在不同的应用中,裁剪窗口的形状也不尽相同。

然而,裁剪算法是否高效关键在减少求交运算,高效识别裁剪线段是否与裁剪窗口边界相交。

二维裁剪算法分为两种,对二维线段的裁剪以及对二维多边形的裁剪,在这两方面,国内外许多专家学者都进行了深入的研究,出现了很多经典算法。

对于前者,比较经典的算法有便于硬件实现的中点分割算法,基于编码技术的Cyrus- Berk 裁剪算法,Nicholl 等提出的基于几何变换技术的NLN 算裁剪算法,简称裁剪,是计算机图形学中很多重要问题的基础,它就是从数据集合中识别指定区域内或指定区域外图形部分的过程。

裁剪用途很广泛,最典型的就是确定场景中位于指定区域内的景物部分。

其中,指定区域成为裁剪窗口,一般为矩形,由四条边组成,上、下、左、右,即:(X l,Y b), (X r,Y t)。

实质上来说,裁剪就是确定哪些多边形等几何体位于裁剪窗口内。

对于点(X,Y),只要判断两对不等式:X l≤X≤X r,Y b≤Y≤Y t 即可。

如果四个点坐标的不等式都不成立,则这个点在矩形窗口外,否则,在窗口内。

有一种最简单的裁剪方法,就是将所有图形扫描转换成点,然后在进行判断。

但是这种方法时间消耗太大,非常不可取。

倘若将全部在窗口外的图形完全排除而不进行扫描转换,则时间上面可以高效很多故一般采用先裁剪再扫描的方法。

按裁减对象来分,裁剪算法大概分为如下几种:点裁剪、直线段裁剪、区域多边形裁剪、曲线裁剪和文字裁剪。

裁剪有多方面应用,主要包括:使用实体造型创建对象、在三维视图中标示出可见面、对图形的一部分进行删除、复制或移动操作、防止图形边界混淆、从特定场景中抽取指定部分等。

在不同的应用中,裁剪窗口的形状也不尽相同。

然而,裁剪算法是否高效关键在减少求交运算,高效识别裁剪线段是否与裁剪窗口边界相交。

二维裁剪算法分为两种,对二维线段的裁剪以及对二维多边形的裁剪,在这两方面,国内外许多专家学者都进行了深入的研究,出现了很多经典算法。

对于前者,比较经典的算法有便于硬件实现的中点分割算法,基于编码技术的Cyrus- Berk 裁剪算法,Nicholl 等提出的基于几何变换技术的NLN 算法,通过法向点积判别的Cyrus- Berk 裁剪算法,在NLN 算法基础上发展的ELC 算法,以及Liang- Barsky 算法等。

另外,还有一种比较高效的只用整数运算来计算整数交点的线裁剪算法,是由M.Dorr 综合了直线参数表示方法和Cohen-Suthcrland的编码方法而得到的。

2 椭圆形窗口线裁剪算法描述
椭圆形不仅是计算机图形学中的基本几何元素之一,而且许多实际问题的解决
中,椭圆也是作为处理对象进行操作的。

对于计算机图形学中的裁剪算法来说,关于椭圆形窗口的裁剪算法是非常重要的。

设标准椭圆的方程为:x2/a2+y2/b2=1
其中,标准椭圆的中心点为坐标轴的原点O,假设A(X a,Y a)、B(X b,Y b)(X a≤X b)为被裁剪线段的两个端点,则裁剪可按如下步骤进行:
2.1 特殊情况的处理
当X a=X b时,即坐标轴的纵轴与被裁减的线段平行,这时分为两种情况,线段完全位于椭圆外部,即X a>a;否则,则需求取椭圆和线段的交点,其横坐标设为X a。

当Y a=Y b 时,即坐标轴的横轴与被裁剪线段平行,这时也有两种情况,线段完全位于椭圆外部;即Y a>b;否则,求需要求椭圆与线段的交点,其纵坐标均为Ya。

2.2 去除所有位于椭圆外切矩形外的线段。

本步采用外切矩形包围盒的方法,外切矩形由四条直线组成,x=- a、x=a、y =- b、y=b。

当min (X a,X b)≥a 或max(X a,X b)≤- a 或min (Y a,Y b}≥b或max{Y a,Y b)≤- b 时,线段AB 位于外切矩形的同侧,然后转步骤3。

2.3 线段端点与椭圆窗口的位置关系
椭圆有一条基本性质,即圆周上任意一点到两个定点的距离和等于特定常数。

又由椭圆方程可得,a 为椭圆的长半轴长度,因此可以根据线段的两端点到椭圆两焦点的距离之和是否小于2a 的方法,来确定线段的端点是否位于椭圆内。

因为椭圆上任意一点到两焦点的距离之和等于2a,在椭圆外部的点,到两焦点的距离之和大于2a,而在椭圆内部的点,到两焦点的距离之和大于2a。

最简单的直接可以显示的情况就是,线段两端点均位于椭圆内部,进而不需要求交点,因为该线段移动位于椭圆内。

另一种情况就是线段与椭圆有一个交点,即线段的一个端点在椭圆内,一个在椭圆外,此时要通过联立线段与椭圆的方程求出交点,进而得到交点和位于椭圆内的端点之间的线段,即为所求。

最复杂的情况就是线段的两个端点均位于椭圆外,这个时候,又有两种情况产生:
①线段完全位于椭圆窗口外,二者无交点,则可判定裁剪结束。

②当椭圆与线段有两个交点时,要进行如下区分,首先过原点O 向线段AB 做垂线交线段AB 于点P (X p,Y p),设L 为椭圆两个焦点与P 的距离和。

此时点P 分为如下情况:当X a<X b<X p或者X p< X a<X b时,P 点在线段AB 的延长线上,不需要剪裁操作,因为被裁剪线段位于椭圆外部;当X a<X p<X b时,点P 存在在线段AB 中间,需要进一步进行分析,因为无法判断椭圆与被裁减线段的位置关系。

当L p<2a 时,点P 位于椭圆内部,可求出椭圆与被裁剪线段AB 的两个交点,两交点之间的线段即为所求。

当L p>2a,b>2a,点P 位于椭圆外部,可以根据平行于线段AB 且与椭圆相切的线段CD 来判断。

假设设OP 与CD 的交点为R,上一步切点为Q,由于CD 平行于AB,因此OP 垂直于CD,垂足设为R,L r为OR的距离。

如果L p>L r,则椭圆在线段CD 的一侧,线段AB 在线段CD 的另一侧,这个时候,椭圆与AB 无交点,因此不必显示。

若L p<L r,椭圆与线段AB 有两个交点时,求出那些交点,显示两交点间的线段完成。

3 呼叫中心云终端的关键技术特点
3.1 NC 技术特点
网络计算机(Network Computer,简称NC),是在一个高速网络环境下的计算机终端设备,属于瘦客户终端的范畴。

它通过调用服务器的资源来进行工作,应用程序和数据都存储在服务器上,NC 本身只处理键盘、鼠标的输入和视频、音频的输出。

由于运算和存储的任务都通过服务器来完成,NC 的结构非常简单,不需要强大的CPU、大容量的内存和硬盘,也不需要光驱、软驱。

它是一种无噪音、微型、高性价比的网络接入设备。

在呼叫中心云终端应用方案中,采用瘦客户终端做Windows 终端,接入服务器运行的Windows 应用程序。

NC 具备以下具体优点:
①集中管理,支持现场零维护:管理员在服务器端就可管理所有用户;支持现场零维护,软件升级只在服务器端完成即可,日常管理的工作量是PC 的10%。

②节能减排降噪:终端的主机功耗最低至
6.6w,不到PC 的10%,节省运行电费,同时节省昂贵的通信电源、空调等配套设备的投资;话务员的工作环境不再受硬盘、风扇等机械混合噪音的困扰。

③部署、修理及更换速度快:只需简单设置,开机联网即用,几分钟即可完成;应用软件只需安装在服务器端,NC 端零安装;无机械设备,使用寿命长。

④整体拥有成本低:采购成本是PC 的一半,本地无需频繁的软硬件升级,维护成本低,培训成本低,使用时间越长、整体成本优势越明显。

⑤安全:只要管理好服务器,整个网络就安全;终端无数据风险;终端无病毒风险;终端的应用程序由管理员分配,应用访问简单便捷。

呼叫中心云终端应用技术方案中,使用的是以Windows Terminal Service为核心的NC 技术。

Windows Terminal Service 采用RDP(Remote Display Protocol)远程显示协议,支持客户端的键盘鼠标输入和服务端的输出显示的传输,并支持客户端与服务端设备(声卡、串口、打印机等)映射、文件传输等特性,以支持网络计算业务的开展。

Windows Terminal Service采用会话层虚拟化技术,
支持多用户同时登录并发工作。

3.2 基于云终端的高质量IP 语音通话技术
通过对终端进行定制,对声卡驱动进行优化,保证在云环境下,语音质量不会存在下降。

采用低码率高质量的语音编码技术,对VOIP 话音应用特别优化,且采用独有的数据和语音分流设计,并使用G.729、iLBC 等编码技术,保证了音频在采用穿越Internet 时的质量。

云呼叫中心VOIP 话音质量很高(PESQ_MO>=3.8),确保通话清晰、流畅,保障客户体验及满意度。

3.3 基于云终端的应用发布技术特点
呼叫中心云终端服务方案是一种限定应用的模式,提供给终端用户的应用都是由管理员指定发布的程序或桌面,也称为Kiosk 模式。

由NC Controller 统一控制,覆盖终端桌面和虚拟桌面。

进行统一的帐号管理和集中鉴权,控制桌面访问及应用访问权限和范围的控制,增强桌面安全及加固服务器的系统安全。

呼叫中心云终端应用为困挠呼叫中心业界有关办公环境噪音、平台间应急、现场维护繁忙、运营成本高企及企业信息泄密等难题提供了科学有效的解决方案,遵行“节能减排”国家战略,可推广应用于
电信级大规模呼叫中心系统的建设。

4 椭圆形窗口线裁剪算法实现
椭圆形窗口裁剪算法的伪代码如下,其中,裁剪后所得线段的两个端点设为(X1,Y1)、(X2,Y2),线段两端点到椭圆焦点的距离之和为D a、D b,原点O 到AB 的垂足为P(X p,Y p),平行于线段AB 且和椭圆相切的线段CD 到中心点的距离为Lt。

if (Xa == Xb)
{ if( Xa >a)
break; // 被裁剪线段完全位于椭圆窗口外的情况
else
X1=X2=Xa;
else if(Ya == Yb)
{
if(Ya > b)
break; // 被裁剪线段完全位于椭圆窗口外的情况
else
Y1=Y2 =Ya;
}
else if(min{Xa,Xb}≥a 或max{Xa,Xb}≤- a或min(Ya,Yb)≥b 或max{Ya,Yb}≤- b) break; // 被裁剪线段完全位于椭圆窗口外的情况
else if( Da < 2a && Db < 2a)
{
// 线段完全位于椭圆窗口内的情况
X1=Xa;
Y1=Ya;
X2=Xb;
Y2=Yb;
break;
}
else if(Da<2a&&Db>或Da>2a&&Db<2a)
求(X1,Y1)、(X2,Y2);
else
{
if( Xa< Xb< Xp 或者Xp< Xa < Xb ) break; // 线段完全位于椭圆窗口外部的情况
else if ( Xa < Xp < Xb )
{
if( Lp < 2a ) // 点P 位于椭圆窗口内部的情况
求(X1,Y1)、(X2,Y2);
break;else
{
If ( Lp > Lr )
break; // 被裁剪线段完全位于椭圆外部的情况
else
求出(X1,Y1)、(X2,Y2);
}
}
else
break; // 线段与椭圆无交点,完全位于椭圆外部的情况
}
椭圆是计算机图形学中的基本图形元素之一,近年来,在椭圆的研究上也取得了很大的进步,很多椭圆生成方面的有效算法应运而生。

由于椭圆窗口裁剪情况在工程设计当中应用非常广泛,故上文中的椭圆窗口裁剪算法在实际中是非常有效的。

参考文献
[1] 韩明峰,李传林.基于一般多边形窗口的线裁剪算法.计算机工程与科学,1999.
[2] 吴章文,勾成俊,杨代伦,罗正明.有共线边的多边形窗口的线裁剪算法.计算机辅助设计与图形学报,2004.
[3] LA IH C S, LEE JY, HARN L, et a.l Linearly shift knap sack public-key crypto system [ J] . IEEE Journal on S elected Areas Communications, 1989, 7( 4 ) : 534 - 539.
[4] 刘永奎,刘桂芳.一般多边形窗口的线裁剪.计算机辅助设计与图形学学报,1993.
[5] 陆国栋,邢世海.基于顶点编码的多边形窗口线裁剪算法.计算机学报,2002.
[6] 姚涵珍,宋鹏,张国安.圆形窗口线裁剪算法的研究与实践.计算机辅助设计与图形学学报,1992.
[7] 刘勇奎.圆形及椭圆形裁剪窗口.计算机工程与设计,1994.
[8] 沈庆云,周来水,周儒荣.一种圆形窗口裁剪的新方法.计算机辅助设计与图形学学报,1997.。

相关文档
最新文档