CN116012491A - 多边形填充方法和装置 - Google Patents
多边形填充方法和装置 Download PDFInfo
- Publication number
- CN116012491A CN116012491A CN202310265527.6A CN202310265527A CN116012491A CN 116012491 A CN116012491 A CN 116012491A CN 202310265527 A CN202310265527 A CN 202310265527A CN 116012491 A CN116012491 A CN 116012491A
- Authority
- CN
- China
- Prior art keywords
- polygon
- determining
- processed
- concave
- segmentation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明属于数字图形图像处理技术领域,提供一种多边形填充方法和装置,包括:第一确定步骤,确定待处理多边形是顺时针多边形或逆时针多边形,得到第一确定结果;第二确定步骤,基于待处理多边形的边向量积和第一确定结果,确定待处理多边形的凹点;根据所述凹点,确定分割线;第一分割步骤,基于所确定的分割线将待处理多边形进行分割;判断步骤,判断分割后的图形中是否有凹多边形;第二分割步骤,在确定无凹多边形时,对所述分割后的图形进行三角形分割,得到多个三角形,并将所述待处理多边形所形成的所有三角形进行填充处理。本发明能够提高识别顺时针多边形或逆时针多边形的效率,能够精确分割凹多边形或自相交多边形。
Description
技术领域
本发明涉及数字图形图像处理技术领域,尤其涉及一种多边形填充方法和装置。
背景技术
绘图区域填充是计算机图形学和数字图形图像处理领域中的一个重要处理过程,也是着色的最基本的操作,填充内容包括颜色、线条、图形图像等,在计算机辅助设计、图像处理、视频动画制作等方面有着广泛的应用。随着计算机硬件技术的发展,计算机图形图像的处理速度也越来越快,优良的填充算法将进一步降低计算资源占用率,节省区域填充时耗。在采用计算机进行区域填充时,任意形状的区域都可以当做一个多边形进行处理,因此,填充算法的好坏直接影响着多边形填充准确度及显示的实时性。
目前的多边形填充方法都具有消耗存储空间过大的缺点,在内存空间有限的嵌入式设备中无法实现。在嵌入式设备中,当渲染一张图片到屏幕时,这张图片会被拆成多个三角形,然后将这些三角形提交到渲染管道。常用的拆分三角形的方式为:求得这个多边形的中心点,再从中点依次连接到各个顶点。这种方法拆分凹多边形会造成多边形的中心点在图形外的情况造成拆分错误,因此存在因多边形拆分错误导致填充准确度低、填充效率低的问题。
因此,有必要提供一种新的多边形填充方法,以解决上述问题。
发明内容
本发明意在提供一种多边形填充方法和装置,以解决现有方法中因拆分凹多边形的拆分错误导致填充准确率低、填充效率低等的技术问题,本发明要解决的技术问题通过以下技术方案来实现。
本发明第一方面提出一种多边形填充方法,包括:第一确定步骤,确定待处理多边形是顺时针多边形或逆时针多边形,得到第一确定结果;第二确定步骤,基于所述待处理多边形的边向量积和所述第一确定结果,确定所述待处理多边形的凹点;根据所述凹点,确定分割线;第一分割步骤,基于所确定的分割线将待处理多边形进行分割;判断步骤,判断分割后的图形中是否有凹多边形;第二分割步骤,在确定无凹多边形时,对所述分割后的图形进行三角形分割,得到多个三角形,并将所述待处理多边形所形成的所有三角形进行填充处理。
根据可选的实施方式,在确定分割后的图形中有凹多边形时,对所确定分割后的图形中的凹多边形重新执行循环步骤,直至分割后的图形中无凹多边形且仅包含凸多边形时,结束循环步骤,对所述分割后的图形进行三角形分割;所述循环步骤包括第二确定步骤、第一分割步骤。
根据可选的实施方式,在确定分割后的图形中无凹多边形且仅包含凸边形时,对分割后的图形中所包含的凸多边形执行第二分割步骤以进行三角形分割。
根据可选的实施方式,在所述待处理多边形包括一个凹点的情况下,根据第二确定步骤确定第一凹点,确定与所述待处理多边形的第一交点,以确定第一分割线,所述第一分割线将所述待处理多边形分成两个多边形。
根据可选的实施方式,在所述待处理多边形包括一个以上的凹点的情况下,每确定一次凹点执行一次第一分割步骤,直至确定无凹点且分割后的图形中仅包含凸多边形时,结束循环步骤,进入所述第二分割步骤。
根据可选的实施方式,将所述待处理多边形的顶点进行点坐标表示以得到各边的向量表示;利用向量叉乘运算,计算所述待处理多边形中每两个相邻边向量之间的向量积,以确定所述待处理多边形是顺时针多边形或逆时针多边形。
根据可选的实施方式,包括:根据第一确定步骤,确定所述待处理多边形为凸多边形时,直接执行第二分割步骤,得到多个三角形。
根据可选的实施方式,执行所述第二分割步骤包括:计算待处理多边形的中心点,再将所述中心点与所述待处理多边形的各个顶点连接,以完成三角形分割。
本发明第二方面提出一种多边形填充装置,采用本发明第一方面所述的多边形填充方法,包括:第一确定模块,确定待处理多边形是顺时针多边形或逆时针多边形,得到第一确定结果;第二确定模块,基于所述待处理多边形的边向量积和所述第一确定结果,确定所述待处理多边形的凹点;根据所述凹点,确定分割线;第一分割模块,基于所确定的分割线将待处理多边形进行分割;判断模块,判断分割后的图形中是否有凹多边形;第二分割模块,在确定无凹多边形时,对所述分割后的图形进行三角形分割,得到多个三角形,并将所述待处理多边形所形成的所有三角形进行填充处理。
根据可选的实施方式,所述判断模块在确定分割后的图形中有凹多边形时,对所确定分割后的图形中的凹多边形重新执行循环步骤,直至分割后的图形中无凹多边形且仅包含凸多边形时,结束循环步骤,对所述分割后的图形进行三角形分割;所述循环步骤包括第二确定步骤、第一分割步骤;所述判断模块在确定分割后的图形中无凹多边形且仅包含凸边形时,对分割后的图形中所包含的凸多边形执行第二分割步骤以进行三角形分割。
本发明第三方面提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明第一方面所述的方法。
本发明第四方面提供一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现本发明第一方面所述的方法。
本发明实施例包括以下优点:
本发明能够快速简单使待处理多边形完成三角形的分割,具体通过经一次或多次第一分割步骤将分割后的图形中的凹多边形进行再分割,直至分割后的图形中无凹多边形且仅包含凸多边形时,结束循环,进入第二分割步骤,通过第二分割步骤完成三角形的分割,以将所分割的所有三角形进行填充,能够提高识别顺时针多边形或逆时针多边形的效率,能够精确分割凹多边形或自相交多边形。
附图说明
图1是本发明的多边形填充方法的一示例的步骤流程图;
图2是应用本发明的多边形填充方法的一示例的示例图;
图3是应用本发明的多边形填充方法的另一示例的示例图;
图4是应用本发明的多边形填充方法的又一示例的示例图;
图5是根据本发明的多边形填充装置的一示例的结构示意图;
图6是根据本发明的电子设备实施例的结构示意图;
图7是根据本发明的计算机可读介质实施例的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
鉴于上述问题,本发明提出一种多边形填充方法,具体通过两种分割过程使待处理多边形完成三角形的分割,具体通过经一次或多次第一分割步骤将分割后的图形中的凹多边形进行再分割,直至分割后的图形中无凹多边形且仅包含凸多边形,结束循环,进入第二分割步骤,通过第二分割步骤完成三角形的分割,以将所分割的所有三角形进行填充,能够提高识别顺时针多边形或逆时针多边形的效率,能够精确分割凹多边形或自相交多边形。
图1是本发明的多边形填充方法的一示例的步骤流程图。
下面参照图1至图4,将结合具体应用示例对本发明的内容进行详细说明。
首先,步骤S101为第一确定步骤,在第一确定步骤中,确定待处理多边形是顺时针多边形或逆时针多边形,得到第一确定结果。
具体地,所述待处理多边形为凹多边形或自相交多边形。
利用向量叉乘运算,计算所述待处理多边形中每两个相邻边向量之间的向量积,以确定所述待处理多边形是顺时针多边形或逆时针多边形。
在一示例中,如图2所示,所述待处理多边形为凹多边形,且该凹多边形为五边形。使用0、1、2、3、4、5为所述待处理多边形的顶点标号,并使用ABCDE表示所述待处理多边形。
需要说明的是,对于待处理多边形的边数没有特别限制,在其他实施方式中,还可以为四边形、六边形、七边形或者更多边形等。上述仅作为可选示例进行说明,不能理解成对本发明的限制。
具体地,将所述待处理多边形(例如图2中的凹多边形ABCDE)的顶点(例如图2中的顶点A、B、C、D、E)进行点坐标表示以得到各边的向量表示。例如以高斯直角坐标系表示所述待处理多边形的顶点,具体地,顶点A例如为(x0,y0),具体为polygon.point[0].x0= 10,polygon.point[0].y0= 200;顶点B例如为(x1,y1),具体为polygon.point[1].x1= 60,polygon.point[1].y1= 150;顶点C例如为(x2,y2),具体为polygon.point[2].x2= 250,polygon.point[2].y2= 170;顶点D例如为(x3,y3),具体为polygon.point[3].x3= 180,polygon.point[3].y3= 10,顶点E例如为(x4,y4),具体为polygon.point[4].x4= 20,polygon.point[4].y4= 20。
进一步地,使用点坐标表示进行边向量计算,得到各边的向量表示,例如向量AB、向量BC、向量CD、向量DE、向量EA。
利用向量叉乘运算,使用以下表达式(1),计算所述待处理多边形中每两个相邻边向量之间的向量积。
a×b=(xayb-xbya) (1)
其中,a为第一顶点,例如为顶点A、B、C、D、E,使用(xa,ya)表示;b为第二顶点,例如为与顶点A、B、C、D、E相对应的顶点B、C、D、E、A,使用(xb,yb)表示。
对于所述待处理多边形(例如图2中的凹多边形ABCDE)的两相邻边的向量积,依次按从A到E的顺序将两相邻边进行叉乘以得到向量积,例如,(向量AB)X(向量BC)。将得到的边向量积与零进行比较以判断所述待处理多边形是顺时针多边形还是逆时针多边形。只要有一个边向量积与其他边向量积的判断符号不同,则所述待处理多边形为逆时针多边形。当所有边向量积的判断符号都相同时,则所述待处理多边形为顺时针多边形。
在图2的示例中,所述凹多边形ABCDE的相邻两个边的边向量积如下:(向量AB)X(向量BC)>0,(向量BC)X(向量CD)<0,(向量CD)X(向量DE)>0,(向量DE)X(向量EA)>0,(向量EA)X(向量AB)>0,其中,四个向量积大于0,一个向量积小于0,因此,可确定所述凹多边形ABCDE是逆时针多边形,即得到第一确定结果。
需要说明的是,上述仅作为可选示例进行说明,不能理解成对本发明的限制。
接下来,在步骤S102中,第二确定步骤,基于所述待处理多边形的边向量积和所述第一确定结果,确定所述待处理多边形的凹点;根据所述凹点,确定分割线。
所述第二确定步骤为确定待处理多边形的凹点的步骤。
在所述待处理多边形包括一个凹点的情况下(图2所示的情况),根据第二确定步骤确定第一凹点,确定与所述待处理多边形的第一交点,以确定第一分割线,所述第一分割线将所述待处理多边形分成两个多边形。
在图2的示例中,根据凹多边形ABCDE的边向量积和所述第一确定结果(具体:凹多边形ABCDE为逆时针多边形),确定第一凹点B。
根据所确定的第一凹点B及其标号n(在本示例中,n为1),确定所述第一凹点B的前一标号(即n-1)对应的顶点(例如顶点A),将线AB(或向量AB)沿向量AB的方向延长且相交于待处理多边形的一个边(例如图2中边CD)上以形成第一交点H,由此得到第一分割线BH。
接下来,在步骤S103中,第一分割步骤,基于所确定的分割线将待处理多边形进行分割。
具体地,如图2所示,通过第一分割线BH将凹多边形ABCDE进行分割,以进入下一步骤,判断步骤。
需要说明的是,上述仅作为可选示例进行说明,不能理解成对本发明的限制。
接下来,在步骤S104中,判断步骤,判断分割后的图形中是否有凹多边形。
所述判断步骤还包括第一子判断步骤和第二子判断步骤。
在第一子判断步骤中,具体对分割后的图形中的每个多边形(具体为两个多边形)执行是否为三角形的判断。在确定所述两个多边形中的一者为三角形时,将该三角形切割,或将该三角形切割收集到三角形集合。
在第二子判断步骤中,具体对分割后的图形中的每个多边形(具体为两个多边形)执行是否为凸多边形的判断。在确定所述两个多边形为凸多边形时,结束通过寻找凹点、交点的第一分割步骤,直接对所述两个多边形执行第二分割步骤,以通过确定中心点并将中心点与各顶点连线的方式将所述凸多边形分割成多个三角形。
需要说明的是,在本示例中,先执行第一子步骤,再执行第二子步骤,但是不限于此,对于第一子步骤和所述第二子步骤在对所述待处理多边形分割之后执行,可同时执行第一子步骤和所述第二子步骤,也可不同时执行第一子步骤和所述第二子步骤。上述仅作为可选示例进行说明,不能理解成对本发明的限制。
在图2的示例中,通过第一分割线BH将凹多边形ABCDE分割后,形成分割后的图形,所述图形包括多边形AHDE和多边形BCH。通过第一子步骤,判断多边形BCH为三角形,且为凸多边形,将所述三角形BCH切割,或者将所述三角形BCH切割收集到三角形集合。继续通过第二子步骤判断多边形AHDE为凸多边形,当确定分割后的图形(具体为多边形AHDE和多边形BCH)均为凸多边形时,则确定结束第一分割步骤,进入第二分割步骤,对所述凸多边形AHDE执行第二分割步骤。
需要说明的是,上述仅作为可选示例进行说明,不能理解成对本发明的限制。
接下来,在步骤S105中,第二分割步骤,在确定无凹多边形时,对所述分割后的图形进行三角形分割,得到多个三角形,并将所述待处理多边形所形成的所有三角形进行填充处理。
在一实施方式中,在确定分割后的图形中有凹多边形时,对所确定分割后的图形中的凹多边形重新执行循环步骤,直至分割后的图形中无凹多边形且仅包含凸多边形时,结束循环步骤,对所述分割后的图形进行三角形分割,其中,所述循环步骤包括第二确定步骤、第一分割步骤。
在另一实施方式中,在确定分割后的图形中无凹多边形且仅包含凸边形时,对分割后的图形中所包含的凸多边形(具体为非三角形的凸多边形)执行第二分割步骤以进行三角形分割。
在图2的示例中,对多边形AHDE(即待分割多边形)执行第二分割步骤以进行三角形分割。
对于第二分割步骤,具体计算待处理多边形的中心点,再将所述中心点与所述待处理多边形的各个顶点连接,以完成三角形分割。
具体地,使用以下表达式(2)计算多边形AHDE(即待分割多边形)的中心点。
中=(p[i] + p[i+1]+……+ p[N]) / N(2)
其中,p中是指待分割多边形的中心点的横坐标(例如x中)或纵坐标(y中);i表示正整数;N表示待分割多边形的边数。
例如,对于多边形AHDE(即待分割多边形)的中心点的坐标为(x中,y中),具体为((x[1] + x[2]+x[3]+x[4]) /4,(y[1] + y[2]+y[3]+y[4]) /4)。
具体根据所确定的中心点(如图2中的O),将所述中心点(如图2中的O)与所述待分割多边形(例如图2中的多边形AHDE)的各个顶点连接,以完成三角形分割,得到多个三角形。
进一步地,将所述待处理多边形所形成的所有三角形提交到渲染通道以进行填充处理。
需要说明的是,上述仅作为可选示例进行说明,不能理解成对本发明的限制。
在另一示例中,如图3所示,待处理多边形为凹多边形(具体使用ABCDE表示,即凹多边形ABCDE),计算所述凹多边形ABCDE的两相邻边的边向量积,并确定为逆时针多边形。
具体根据待处理多边形(具体为图3的凹多边形ABCDE)的边向量积和所述第一确定结果(具体为逆时针多边形),确定第一凹点C,执行一次第一分割步骤,即根据第一分割线CG对凹多边形ABCDE进行分割,并分割后的图形(多边形GCDE)进一步确定是否有下一个凹点,确定第二凹点D,并按确定第一分割线的方法确定第二交点R,以确定第二分割线为DR。接着,通过第二分割线将所述分割后的图形(多边形GCDE)进行分割。
根据所确定的第一凹点C及其标号n(在本示例中,n为2),确定所述第一凹点C的前一标号(即n-1)对应的顶点(例如顶点B),将线BC(或向量BC)沿向量BC的方向延长且相交于待处理多边形的一个边(例如图3中边AE)上以形成第一交点G,由此得到第一分割线CG。
在所述待处理多边形包括一个以上的凹点的情况下,每确定一次凹点,则执行一次第一分割步骤,直至确定无凹点且分割后的图形中仅包含凸多边形时,结束循环步骤,进入所述第二分割步骤。
在图3的示例中,存在两个凹点,所以要执行两次第一分割步骤。具体地,在第一分割步骤中,通过第一分割线CG将凹多边形ABCDE进行分割后,形成多边形ABG和多边形GCDE。经判断步骤确定所述多边形ABG为凸多边形,多边形GCDE为凹多边形,进一步对分割后的图形(具体为凹多边形GCDE)确定第二凹点D,并按确定第一分割线的方法确定第二交点R,以确定第二分割线为DR,即第二分割线DR。接着,通过第二分割线DR对凹多边形GCDE执行一次第一分割步骤,得到两个多边形,具体为多边形GRE和多边形RCD。再经判断步骤,对多边形GRE和多边形RCD进行判断,多边形GRE和多边形RCD均为凸多边形且为三角形,因此,结束循环步骤,直接进入第二分割步骤。执行第二分割步骤,得到多个三角形,并将所有分割过程得到的三角形提交到渲染通道以进行填充处理。
在又一示例中,根据第一确定步骤,确定所述待处理多边形为凸多边形时,直接执行第二分割步骤,得到多个三角形,并将所有分割过程得到的三角形提交到渲染通道以进行填充处理。
在又一示例中,如图4所示,在该示例中,所述待处理多边形为自相交多边形(使用ABCDE表示,即自相交多边形ABCDE),根据第一确定步骤和第二确定步骤,确定第一凹点E,并确定第一交点F,该第一交点F为边AB和边DE的交点。进一步确定分割线为DE,即分割线DE(包括边DF和边FE),通过分割线DE将所述自相交多边形ABCDE分割成多边形AFE和多边形FDCB。经过判断步骤,判断多边形AFE和多边形FDCB均为凸多边形,多边形AFE为三角形,多边形FDCB为四边形。接着,执行第二分割步骤,具体对多边形FDCB确定中心点,并将该中心点与多边形FDCB的各顶点连接以得到多个三角形,并将分割过程得到的所有三角形提交到渲染通道,以进行填充。
需要说明的是上述仅作为可选示例进行说明,不能理解成对本发明的限制。此外,附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
与现有技术相比,本发明能够快速简单使待处理多边形完成三角形的分割,具体通过经一次或多次第一分割步骤将分割后的图形中的凹多边形进行再分割,直至分割后的图形中无凹多边形且仅包含凸多边形时,结束循环,进入第二分割步骤,通过第二分割步骤完成三角形的分割,以将所分割的所有三角形进行填充,能够提高识别顺时针多边形或逆时针多边形的效率,能够精确分割凹多边形或自相交多边形。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
图5是根据本发明的多边形填充的一示例的结构示意图。
参照图5,本公开第二方面提供一种多边形填充装置500,采用本发明第一方面所述的多边形填充方法,所述多边形填充装置500包括第一确定模块510、第二确定模块520、第一分割模块530、判断模块540和第二分割模块550。
第一确定模块510确定待处理多边形是顺时针多边形或逆时针多边形,得到第一确定结果。具体将所述待处理多边形的顶点进行点坐标表示以得到各边的向量表示。利用向量叉乘运算,计算所述待处理多边形中每两个相邻边向量之间的向量积,以确定所述待处理多边形是顺时针多边形或逆时针多边形。
接着,第二确定模块520基于所述待处理多边形的边向量积和所述第一确定结果,确定所述待处理多边形的凹点;根据所述凹点,确定分割线。
根据所述确定的分割线,第一分割模块530用于将待处理多边形进行分割。判断模块540用于判断分割后的图形中是否有凹多边形。
具体地,第二分割模块550在确定无凹多边形且仅包含凸多边形时,对所述分割后的图形进行三角形分割,得到多个三角形,并将所述待处理多边形所形成的所有三角形进行填充处理。
需要说明的是,在本发明的装置实施例中的多边形填充方法与本发明的方法实施例中的多边形填充方法大致相同,因此,省略了相同部分的说明。
进一步地,所述判断模块540在确定分割后的图形中有凹多边形时,对所确定分割后的图形中的凹多边形重新执行循环步骤,直至分割后的图形中无凹多边形且仅包含凸多边形时,结束循环步骤,对所述分割后的图形进行三角形分割;所述循环步骤包括第二确定步骤、第一分割步骤。
所述判断模块540在确定分割后的图形中无凹多边形且仅包含凸边形时,对分割后的图形中所包含的凸多边形执行第二分割步骤以进行三角形分割。
在所述待处理多边形包括一个凹点的情况下,根据第二确定步骤确定第一凹点,确定与所述待处理多边形的第一交点,以确定第一分割线,所述第一分割线将所述待处理多边形分成两个多边形。
在所述待处理多边形包括一个以上的凹点的情况下,每确定一次凹点执行一次第一分割步骤,直至确定无凹点且分割后的图形中仅包含凸多边形时,结束循环步骤,进入所述第二分割步骤。
第二分割模块550执行所述第二分割步骤,具体包括:计算待处理多边形的中心点,再将所述中心点与所述待处理多边形的各个顶点连接,以完成三角形分割。
在一可选实施方式中,根据第一确定步骤,确定所述待处理多边形为凸多边形时,直接执行第二分割步骤,得到多个三角形。
与现有技术相比,本发明能够快速简单使待处理多边形完成三角形的分割,具体通过经一次或多次第一分割步骤将分割后的图形中的凹多边形进行再分割,直至分割后的图形中无凹多边形且仅包含凸多边形时,结束循环,进入第二分割步骤,通过第二分割步骤完成三角形的分割,以将所分割的所有三角形进行填充,能够提高识别顺时针多边形或逆时针多边形的效率,能够精确分割凹多边形或自相交多边形。
图6是根据本发明的电子设备实施例的结构示意图。
如图6所示,电子设备以通用计算设备的形式表现。其中处理器可以是一个,也可以是多个并且协同工作。本发明也不排除进行分布式处理,即处理器可以分散在不同的实体设备中。本发明的电子设备并不限于单一实体,也可以是多个实体设备的总和。
所述存储器存储有计算机可执行程序,通常是机器可读的代码。所述计算机可读程序可以被所述处理器执行,以使得电子设备能够执行本发明的方法,或者方法中的至少部分步骤。
所述存储器包括易失性存储器,例如随机存取存储单元(RAM)和/或高速缓存存储单元,还可以是非易失性存储器,如只读存储单元(ROM)。
可选的,该实施例中,电子设备还包括有I/O接口,其用于电子设备与外部的设备进行数据交换。I/O接口可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
应当理解,图6显示的电子设备仅仅是本发明的一个示例,本发明的电子设备中还可以包括上述示例中未示出的元件或组件。例如,有些电子设备中还包括有显示屏等显示单元,有些电子设备还包括人机交互元件,例如按钮、键盘等。只要该电子设备能够执行存储器中的计算机可读程序以实现本发明方法或方法的至少部分步骤,均可认为是本发明所涵盖的电子设备。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图7所示,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干命令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的装置、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行装置、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现本公开的数据交互方法。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干命令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施例的方法。
以上具体地示出和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (10)
1.一种多边形填充方法,其特征在于,包括:
第一确定步骤,确定待处理多边形是顺时针多边形或逆时针多边形,得到第一确定结果;
第二确定步骤,基于所述待处理多边形的边向量积和所述第一确定结果,确定所述待处理多边形的凹点;根据所述凹点,确定分割线;
第一分割步骤,基于所确定的分割线将待处理多边形进行分割;
判断步骤,判断分割后的图形中是否有凹多边形;
第二分割步骤,在确定无凹多边形时,对所述分割后的图形进行三角形分割,得到多个三角形,并将所述待处理多边形所形成的所有三角形进行填充处理。
2.根据权利要求1所述的多边形填充方法,其特征在于,
在确定分割后的图形中有凹多边形时,对所确定分割后的图形中的凹多边形重新执行循环步骤,直至分割后的图形中无凹多边形且仅包含凸多边形时,结束循环步骤,对所述分割后的图形进行三角形分割;所述循环步骤包括第二确定步骤、第一分割步骤。
3.根据权利要求1所述的多边形填充方法,其特征在于,
在确定分割后的图形中无凹多边形且仅包含凸边形时,对分割后的图形中所包含的凸多边形执行第二分割步骤以进行三角形分割。
4.根据权利要求1或2所述的多边形填充方法,其特征在于,
在所述待处理多边形包括一个凹点的情况下,根据第二确定步骤确定第一凹点,确定与所述待处理多边形的第一交点,以确定第一分割线,所述第一分割线将所述待处理多边形分成两个多边形。
5.根据权利要求2所述的多边形填充方法,其特征在于,
在所述待处理多边形包括一个以上的凹点的情况下,每确定一次凹点执行一次第一分割步骤,直至确定无凹点且分割后的图形中仅包含凸多边形时,结束循环步骤,进入所述第二分割步骤。
6.根据权利要求1所述的多边形填充方法,其特征在于,将所述待处理多边形的顶点进行点坐标表示以得到各边的向量表示;
利用向量叉乘运算,计算所述待处理多边形中每两个相邻边向量之间的向量积,以确定所述待处理多边形是顺时针多边形或逆时针多边形。
7.根据权利要求1所述的多边形填充方法,其特征在于,包括:
根据第一确定步骤,确定所述待处理多边形为凸多边形时,直接执行第二分割步骤,得到多个三角形。
8.根据权利要求1或7所述的多边形填充方法,其特征在于,执行所述第二分割步骤包括:
计算待处理多边形的中心点,再将所述中心点与所述待处理多边形的各个顶点连接,以完成三角形分割。
9.一种多边形填充装置,采用权利要求1至8中任一项所述的多边形填充方法,其特征在于,包括:
第一确定模块,确定待处理多边形是顺时针多边形或逆时针多边形,得到第一确定结果;
第二确定模块,基于所述待处理多边形的边向量积和所述第一确定结果,确定所述待处理多边形的凹点;根据所述凹点,确定分割线;
第一分割模块,基于所确定的分割线将待处理多边形进行分割;
判断模块,判断分割后的图形中是否有凹多边形;
第二分割模块,在确定无凹多边形时,对所述分割后的图形进行三角形分割,得到多个三角形,并将所述待处理多边形所形成的所有三角形进行填充处理。
10.根据权利要求9所述的多边形填充装置,其特征在于,
所述判断模块在确定分割后的图形中有凹多边形时,对所确定分割后的图形中的凹多边形重新执行循环步骤,直至分割后的图形中无凹多边形且仅包含凸多边形时,结束循环步骤,对所述分割后的图形进行三角形分割;所述循环步骤包括第二确定步骤、第一分割步骤;
所述判断模块在确定分割后的图形中无凹多边形且仅包含凸边形时,对分割后的图形中所包含的凸多边形执行第二分割步骤以进行三角形分割。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310265527.6A CN116012491B (zh) | 2023-03-20 | 2023-03-20 | 多边形填充方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310265527.6A CN116012491B (zh) | 2023-03-20 | 2023-03-20 | 多边形填充方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116012491A true CN116012491A (zh) | 2023-04-25 |
CN116012491B CN116012491B (zh) | 2023-09-19 |
Family
ID=86019567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310265527.6A Active CN116012491B (zh) | 2023-03-20 | 2023-03-20 | 多边形填充方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116012491B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4901251A (en) * | 1986-04-03 | 1990-02-13 | Advanced Micro Devices, Inc. | Apparatus and methodology for automated filling of complex polygons |
US5689627A (en) * | 1994-11-29 | 1997-11-18 | Fujitsu Limited | Polygon drawing and filling apparatus which initially sorts three dimensional polygons by planar characteristics |
JPH1011590A (ja) * | 1996-06-27 | 1998-01-16 | Daikin Ind Ltd | 凹ポリゴンの幾何学的分割方法 |
US6111587A (en) * | 1997-05-08 | 2000-08-29 | Autodesk, Inc. | Method for converting non-zero winding to even-odd fill polygons |
JP2000251081A (ja) * | 1999-02-26 | 2000-09-14 | Canon Inc | 内点判定方法、グラフィック描画装置およびプログラム記憶媒体 |
JP2000251056A (ja) * | 1999-03-01 | 2000-09-14 | Matsushita Electric Ind Co Ltd | 多角形幾何学的分割方法および装置 |
US20020063708A1 (en) * | 2000-11-24 | 2002-05-30 | Keiichi Senda | Polygon rendering device |
US20100289809A1 (en) * | 2009-05-18 | 2010-11-18 | Simon Fenney | Method and apparatus for rendering a computer generated image |
CN101996414A (zh) * | 2009-08-18 | 2011-03-30 | 富士通株式会社 | 用于渲染凹多边形的方法和装置 |
CN105787968A (zh) * | 2016-03-22 | 2016-07-20 | 北京建飞无限科技有限公司 | 多边形中凹凸点的识别方法及装置 |
CN112837416A (zh) * | 2019-11-22 | 2021-05-25 | 上海幻电信息科技有限公司 | 基于三角剖分的多边形渲染方法、装置及存储介质 |
CN113012259A (zh) * | 2021-03-23 | 2021-06-22 | 上海葛兰岱尔网络科技有限公司 | 一种基于三角剖分算法对凹多边形填充处理的方法 |
-
2023
- 2023-03-20 CN CN202310265527.6A patent/CN116012491B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4901251A (en) * | 1986-04-03 | 1990-02-13 | Advanced Micro Devices, Inc. | Apparatus and methodology for automated filling of complex polygons |
US5689627A (en) * | 1994-11-29 | 1997-11-18 | Fujitsu Limited | Polygon drawing and filling apparatus which initially sorts three dimensional polygons by planar characteristics |
JPH1011590A (ja) * | 1996-06-27 | 1998-01-16 | Daikin Ind Ltd | 凹ポリゴンの幾何学的分割方法 |
US6111587A (en) * | 1997-05-08 | 2000-08-29 | Autodesk, Inc. | Method for converting non-zero winding to even-odd fill polygons |
JP2000251081A (ja) * | 1999-02-26 | 2000-09-14 | Canon Inc | 内点判定方法、グラフィック描画装置およびプログラム記憶媒体 |
JP2000251056A (ja) * | 1999-03-01 | 2000-09-14 | Matsushita Electric Ind Co Ltd | 多角形幾何学的分割方法および装置 |
US20020063708A1 (en) * | 2000-11-24 | 2002-05-30 | Keiichi Senda | Polygon rendering device |
US20100289809A1 (en) * | 2009-05-18 | 2010-11-18 | Simon Fenney | Method and apparatus for rendering a computer generated image |
CN101996414A (zh) * | 2009-08-18 | 2011-03-30 | 富士通株式会社 | 用于渲染凹多边形的方法和装置 |
CN105787968A (zh) * | 2016-03-22 | 2016-07-20 | 北京建飞无限科技有限公司 | 多边形中凹凸点的识别方法及装置 |
CN112837416A (zh) * | 2019-11-22 | 2021-05-25 | 上海幻电信息科技有限公司 | 基于三角剖分的多边形渲染方法、装置及存储介质 |
CN113012259A (zh) * | 2021-03-23 | 2021-06-22 | 上海葛兰岱尔网络科技有限公司 | 一种基于三角剖分算法对凹多边形填充处理的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116012491B (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8698808B2 (en) | Conversion of dashed strokes into quadratic Bèzier segment sequences | |
JP4598031B2 (ja) | 加速された開始タイル探索 | |
JP5657671B2 (ja) | テセレーションエンジン及びそのアプリケーション | |
US8379025B1 (en) | Methods and apparatus for rendering vector art on graphics hardware | |
US20150269773A1 (en) | Graphics processing systems | |
US7414624B2 (en) | Apparatus and method for a frustum culling algorithm suitable for hardware implementation | |
US20140055486A1 (en) | Method, system and apparatus for rendering a graphical object | |
CN115018992B (zh) | 发型模型的生成方法、装置、电子设备及存储介质 | |
US8436856B1 (en) | Systems and methods for mixing the execution order of shading language code | |
CN111260750A (zh) | openFL绘制矢量图形的处理方法、装置及电子设备 | |
CN110782504A (zh) | 曲线确定方法、装置、计算机可读存储介质及设备 | |
US8860722B2 (en) | Early Z scoreboard tracking system and method | |
CN116012491B (zh) | 多边形填充方法和装置 | |
CN108010113B (zh) | 一种基于像素着色器的深度学习模型执行方法 | |
US20240045787A1 (en) | Code inspection method under weak memory ordering architecture and corresponding device | |
CN111414150A (zh) | 游戏引擎渲染方法、装置、电子设备及计算机存储介质 | |
CN112700519A (zh) | 动画展示方法、装置、电子设备及计算机可读存储介质 | |
CN110502305B (zh) | 一种动态界面的实现方法、装置及相关设备 | |
CN109949421B (zh) | 三角网切割方法及装置 | |
US10043310B2 (en) | Smoothing edges of a mesh | |
CN114723640B (zh) | 障碍物信息生成方法、装置、电子设备和计算机可读介质 | |
CN114139701A (zh) | 一种用于边界线提取的神经网络模型训练方法及相关设备 | |
CN111784796A (zh) | 一种地形网格生成方法、装置、设备和介质 | |
CN107134001B (zh) | 用于3d动画材料的图像处理的方法、装置、设备及介质 | |
JP7343637B2 (ja) | データ処理方法、装置、電子機器及び記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 518055 903, block C, building 1, Section 1, Chuangzhi Yuncheng, Liuxian Avenue, Xili community, Xili street, Nanshan District, Shenzhen, Guangdong Province Applicant after: Shenzhen Jiangtai Technology Co.,Ltd. Address before: 518055 903, block C, building 1, Section 1, Chuangzhi Yuncheng, Liuxian Avenue, Xili community, Xili street, Nanshan District, Shenzhen, Guangdong Province Applicant before: CETC Jiangtai (Shenzhen) Technology Development Co.,Ltd. |