多边形裁剪中交点为多边形顶点的进出性判别方法

文档序号:6548949阅读:238来源:国知局
多边形裁剪中交点为多边形顶点的进出性判别方法
【专利摘要】本发明公开一种多边形裁剪中交点为多边形顶点的进出性判别方法,在裁剪多边形C与实体多边形S之间交点求解,且在交点的进出性预判别之后,计算交点集合中具有相同坐标交点的个数,并针对交点中存在重点现象,分为存在两个相同坐标的交点情况和存在两个以上相同坐标的交点情况的不同情况分别进行阐述,进而确定交点的进出性,最终可得到精准的裁剪结果。本发明步骤简单易实现,准确度高。
【专利说明】多边形裁剪中交点为多边形顶点的进出性判别方法
【技术领域】
[0001]本发明涉及一种计算机图形学领域,具体涉及一种多边形裁剪中交点为多边形顶点的进出性判别方法。
【背景技术】
[0002]多边形的裁剪是图形学中的基本操作,一般多边形之间的裁剪过程为裁剪多边形与实体多边形定点的顺序存储、裁剪多边形与实体多边形之间交点求解、多边形交点的进出性判别、多边形交点分别插入裁剪多边形与实体多边形的顶点集合,通过交点的进出性交替便利裁剪多边形和实体多边形得到裁剪结果。
[0003]现有技术中存在的问题是:当裁剪多边形与实体多边形存在顶点或边合的情况时,在求解裁剪多边形与主多边形的交点时存在多个相同的交点,并且交点的进出性判定不一致,从而无法准确的插入裁剪多边形和实体多边形的顶点集合中,同时无法根据交点的进出性得到准确的裁剪结果。

【发明内容】

