计算机图形学(简单多边形裁剪算法)
4.6.3 多边形裁剪_计算机图形学教程(第2版)_[共3页]
![4.6.3 多边形裁剪_计算机图形学教程(第2版)_[共3页]](https://img.taocdn.com/s3/m/a0cbdc0749649b6649d74720.png)
153 作为新的P 1P 2线段从算法的第一步重新开始执行。
反之,则以线段P m P 2为新的线段P 1P 2(如图4.83中的线段c )从算法的第一步重新开始执行。
反复执行上述3步,直至找到离P 1点最远的可见点为止。
这个过程确定了距离P 1点最远的可见点。
然后对调该线段的两个端点,以线段P 2P 1为新的P 1P 2线段,重新开始实施该算法过程,就可以确定出距离P 2点最远的可见点。
这样,位于窗口内可见段的两个可见端点就确定了。
从这个算法我们可以看到,整个裁剪过程总是在执行第一步或第二步时结束。
这种结果表明:被裁剪的线段要么完全处于窗口之外而被排除掉;要么能在窗口内得到一个距对应端点最远的可见点,这个可见点可能是原直线段的一个端点,也可能是线段在被不断地中点再分过程中,最终得到的刚好和窗口边框相重的那个中点。
这里要注意的是:在判断中点和窗口边框相重时,一般不需要坐标值一定相等,也不大可能,只要在精度许可的前提下,给出一个误差允许范围即可。
4.6.3 多边形裁剪前面我们讨论了直线段裁剪,多边形裁剪是以直线段裁剪为基础,但又不同于直线段的裁剪。
多边形裁剪要比一条直线段裁剪复杂得多。
图4.84所示为用一个矩形窗口去裁剪多边形将会遇到各种不同情况,其中图4.84(a )所示为一个完整的多边形被裁剪成两个独立的多边形;图4.84(b )所示为一个凹多边形被裁剪成几个小多边形;图4.84(c )所示为多边形G 经矩形窗口裁剪后出现G 1和G 2两个多边形,究竟是G 1还是G 2呢?裁剪多边形要解决两个问题,一是一个完整的封闭多边形经裁剪后一般不再是封闭的,需要用窗口边界适当部分来封闭它;二是矩形窗口的4个角点在裁剪中是否要与其他交点连线。
由于这两个问题使得我们不能简单地应用直线段裁剪方法,而需要去研究适合多边形裁剪特点的算法。
图4.84 多边形裁剪多边形裁剪方法很多,例如逐边裁剪法、双边裁剪法、分区编码裁剪法等,这里仅介绍逐边裁剪法。
weiler-atherton多边形裁剪算法

weiler-atherton多边形裁剪算法weileratherton多边形裁剪算法,又称为weiler-atherton算法,是一种用于对多边形进行裁剪的算法。
它可以被用于计算机图形学中的裁剪任务,如可视化、图像处理和计算机辅助设计等领域。
本文将详细介绍weileratherton多边形裁剪算法的原理、步骤和实现方法。
1. 算法原理:weileratherton多边形裁剪算法是基于边界点的引入和处理的。
该算法将两个多边形相互之间进行裁剪,并生成裁剪结果。
算法使用四个边界点集合,分别为输入多边形的边界点集合(输入多边形顶点经过一系列处理得到),裁剪多边形的外部边界点集合和内部边界点集合,以及裁剪结果的边界点集合。
2. 算法步骤:weileratherton多边形裁剪算法的具体步骤如下:(1) 初始化:创建输入多边形的边界点集合、裁剪多边形的外部边界点集合和内部边界点集合,并将输入多边形的边界点添加至外部边界点集合中。
(2) 遍历输入多边形的每条边:对于输入多边形的每条边,判断其与裁剪多边形的相交情况。
(3) 相交情况处理:若相交情况为内部相交或外部相交,则根据交点生成新的内部边界点,并添加至相应的边界点集合中。
(4) 构造裁剪结果:根据输入多边形的边界点集合和裁剪多边形的内部边界点集合,生成裁剪结果的边界点集合。
(5) 根据边界点集合构造裁剪结果:根据裁剪结果的边界点集合,绘制裁剪结果多边形。
3. 算法实现:weileratherton多边形裁剪算法的实现可以使用编程语言来完成。
一种常用的实现方法是通过遍历输入多边形的每个边,利用线段与裁剪多边形的边界的相交情况判断是否产生交点,并根据交点生成新的边界点。
具体的实现步骤如下:(1) 初始化输入和裁剪多边形的边界点集合。
(2) 遍历输入多边形的每条边,对于每条边,判断其与裁剪多边形的每条边的相交情况。
(3) 根据相交情况,判断是否生成交点,如果有生成交点,则根据交点生成新的边界点,并添加至相应的边界点集合中。
简单多边形裁剪算法

摘 要 :为 了尽量 降低任意 多边形裁剪复杂度,提 出了一种基 于多边形顶点遍历 的简单 多边形裁 剪算 法。该 算法将 多边形
交 点插 入 到裁 剪 多边 形 和 被 裁 减 多边 形 顶 点 矢 量数 组 中 ,通 过 记 录 交 点及 其 前 驱 、 后 继 信 息 ,可 快 速 生 成 结 果 多边 形 。其
2 .C h i n a C e n t r e f o r R e s o u r c e s S a t e l l i t e Da t a a n d Ap p l i c a t i o n , B e i j i n g 1 0 0 0 9 4 , C h i n a ;3 .C h i n a C o a l Te c h n o l o g i e s G r o u p or C p o r a t i o n ,B e i j i n g 1 0 0 0 1 3 , C h i n a ; 4 .B e i j i n g I n s t i t u t e o f A p p l i e d Me t e o r o l o g y , B e i j i n g 1 0 0 0 2 9 , C h i n a )
中,时间复杂度 为 ( ) ( ( m+k ) ×k ) ,m 是两 多边形 中顶点数较 大者 ,k是 两 多边形的 交点数 。该算 法简化 了交点的数据 结 构 ,节省 了存储 空间,降低 了算法的时间复杂度 ,具有 简单 、易于编程 实现 、运行效 率高的特点 。
关 键 词 : 多边 形 裁 剪 ; 交点 ;前 驱 ;后 继 ;矢 量数 组 中图 法 分 类 号 :TP 3 9 1 文 献 标 识 号 :A 文章 编 号 :1 0 0 0 — 7 0 2 4( 2 0 1 4 )0 1 - 0 1 9 2 - 0 6
计算机图形学(简单多边形裁剪算法)

