一种家装设计中地面区域的图形处理方法及系统转让专利

申请号 : CN201910572871.3

文献号 : CN110415360B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈旋周海王洪建

申请人 : 江苏艾佳家居用品有限公司

摘要 :

本发明公开了一种适用于家装设计过程中室内地面区域快速三角化的方法。本发明可以让用户在家装设计过程中,快速地对地面区域进行三角化划分,避免使用重型的繁琐的剖分过程,为加快家装设计可视化贴图的构建过程提供准备。

权利要求 :

1.一种家装设计中地面区域的图形处理方法,其特征在于,包括如下步骤:

S1,获取户型图中地面的边界点,并将边界点按照设定的顺序方向有序编号,构成边界点集;

S2,对边界点集中的边界点进行遍历,对于处于相邻位置的且在同一条直线上的边界点,删除掉除首尾两端以外的边界点,得到删点之后的边界点集;

S3,对于删点之后的边界点集,按照边界点集的编号顺序依次连接成线段;

S4,选取删点之后的边界点集中的任意一点,按照设定的顺序方向分别计算三个向量:Z1、当前点与下一点的向量;Z2、当前点的下一点与再下一点的向量;Z3、当前点的上一点与当前点的向量;

S5,计算向量Z1和Z2的外积V1,计算向量Z3和Z1的外积V2;计算V1和V2的内积;当内积为正时,则判定由当前点的上一点、当前点、当前点的下一点和当前点的再下一点相互之间构成的区域为凸出区域;

S6,分别计算向量Z2、Z3的模,取其中较小的一个向量为短边,从短边的端点作平行于向量Z1的平行线,直至与线段相交,得到相交点;

S7,依次对删点之后的边界点集中的点进行遍历执行S4‑S6步骤,对凸出区域作出平行线的相交点;

S8,将得到的户型图中四边形作出任意一条对角线,得到经过了三角剖分处理的户型图地面区域。

2.根据权利要求1所述的家装设计中地面区域的图形处理方法,其特征在于,步骤S1中的设定的顺序方向是指顺时针或者逆时针方向。

3.根据权利要求1所述的家装设计中地面区域的图形处理方法,其特征在于,步骤S2中判定处于相邻位置的且在同一条直线上的边界点的步骤是:计算Δvalue=abs((XB‑XA)*(YC‑YB)‑(XC‑XB)*(YB‑YA))是否小于设定阈值;其中A、B、C分别是指当前点的上一点、当前点、当前点的下一点;X和Y是指横纵坐标值。

4.根据权利要求1所述的家装设计中地面区域的图形处理方法,其特征在于,步骤S6中,若Z2、Z3的模相等,则任取其中一条作为短边。

5.根据权利要求1所述的家装设计中地面区域的图形处理方法,其特征在于,在步骤S6中,在得到相交点之后,将向量Z2、Z3中较长的一条作朝向户型图内部的延长线,直至与线段相交。

6.一种家装设计中地面区域的图形处理系统,其特征在于,包括:

成边界点集生成模块,用于获取户型图中地面的边界点,并将边界点按照设定的顺序方向有序编号,构成边界点集;

删点之后的边界点集的生成模块,用于对边界点集中的边界点进行遍历,对于处于相邻位置的且在同一条直线上的边界点,删除掉除首尾两端以外的边界点,得到删点之后的边界点集;

线段生成模块,用于对删点之后的边界点集,按照边界点集的编号顺序依次连接成线段;

短边处理模块,用于对删点之后的边界点集中的点进行遍历并执行如下步骤:按照设定的顺序方向分别计算三个向量:Z1、当前点与下一点的向量;Z2、当前点的下一点与再下一点的向量;Z3、当前点的上一点与当前点的向量;计算向量Z1和Z2的外积V1,计算向量Z3和Z1的外积V2;计算V1和V2的内积;当内积为正时,则判定由当前点的上一点、当前点、当前点的下一点和当前点的再下一点相互之间构成的区域为凸出区域;分别计算向量Z2、Z3的模,取其中较小的一个向量为短边,从短边的端点作平行于向量Z1的平行线,直至与线段相交,得到相交点;

