将二维平面内含洞及岛的多边形三角化的方法技术

技术编号:7759964 阅读:357 留言:0更新日期:2012-09-14 03:01
本发明专利技术涉及一种计算机处理多边形的三角化的方法,解决多边形三角化的处理过程中存的算法复杂,不易于计算机程序逻辑的实现等问题,实现方法是:一种将二维平面内含洞及岛的多边形三角化的方法,其特征包括以下步骤:a.在平面内抽取含洞及岛多边形的顶点和边,去除冗余,建立边和顶点的集合;b.重新组合,形成新的独立的多边形和洞的集合;c.确立多边形与洞之间的存在的关系;d.分割每一个独立含洞多边形为三角形的弦集合;e.将每个独立含洞多边形的边与弦组成候选三角形集合;f.?筛选排除掉候选三角形集合中重复或不合理的三角形,形成有效三角面数据集合。

【技术实现步骤摘要】

本专利技术涉及一种计算机处理多边形的三角化的方法,特别是涉及到在含洞多边形的三角化的方法。
技术介绍
平面多边形的三角化就是在现有多边形中不添加新的顶点,只添加分割线(或称作弦),使平面多边形分割为ー系列不重叠的三角形。三角形是目前计算机图形学中各类三维图形程序开发接ロ(如DirectX、OpenGL、OpenSceneGraph)的基本图元,普通的不规则ニ维多边形信息并不能被这些开发接ロ直接使用,必须细分为能够构成该多边形的三角形集合,并将其以该三角形集合信息的方式递交给对应的开发接ロ函数,才能正常处理或显示该多边形。 ニ维多边形一般分为两类,凸多边形和凹多边形。所谓凸多边形,就是把ー个多边形任意一边向两方无限延长成为一条直线,如果多边形的其他各边均在此直线的同旁,那么这个多边形就叫做凸多边形。如果多边形的所有边中有任一条边向两方无限延长成为一直线时,其他各边不在此直线的同旁,那么这个多边形就是凹多边形。凹多边形有一个或多个内角大于180度。ニ维多边形如果含有封闭的洞,则称为ニ维含洞多边形。ニ维含洞多边形的洞中如果还有多边形则称该洞内的多边形为岛。称整个图形为嵌套含岛多边形。岛可以含有洞,并且内含一个或多个岛。ニ维多边形的三角化方法对于现代三维计算机图形学必不可少,因而往往会根据不同情况采用专用算法。比如对于凸多边形采用割角法,但不适用于凹多边形,所以对于凹多边形一般采用先分块再针对每块分割后的图形采用凸多边的割角法。这些方法易于实现,算法成熟,且效率令人满意,但往往只适用于特定的多边形类别,不能够应用于含洞、含岛的特型多边形。现有技术中也有对于含洞含岛多边形的处理算法,有些方法效率非常高,但算法复杂,不易于计算机程序逻辑的实现,或是不易于分块对算法的特定步骤进行优化和修改,对于大型实际项目的品质管理和后续维护造成不利影响。
技术实现思路
本专利技术的目的是解决现有技术中存在的技术难题,即在以往解决多边形三角化的处理过程中存的算法复杂,不易于计算机程序逻辑的实现等问题,另一方面还解决了以往技术所不能解决的含洞的多边形的三角化问题。为完成上述专利技术目的,本专利技术是这样实现的ー种将ニ维平面内含洞及岛的多边形三角化的方法,其特征包括以下步骤 a.在平面内抽取含洞及岛多边形的顶点和边,去除冗余,建立边和顶点的集合; b.重新组合,形成新的独立的多边形和洞的集合;C.确立多边形与洞之间的存在的关系; d.分割每ー个独立含洞多边形为三角形的弦集合; e.将每个独立含洞多边形的边与弦组成候选三角形集合;f.筛选排除掉候选三角形集合中重复或不合理的三角形,形成有效三角面数据集ム ロ ο对上述技术方案作进ー步的改进,在a步骤中,确立顶点集合时,每ー个顶点由xOy平面内的坐标值X,Y定义;每个顶点赋予ー个索引号。在同平内确立ー个顶点的办便是通过其顶点坐标来确定,本专利也不例外。对上述技术方案作进ー步的细化,在a步骤中,确立边集合时,每一条边由2个相邻的顶点索引号构成一条边,每条边赋予ー个索引号。这是本专利的一大特点,以往定边是由两点来确定,这也是ー个通常的办法,不过本专利采用的是两个索引号来定一条边,从而对存储和计算都带来了便利。对上述技术方案作进ー步的细化,在步骤b中,多边形与洞之间的存在的关系的具体方法是通过计算洞的任ー顶点A与多边形的任ー顶点B的连线和以B点为结束点的多边形边的夹角是否在构成多边形B顶点的两条边的夹角范围外,确认该洞是否在该多边形外,如果所有洞的顶点都在指定的多边形中,那么这个洞就在多边形中;从而得到ー个含洞多边形集。该方法独特,通用性强,在何种情况均能使用。对上述技术方案作进ー步的改进,从构成一个含洞多边形的任意一个顶点开始,依次尝试与该含洞多边形其他顶点作连线,如果连线与已有边或之前生成的弦重合则舍弃,如果连线与已有边或之前生成的弦相交则舍弃,否则保留该连线作为弦,并继续尝试连线,直到不能作出新的弦为止。在e步中,通过遍历算法计算出所有可能的三角形;遍历从任意一点开始,遍历完所有含洞多边形的顶点和其内部洞的顶点为结束。每次从起始顶点起,经过3条弦或边,3条所经过的弦或边不可重复的前提下,如果第3条弦或边的终点与起点为同一点,则将所经过的3条边作为ー个候选三角形保留;该步骤完全完成后,所有候选三角形即构成候选三角形集合。筛选排除掉候选三角形集合中重复或不合理的三角形,形成有效三角面数据集合;其具体方法是用ー个三角形的任意顶点C与另ー三角形任意顶点D的连线,和以该另一三角形顶点D为终点的边之间的夹角是否在构成该另ー三角形顶点D的两条边的夹角内,如果是,则说明该三角形位于另ー三角形内。本方法是为了三角化后,消除重复叠加的无用冗余三角形,这类三角形内嵌套的子三角需要去处。将所有被保留的三角形2条边通过叉乘之积的正负结果,判断三角形的构成顶点顺序是否符合图形API所需的顺时针或逆时针方向,如不符合指定的顶点顺序,交換任意2个顶点顺序使其符合。这样可以避免三角形在描画时被用户使用的图形API的背面消隐功能所隐藏。该方法易于计算机程序分块实现和维护,并且通用的ニ维平面多边形三角化的方法,允许多边形存在含有任意个洞,嵌套任意个岛的特殊情況。该方法易于分块理解并单独实现,步骤之间的的衔接数据结构简单,因而方法整体上维护方便。每个步骤可以模块化,并可以采用对应领域的高效算法単独实现,因而可以按需优化,不牺牲过多的效率。同时因为不限于实心多边形处理,也可对应含洞、含岛的多变形,因而通用性好,实用性強。具体实施例方式下面根据具体实施例对本专利技术进行详细描述 ー种将ニ维平面内含洞及岛的多边形三角化的方法,其包括如下步骤 (1)获取原始数据,将原始数据抽象,并存储为多边形的顶点、边集合以及洞的顶点、边集合。边集合构成的是洞还是多边形由数据输入方指定。数据的逻辑存储格式不限,但是用户输入的原始数据经过抽象表达后应包含以下内容 顶点坐标由XOy平面内的坐标值(X,Y)定义。顶点索引号每个顶点赋予ー个索引号,多个坐标相同的顶点当作ー个顶点对待,只赋予一次索引号,避免数据冗余。边的构成由2个顶点索引号构成一条边 边的索引号每条边赋予ー个索引号,构成顶点相同的边当作一条边处理,只赋予ー次索引号,避免数据冗余。多边形/洞的构成时所需边的索引号 (2)通过对顶点、边集合的计算筛除孤立无法构成多边形或洞的边,得到有效的多边形集合和有效的洞集合。在该步骤中,通过深度遍历搜索算法确认每个独立多边形或岛的构成边的连通性。辨识数据为指定多边形或岛的各条构成边的索引号,以及由此引出的各条边的起始/结束顶点索引号。其辨识标准是存在一条由若干条首尾相接的无重复边构成的最长路径使该路径的終点和起点所在的顶点索引号相同,则这一系列路径是连通的,也即表明当前验证中的多边形或岛是正常封闭的,适用于后续计算步骤的进行。在该步骤中,通过与确认多边形和岛的有效性的相同方法确认洞的边的连通性,以验证洞是正常封闭的,适用于后续计算步骤的进行。(3)通过计算判定洞与多边形的关系,确定洞所归属的多边形,从而确定含洞多边形。在该步骤中,通过计算洞的任ー顶点A与多边形的任ー顶点B的连线和以B点为结束点的多边形边的夹角是否在构成多边形B顶点的两条边的夹角范围外,本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:陆宗靖
申请(专利权)人:上海巨唐信息科技有限公司
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1