简单多边形裁剪算法摘要:多边形裁剪算法与线性裁剪算法具有更广泛的实用意义,因此它是目前裁剪研究的主要课题。
本文主要介绍了一种基于多边形顶点遍历的简单多边形裁剪算法,它有效降低了任意多边形裁剪复杂度。
通过记录交点及其前驱、后继信息,生成结果多边形,该算法简化了交点的数据结构,节省了存储空间,降低了算法的时间复杂度,具有简单、易于编程实现、运行效率高的特点。
关键词:多边形裁剪;交点;前驱;后继;矢量数组一、技术主题的基本原理简单多边形裁剪算法综合考虑现有多边形裁剪算法的优缺点,它是一种基于多边形顶点遍历来实现简单多边形裁剪工作的。
其主要的原理是遍历多边形并把多边形分解为边界的线段逐段进行裁剪,输出结果多边形。
二、发展研究现状近年来,随着遥感绘图、CAD辅助设计、图象识别处理技术的发展,图形裁剪算法从最初在二维平面上线和图形的裁剪扩展到三维空间里体和场的裁剪,国内外相继提出不少行之有效的算法,但越来越复杂的图形和计算也对算法的速度和适用性提出了越来越高的要求。
因此,不断简化算法的实现过程,完善细节处理,满足大量任意多边形的裁剪也就成了当今算法研究的焦点之一。
以往多边形裁剪算法不是要求剪裁多边形是矩形,就是必须判断多边形顶点的顺时针和逆时针性,即存在不实用或者是增加了多边形裁剪算法的难度。
为了解决现在的问题,我们研究现在的新多边形算法,其中,裁剪多边形和被裁剪多边形都可以是一般多边形,且不需要规定多边形输入方向。
它采用矢量数组结构,只需遍历剪裁多边形和被裁剪多边形顶点即完成多边形的裁剪,具有算法简单、运行效率高的特点。
三、新算法设计1、算法的思想本算法是为了尽量降低任意多边形裁剪算法复杂度而提出的,其主要思想是采用矢量数组结构来遍历裁剪多边形和被裁多边形顶点,记录裁剪多边形和被裁减多边形交点及其前驱、后继信息,并通过记录相邻交点的线段,然后通过射线法选择满足条件的线段,之后进行线段连接,输出对应的裁剪结果。
了解电脑显卡的多边形剪裁和裁剪

