一种对象表面轮廓的确定方法、装置、设备及存储介质与流程

文档序号:30105595发布日期:2022-05-18 14:34阅读:99来源:国知局
一种对象表面轮廓的确定方法、装置、设备及存储介质与流程

1.本公开涉及建筑技术领域,尤其涉及一种对象表面轮廓的确定方法、装置、设备及存储介质。


背景技术:

2.在现有的bim设计软件中,主要通过aabb包围盒算法或obb包围盒算法来获取建筑构件外轮廓的原始几何图形。
3.然而,当建筑构件的外轮廓为非轴对称几何图形时,采用aabb包围盒算法获取得到的外轮廓信息不够准确,而采用obb包围盒算法则存在计算量大、效率低等缺点。


技术实现要素:

4.为了解决上述提出的至少一个技术问题,本公开提出了一种对象表面轮廓的确定方法、装置、设备及存储介质。
5.根据本公开实施例的第一方面,提供一种对象表面轮廓的确定方法,所述方法包括:获取第一序列,所述第一序列为第一图形中的顶点按第一方向排列形成的序列,所述第一图形为对象表面轮廓对应的实际几何图形;确定每一矢量边所对应的第一目标方向,所述矢量边为根据所述第一序列中的顶点所确定的边,所述第一目标方向为所述矢量边所在的目标表面的法线方向,所述目标表面为与所述对象表面轮廓垂直的表面;对各所述矢量边进行基于第一目标方向的聚类,得到聚类结果,所述聚类结果中属于同一簇的矢量边具有相同的第一目标方向,属于不同簇的矢量边具有不同的第一目标方向;根据所述聚类结果,确定第二图形,所述第二图形表征所述对象表面轮廓对应的原始几何图形。
6.在一个示例性的实施例中,所述获取第一序列,包括:获取对象表面所有几何图形的顶点序列;基于所述顶点序列,计算所有几何图形中每个几何图形的周长;将对象表面周长最大的几何图形确定为所述第一图形;提取所述第一图形对应的顶点,得到第二序列;基于所述第二序列,得到所述第一序列。
7.在一个示例性的实施例中,基于所述第二序列,得到所述第一序列,包括:在所述第二序列中依次确定第一顶点、第二顶点和第三顶点,所述第一顶点为所述第二序列中的任一顶点,所述第二顶点和第三顶点分别为与所述第一顶点相邻的其他顶点;确定基于所述第二顶点指向所述第一顶点的第一向量,以及确定基于所述第三顶
点指向所述第二顶点的第二向量;以所述对象表面的法线为旋转轴对所述第一向量逆时针旋转第一预设角度,得到第三向量;响应于所述第三向量与所述第二向量的夹角符合预设角度条件的情况下,将所述第二序列确定为所述第一序列,否则,倒序提取所述第二序列,得到所述第一序列。
8.在一个示例性的实施例中,所述确定每一矢量边所对应的第一目标方向,包括:以所述对象表面的法线为旋转轴,使所述矢量边沿所述第二方向旋转第二预设角度,得到所述矢量边所在的目标表面的法线,所述第二方向与所述第一方向相反;基于所述矢量边所在目标表面的法线,确定所述矢量边所对应的第一目标方向。
9.在一个示例性的实施例中,所述根据所述聚类结果,确定第二图形,包括:确定所述聚类结果中每一簇对应的原始边;基于各个簇对应的不同原始边,确定所述第二图形。
10.在一个示例性的实施例中,确定所述聚类结果中每一簇对应的原始边,包括:确定所述簇内包含的矢量边的数量;响应于所述簇内包含的单条矢量边的情况,将所述单条矢量边确定为所述原始边;响应于所述簇内包含至少两条矢量边的情况,采用光线追踪法将所述簇内的至少两条矢量边合并,得到所述原始边。
11.在一个示例性的实施例中,所述采用光线追踪法将所述簇内的至少两条矢量边合并,得到所述原始边,包括:从所述簇内的至少两条矢量边中确定出目标矢量边,所述目标矢量边为与所述原始边共线的边;确定其他矢量边的新起始点和新终点,所述其他矢量边是所述多条矢量边中除所述目标矢量边以外的矢量边;所述新起始点是所述其他矢量边的起始点在经过射线运动后与所述目标矢量边所在的目标表面产生的交点,所述新终点是所述其他矢量边的终点在经过射线运动后与所述目标矢量边所在的目标表面产生的交点;基于所述目标矢量边的起始点和终点、所述其他矢量边的新起始点和新终点,确定出所述原始边。
12.在一个示例性的实施例中,从所述簇内的至少两条矢量边中确定出目标矢量边,包括:从所述簇内的至少两条矢量边中任选一条矢量边;确定剩余矢量边的起始点或终点在经过射线运动后与任选的所述矢量边所在的目标表面是否存在交点;其中,所述剩余矢量边是所述簇内除任选的所述矢量边以外的任一条矢量边;响应于存在交点的情况下,确定任选的所述矢量边为所述目标矢量边。
13.根据本公开实施例的第二方面,提供一种对象表面轮廓的确定装置,所述装置包括:获取模块,用于获取第一序列,所述第一序列表征第一图形中顶点的按序排列结果,所述第一图形为对象表面轮廓对应的实际几何图形;
第一确定模块,用于确定每一矢量边所对应的第一目标方向,所述矢量边为根据所述第一序列中的顶点所确定的边,所述第一目标方向为所述矢量边所在的目标表面的法线方向,所述目标表面为与所述对象表面轮廓垂直的表面;聚类模块,用于对各所述矢量边进行基于第一目标方向的聚类,得到聚类结果,所述聚类结果中属于同一簇的矢量边具有相同的第一目标方向,属于不同簇的矢量边具备不同的第一目标方向;第二确定模块,根据所述聚类结果,确定第二图形,所述第二图形表征所述对象表面轮廓对应的原始几何图形。
14.根据本公开实施例的第三方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如上述第一方面中任一项所述的对象表面轮廓的确定方法。
15.根据本公开实施例的第四方面,提供一种电子设备,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如上述第一方面中任一项所述的对象表面轮廓的确定方法。
16.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
17.本公开的实施例提供的技术方案至少带来以下有益效果:本公开提供一种对象表面轮廓的确定方案,该方案先确定对象表面实际几何图形中各个矢量边所在的目标表面的法线方向,该目标表面为与对象表面轮廓垂直的表面;接着,根据各个矢量边对应的法线方向对所述各个矢量边进行聚类,将法线方向相同的矢量边放在同一簇,将法线方向不同的矢量边放在不同簇;最后,根据聚类结果,可以确定对象表面轮廓的原始几何图形。本公开通过少量的计算可以准确的获取对象表面轮廓,具有实现难度小、计算量小、效率高等优点。
18.根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
19.为了更清楚地说明本说明书实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
20.图1是根据一示例性实施例示出的对象表面的示意图;图2是根据一示例性实施例示出的对象表面轮廓确定方法的流程示意图;图3是根据一示例性实施例示出的获取第一序列的方法流程示意图;图4是根据一示例性实施例示出的基于第二序列得到第一序列的流程示意图;图5是根据一示例性实施例示出的第一图形的示意图;图6是根据一示例性实施例示出的确定每一矢量边所对应的第一目标方向的流程示意图;
图7是根据一示例性实施例示出的根据聚类结果确定第二图形的流程示意图;图8是根据一示例性实施例示出的确定聚类结果中每一簇对应的原始边的流程示意图;图9是根据一示例性实施例示出的采用光线追踪法将簇内的至少两条矢量边合并的流程示意图;图10是根据一示例性实施例示出的从簇内的至少两条矢量边中确定出目标矢量边流程示意图;图11a是根据一示例性实施例示出的下簇内多条矢量边的合并示意图;图11b是根据一示例性实施例示出的第二图形的示意图;图12是根据一示例性实施例示出的一种对象表面轮廓的确定装置的框图;图13是根据一示例性实施例示出的电子设备的框图。
具体实施方式
21.下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
22.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
23.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
24.在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
25.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
26.另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
27.图1是根据一示例性实施例示出的对象表面的示意图,如图所示,对象表面包括几何图形1、2;其中,几何图形1为对象表面轮廓的实际几何图形,该几何图形上1上包括两个切口3。
28.需要说明的是,图1仅是为了方便理解给出的一个对象表面的示例,并不对本公开中的对象表面构成限定。
29.在本公开实施例中,对象可以为建筑构件中的墙板或楼板,但不限于此,对象也可以为其他建筑构件或其他物体。
30.本公开实施例提供的对象表面轮廓的确定方法,可以以较小的计算量准确的得到对象表面轮廓的原始几何图形,以图1中示出的对象表面为例,该对象表面轮廓的实际几何图形为几何图形1,该几何图形1上具有两个矩形切口3,本公开实施例提供的方法可以准确确定几何图形1在形成切口3之前的原始几何图形(可参见图11b中的几何图形4)。
31.需要说明的是,几何图形1上的矩形切口3的数量和位置在此不做限定,其数量可以更多或更少,其位置可以位于几何图形1的任何一条边上。
32.图2是根据一示例性实施例示出的对象表面轮廓确定方法的流程示意图,如图所示,该方法包括步骤10至步骤40,其中,步骤10、获取第一序列,第一序列为第一图形中的顶点按第一方向排列形成的序列,第一图形为对象表面轮廓对应的实际几何图形。
33.在本公开实施例中,第一方向可以为顺时针,也可以为逆时针。
34.以图1所示的对象表面为例,步骤10目的是获取几何图形1中的各个顶点按照第一方向排列形成的序列。
35.图3是根据一示例性实施例示出的获取第一序列的方法流程示意图,如图所示,该方法包括步骤11至步骤15,其中,步骤11、获取对象表面所有几何图形的顶点序列。
36.具体的,对象表面所有几何图形的顶点序列可以从建筑软件中获取,建筑软件例如可以为revit。
37.在实际应用中,对象表面通常包括多个几何图形,对象表面中的第一图形,即对象表面轮廓对应的实际几何图形,其包围对象表面的其他几何图形。
38.以图1所示的对象表面为例,步骤11的目的是获取几何图形1的所有顶点、几何图形2所有的顶点构成的顶点序列。
39.表1是获取图1所示的对象表面的几何图形1、2的顶点集合得到顶点序列list《list《xyz》》。顶点序列list《list《xyz》》可以采用revit api获取得到,该顶点序列是二维数据集合,第一维(外部list)表示对象表面几何图形的个数,第二维(内部list)表示几何图形的顶点集合。其中,list[0]存储了几何图形1的顶点集合,list[1]存储了几何图形2的顶点集合。需要注意的是,此处省略了几何图形2的顶点集合。
[0040]
表1 对象表面所有几何图形的顶点集合list[0]list[0][0](0,300,0) list[0][1](0,2900,0) list[0][2](300,2900,0) list[0][3](300,3200,0) list[0][4](2400,3200,0) list[0][5](2400,0,0) list[0][6](300,0,0)