三解剖切模块,用于对短边处理模块得到的户型图地面区域中的四边形作出任意一条对角线。

7.根据权利要求6所述的家装设计中地面区域的图形处理系统,其特征在于,成边界点集生成模块中的设定的顺序方向是指顺时针或者逆时针方向。

8.根据权利要求6所述的家装设计中地面区域的图形处理系统,其特征在于,删点之后的边界点集的生成模块中判定处于相邻位置的且在同一条直线上的边界点的步骤是:计算Δvalue=abs((XB‑XA)*(YC‑YB)‑(XC‑XB)*(YB‑YA))是否小于设定阈值;其中A、B、C分别是指当前点的上一点、当前点、当前点的下一点;X和Y是指横纵坐标值。

9.根据权利要求6所述的家装设计中地面区域的图形处理系统,其特征在于,短边处理模块中,若Z2、Z3的模相等,则任取其中一条作为短边;短边处理模块中,在得到相交点之后,将向量Z2、Z3中较长的一条作朝向户型图内部的延长线,直至与线段相交。

10.一种记载有可以运行权利要求1所述的家装设计中地面区域的图形处理方法的程序的计算机可读介质。

说明书 :

一种家装设计中地面区域的图形处理方法及系统

技术领域

[0001] 本发明涉及一种家装设计中地面区域的图形处理方法及系统,属于计算机辅助设计技术领域。

背景技术

[0002] 三角剖分是图形学里面一个经典的技术,但是在家装设计过程中往往不需要复杂的三角剖分,主要因为家装设计的地面区域往往都是正规的多边形,不会存在畸形的区域,所以在讲究效率的时候,往往不需要特别复杂的三角剖分(复杂的点插入,新建三角形,筛除三角形等等复杂流程)。
[0003] 因此,需要提供一种简易的对地面进行三角剖分处理的方法。

发明内容