了解电脑显卡的多边形剪裁和裁剪随着计算机图形学的不断发展,电脑显卡在图像处理方面的性能也逐渐提升。
而多边形剪裁和裁剪则是电脑显卡中重要的技术之一。
本文将介绍多边形剪裁和裁剪的定义、作用以及相关的算法与技术。
一、多边形剪裁和裁剪的定义多边形剪裁是指根据视口和裁剪窗口的位置,将位于裁剪窗口外的多边形剪除,只保留位于窗口内的部分。
而裁剪是指将多边形按照裁剪窗口的形状进行修剪,以适应显示设备的输出。
二、多边形剪裁的作用多边形剪裁的作用主要有以下几个方面:1. 提高渲染效率:多边形剪裁可以剔除位于屏幕外的多边形,避免不必要的计算和绘制,从而提高渲染效率。
2. 减少像素填充:在3D渲染中,所有多边形都要经过像素填充来生成最终的图像。
通过剪裁掉屏幕外的多边形,可以减少不必要的像素填充操作,提高渲染速度。
3. 实现可视化效果:多边形剪裁可以确保只显示用户所需的图像内容,可以实现视点的选择、物体的隐藏和透视等视觉效果。
三、多边形剪裁的算法与技术在实际应用中,多边形剪裁通常使用的算法包括:1. 逐边裁剪算法(Cohen-Sutherland算法):该算法通过将裁剪窗口划分为9个区域,将多边形的每条边与裁剪窗口的边界相交,并根据交点位置来确定多边形是否可见以及如何修剪多边形。
2. 多边形切割算法(Sutherland-Hodgman算法):该算法通过对多边形的每条边进行切割,生成新的多边形。
这些新的多边形通过裁剪窗口切割并连接,最终得到位于裁剪窗口内的多边形。
四、裁剪的应用和技术裁剪不仅可以应用于多边形,还可以应用于曲线、曲面和体素等图形对象的裁剪。
裁剪的技术也不仅仅局限于多边形剪裁算法,还包括对二维和三维对象的参数化、位图和文本的裁剪处理等。
在实际应用中,常用的裁剪技术包括:1. 区域编码算法:区域编码算法通过给定的区域码来标识物体所在的位置,从而对物体进行裁剪。
常见的算法有四叉树编码和八叉树编码。
2. 软件裁剪和硬件裁剪:软件裁剪是指在计算机的主机CPU上通过算法进行裁剪操作;而硬件裁剪则是指使用专门的图形处理器(GPU)来完成裁剪操作,通过并行计算提高裁剪效率。
多边形裁剪算法