list[0][7](300,300,0)list[1]list[1][0]... ......步骤12、基于顶点序列,计算所有几何图形中每个几何图形的周长。
[0041]
具体的,计算每个几何图形的周长,包括如下步骤:遍历每个几何图形的所有顶点,将各个顶点的坐标依次相减得多个向量,对多个向量分别求模运算得到几何图形的各个边的长度;依次将各个边的长度相加,得到每个几何图形的周长。
[0042]
以表1中示出的顶点序列为例,遍历list[0]的各个顶点,将各个顶点的坐标依次相减得到多个向量,可以理解的是,该“依次”可以是正序,也可以是倒序;接着,对多个向量分别求模,可以得出几何图形1中各个边的边长,将各个边的边长相加,可以得到几何图形1的周长。同样的,可以采用上述相同的方法获得几何图形2的周长。
[0043]
步骤13、将对象表面周长最大的几何图形确定为第一图形;可以理解的,第一图形为对象表面轮廓对应的实际几何图形,该轮廓对应的实际几何图形包围对象表面的其他几何图形,从而,在所有的几何图形中,第一图形应当具有最大周长。
[0044]
在图1所示的对象表面中,几何图形1具有最大的周长,其应被确定为第一图形。
[0045]
步骤14、提取第一图形对应的顶点,得到第二序列。
[0046]
示例性的,从表1中提取list[0],得到第二序列,如表2所示。
[0047]
表2 第二序列对应的顶点集合list[0](0,300,0)list[1](0,2900,0)list[2](300,2900,0)list[3](300,3200,0)list[4](2400,3200,0)list[5](2400,0,0)list[6](300,0,0)list[7](300,300,0)步骤15、基于第二序列,得到第一序列。
[0048]
图4是根据一示例性实施例示出的基于第二序列得到第一序列的流程示意图,如图所示,包括步骤151至步骤154,其中,步骤151、在第二序列中依次确定第一顶点、第二顶点和第三顶点,第一顶点为第二序列中的任一顶点,第二顶点和第三顶点分别为与第一顶点相邻的其他顶点。
[0049]
示例性的,从表2中确定第一顶点、第二顶点、第三顶点分别list[0]、list[1]、list[2]。可以理解的,第一顶点、第二顶点、第三顶点还可以是其他顶点,只要三个顶点之间符合依次相邻的条件即可。
[0050]
步骤152、确定基于第二顶点指向第一顶点的第一向量,以及确定基于第三顶点指向第二顶点的第二向量。
[0051]
在一个实施例中,第一向量通过第二顶点的坐标减去第一顶点的坐标获得,第二向量通过第三顶点的坐标减去第二顶点的坐标获得。
[0052]
在另一个实施例中,第一向量可以为第一顶点和第二顶点之间的单位向量,该单位向量通过第二顶点的坐标减去第一顶点的坐标并归一化处理获得;第二向量可以为第三顶点和第二顶点之间的单位向量,该单位向量可以通过第三顶点的坐标减去第二顶点的坐标并归一化处理获得。例如,当第一顶点、第二顶点、第三顶点分别为表2中的list[0]、list[1]、list[2]时,第一向量可以为(0,1,0),第二向量可以为(1,0,0)。
[0053]
步骤153、以对象表面的法线为旋转轴对第一向量逆时针旋转第一预设角度,得到第三向量。本公开实施例中,基于右手定则,使第一向量旋转第一预设角度得到第三向量,第一预设角度与第一向量、第二向量之间的夹角有关。在一个实施例中,第一预设角度与第一向量、第二向量之间的夹角互补。例如,第一向量与第二向量之间的夹角为90
°
,此时,第一预设角度可以为90
°