[0004] 家装设计过程可视化时,一般需要给地面添加材质,被贴材质的对象通常为三角形网格,本文主要提出一种基于家装设计地面区域特定的易用的三角化的方法,方法便捷实用。
[0005] 一种家装设计中地面区域的图形处理方法,包括如下步骤:
[0006] S1,获取户型图中地面的边界点,并将边界点按照设定的顺序方向有序编号,构成边界点集;
[0007] S2,对边界点集中的边界点进行遍历,对于处于相邻位置的且在同一条直线上的边界点,删除掉除首尾两端以外的边界点,得到删点之后的边界点集;
[0008] S3,对于删点之后的边界点集,按照边界点集的编号顺序依次连接成线段;
[0009] S4,选取删点之后的边界点集中的任意一点,按照设定的顺序方向分别计算三个向量:Z1、当前点与下一点的向量;Z2、当前点的下一点与再下一点的向量;Z3、当前点的上一点与当前点的向量;
[0010] S5,计算向量Z1和Z2的外积V1,计算向量Z3和Z1的外积V2;计算V1和V2的内积;当内积为正时,则判定由当前点的上一点、当前点、当前点的下一点和当前点的再下一点相互之间构成的区域为凸出区域;
[0011] S6,分别计算向量Z2、Z3的模,取其中较小的一个向量为短边,从短边的端点作平行于向量Z1的平行线,直至与线段相交,得到相交点;
[0012] S7,依次对删点之后的边界点集中的点进行遍历执行S4‑S6步骤,对凸出区域作出平行线的相交点;
[0013] S8,将得到的户型图中四边形作出任意一条对角线,得到经过了三角剖分处理的户型图地面区域。
[0014] 在一个实施例中,步骤S1中的设定的顺序方向是指顺时针或者逆时针方向。
[0015] 在一个实施例中,步骤S2中判定处于相邻位置的且在同一条直线上的边界点的步骤是:计算Δvalue=abs((XB‑XA)*(YC‑YB)‑(XC‑XB)*(YB‑YA))是否小于设定阈值;其中A、B、C分别是指当前点的上一点、当前点、当前点的下一点;X和Y是指横纵坐标值。
[0016] 在一个实施例中,步骤S6中,若Z2、Z3的模相等,则任取其中一条作为短边。
[0017] 在一个实施例中,在步骤S6中,在得到得到相交点之后,将向量Z2、Z3中较长的一条作朝向户型图内部的延长线,直至与线段相交。
[0018] 一种家装设计中地面区域的图形处理系统,包括:
[0019] 成边界点集生成模块,用于获取户型图中地面的边界点,并将边界点按照设定的顺序方向有序编号,构成边界点集;
[0020] 删点之后的边界点集的生成模块,用于对边界点集中的边界点进行遍历,对于处于相邻位置的且在同一条直线上的边界点,删除掉除首尾两端以外的边界点,得到删点之后的边界点集;
[0021] 线段生成模块,用于对删点之后的边界点集,按照边界点集的编号顺序依次连接成线段;
[0022] 短边处理模块,用于对删点之后的边界点集中的点进行遍历并执行如下步骤:按照设定的顺序方向分别计算三个向量:Z1、当前点与下一点的向量;Z2、当前点的下一点与再下一点的向量;Z3、当前点的上一点与当前点的向量;计算向量Z1和Z2的外积V1,计算向量Z3和Z1的外积V2;计算V1和V2的内积;当内积为正时,则判定由当前点的上一点、当前点、当前点的下一点和当前点的再下一点相互之间构成的区域为凸出区域;分别计算向量Z2、Z3的模,取其中较小的一个向量为短边,从短边的端点作平行于向量Z1的平行线,直至与线段相交,得到相交点;
[0023] 三解剖切模块,用于对短边处理模块得到的户型图地面区域中的四边形作出任意一条对角线。
[0024] 在一个实施例中,成边界点集生成模块中的设定的顺序方向是指顺时针或者逆时针方向。
[0025] 在一个实施例中,删点之后的边界点集的生成模块中判定处于相邻位置的且在同一条直线上的边界点的步骤是:计算Δvalue=abs((XB‑XA)*(YC‑YB)‑(XC‑XB)*(YB‑YA))是否小于设定阈值;其中A、B、C分别是指当前点的上一点、当前点、当前点的下一点;X和Y是指横纵坐标值。
[0026] 在一个实施例中,短边处理模块中,若Z2、Z3的模相等,则任取其中一条作为短边。
[0027] 在一个实施例中,短边处理模块中,在得到相交点之后,将向量Z2、Z3中较长的一条作朝向户型图内部的延长线,直至与线段相交。
[0028] 一种记载有可以运行家装设计中地面区域的图形处理方法的程序的计算机可读介质。
[0029] 有益效果
[0030] 本发明可以让用户在家装设计过程中,快速地对地面区域进行三角化划分,避免使用重型的繁琐的剖分过程,为加快家装设计可视化贴图的构建过程提供准备。

附图说明

[0031] 图1是户型图中的边界点示意图;
[0032] 图2是边界点的按顺序连接后的示意图;
[0033] 图3是边界点的有序集合示意图;
[0034] 图4是凸出区域确定过程示意图;
[0035] 图5是凸出区域确定过程示意图;
[0036] 图6是三角剖切后的示意图;
[0037] 图7是另一种复杂情况下的剖切示意图。图8是本发明的流程图。

具体实施方式