Cohen-Sutherland 直线裁剪算法小结
• 本算法的优点在于简单,易于实现。可以简单 的描述为将直线在窗口左边的部分删去,按左, 右,下,上的顺序依次进行,处理之后,剩余 部分就是可见的了。在这个算法中求交点是很 重要的,决定了算法的速度。另外,本算法对 于其它形状的窗口未必同样有效。
• 特点:用编码方法可快速判断线段的完全可见 和显然不可见。
• 为快速判断,采用如下编码方法:
Cohen-Sutherland裁剪
实现方法:
1001
1000 1010 A
C
0001 0101 0000 0100
ቤተ መጻሕፍቲ ባይዱ
0010
0110
D B
将窗口边线两边沿长,得到九个区域,每一个区 域都用一个四位二进制数标识,直线的端点都 按其所处区域赋予相应的区域码,用来标识出 端点相对于裁剪矩形边界的位置。
直接求交算法
直线与窗口边都 写成参数形式, 求参数值。
Cohen-Sutherland裁剪
• 基本思想:
对于每条线段P1P2分为三种情况处理: (1)若P1P2完全在窗口内,则显示该线段P1P2。 (2)若P1P2明显在窗口外,则丢弃该线段。 (3)若线段不满足(1)或(2)的条件,则在交点 处把线段分为两段。其中一段完全在窗口外,可弃 之。然后对另一段重复上述处理。
梁友栋-Barsky算法
线段的参数表示
x=x0+t△x
y=y0+t△y △x=x1-x0 0<=t<=1 △y=y1-y0
P0 A
Pm B P1
中点分割裁剪算法
中点分割裁剪算法
• 对分辩率为2N*2N的显示器,上述二分过 程至多进行N次。 • 主要过程只用到加法和除法运算,适合 硬件实现,它可以用左右移位来代替乘 除法,这样就大大加快了速度。
计算机图形学多边形裁剪

}
}
s=p;
}
}
bool CPaintView::inside(CPoint testvertex,CPoint* clipboundary)
{
if(clipboundary[1].x<clipboundary[0].x)
{
p=invertexlist[j];//p为当前要处理的顶点,前面已处理过的顶点为s
if(inside(p,clipboundary))//若p在裁剪边clipboundary的内侧,则inside()返回值为真
{ if(inside(s,clipboundary))//如果s在裁剪边clipboundary的内侧,则inside()返回值为真
if(testvertex.y >=clipboundary[0].y)
return true;
if(clipboundary[1].x>clipboundary[0].x)
if(testvertex.y<=clipboundary[0].y)
return true;
outvertexlist.insert(outvertexlist.begin( )+(*outlength),outvertex);
(*outlength)++;
}
void CPaintView::intersect(CPoint p1,CPoint p2,CPoint *clipboundary,CPoint *intersectpt)
{
if(clipboundary[0].y==clipboundary[1].y)
计算机图形学课程设计 多边形的裁剪算法

河南理工大学万方科技学院课程设计报告2010 — 2011学年第二学期课程名称计算机图形学设计题目多边形裁剪算法学生姓名孙晓芳学号**********专业班级计算机科学与技术10升指导教师侯守明2011 年6 月29 日目录目录目录 (I)第1章程序运行环境................................................................................... 错误!未定义书签。
1.1 程序运行环境的简单介绍................................................................. 错误!未定义书签。
1.2 程序运行环境的安装......................................................................... 错误!未定义书签。
1.3 多边形裁剪算法设计的内容........................................................................... 第2章直线裁剪和多边形裁剪的简单比较 (4)2.1 直线裁剪的介绍 (4)2.1.1 直线裁剪的基本原理………………………………………......................................2.1.2 直线裁剪算法的分类以及和窗口交点参数值的计算……………………………..2.2 多边形裁剪介绍 (9)2.2.1 多边形裁剪的基本思想……………………………………………………………..2.2.2 多边形和窗口相交的判定方法…………………………………………..第3章多边形裁剪方法的详细介绍 (12)3.1 Sutherland-Hodgman算法………………………………………………………………….3.2 多边形裁剪算法的流程图 (12)3.3多边形裁剪算法的实现 (13)第4章代码的实现 (14)第5章总结 (21)参考文献 (22)第1章程序的运行环境1.1 程序运行环境的简单介绍本次设计主要是运用了程序设计语言主要以C/C++语言为主,开发平台为Visual C++。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单多边形裁剪算法摘要:多边形裁剪算法与线性裁剪算法具有更广泛的实用意义,因此它是目前裁剪研究的主要课题。
本文主要介绍了一种基于多边形顶点遍历的简单多边形裁剪算法,它有效降低了任意多边形裁剪复杂度。
通过记录交点及其前驱、后继信息,生成结果多边形,该算法简化了交点的数据结构,节省了存储空间,降低了算法的时间复杂度,具有简单、易于编程实现、运行效率高的特点。
关键词:多边形裁剪;交点;前驱;后继;矢量数组一、技术主题的基本原理简单多边形裁剪算法综合考虑现有多边形裁剪算法的优缺点,它是一种基于多边形顶点遍历来实现简单多边形裁剪工作的。
其主要的原理是遍历多边形并把多边形分解为边界的线段逐段进行裁剪,输出结果多边形。
二、发展研究现状近年来,随着遥感绘图、CAD辅助设计、图象识别处理技术的发展,图形裁剪算法从最初在二维平面上线和图形的裁剪扩展到三维空间里体和场的裁剪,国内外相继提出不少行之有效的算法,但越来越复杂的图形和计算也对算法的速度和适用性提出了越来越高的要求。
因此,不断简化算法的实现过程,完善细节处理,满足大量任意多边形的裁剪也就成了当今算法研究的焦点之一。
以往多边形裁剪算法不是要求剪裁多边形是矩形,就是必须判断多边形顶点的顺时针和逆时针性,即存在不实用或者是增加了多边形裁剪算法的难度。
为了解决现在的问题,我们研究现在的新多边形算法,其中,裁剪多边形和被裁剪多边形都可以是一般多边形,且不需要规定多边形输入方向。
它采用矢量数组结构,只需遍历剪裁多边形和被裁剪多边形顶点即完成多边形的裁剪,具有算法简单、运行效率高的特点。
三、新算法设计1、算法的思想本算法是为了尽量降低任意多边形裁剪算法复杂度而提出的,其主要思想是采用矢量数组结构来遍历裁剪多边形和被裁多边形顶点,记录裁剪多边形和被裁减多边形交点及其前驱、后继信息,并通过记录相邻交点的线段,然后通过射线法选择满足条件的线段,之后进行线段连接,输出对应的裁剪结果。
算法数据结构简单,即没有用常用的数据结构,如线性链表结构、双向链表结构和树形结构,这样就节省了存储空间,增加算法的效率。
2、主要数据结构多边形裁剪算法的核心是数据结构,它决定了算法的复杂度和计算效率。
兼顾数据结构简单和节省存储空间的目的,简单多边形裁剪算法是基于矢量数组vector的数据结构进行裁剪的,多边形矢量数组的每个元素表示多边形顶点,且按顶点输入的顺序存储。
裁剪多边形和被裁剪多边以下我们分别用S和C表示,其涉及的数据结构主要如下:1)顶点或交点的数据结构:Vertex={double x,y;bool IslnPolygon;}说明:Vertex用来存储多边形的顶点或交点,x,y表示顶点的坐标,IsInPolygon为true表示该点在多边形内部或在多边形边上,否则,表示该点在多边形外部。
2)交点的前驱后继数据结构如下:CrossPointIndex{int nPredecessorlndex=0//前驱序号int nSuccessorIndex=0//后继序号}说明:CrossPointIndex用于记录交点在多边形中的前驱与后继的序号信息,以及记录同一交点在两个多边形中顶点序号。
即若P为多边形S与多边形C的交点,为了表示P在S和C中为同一点,则可用CrossPointIndex记录用nPredecessorIndex记录P在S中的序号、用nSuccessorIndex记录P在C中序号。
3)线段的数据结构如下:Segment{int nStartIndex=0int nEndIndex=0int* pIndexes;int nIndexCount;}说明:Segment表示多边形在另一个多边形内(外)的线段,nStartaIndex 为Segment起始顶点的序号,nEndIndex为Segment终止顶点的序号,pIndexes 为起始顶点与终止顶点之间的顶点序号集合,nIndexCount为pIndexes中元素个数。
3、算法设计1)第一阶段:采用射线法计算并判断S(或C)在C(或S)内,并修改S(或C)顶点Vertex的IsInPolygon的值。
由于射线可以任意选取,为了方便可以将射线定为从被测点开始射向X轴坐标正方向的水平射线。
由于多边形的一条边与射线的交点最为1个,因此可以循环遍历每条边并判断边与射线有无交点,若有交点,计数器加1,。
最后得到的计数器的值即多边形与射线的交点个数。
若交点个数为奇数,则被测点在多边形内部,若交点个数为偶数,则被测点在多边形外部。
对于多边形的任意一条边,为了尽量避免求交点时用到乘除法,将判断该边与射线有无交点的算法可以包含3步:1)判断边的两个顶点是否均在被测点左方或者下方或者上方,若是则无交点,返回假并退出;2)若不满足第一条原则,且满足两个顶点均在被测点右方,则一定有顶点,返回真并退出;3)若以上两条都不满足,求出边与射线的交点,比较交点的X坐标与被测点的X坐标,若前者大于后者则返回真并退出,否则返回假并退出。
设边的两个顶点坐标分别为(x1,y1)和(x2,y2),则边的直线方程可写为: X=m(y-y1)+x1其中,m=(x2-x1)/(y2-y1)为直线斜率的倒数。
使用该方程时需要两次乘除法,效率较低。
为了尽量避免求交点,第三部可以采用二分法将边分成两段,对其中两个端点分别跨过射线两侧的边段重新进行以上第一步和第二步的判断,若以上两步中还没有推出,再继续二分,直到能够被第一步和第二步判断并退出。
采用二分法则避免了乘除法,算法中只有除2运算和一些判断,适合于硬件处理,二分法的循环次数一般较少,当被测点位于边上时,循环次数组最多。
其具体的算法如下:(Point为被测点变量,point1、point2为一条边的两个端点变量)If(piont2.y<point1.y){P1=point2;p2=point1}Else{p1=point1;p2=point2;}if(p1.y>point.y||p2.y<point.y) //两个端点都在被测点上方或者下方Return false;//无交点Else If(p1.x<point.x&&p2.x<point.x) //当两个端点都在被测点左方时 Return false ;无交点Else if (p1.x>point.x&&p2.x>point.x){Return true;有交点Count++;}Else {M=MyPoint((p1.x+p2.x)/2,(p1.y+p2.y)/2)//得到边的中点If(M.y>point.y)P2=M;ElseP1=M;If(p2.x>p1.x) //当p2在p1的右方时{If(p2.x<point.x) //当p2在被测点左方时,无交点Return false;If(P1.x>point.x)//当p1在被测点右方时,有交点{ Return true;count++;}}Else //当P2在P1右方时{If(P1.X<point.x)//当P1在被测点左方时,无交点Return false;If(p2.x>point.x)//当P2在被测点右方时,有交点{Return true;count++ ;}}}图1.射线法判断点的位置2)第二阶段按正方向遍历S与C,计算S与C的交点集,交点的前驱后继信息、交点在S 和C中的对应关系,以及相交多边形弧段集;﹡步骤1:按正向方向遍历S与C并计算交点集Vector<Vertex>CrossPointSet,同时生成交点在S和C中前驱,后继信息Vector<CrossPointIndex>CrossPointIndexSetS 和Vector<CrossPointIndex>CrossPointIndexSetC.其中,CrossPointSet中元素IsInPolygon的值为true。
﹡步骤2 ;判断CrossPointIndexSetS或CrossPointIndexSetC中首尾元素的nPredecessorIndex与nSuccessorIndex值是否相等。
若想等,则将尾部元素放置到首部位置。
重复判断操作,直到首尾元素值不相等为止。
﹡步骤3:按倒序将CrossPointIndexSetS和CrossPointIndexSetC中元素插入到S 和Czhong ,计算原多边形顶点的序号信息,并建立交点在两个多边形中顶点序号关系集合。
假设插入交点后的S和C成为S’和C’。
插入同时,建立交点在S’和C’中顶点序号对应集合Vector<CrossPointlndex>CorrespondingCrossPointlndexSe t,并用nPredecessorlndex记录S’中顶点序号、nSuccessorlndex记录C’中顶点序号。
其中,以CrossPointlndexSetS和CrossPointlndexSetC中前驱序号为0的元素开始,交点序号在前驱序号的基础上顺序递增。
根据交点的前驱后继集合信息,S和C点在S’和C’中的序号具有如下变化规律:NPredecessorIndex[0]=0Successorlndex[i]=nPredecessorlndex[i]+ni+1nPredecessorIndex[i+1]=nSuccessorIndex[i]+1i<N,N为原多边形顶点数式中:nPredecessorlndex[i]、nSuccessorIndex[i]——S、C序号为i的顶点在S’和C’中序号,ni——S和C中序号为i与i+1之间的交点个数﹡步骤4 :释放CrossPointIndexSetS和CrossPointIndexSetC空间,修改交点对应集合CorrespondingCrossPointIndexSet的元素值。
﹡步骤5 :按正方向分别连接S’和C’中Vertex的IsInPolygon为true且相邻的顶点,生成线段集Vector<Segnment>SegmentSetS和Vector<Segment>SegmentSetC.步骤6 遍历SegmentSetS元素并取第i号元素的中点Pi,采用射线法判断Pi是否在C中,若不在C中,则删除SegmentSetS中第i号元素。
同理,删除SegmentSetC 中元素的中点不在S’中的项,﹡步骤7 分别合并SegmentSetS和SegmentSetC中为相邻元素。
流程图如图2 第二阶段流程。
第三阶段对弧段集进行合并,生成并输出结果多边形。