[0004]发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种多边形裁剪中交点为多边形顶点的进出性判别方法。
[0005]技术方案:本 发明的一种多边形裁剪中交点为多边形顶点的进出性判别方法,包括以下具体步骤:
[0006](I)在裁剪多边形C与实体多边形S之间交点求解,且在交点的进出性预判别之后,计算交点集合中具有相同坐标交点的个数;其中,用Ci代表裁剪多边形的第i个顶点,用S」代表实体多边形的第j个顶点,T表示裁剪多边形和实体多边形求交后的交点集合,Tk代表添加到裁剪多边形中交点集合T中第k个交点,Q1代表添加到实体多边形顶点序列中交点集合Q的第I个点,其中i,j, k, I e [I, 2…,η],NT为新添加到裁剪多边形顶点序列新添加到Tk中的交点,NQ为新添加到Q1中的交点;
[0007](2)当具有相同坐标交点的个数N等于2时,说明裁剪多边形与实体多边形存在相同的顶点,且顶点坐标等于交点坐标,假设这两个交点分别表示为Tk与Tk+1,Q中与Tk与Tk+1坐标相同的两个交点分别为Q1与Q1+1,则该顶点进出性的判别步骤如下:
[0008](21)如果Tk与Tk+1的进出性相同:
[0009]①若交点Tk与Tk+1的坐标与顶点Ci坐标不相等,交点Q1与Q1+1的坐标与顶点Sj坐标相同,则交点Tk与Tk+1是裁剪过程中的需要添加的交点,添加一个交点NT,该交点坐标及进出性均与Tk相同,且交点Q1与Q1+1是裁剪过程中的顶点坐标,设置Sj的进出性与顶点Ci的进出性相异;
[0010]②若交点Tk与Tk+1的坐标与顶点Ci坐标相等,交点Q1与Q1+1的坐标与顶点Sj坐标相同,则交点Tk与Tk+1是裁剪过程中顶点,设置顶点Ci的进出性等于交点Tk与Tk+1的进出性,交点Q1与Q1+1是裁剪过程中需要添加的交点,添加一个新点NQ,该交点坐标及其进出性与Q1相同;
[0011]③从交点集合T中删除交点Tk与Tk+1,交点集合Q中删除交点Q1与Q1+1。
[0012](22)如果Tk与Tk+1的进出性不相同:
[0013]①若交点Tk与Tk+1的坐标与顶点Ci坐标不等,交点Q1与Q1+1的坐标与顶点Sj坐标相等,判别交点Tk与Tk+1的先后顺序以及后一个交点的进出性,进而判别顶点Sj的进出性,并向T中添加新交点NT,其中NT的坐标及进出性与Sj相同;
[0014]②若交点Tk与Tk+1的坐标与顶点Ci坐标相等,交点Q1与Q1+1的坐标与顶点Sj坐标相等,判别交点Tk与Tk+1的先后顺序,依据得到交点Tk与Tk+1裁剪多边形线段的先后顺序,进而得到顶点Ci的进出性,向Q中添加新较低那NQ,其中NQ的坐标与顶点Ci的坐标相同,进出性相异。
[0015]③从交点集合T中删除交点Tk与Tk+1,交点集合Q中删除交点Q1与Q1+1。
[0016](23)完成对交点集合T和Q中所有存在两个相同坐标的交点的处理,设置相应多边形顶点的进出性,更新交点集合T中的交点;
[0017](3)当具有相同坐标交点的个数N大于2时,则顶点进出性的判别步骤如下: [0018](31)该交点坐标与裁剪多边形的顶点Ci坐标相同,同时该交点坐标与实体多边形的顶点Sj坐标相同;
[0019](32)判断以顶点Ci为起点的边CiCw与实体多边形的边Sp1Sj与边S」Sj+1是否共线.-^4 ,
[0020](33)如果不存在共线,边CiCw与顶点Sp Sj和Sj+1构成的内角Z Sp1SjSp1的关系,如果边CiCw在内角Z Sp1SjSp1内部,则顶点Ci为进点,在内角Z Sp1SjSp1的外部,则顶点Ci为出点,顶点Sj为进点;
[0021](34)如果存在共线,判断边CwCi与顶点Sj_1、Sj和Sj+1构成的内角Z Sp1SjSp1的关系,如果边Cp1Ci在内角Z Sj^1SjSjtl的内部,则顶点Ci为出点;如果边Cp1Ci在内角Z Sj^1SjSjtl的外部,则顶点Ci为进点,顶点Sj为出点;
[0022](35)删除交点集合T和Q中存在两个以上相同坐标的交点。
[0023]进一步的,所述步骤⑴的具体步骤如下:
[0024](11)分别将裁剪多边形C和实体多边形S的顶点坐标按顺时针存储成序列,其中用Ci代表裁剪多边形的第i个顶点,用S」代表实体多边形中第j个顶点;
[0025](12)按顺序对裁剪多边形C的边和实体多边形S的边进行求交运算,求出可能存在交点的边;
[0026](13)对多边形求交的交点集合进行统计,获得存在相同坐标的交点的数量,判断交点坐标与多边形顶点是否相同,进而判断交点是否为添加到多边形顶点序列中的交点;
[0027](14)以实体多边形S为参考对象,判断出将添加到裁剪多边形C顶点序列中的交点的进出性以及添加到实体多边形S顶点序列中的交点的进出性。
[0028]进一步的,若所述步骤(14)中的交点坐标唯一,则该交点为多边形线段间的交点。
[0029]进一步的,当判断存在交点的多边形顶点的进出性后,保留坐标唯一的交点;然后按顺序将交点添加到多边形顶点序列中,并更新顶点序列表;接着交替遍历更新后裁剪多边形和实体多边形顶点序列,通过顶点的进出性和添加的交点的进出性得到裁剪结果多边形。
[0030]有益效果:本发明能够去除线段求交过程中所有冗余的交点,提高裁剪过程的效率;同时扩展多边形裁剪方法的适用范围,可以提高实现裁剪多边形与实体多变形之间的求交运算的准确性,通过本发明中快速准确的判别交点的进出性,最终能够得到准确的裁剪图形。
【专利附图】