[0054]
示例性的,当第一向量为(0,1,0),第二向量为(1,0,0)时,第一向量和第二向量之间的夹角为90
°
,对第一向量逆时针旋转90
°
,得到第三向量(-1,0,0)。
[0055]
步骤154、响应于第三向量与第二向量的夹角符合预设角度条件的情况下,将第二序列确定为第一序列,否则,倒序提取第二序列,得到第一序列。
[0056]
预设角度条件是用于判断第二序列是否沿第一方向排列的条件。
[0057]
在一个实施例中,第一方向为顺时针,预设角度条件为180
°
,也就是说,当第三向量与第二向量的方向相反时(满足预设角度条件),第二序列沿顺时针方向排布,此时,将第二序列确定为第一序列。当第三向量与第二向量方向相同时(不满足预设角度条件),第二序列沿逆时针方向排布,此时,倒序提取第二序列,得到第一序列,第一方向为顺时针方向。
[0058]
在一个实施例中,第一方向为逆时针,预设角度条件为0
°
。也就是说,当第三向量与第二向量的方向相同时(满足预设角度条件),第二序列沿逆时针方向排布,此时,将第二序列确定为第一序列。当第三向量与第二向量方向相反时(不满足预设角度条件),第二序列沿顺时针方向排布,此时,倒序提取第二序列,得到第一序列,第一方向为逆时针方向。示例性的,当第三向量为(-1,0,0),第二向量为(1,0,0)时,此时,第二向量与第三向量的方向相反,不满足预设角度条件,倒序提取表2中的第二序列,得到第一序列,如表3所示。
[0059]
表3 第一序列对应的顶点集合list[0](300,300,0)list[1](300,0,0)list[2](2400,0,0)list[3](2400,3200,0)list[4](300,3200,0)list[5](300,2900,0)list[6](0,2900,0)list[7](0,300,0)本公开实施例中,在获取第一序列的过程中,先得到第二序列,即第一图形的顶点集合,然后判断第二序列中的顶点集合的排列方向,最后根据判断结果,确定第二序列为第一序列,或者倒序提取第二序列,得到第一序列。如此,可以使获得的第一序列具有确定的排列方向,即第一方向,在后续处理步骤中不需要再判断第一序列的排列方向,可以简化处理逻辑。
[0060]
步骤20、确定每一矢量边所对应的第一目标方向,矢量边为根据第一序列中的顶点所确定的边,第一目标方向为矢量边所在的目标表面的法线方向,目标表面为与对象表面轮廓垂直的表面。
[0061]
步骤20的作用是确定第一序列中各个顶点构成的矢量边所在目标表面(或侧表面)的法线方向,根据获得的各个法线方向,可以在后续的步骤中对各个矢量边进行聚类。
[0062]
示例性的,图5是根据一示例性实施例示出的第一图形的示意图,其是表3中给出的第一序列中各个顶点构成的几何图形。如图5,第一图形包括矢量边a、b、c、d、e、f、g及h,矢量边a、b、c、d、e、f、g、h对应的向量分别为(0,-300,0)、(2100,0,0)、(0,3200,0)、(-2100,0,0)、(0,-300,0)、(-300,0,0)、(0,-2600,0)、(300,0,0)。
[0063]
图6是根据一示例性实施例示出的确定每一矢量边所对应的第一目标方向的流程示意图,如图所示,包括步骤21至步骤22,其中,步骤21、以对象表面的法线为旋转轴,使矢量边沿第二方向旋转第二预设角度,得到矢量边所在的目标表面的法线,第二方向与第一方向相反。
[0064]
在一实施例中,第二预设角度可以为90
°
,但不限于此,第二预设角度还可以为其他角度。
[0065]
第二方向与第一方向相反,当第一序列中的顶点沿逆时针排列时,第二方向为顺时针方向;当第一序列中的顶点沿顺时针排列时,第二方向为逆时针。
[0066]
在一个实施例中,可以在旋转之前,对各个矢量边进行归一化得到单位向量后再进行旋转第二预设角度,得到矢量边所在目标表面的法线。以图5中示出的第一图形作为示例进行说明:对象表面与xy平面共面,则对象表面的法线向量可以为(0,0,1);使矢量边a、b、c、d、e、f、g、h归一化,得到矢量边a、b、c、d、e、f、g、h对应的单位向量分别为(0,-1,0)、(1,0,0)、(0,1,0)、(-1,0,0)、(0,-1,0)、(-1,0,0)、(0,-1,0)、(1,0,0),以(0,0,1)为旋转轴,将各个单位向量沿顺时针方向旋转90
°
,得到各个矢量边所在的目标表面的法线,矢量边a、b、c、d、e、f、g、h所在的目标表面的法线分别为(-1,0,0)、(0,-1,0)、(1,0,0)、(0,1,0)、(-1,0,0)、(0,1,0)、(-1,0,0)、(0,-1,0)。
[0067]
步骤22、基于矢量边所在目标表面的法线,确定矢量边所对应的第一目标方向。
[0068]
根据矢量边所在目标表面的法线,可以确定矢量边所对应的第一目标方向。例如,当矢量边所在目标表面的法线为(-1,0,0),可以根据法线指向的方向确定第一目标方向为左。
[0069]
示例性的,图5中各个矢量边a、b、c、d、e、f、g、h对应的第一目标方向分别为左、下、右、上、左、上、左,下。
[0070]
步骤30、对各矢量边进行基于第一目标方向的聚类,得到聚类结果,聚类结果中属于同一簇的矢量边具有相同的第一目标方向,属于不同簇的矢量边具有不同的第一目标方向。
[0071]
示例性的,对图5中各个矢量边进行基于第一目标方向的聚类,将第一目标方向相同的矢量边放入同一簇中,将第一目标方向不同的矢量边放入不同簇中。基于上述原则,图5中的各个矢量边根据第一目标方向的不同应当分为4个簇,分别是上簇,下簇,左簇,右簇,其中,上簇中的矢量边对应的第一目标方向均为上,包括矢量边d、f;下簇中的矢量边对应的第一目标方向均为下,包括矢量边b、h;左簇中的矢量边对应的第一目标方向均为左,包
括矢量边a、e、g;右簇中的矢量边对应的第一目标方向均为右,包括矢量边c。
[0072]
最后,将分簇后第一目标方向、法线以及与第一目标方向、法线对应的顶点存入数据字典dictionary《normal,list《xyz》》中,如表4所示,其中,normal对应法线,list《xyz》对应簇内矢量边的顶点。
[0073]
表4 数据字典dictionary《normal,list《xyz》》第一目标方向法线顶点下(0,-1,0)(0,300,0)
ꢀꢀ
(300,300,0)
ꢀꢀ
(300,0,0)
ꢀꢀ
(2400,0,0)右(1,0,0)(2400,0,0)
ꢀꢀ
(2400,3200,0)上(0,1,0)(2400,3200,0)
ꢀꢀ
(300,3200,0)
ꢀꢀ
(300,2900,0)
ꢀꢀ
(0,2900,0)左(-1,0,0)(300,3200,0)
ꢀꢀ
(300,2900,0)
ꢀꢀ
(0,2900,0)
ꢀꢀ
(0,300,0)
ꢀꢀ
(300,300,0)
ꢀꢀ
(300,0,0)
ꢀꢀ
(0,300,0)可以理解的是,同一簇内包括多个矢量边,说明多个矢量边所在的目标表面的法线相同,该多个矢量边之间互相平行,也代表第一图形在该多个矢量边所在的方向上存在切口,或缺角。步骤30中根据第一目标方向对各个矢量边进行聚类,是为后续原始边的恢复做准备。
[0074]
步骤40、根据聚类结果,确定第二图形,第二图形表征对象表面轮廓对应的原始几何图形。
[0075]
图7是根据一示例性实施例示出的根据聚类结果确定第二图形的流程示意图,如图所示,包括步骤41至步骤42,其中,步骤41、确定聚类结果中每一簇对应的原始边。
[0076]
可以理解的,每一簇对应一条原始边,在该步骤中,根据每一簇内的矢量边确定出原始边。
[0077]
图8是根据一示例性实施例示出的确定聚类结果中每一簇对应的原始边的流程示意图,如图所示,包括步骤411至步骤413,其中,步骤411、确定簇内包含的矢量边的数量。
[0078]
示例性的,该步骤可以通过读取表4所示的数据字典来确定簇内包含的矢量边的数量。具体的,可以先获取簇内顶点的数量,再确定矢量边的数量。
[0079]
在一个实施例中,该步骤也可以替换为确定簇内包含的顶点的数量。
[0080]
步骤412、响应于簇内包含的单条矢量边的情况,将单条矢量边确定为原始边。
[0081]
对于仅包含单条矢量边的簇,可以确定该单条矢量边为该簇对应的原始边。示例性的,表4中的右簇仅包含矢量边c,可以确定该矢量边c即为原始边。
[0082]
步骤413、响应于簇内包含至少两条矢量边的情况,采用光线追踪法将簇内的至少两条矢量边合并,得到原始边。
[0083]
对于包含多条矢量边的簇,应当将该簇内的多条矢量边合并,才能得出该簇对应的原始边。
[0084]
示例性的,参见图5及表4,对于上簇,应当将该簇内的矢量边d、f合并,得到上簇对应的原始边。对于左簇,应当将该簇内的矢量边a、e、g合并,同样的,对于下簇,应当将该簇内的矢量边b、h合并。
[0085]
本公开实施例采用光线追踪法,将各个矢量边进行合并恢复出原始边,其计算量小,实现难度低,大大简化了原始边的获取步骤。
[0086]
图9是根据一示例性实施例示出的采用光线追踪法将簇内的至少两条矢量边合并的流程示意图,如图所示,包括步骤4131至步骤4133,其中,步骤4131、从簇内的至少两条矢量边中确定出目标矢量边,目标矢量边为与原始边共线的边。
[0087]
示例性的,参见图5及表4,对于上簇,从矢量边d、f中确定出目标矢量边,目标矢量边与原始边共线,即矢量边d;对于左簇,从矢量边a、e、g中确定出目标矢量边,目标矢量边与原始边共线,即矢量边g;对于下簇,从矢量边b、h中确定出目标矢量边,目标矢量边与原始边共线,即矢量边b。
[0088]
可以理解的,在将多条矢量边进行合并之前,应先确定合并的方向,即应确定与原始边共线的矢量边,即目标矢量边,才能进行后续合并的步骤。步骤4131的作用就是先确定出目标矢量边,下述步骤4131a至步骤4131c是确定目标矢量边的一个示例性的方法。
[0089]
图10是根据一示例性实施例示出的从簇内的至少两条矢量边中确定出目标矢量边流程示意图,如图所示,包括步骤4131a至步骤4131c,其中,步骤4131a、从簇内的至少两条矢量边中任选一条矢量边。
[0090]
示例性的,参见图5及表4,以下簇为例,下簇包括矢量边b、h,从矢量边b、h中任选一条矢量边,例如矢量边b。
[0091]
步骤4131b、确定剩余矢量边的起始点或终点在经过射线运动后与任选的矢量边所在的目标表面是否存在交点;其中,剩余矢量边是簇内除任选的矢量边以外的任一条矢量边。
[0092]
图11a是根据一示例性实施例示出的下簇内多条矢量边的合并示意图,参见图5、图11a及表4,确定簇内的剩余矢量边,例如矢量边h的起始点h1或终点h2在经过射线运动后与矢量边b所在的目标表面是否存在交点。
[0093]
具体的,矢量边h的起始点为h1(0,300,0),终点h2为(300,300,0);矢量边b的起始点b1为(300,0,0),终点b2为(2400,0,0),矢量边b和矢量边h所在的目标表面的法线n均为(0,-1,0)。
[0094]
以矢量边h的起始点h1为原点,法线n指向的方向为射线运动的方向,构建一条射
线。位于射线上的点满足射线方程:r(t)=h1+td,其中,d为法线n的单位向量,此处为(0,-1,0),t为射线运动的时间,r(t)为经过时间t后到达的点。可以理解的是,也可以以矢量边h的终点h2为原点构建射线。
[0095]
若构建的射线在经过时间t后与矢量边b所在的目标表面产生交点p,则矢量边b的起始点b1与交点p构成的向量与矢量边b所在的目标表面的法线n满足平面方程:(p-b1)