[0038] 为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。应当理解,给出这些示例性实施例仅是为了使相关领域的技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
[0039] 如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
[0040] 虽然本申请对根据本申请的实施例的系统中的某些系统、模块或单元做出了各种引用,然而,任何数量的不同模块可以被使用并运行在客户端和/或服务器上。所述模块仅是说明性的,并且所述系统和方法的不同方面可以使用不同模块。
[0041] 同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
[0042] 本发明提供的户型图处理方法,其目的是对地面区域进行三角剖分处理,本方法仅仅涉及到向量的计算,不需要调用3D引擎,具有计算简单的优点。
[0043] 以下通过附图对本发明的方法进行详述。
[0044] 一种适用于家装设计过程中室内地面区域快速三角化的方法,具体方法流程如下:
[0045] 如图1所示,首先在基于3D户型数据中,获取地面的平面图,在平面图中能够读取出所有的边界点,获取整个户型方法所有区域的边界有序点集,如图1所示户型中一个区域的边界点集,这些点按照在平面上的旋转顺序(顺时针或者逆时针)依次编号,在图中是以逆时针为例。
[0046] 如图2所示,然后将通过向量将这些点集连接构成有向线段,依次将上述的点集连接后,就构成了闭合的区域,该区域为需要进行剖切处理的户型地面区域。
[0047] 接下来,需要对这些点集以及构成的线段进行预处理,去除掉共线的那些线段,本步骤的目的是为了后续的识别长短边的步骤进行铺垫。如图3所示,图中EF、FG、GH三条构成的线段实际上是在同一条直接上,因此,需要将他们归为同一条线段。
[0048] 预处理的方法如下:
[0049] Step1.获取区域边界点集,统一纠正点集顺序为逆时针或者顺时针;(以下为逆时针为例) Step2.遍历区域中每一点,构建该点与前一点以及该点与后一点的向量;
[0050] 我们以点F为举例:
[0051] 点F与前一点E构成向量 ,以及F与后一点G构成向量;
[0052] 判断该点附 属的前后向量是否共线 ,即计算 : 与的接近程度。
[0053] 设定 ;
[0054] 若,则表示点E,F,G三点接近共线,则点F可被剔除;
[0055] Step3. 依次类推下去逐一判定其他的点集,则图3中的点F以及点G则均剔除,剩下的顺序点集构建更新后的多边形;
[0056] 通过上述的步骤,如图4所示,删除掉了F和G两点,将E、F、G、H简化成了EH线段。
[0057] 再接下来,需要判定图像中的凸出部,以图4中的JABC四边构成的区域为例。
[0058] 判定多边形凸出的相邻的三条边,具体判定的方法流程如下:
[0059] 依次遍历经过上述的并线处理后的点集,例如,以图4中的A点为例,它的下一点(指沿着逆时针方向)为B,它的再下一点(是指沿着逆时针方向的下一点的下一点)是C,它的上一点(是指顺时针方向)是J。那么分别计算以下三组向量:AB、JA、BC。也就是说,要计算出当前点与它下一点之间的向量、当前点的下一点与当前点的再下一点之间的向量、当前点的上一点与当前点之间的向量。
[0060] 接下来,计算向量JA和向量AB的外积V1,计算向量AB和向量BC的外积V2;
[0061] 再计算V1和V2的内积,并判定:
[0062] 如果内积为正,则认为AB、JA、BC构成的区域是向外部凸出;再依次对其它的点进行遍历之后,就可以找到图中全部的凸出区域。例如,图4中的CDEH、EHIJ区域。凸出部的确定是为了后续对户型图地面进行分割。
[0063] 接下来的一个步骤,是需要区分出凸出区域两条侧边的长短,长短的划分是后续剖分的前提。如图4所示,在JABC区域中,是由三边线段构成,AB、JA、BC,AJ和BC在两侧,可以看出,AJ的长度短于BC的长度,那么则将AJ归为短边集合MinEdge中,同理,对于CDEH凸出部,其短边是CD,而对于EHIJ凸出部,其短边是IJ,同样也将短边归于集合MinEdge中;在将短边确定之后,从短边的端点处作出一条平行于三条线段中的中间那条线段的平行线,直至与长边相交,得到延长线,在图4中即是通过短边的端点J作出平行于中间线段AB的平行线使其与BC相交,得到延长线AddSeg1;同理,CD段是CDEH的短边,从C点作出DE平行线与EH相交,得到延长线AddSeg2;再类似,得到延长线AddSeg3。
[0064] 此时,从图中可以看出,图中所有的封闭区域已经全部为四边形,然后再对四边形作出任意的对角线,即实现了三角剖面的构建,如图6所示。
[0065] 在一些其它的情况下,如果对于凸出区域的两条侧边都是同样的长度,那么就可以任意确定其中的一条侧边为短边,任意的短边向长边作中间线段的平行线都可以实现切割,如图5所示。
[0066] 如果对于更复杂的户型,如图7所示,其中存在的凸出区域为MABC、CEFJ、GHIJ、JKLM,仍然采用上述的方法,通过短边的端点向长边做一条平行线(在图7中用双点划线表示),可以看到,在由4条双点划线围成的区域是一个不规则的区域,无法对其采用四边形对角线进行划分,因此,对于复杂户型条件下,是需要基于确定了短边的前提之下,再通过将长边进一步的延长来对不规则区域进行分割;在图7中,对于MABC区域,BC为长边,因此,需要将长边BC延长,直至遇到与直线相交的点(图7中的虚线),即G点处的平行线;同理,对于GHIJ区域,从长边IJ作为延长线,直至遇到与直线想相交(图7中的虚线),进而将中间的非规则区域划分成了四边形,进一步对四边形作对角线即可实现三角剖切处理。在本步骤中,首先是要基于上述的短边作平行线作为基础,在图7中,如果是先对BC作延长线,再从GH短边做HI的平行线时,会导致平行线与延长线相交,导致了更多的四边形,使得图像处理中的数据量增大,降低了运行效率。
[0067] 基于以上的方法,本发明还提供了一种家装设计中地面区域的图形处理系统,包括:
[0068] 成边界点集生成模块,用于获取户型图中地面的边界点,并将边界点按照设定的顺序方向有序编号,构成边界点集;
[0069] 删点之后的边界点集的生成模块,用于对边界点集中的边界点进行遍历,对于处于相邻位置的且在同一条直线上的边界点,删除掉除首尾两端以外的边界点,得到删点之后的边界点集;
[0070] 线段生成模块,用于对删点之后的边界点集,按照边界点集的编号顺序依次连接成线段;
[0071] 短边处理模块,用于对删点之后的边界点集中的点进行遍历并执行如下步骤:按照设定的顺序方向分别计算三个向量:Z1、当前点与下一点的向量;Z2、当前点的下一点与再下一点的向量;Z3、当前点的上一点与当前点的向量;计算向量Z1和Z2的外积V1,计算向量Z3和Z1的外积V2;计算V1和V2的内积;当内积为正时,则判定由当前点的上一点、当前点、当前点的下一点和当前点的再下一点相互之间构成的区域为凸出区域;分别计算向量Z2、Z3的模,取其中较小的一个向量为短边,从短边的端点作平行于向量Z1的平行线,直至与线段相交,得到相交点;
[0072] 三解剖切模块,用于对短边处理模块得到的户型图地面区域中的四边形作出任意一条对角线。
[0073] 在一个实施例中,成边界点集生成模块中的设定的顺序方向是指顺时针或者逆时针方向。
[0074] 在一个实施例中,删点之后的边界点集的生成模块中判定处于相邻位置的且在同一条直线上的边界点的步骤是:计算Δvalue=abs((XB‑XA)*(YC‑YB)‑(XC‑XB)*(YB‑YA))是否小于设定阈值;其中A、B、C分别是指当前点的上一点、当前点、当前点的下一点;X和Y是指横纵坐标值。
[0075] 在一个实施例中,短边处理模块中,若Z2、Z3的模相等,则任取其中一条作为短边。
[0076] 在一个实施例中,短边处理模块中,在得到相交点之后,将向量Z2、Z3中较长的一条作朝向户型图内部的延长线,直至与线段相交。
[0077] 一种记载有可以运行家装设计中地面区域的图形处理方法的程序的计算机可读介质。
[0078] 此外,本领域技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
[0079] 计算机可读信号介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读信号介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。
[0080] 本申请各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
[0081] 此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。