【附图说明】
[0031]图1为本发明中存在顶点为交点时的多边形裁剪流程示意图;
[0032]图2为本发明中存在两个相同交点的示意图;
[0033]图3为本发明中存在两个相同交点时的流程示意图;
[0034]图4为本发明中存在两个以上相同交点的示意图;
[0035]图5为本发明中存在两个以上相同交点时的流程示意图。
【具体实施方式】
[0036]下面对本发明技术方案结合附图进行详细说明。
[0037]如图1所示,当裁剪多边形C与实体多边形S的交点为多边形顶点时的多边形裁剪步骤如下:
[0038](I)将裁剪多边形C和实体多边形S的顶点坐标按顺时针存储成点序列;
[0039](2)按顺序对裁剪多边形C的边与实体多边形S的边进行求交运算,求出可能存在交点的边;
[0040](3)以实体多边形S为参考对象,判断出将要插入到裁剪多边形C中的交点的进出性,插入实体多边形S的交点的进出性相异;
[0041](4)对两个多边形求出的交点进行统计,获得存在相同坐标的交点的数量;
[0042](4.1)如果交点存在重点现象,则需要进行两种情况:一种交点坐标与多边形顶点坐标相同;另一种情况交点坐标与一个多边形顶点坐标相同,同时是另一多边形的交
占.[0043](4.2)如果交点坐标唯一,则为多边形线段间的交点;
[0044](5)判断存在交点的多边形顶点的进出性,保留坐标唯一的交点;
[0045](6)按顺序将交点添加到多边形顶点序列中,更新顶点序列表;
[0046](7)交替遍历更新后裁剪多边形和实体多边形顶点序列,通过顶点的进出性和添加的交点的进出性得到裁剪结果多边形。
[0047]下面针对交点中存在重点现象,分为存在两个相同坐标的交点情况和存在两个以上相同坐标的交点情况的不同情况进行阐述。
[0048]如图2所示,当存在两个相同坐标的交点情况时的实施例为:由顶点仏、(:2、(:3、(;、C5> C6, C7构成裁剪多边形,由顶点S1、S2, S3、S4、S5、S6、S7、S8、S9、S10, S11构成实体多边形。图中的裁剪多边形C与实体多边形S完成线段求交后,由于顶点S2、S8以及S11的坐标在线段C3C4X5C6和C1C2上,同时顶点C4与S5坐标相同且线段C3C4与S4S5X4C5与S5S6共线,则交点集合T中存在两个与顶点C4、S2、S8& S11坐标相同的交点,由于待插入多边形顶点中的交点集合需要其坐标唯一,因此需要对存在两个相同坐标的交点情况进行相应处理。[0049]如图3所示,当存在两个相同坐标的交点情况时的处理步骤如下:
[0050](I)在交点集合T中存在出相同坐标的交点的数量为N = 2,分别为交点Tk和Tk+1 ;[0051 ] (2)通过交点Tk与Tk+1和交点Q1与Q1+1的进出性以及交点Tk与Tk+1和交点Q1与Q1+1坐标是否是裁剪多边形和实体多边形的顶点坐标,从而判别裁剪多边形与实体多边形的裁剪转折点是多边形的顶点还是交点;
[0052](2.1)如果Tk与Tk+1的进出性相同
[0053]①若交点Tk与Tk+1的坐标与顶点Ci坐标不等,交点Q1与Q1+1的坐标与顶点Sj坐标相同,则交点Tk与Tk+1是裁剪过程中的一个需要添加的交点,添加一个交点NT,该交点坐标及进出性与Tk相同;交点Q1与Q1+1是裁剪过程中的顶点坐标,设置Sj的进出性与交点Ci的进出性相异;
[0054]②若交点Tk与Tk+1的坐标与顶点Ci坐标相等,交点Q1与Q1+1的坐标与顶点Sj坐标相同,则交点Tk与Tk+1是裁剪过程中顶点坐标,设置顶点Ci的进出性等于交点T1与T2的进出性,交点Q1与Q1+1是裁剪过程中需要添加的交点,添加一个新交点NQ,该交点坐标及其进出性与Q1相同;
[0055]③从交点集合T中删除交点Tk与Tk+1,交点集合Q中删除交点Q1与Q1+1。
[0056](2.2)如果Tk与Tk+1的进出性不相同
[0057]①若交点Tk与Tk+1的坐标与顶点Ci坐标不等,交点Q1与Q1+1的坐标与顶点Sj坐标相等,判别交点Tk与Tk+1的先后顺序,依据得到交点Tk与Tk+1实体多边形线段的先后顺序,依据后一个交点的进出性可以判别顶点Sj的进出性,并向T中添加新交点NT,其中NT的坐标及进出性与Sj相同;
[0058]②若交点Tk与Tk+1的坐标与顶点Ci坐标相等,交点Q1与Q1+1的坐标与顶点Sj坐标相等,判别交点Tk与Tk+1的先后顺序,依据得到交点Tk与Tk+1裁剪多边形线段的先后顺序,得到顶点Ci的进出性向Q中添加新交点NQ,其中NQ的坐标与顶点Ci的坐标相同,进出性相异;
[0059]③从交点集合T中删除交点Tk与Tk+1,交点集合Q中删除交点Q1与Q1+1 ;
[0060](3)完成对交点集合T和Q中所有存在两个相同坐标的交点的处理,设置相应多边形顶点的进出性,更新交点集合T中的交点。
[0061]如图4所示,当存在两个以上相同坐标的交点情况时的实施例为:由顶点Cp C2,C3> C4, C5, C6构成裁剪多边形,由顶点S1、S2、S3> S4、S5、S6、S7、S8构成实体多边形。在完成裁剪多边形与实体多边形线段求交后,由于顶点C1与S1X2与S3、C4与S7坐标相同,所以在交点集合T中存在两个以上与顶点C1 (顶点S1)、顶点C2 (顶点S3)以及顶点C4 (顶点S7)坐标相同的交点,由于待插入多边形顶点中的交点集合需要其坐标唯一,因此需要对存在两个以上相同坐标的交点情况进行相应处理。
[0062]如图5所示,当存在两个以上相同坐标的交点情况时的处理步骤如下:
[0063](I)在交点集合T中存在相同坐标交点数量N>2 ;
[0064](2)该交点坐标与裁剪多边形的顶点Ci坐标相同,同时该交点坐标与实体多边形的顶点Sj坐标相同;
[0065](3)判断以以顶点Ci为起点的边CiCw与实体多边形的边Sp1Sj与边SjSj+1是否共线.一,.[0066](4)不存在共线,边CiCw与顶点Sp Sj和Sj+1构成的内角Z SjmSjSj^1的关系,如果边CiCw在内角Z Sp1SjSp1内部,则顶点Ci为进点,在内角Z Sj^1SjSjtl的外部,则顶点Ci为出点,顶点Sj为进点;
[0067](5)如果存在共线,判断边CwCi与顶点Sp1、Sj和Sj+1构成的内角Z Sj^1SjSjtl的关系,如果边Cp1Ci在内角Z Sj^1SjSjtl的内部,则顶点Ci为出点;如果边Cp1Ci在内角Z Sj^1SjSjtl的外部,则顶点Ci为进点,顶点Sj为出点;
[0068](6)删除交点集合T和Q中存在两个以上相同坐标的交点。
[0069]通过上述两个实施例可以看出,本发明的多边形裁剪中交点为多边形顶点的进出性判别方法,步骤简单易实现并且准确度高,可以精准的根据交点的进出性得到准确的裁剪结 果。
【权利要求】
1.一种多边形裁剪中交点为多边形顶点的进出性判别方法,其特征在于包括以下具体步骤: (1)在裁剪多边形C与实体多边形S之间交点求解,且在交点的进出性预判别之后,计算交点集合中具有相同坐标交点的个数;其中,用Ci代表裁剪多边形的第i个顶点,用SjK表实体多边形的第j个顶点,T表示裁剪多边形和实体多边形求交后的交点集合,Tk代表添加到裁剪多边形中交点集合T中第k个交点,Q1代表添加到实体多边形顶点序列中的交点集合Q的第I个点,其中i,j,k,I e [1,2…,η],NT为新添加到裁剪多边形顶点序列新添加到Tk中的交点,NQ为新添加到Q1中的交点; (2)当具有相同坐标交点的个数N等于2时,说明裁剪多边形与实体多边形存在相同的顶点,且顶点坐标等于交点坐标,假设这两个交点分别表示为Tk与Tk+1, Q中与Tk与Tk+1坐标相同的两个交点分别为Q1与Q1+1,则该顶点进出性的判别步骤如下: (21)如果Tk与Tk+1的进出性相同: ①若交点Tk与Tk+1的坐标与顶点Ci坐标不相等,交点Q1与Q1+1的坐标与顶点Sj坐标相同,则交点Tk与Tk+1是裁剪过程中的需要添加的交点,添加一个交点NT,其中该交点坐标及进出性均与Tk相同,且交点Q1与Q1+1是裁剪过程中的顶点坐标,设置Sj的进出性与顶点Ci的进出性相异; ②若交点Tk与Tk+1的坐标与顶点Ci坐标相等,交点Q1与Q1+1的坐标与顶点Sj坐标相同,则交点Tk与Tk+1是裁剪过程中顶点,设置顶点Ci的进出性等于交点Tk与Tk+1的进出性,;交点Q1与Q1+1是裁剪过程中需要添加的交点,添加一个新点NQ,该交点坐标及其进出性与Q1相同; ③从交点集合T中删除交点Tk与Tk+1,交点集合Q中删除交点Q1与Q1+1; (22)如果Tk与Tk+1的进出性不相同: ①若交点Tk与Tk+1的坐标与顶点Ci坐标不等,交点Q1与Q1+1的坐标与顶点Sj坐标相等,判别交点Tk与Tk+1的先后顺序以及后一个交点的进出性,进而判别顶点Sj的进出性,并向T中添加新交点NT,其中NT的坐标及进出性与Sj相同; ②若交点Tk与Tk+1的坐标与顶点Ci坐标相等,交点Q1与Q1+1的坐标与顶点Sj坐标相等,判别交点Tk与Tk+1的先后顺序,依据得到交点Tk与Tk+1裁剪多边形线段的先后顺序,进而得到顶点Ci的进出性,向Q中添加新较低那NQ,其中NQ的坐标与顶点Ci的坐标相同,进出性相异; ③从交点集合T中删除交点Tk与Tk+1,交点集合Q中删除交点Q1与Q1+1; (23)完成对交点集合T和Q中所有存在两个相同坐标的交点的处理,设置相应多边形顶点的进出性,更新交点集合T中的交点; (3)当具有相同坐标交点的个数N大于2时,则顶点进出性的判别步骤如下: (31)该交点坐标与裁剪多边形的顶点Ci坐标相同,同时该交点坐标与实体多边形的顶点Sj坐标相同; (32)判断以顶点Ci为起点的边CiCw与实体多边形的边Sp1Sj与边SjSj+1是否共线; (33)如果不存在共线,边CiCw与顶点SpSj和Sj+1构成的内角ZSp1SjSp1的关系,如果边CiCw在内角Z Sp1SjSp1内部,则顶点Ci为进点,在内角Z Sj^1SjSjtl的外部,则顶点Ci为出点,顶点Sj为进点;(34)如果存在共线,判断边CwCi与顶点Sp1及和Sp1构成的内角ZShSA+1的关系,如果边Cp1Ci在内角Z Sj^1SjSjtl的内部,则顶点Ci为出点;如果边Cp1Ci在内角Z Sp1SjSp1的外部,则顶点Ci为进点,顶点Sj为出点; (35)删除交点集合T和Q中存在两个以上相同坐标的交点。
2.根据权利要求1所述的多边形裁剪中交点为多边形顶点的进出性判别方法,其特征在于所述步骤(1)的具体步骤如下: (11)分别将裁剪多边形C和实体多边形S的顶点坐标按顺时针存储成序列,其中用Ci代表裁剪多边形的第i个顶点,用S」代表实体多边形中第j个顶点; (12)按顺序对裁剪多边形C的边和实体多边形S的边进行求交运算,求出存在交点的边; (13)对多边形求交的交点集合进行统计,获得存在相同坐标的交点的数量,判断交点坐标与多边形顶点是否相同,进而判断交点是否为添加到多边形顶点序列中的交点; (14)以实体多边形S为参考对象,判断出将添加到裁剪多边形C顶点序列中的交点的进出性以及添加到实体多边形S顶点序列中的交点的进出性。
3.根据权利要求2所述的多边形裁剪中交点为多边形顶点的进出性判别方法,其特征在于:若所述步骤(14)中的交点坐标唯一,则该交点为多边形线段间的交点。
4.根据权利要求 2所述的多边形裁剪中交点为多边形顶点的进出性判别方法,其特征在于:当判断存在交点的多边形顶点的进出性后,保留坐标唯一的交点;然后按顺序将交点添加到多边形顶点序列中,并更新顶点序列表;接着交替遍历更新后裁剪多边形和实体多边形顶点序列,通过顶点的进出性和添加的交点的进出性得到裁剪结果多边形。
【文档编号】G06T11/00GK104036533SQ201410251976
【公开日】2014年9月10日 申请日期:2014年6月9日 优先权日:2014年6月9日
【发明者】王慧青, 崇素文, 王庆, 李玲 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1