n=0(1)。
[0096]
同时,交点p还满足射线方程p=h1+td(2),根据式(1)及式(2)可得到t=(b1-h1)

n)/(d

n)(3),将b1、h1的坐标值、n及d代入式(3)后得到t=300,t>0说明以矢量边h的起始点h1构件的射线与矢量边b所在的目标表面存在交点,t《0说明以矢量边h的起始点h1构件的射线与矢量边b所在的目标表面不存在交点。
[0097]
步骤4131c、响应于存在交点的情况下,确定任选的矢量边为目标矢量边。
[0098]
在下簇中,由于以矢量边h的起始点h1构件的射线与矢量边b所在的目标表面存在交点,确定矢量边b为目标矢量边。
[0099]
若剩余矢量边的起始点或终点在经过射线运动后与任选的矢量边所在的表面不存在交点,说明在步骤4131a中任选的矢量边不是目标矢量边,应重复执行步骤4131a至步骤4131c至确定出目标矢量边。
[0100]
采用上述相同的确定方法可以确定出左簇、上簇的目标矢量边,在此不再赘述。
[0101]
步骤4132、确定其他矢量边的新起始点和新终点,其他矢量边是多条矢量边中除目标矢量边以外的矢量边;新起始点是其他矢量边的起始点在经过射线运动后与目标矢量边所在的目标表面产生的交点,新终点是其他矢量边的终点在经过射线运动后与目标矢量边所在的目标表面产生的交点。
[0102]
示例性的,参见图5及表4,还是以下簇为例进行说明。
[0103]
在该步骤中,确定矢量边h的新起始点h1

和新终点h2

,新起始点h1

是矢量边h的起始点h1在经过射线运动后与目标矢量边所在的目标表面产生的交点,新终点h2

是矢量边h的终点在经过射线运动后与目标矢量边所在的目标表面产生的交点。
[0104]
根据步骤4131b中的计算可知,从矢量边h1的起始点出发的射线在运动时间t=300后与矢量边b所在的目标表面产生交点p,根据步骤4131b中的射线方程,可以分别计算出矢量边h的新起始点h1

为(0,0,0),新终点h2

为(300,0,0)。
[0105]
步骤4133、基于目标矢量边的起始点和终点、其他矢量边的新起始点和新终点,确定出原始边。
[0106]
示例性的,参见图5、图11a及表4,还是以下簇为例进行说明。如果矢量边b的起始点b1(300,0,0)减去矢量边h的新起点h1

得到的方向向量与矢量边b同向,则说明矢量边b的起始点b1位于矢量边h的新起点h1

和矢量边b的终点b2之间,合并后原始边yb的起始点yb1为矢量边h的新起点h1

,即为(0,0,0),合并后原始边的终点yb2可以通过以下公式计算得到:yb2=yb1+(h2
,-h1

)+(b2-b1)将各个点的坐标代入上式可以得到原始边的终点yb2为(2400,0,0),如此,可以得到下簇对应的原始边yb。
[0107]
采用上述相同的方法,可以分别获得上簇对应的原始边、左簇对应的原始边。
[0108]
步骤42、基于各个簇对应的不同原始边,确定第二图形。
[0109]
示例性的,在获得图5中各个簇对应的不同原始边后,基于各个原始边,可以获得第二图形4,如图11b所示,第二图形4是对象表面轮廓的实际几何图形。可以理解的是,几何图形1为对象表面轮廓的实际几何图形,几何图形4为对象表面轮廓在形成切口3之前的原始几何图形。
[0110]
本公开实施例提供的对象表面轮廓的确定方法,可以准确的获取对象表面轮廓的原始几何图形,具有实现难度小、计算量小、效率高等优点。
[0111]
图12是根据一示例性实施例示出的一种对象表面轮廓的确定装置的框图,如图12所示,装置包括:获取模块10,用于获取第一序列,第一序列为第一图形中的顶点按第一方向排列形成的序列,第一图形为对象表面轮廓对应的实际几何图形;第一确定模块20,用于确定每一矢量边所对应的第一目标方向,矢量边为根据第一序列中的顶点所确定的边,第一目标方向为矢量边所在的目标表面的法线方向,目标表面为与对象表面轮廓垂直的表面;聚类模块30,对各矢量边进行基于第一目标方向的聚类,得到聚类结果,聚类结果中属于同一簇的矢量边具有相同的第一目标方向,属于不同簇的矢量边具有不同的第一目标方向;第二确定模块40,根据聚类结果,确定第二图形,第二图形表征对象表面轮廓对应的原始几何图形。
[0112]
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
[0113]
在示例性实施例中,还提供了一种电子设备,包括处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行存储器上所存放的指令时,实现上述实施例中的对象表面轮廓的确定方法的步骤。
[0114]
该电子设备可以终端、服务器或者类似的运算装置,以该电子设备是服务器为例,图13是根据一示例性实施例示出的电子设备的框图,该电子设备1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)1010(处理器1010可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器1030,一个或一个以上存储应用程序1023或数据1022的存储介质1020(例如一个或一个以上海量存储设备)。其中,存储器1030和存储介质1020可以是短暂存储或持久存储。存储在存储介质1020的程序可以包括一个或一个以上模块,每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器1010可以设置为与存储介质1020通信,在电子设备1000上执行存储介质1020中的一系列指令操作。电子设备1000还可以包括一个或一个以上电源1060,一个或一个以上有线或无线网络接口1050,一个或一个以上输入输出接口1040,和/或,一个或一个以上操作系统1021,例如windows servertm,mac os xtm,unixtm, linuxtm,freebsdtm等等。
[0115]
输入输出接口1040可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子设备1000的通信供应商提供的无线网络。在一个实例中,输入输出接口1040
包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个示例性实施例中,输入输出接口100可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
[0116]
本领域普通技术人员可以理解,图13所示的结构仅为示意,其并不对上述电子设备的结构造成限定。例如,电子设备1000还可包括比图13中所示更多或者更少的组件,或者具有与图13所示不同的配置。
[0117]
在示例性实施例中,还提供了一种存储介质,当存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述实施例中任一种实施方式中提供的对象表面轮廓的确定方法。
[0118]
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述任一种实施方式中提供的对象表面轮廓的确定方法。
[0119]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink) dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0120]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0121]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1