一种平面与三维实体的相交面求解方法与流程

文档序号:31714588发布日期:2022-10-04 21:14阅读:232来源:国知局
一种平面与三维实体的相交面求解方法与流程

1.本发明涉及计算机图形学技术领域,涉及一种平面与三维实体的相交面求解方法。


背景技术:

2.随着计算机软硬件技术的飞速发展,三维仿真技术日益成熟。三维模型在建筑工程、数字城市、地质建模、3d游戏、电影特效、生物医学等领域到了越来越广泛的应用。三维模型的建立,让人们可以从不同视角更为直观地观察各种三维实体。但当三维模型中三维实体数量较多时,三维实体之间不可避免地会发生各种视线遮挡的情况,不便于观察;同时,三维模型更擅长于定性地、直观地展示各种空间关系与效果,但是定量地表达尺寸、距离等确切信息时,往往还需要其他手段进行辅助。因此,基于真实的三维模型来创建各种二维剖面,便成为了一种实实在在的需求,在不同领域的各种场合都有着非常高频的应用场景。
3.现有的三维建模商用软件,如autocad,revit等提供了一些通用的创建剖面的功能,但其实现方法在公开文献上尚未见到。要使用这些通用软件的剖面功能,均需要在创建好特定的三维视图或剖面视图的情况下,才能显示出剖面图,通常都要局限于该软件的使用逻辑之下,仅能使用其提供的有限功能。
4.若想在没有打开甚至没有创建剖面视图的情况下灵活地提取每个三维实体对应的剖切线,上述通用软件都无法实现或是没有提供相应的接口功能。如能灵活地、快速地求解得到剖面图中各三维实体的剖切线,便能在此基础上衍生出很多具有实用价值的应用场景,如建筑设计中基础剖面大样图、地下室侧墙剖面大样图、楼梯剖面大样图、墙身节点大样图的自动生成、自动配筋等。目前,现有的三维软件都无法满足上述使用需求。


技术实现要素:

5.本发明的目的在于克服现有技术中在没有打开甚至没有创建剖面视图的情况下不能灵活地提取每个三维实体对应的剖切线的问题,提供一种平面与三维实体的相交面求解方法。
6.为了实现上述发明目的,本发明提供了以下技术方案:
7.一种平面与三维实体的相交面求解方法,包括以下步骤:
8.s1,获取bim模型三维实体的数据,所述数据经转换得到该三维实体的三角面片数据;所述三维实体的数量为一个或多个;
9.s2,创建一个竖直平面,根据所述平面建立局部坐标系;所述竖直平面的方程为a*x+b*y+d=0;
10.s3,在所述局部坐标系中,求得该三维实体中三角面片的三个顶点p1、p2和p3分别到所述平面的简化有向距离d1、d2和d3;根据所述简化有向距离d1、d2和d3判断该三角面片与所述平面是否相交,如果相交,则求得该三角面片与所述平面的交线;所述简化有向距离
的计算公式为:
11.dn=a*xn+b*yn+d
12.其中,dn为顶点pn(xn,yn,zn)到竖直平面的简化有向距离,n为三角面片中顶点的序号,取值范围为1≤n≤3;
13.s4,通过步骤s3求得该三维实体的所有三角面片与所述平面的所有交线以后,将所有交线汇总成闭合环线,得到该三维实体与所述平面的相交面。
14.由于现有技术中计算p1(x1,y1,z1)与平面a*x+b*y+d=0之间有向距离的计算公式为由此原理,每个顶点到竖直平面的距离都要除以计算量极大;为提高运算速度,避免大量的平方、开方和除法运算,本发明提出了简化邮箱距离的概念,可仅计算简化有向距离d1=a*x1+b*y1+d,起到加快计算、提高图形处理效率的作用。
15.进一步的,步骤s3中,根据所述简化有向距离d1、d2和d3判断该三角面片与所述平面是否相交的具体方法包括:
16.(1)当dn=0,则顶点pn在平面上;当dn》0时,则顶点pn在平面正侧;当dn《0时,则顶点pn在平面背侧;其中,n为三角面片中顶点的序号,取值范围为1≤n≤3;
17.(2)当d1》0且d2》0且d3》0时,或者当d1《0且d2《0且d3《0时,则三个顶点位于平面的同一侧,该三角面片与平面无交线;
18.(3)当d1、d2、d3的其中之一为0且其余两个值同号时,则该三角面片的三个顶点之一在平面上,另两个顶点在平面的同一侧,该三角面片与平面无交线;
19.(4)当d1、d2、d3的其中之一为0且其余两个值异号时,则该三角面片的三个顶点之一在平面上,另两个顶点分布在平面的两侧,该三角面片与平面有交线;
20.(5)当d1、d2、d3中有两个值为0且第三个值不为0时,则该三角面片的其中两个顶点在平面上,另一顶点在平面外,三角面片与平面的交线即为在平面上的两顶点的连线;
21.(6)当d1、d2、d3均为0时,则三角面片的三个顶点所在的平面与所述平面重合或平行,该三角面片与平面无交线;
22.(7)当d1、d2、d3均不为零且d1、d2、d3中有异号的情况时,则该三角面片的三个顶点之一在平面的一侧,另两个顶点在平面的另一侧,该三角面片与平面有交线。
23.进一步的,第(4)种情况下求交线的方法包括,将分布在平面两侧的两个顶点用直线连接,所述直线与平面的交点pc与位于平面上的顶点之间的连线为所述交线;所述交点pc的求解公式为:
24.pc=p2+[d2/(d2-d3)]*(p3-p2);
[0025]
适用该公式的条件为,d1为0且d2和d3异号。
[0026]
进一步的,第(7)种情况下求交线的方法包括,将位于平面一侧的一个顶点作为顶点1,平面另一侧的两个顶点分别为顶点2与顶点3,将顶点1与顶点2用直线连接,将顶点1与顶点3用直线连接,得到两条直线与平面的交点pc1和交点pc2,交点pc1和交点pc2之间的连线为所述交线;
[0027]
所述交点pc1的求解公式为:pc1=p1+[d1/(d1-d2)]*(p2-p1);
[0028]
所述交点pc2的求解公式为:pc2=p1+[d1/(d1-d3)]*(p3-p1)。
[0029]
进一步的,所述平面为竖直平面,方程为a*x+b*y+d=0。
[0030]
进一步的,步骤s3中,顶点pn(xn,yn,zn)到竖直平面的简化有向距离dn的计算公式为:
[0031]
dn=a*xn+b*yn+d
[0032]
其中,n为三角面片中顶点的序号,取值范围为1≤n≤3。
[0033]
进一步的,s2中建立局部坐标系的方法包括,将世界坐标系的y轴进行旋转,使其与竖直平面的法线向量平行,得到所述局部坐标系。
[0034]
进一步的,在步骤s3之前,还包括快速过滤的步骤,具体包括:
[0035]
(a)为所述竖直平面设置一定的宽度和高度,在局部坐标系中,根据竖直平面的高度和宽度得到竖直平面的位置和大小;
[0036]
(b)利用三维实体的包围盒的位置和大小与竖直平面的位置和大小进行比较,滤除与所述竖直平面未相交的三维实体。
[0037]
进一步的,步骤(a)具体包括:
[0038]
根据竖直平面的高度,确定竖直平面的顶部标高p_ztop和底部标高p_zbot;
[0039]
根据竖直平面的宽度,确定竖直平面在局部坐标系x轴上的最大值p_xmax和最小值p_xmin;
[0040]
竖直平面上的每一点在局部坐标系y轴上的值均相同,记为p_y。
[0041]
进一步的,步骤(b)中,三维实体的包围盒的位置和大小,包括:三维实体的最大z坐标zmax和最小z坐标zmin、三维实体外接球的球心(c_x,c_y,c_z)和球半径r;
[0042]
所述与竖直平面的位置和大小进行比较,滤除与所述竖直平面未相交的三维实体,包括以下步骤:
[0043]
(b1)如果三维实体的最大z坐标zmax小于竖直平面的底部标高p_zbot,,则该三维实体与竖直平面不相交,滤除该三维实体;
[0044]
(b2)如果三维实体的最小z坐标zmin大于竖直平面的顶部标高p_ztop,则该三维实体与竖直平面不相交,滤除该三维实体;
[0045]
(b3)对于在步骤(b1)和/或(b2)中不能滤除的三维实体,计算该三维实体外接球的球心(c_x,c_y,c_z)在局部坐标系中忽略掉z值后对应的局部坐标(c_x1,c_y1);
[0046]
(b4)如果c_x1+r小于竖直平面在局部坐标系x轴上的最小值p_xmin,则该三维实体与竖直平面不相交,滤除该三维实体;
[0047]
(b5)如果c_x1-r大于竖直平面在局部坐标系x轴上的最大值p_xmax,则该三维实体与竖直平面不相交,滤除该三维实体;
[0048]
(b6)如果c_y1+r小于竖直平面上点在局部坐标系y轴上的值p_y,则该三维实体与竖直平面不相交,滤除该三维实体;
[0049]
(b7)如果c_y1-r大于竖直平面上点在局部坐标系y轴上的值p_y,则该三维实体与竖直平面不相交,滤除该三维实体。
[0050]
所述三维实体包括楼板、墙、柱、梁和/或基础所对应的三维实体。
[0051]
基于相同的发明构思,提出了一种电子设备,所述电子设备包括处理器以及存储器,其中,所述存储器用于存储计算机程序,所述计算机程序在被所述处理器执行时,用于实现如上述任一项所述的一种平面与三维实体的相交面求解方法。
[0052]
与现有技术相比,本发明的有益效果:
[0053]
1、本发明通过引入平面,利用平面建立局部坐标系,并通过将三维实体与竖直平面的求交问题转换为三角面片与竖直平面的求交问题,求得对三角面片各个顶点与平面的简化有向距离,根据三个顶点的简化有向距离判断该三角面片是否与平面相交,相交则求得交线,所有交线汇总生成相交面;本发明的方法,只要三维实体的存储数据满足本发明所需条件,即,只要能够获取到三维实体的三角面片数据,即可采用本发明的方法求解三维实体与平面的相交面,不需要在创建好特定的三维视图或剖面视图的情况下也能够实现相交面的求取。本发明方法适用范围广,可应用于bim、cad、cam、cae等领域的各种三维建模软件中,既可以用于图形引擎本身快速实时地显示二维剖面,还可以脱离三维视图、剖面视图独立运行,在未打开甚至未创建三维视图、剖面视图的情况下,仍可正常高效地使用本发明的三维实体相交面求解方法,独立地为大量的其他衍生应用提供剖面求解接口,例如用于建筑设计中基础剖面大样图、地下室侧墙剖面大样图、楼梯剖面大样图、墙身节点大样图的自动生成、自动配筋等;另一方面,本发明的简化有向距离法中,三角面片的顶点坐标和竖直平面的方程都是基于世界坐标;局部坐标是用于快速求交过滤的,本发明只把外接球的坐标转化到局部坐标,如果把每个三角面片的顶点坐标都转化到局部坐标,将计算量过大,而本发明的简化有向距离法,在世界坐标下,计算量不变且计算速度更快;求到交线后,再把交线转换到局部坐标系内,用于绘制二维剖面。求到的交线,如果直接用于剖面引擎渲染剖面,则不需要转换到局部坐标系中。
[0054]
2、本发明通过将一个或多个三维实体的三维数据(三维实体上各点的三维坐标)转换为二维数据(简化有向距离),并在优选的实施方式中穷举了如何利用简化有向距离判断该三角面片是否与平面相交的各种情况,本发明不需要对三维坐标进行复杂运算,而通过采用简化的有向距离进行判断与求解,不涉及到平方和开平方的数学运算,用极少量的简单比较运算即可求解得到三角面片与平面的交线,准确性更高、求解速度更快。
[0055]
3、本发明在优选的实施方式中将平面限定为竖直平面并相应地提供了利用三维实体的包围盒的位置和大小与竖直平面的位置和大小进行比较的方法,快速滤除与竖直平面未相交的三维实体,不仅上述比较的方法运算量小,滤除的三维实体不再进行后续的相交面的计算,极大地提高了本发明的整体求解速度。
[0056]
4、本发明通过提供上述平面与三维实体求相交面的快速求解方法,当空间内存在不止一个三维实体,而是存在多个三维实体时,仍可以通过该方法,利用同一个平面对多个三维实体分别进行快速过滤、分别利用各个三维实体的三角面片的各个顶点来判断与该平面是否相交并求得交线。
[0057]
5、本发明通过提供上述平面与三维实体求相交面的快速求解方法,基于该原理,当平面的大小小于三维实体或三角面片的大小时,只要三角面片的三个交点满足上述判断条件的任一情况,仍可判断该三角面片是否与平面相交,相交时可求得交线。
[0058]
6、本发明提出的平面与三维实体求相交面的求解方法,逻辑简洁清晰、易于实现。
附图说明
[0059]
图1为一种平面与三维实体的相交面求解方法流程图。
[0060]
图2为另一个实施例中一种竖直平面与三维实体的相交面求解方法流程图。
[0061]
图3为竖直平面与三维实体的常见相对位置关系图。
[0062]
图4为竖直平面与三维实体在水平面上的投影图。
[0063]
图5为三角面片与竖直平面各种可能的相对位置关系图。
[0064]
图6为用三维实体各三角面片与竖直平面求交线并最终求得相交面的示意图。
[0065]
图7为实施例3中基础平面图与对应的三维图。
[0066]
图8为实施例3中1-1剖面对应的转换为二维线数据后的二维剖面图。
[0067]
图9为实施例3中基础集水坑大样详图。
具体实施方式
[0068]
下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
[0069]
实施例1
[0070]
一种平面与三维实体的相交面求解方法,如图1所示,包括以下步骤:
[0071]
s1,获取三维实体的数据,所述数据包括该三维实体的三角面片数据;所述三维实体的数量为一个或多个;
[0072]
s2,创建一个平面,根据所述平面建立局部坐标系;
[0073]
s3,在所述局部坐标系中,求得该三维实体中三角面片的三个顶点p1、p2和p3分别到所述平面的有向距离d1、d2和d3;根据所述有向距离d1、d2和d3判断该三角面片与所述平面是否相交,如果相交,则求得该三角面片与所述平面的交线;
[0074]
s4,通过步骤s3求得该三维实体的所有三角面片与所述平面的所有交线以后,将所有交线汇总成闭合环线,得到该三维实体与所述平面的相交面。
[0075]
本发明通过引入平面,利用平面建立局部坐标系,并通过将三维实体与竖直平面的求交问题转换为三角面片与竖直平面的求交问题,求得对三角面片各个顶点与平面的简化有向距离,根据三个顶点的简化有向距离判断该三角面片是否与平面相交,相交则求得交线,所有交线汇总生成相交面;本发明的方法,只要三维实体的存储数据满足本发明所需条件,即,只要能够获取到三维实体的三角面片数据,即可采用本发明的方法求解三维实体与平面的相交面,不需要在创建好特定的三维视图或剖面视图的情况下也能够实现相交面的求取。本发明方法适用范围广,可应用于bim、cad、cam、cae等领域的各种三维建模软件中,既可以用于图形引擎本身快速实时地显示二维剖面,还可以脱离三维视图、剖面视图独立运行,在未打开甚至未创建三维视图、剖面视图的情况下,仍可正常高效地使用本发明的三维实体相交面求解方法,独立地为大量的其他衍生应用提供剖面求解接口,例如用于建筑设计中基础剖面大样图、地下室侧墙剖面大样图、楼梯剖面大样图、墙身节点大样图的自动生成、自动配筋等;另一方面,本发明的简化有向距离法中,三角面片的顶点坐标和竖直平面的方程都是基于世界坐标;局部坐标是用于快速求交过滤的,本发明只把外接球的坐标转化到局部坐标,如果把每个三角面片的顶点坐标都转化到局部坐标,将计算量过大,而本发明的简化有向距离法,在世界坐标下,计算量不变且计算速度更快;求到交线后,再把交线转换到局部坐标系内,用于绘制二维剖面。求到的交线,如果直接用于剖面引擎渲染剖面,则不需要转换到局部坐标系中。
[0076]
在一种可能的实施方式中,还可以采用如图2所示的流程求相交面,具体步骤如下:
[0077]
a、提前生成三维实体所需的数据,在进行求交运算时,直接调用,无需重复计算,避免影响求解速度;
[0078]
b、构建竖直平面以及与竖直平面平行的局部坐标系系统,其中竖直平面具有高度和宽度属性,对应于二维剖面图中的剖切范围;
[0079]
c、在局部坐标系系统中,用三维实体的最大最小z值、最大外包球体与竖直平面进行快速求交判断,快速过滤掉与竖直平面不相交的三维实体;
[0080]
d、快速求解三维实体各三角面片与竖直平面的交线;
[0081]
e、将同一个三维实体的三角面片与竖直平面求得的全部交线进行汇总和处理,即得到闭合的相交环线,由相交环线即可生成相交面。
[0082]
上述步骤a中,提前生成三维实体的数据包括:
[0083]
a1、组成三维实体各个面的三角面片的数据;
[0084]
a2、三维实体的最大z坐标zmax和最小z坐标zmin;
[0085]
a3、三维实体的最大外包球体的半径r及球心坐标(c_x,c_y,c_z)。
[0086]
上述步骤b中,如图3所示,构建竖直平面以及与其平行的局部坐标系的步骤具体包括:
[0087]
b1、竖直平面的方程为a*x+b*y+d=0;将世界坐标系的y轴进行旋转,使其与根据竖直平面的法线向量平行,得到与竖直平面平行的局部坐标系;
[0088]
b2、根据竖直平面的高度,确定其高度范围上的顶部标高p_ztop和底部标高p_zbot;
[0089]
b3、根据竖直平面的宽度,确定其在局部坐标系中的x值的最大值p_xmax和最小值p_xmin;
[0090]
b4、由于竖直平面与局部坐标系的y轴垂直,竖直平面上每一点的y值均为定值,为竖直平面与y轴的交点的坐标y值,记为p_y;
[0091]
根据图中所示竖直平面的底部标高p_zbot、顶部标高p_ztop与三维实体的最大z坐标zmax、最小z坐标zmin可以进行快速求交判断。
[0092]
如图4所示,为竖直平面与三维实体在水平面上的投影图,该图中列出了三维实体与竖直平面几种典型的相对位置关系;参考该图,上述步骤c中,进行快速过滤包括以下几种情况:
[0093]
c1、如三维实体的zmax小于竖直平面的底部标高p_zbot,则两者一定不相交;
[0094]
例如图3中实体1的zmax小于p_zbot,故实体1与竖直平面一定不相交;实体2与实体3无法仅通过z坐标判断得出相交结果,因此进入后续判断步骤;
[0095]
c2、如三维实体的zmin大于竖直平面的顶部标高p_ztop,则两者一定不相交;
[0096]
c3、如果经c1、c2判断后,不能排除两者不相交。则计算三维实体最大外包球体球心(c_x,c_y,c_z)在局部坐标系中忽略掉z值后对应的局部坐标,记为(c_x1,c_y1),进行进一步判断;
[0097]
c4、如三维实体的c_x1+r小于竖直平面的p_xmin,则两者一定不相交;
[0098]
例如,对于图4中的三维实体a,由于其c_x1+r小于竖直平面的p_xmin,故两者一定
不相交,三维实体a在求交运算中被排除掉;
[0099]
c5、如三维实体的c_x1-r大于竖直平面的p_xmax,则两者一定不相交;
[0100]
c6、如三维实体的c_y1+r小于竖直平面的p_y,则两者一定不相交;
[0101]
c7、如三维实体的c_y1-r大于竖直平面的p_y,则两者一定不相交;
[0102]
例如,对于图4中的三维实体b,由于其c_y1-r大于竖直平面的p_y,故两者一定不相交,三维实体b在求交运算中被排除掉;
[0103]
对于三维实体c这种情形,其最大外包球体与竖直平面相交,但实际的三维实体与竖直平面并不相交,在快速求交判断中,无法将其排除,将进入后续的求交运算进行排除;
[0104]
对于三维实体d,其最大外包球体与竖直平面相交,且三维实体与竖直平面也相交,将进入后续的求交运算求解相交面;
[0105]
c8、如经过c1~c7判断后,不能排除两者不相交,则三维实体在范围上与竖直平面相交,可进行后续的求交运算。由于c1~c7仅计算少量的加减和大于小于等运算,运算量小,求交速度快,可快速过滤掉与竖直平面不相交的三维实体。
[0106]
本发明提供了利用三维实体的包围盒的位置和大小与竖直平面的位置和大小进行比较的方法,快速滤除与竖直平面未相交的三维实体,不仅上述比较的方法运算量小,滤除的三维实体不再进行后续的相交面的计算,极大地提高了本发明的整体求解速度。
[0107]
上述步骤d中,如图5所示,为三角面片与竖直平面各种可能的相对位置关系图,求解交线包括以下步骤:
[0108]
d1、三角面片的三个顶点记为p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),竖直平面的方程记为a*x+b*y+d=0。
[0109]
d2、三角面片上顶点p1到竖直平面的有向距离为d2、三角面片上顶点p1到竖直平面的有向距离为由于每个顶点到竖直平面的距离都要除以为提高运算速度,避免大量的平方、开方和除法运算,可仅计算简化有向距离d1=a*x1+b*y1+d。当d1=0,说明顶点p1在竖直平面上;当d1》0时,说明顶点p1在竖直平面正面一侧;当d1《0时,说明顶点p1在竖直平面背面一侧。同理计算得到顶点p2、p3到竖直平面的简化有向距离d2=a*x2+b*y2+d,d3=a*x3+b*y3+d。
[0110]
d3、当d1》0且d2》0且d3》0时,或者当d1《0且d2《0且d3《0时,说明三角面片的三个顶点位于竖直平面的同侧,三角面片与竖直平面无交线;
[0111]
如图5(d3)所示,即d1》0且d2》0且d3》0时,三角面片的三个顶点p1、p2、p3均位于竖直平面的正面一侧,三角面片与竖直平面无交线。
[0112]
d4、当d1、d2、d3中有一个为0,其余两个值同号时,说明三角面片的三个顶点有一个在竖直平面上,另两个顶点在竖直平面的同侧,三角面片与竖直平面无交线;
[0113]
如图5(d4)所示,即d1=0且d2》0且d3》0时,三角面片的顶点p1在竖直平面上,另两个顶点p2、p3均在竖直平面的正面一侧,三角面片与竖直平面无交线。
[0114]
d5、当d1、d2、d3中有一个为0,其余两个值异号时,说明三角面片的三个顶点有一个在竖直平面上,另外两个顶点在竖直平面的两侧,则三角面片与竖直平面必有一条交线。假设d1=0,即p1在竖直平面上,则根据d2、d3的比例关系,可以快速求得p2p3连线与竖直平面的交点pc,p1pc连线即为三角面片与竖直平面的交线;
[0115]
所述交点pc的求解公式为:
[0116]
pc=p2+[d2/(d2-d3)]*(p3-p2);
[0117]
适用该公式的条件为,d1为0且d2和d3异号。
[0118]
如图5(d5)所示,即d1=0且d2《0且d3》0时,三角面片的顶点p1在竖直平面上,顶点p2在竖直平面的负面一侧,顶点p3在竖直平面的正面一侧,则根据d2、d3的比例关系,可以快速求得p2p3连线与竖直平面的交点pc,p1pc连线即为三角面片与竖直平面的交线。
[0119]
d6、当d1、d2、d3中有两个为0,另一个不为0时,说明三角面片的三个顶点有两个在竖直平面上,另一顶点在竖直平面外,则三角面片与竖直平面的交线即为在竖直平面上的两顶点的连线;
[0120]
如图5(d6)所示,即d1=0且d2=0且d3》0时,三角面片的顶点p1、p2在竖直平面上,顶点p3在竖直平面的正面一侧,三角面片与竖直平面的交线即为p1p2连线。
[0121]
d7、当d1、d2、d3均为0时,说明三角面片的三个顶点都在竖直平面上,也即三角面片与竖直平面平行,此时三角面片与竖直平面无交线;
[0122]
如图5(d7)所示,即d1=0且d2=0且d3=0时,三角面片的顶点p1、p2、p3均在竖直平面上,也即三角面片与竖直平面平行,此时三角面片与竖直平面无交线。
[0123]
d8、当d1、d2、d3均不为零时,且d1、d2、d3不全同号时,说明三角面片的三个顶点有一个顶点在竖直平面的一侧,有两个顶点在竖直平面的另一侧,则三角面片与竖直平面必有一条交线。假设d1《0,d2》0,d3》0,根据d1、d2、d3的比例关系,可快速求得p1p2连线与竖直平面的交点pc1,p1p3连线与竖直平面的交点pc2,pc1与pc2的连线即为三角面片与竖直平面的交线;
[0124]
所述交点pc1的求解公式为:pc1=p1+[d1/(d1-d2)]*(p2-p1);
[0125]
所述交点pc2的求解公式为:pc2=p1+[d1/(d1-d3)]*(p3-p1)。
[0126]
如图5(d8)所示,即d1《0且d2》0且d3》0时,三角面片顶点p1在竖直平面的负面一侧,顶点p2、p3在竖直平面的正面一侧,根据d1、d2、d3的比例关系,可快速求得p1p2连线与竖直平面的交点pc1,p1p3连线与竖直平面的交点pc2,pc1与pc2的连线即为三角面片与竖直平面的交线。
[0127]
d9、经过d3~d8,穷尽了三角面片与竖直平面的所有可能的关系情况,并且d3~d8均只用到了少量且简单的基础运算,求解三角面片与竖直平面交线的速度极快。
[0128]
本发明通过将一个或多个三维实体的三维数据(三维实体上各点的三维坐标)转换为二维数据(简化有向距离),并在优选的实施方式中穷举了如何利用简化有向距离判断该三角面片是否与竖直平面相交的各种情况,本发明不需要对三维坐标进行复杂运算,而通过采用简化的有向距离进行判断与求解,不涉及到平方和开平方的数学运算,用极少量的简单比较运算即可求解得到三角面片与竖直平面的交线,准确性更高、求解速度更快。
[0129]
另一方面,由于采用了上述d1~d8的判断和求交方法,基于上述原理,当竖直平面的大小小于三维实体或三角面片的大小时,只要三角面片的三个交点满足上述d3~d8的任一情况,仍可判断该三角面片是否与竖直平面相交,相交时可求得交线。
[0130]
通过本发明得到的交线通过快速坐标变换即可转化为二维数据,用于二维剖面;也可以直接用于剖面引擎,生成切剖面的三维边线,或生成剖切面的三角片,从而在剖面引擎中渲染出切剖线或剖切面。
[0131]
步骤e中,具体包括:
[0132]
e1、经过步骤d得到三维实体各个三角面片与竖直平面的交线,对所有交线进行合并处理,将位于同一直线上的所有小段交线合并为一条线段;
[0133]
e2、将合并后的交线线段进行首尾连接排序,得到闭合的多边形相交环线;
[0134]
e3、由闭合的多边形相交环线基于通用的由线到面生成方法生成相交面。
[0135]
本发明通过提供步骤a~e的竖直平面与三维实体求相交面的快速求解方法,当空间内存在不止一个三维实体,而是存在多个三维实体时,仍可以通过上述步骤,利用同一个竖直平面对多个三维实体分别进行快速过滤、分别利用各个三维实体的三角面片的各个顶点来判断与该竖直平面是否相交并求得交线。
[0136]
本发明的简化有向距离法中,三角面片的顶点坐标和竖直平面的方程都是基于世界坐标;局部坐标是用于快速求交过滤的,本发明只把外接球的坐标转化到局部坐标,如果把每个三角面片的顶点坐标都转化到局部坐标,计算量大,而本发明的简化有向距离法,在世界坐标下,计算量不变且计算速度更快;求到交线后,再把交线转换到局部坐标系内,用于绘制二维剖面。求到的交线,如果直接用于剖面引擎渲染剖面,则不需要转换到局部坐标系中。
[0137]
实施例2
[0138]
本实施例提供了一个具体三维实体与竖直平面求相交面的例子。
[0139]
图6为用三维实体各三角面片与竖直平面求交线并最终求得相交面的示意图。在图6的(6-1)图中,三维实体的三角面片t1、t2与竖直平面均无交线;
[0140]
在图6的(6-2)图中,三维实体的三角面片t3、t4与竖直平面均无交线;
[0141]
在图6的(6-3)图中,求得三维实体的三角面片t5与竖直平面的交线l1,三角面片t6与竖直平面的交线l2;
[0142]
在图6的(6-4)图中,求得三维实体的三角面片t7与竖直平面的交线l3,三角面片t8与竖直平面的交线l4;
[0143]
在图6的(6-5)图中,求得三维实体的三角面片t9与竖直平面的交线l5,三角面片t10与竖直平面的交线l6;
[0144]
在图6的(6-6)图中,求得三维实体的三角面片t11与竖直平面的交线l7,三角面片t12与竖直平面的交线l8;
[0145]
如图6的(6-7)图中所示,将步骤401~406中所有求得的交线段进行处理,将位于同一直线上的所有小段交线合并为一条线段,即:由交线l1、l2合并得到交线la;由交线l3、l4合并得到交线lb;由交线l5、l6合并得到交线lc;由交线l7、l8合并得到交线ld;
[0146]
将合并后的交线线段进行首尾连接排序,即按la、lb、lc、ld的顺序排列,即得到闭合的多边形相交环线;
[0147]
由闭合的多边形相交环线基于通用的由线到面生成方法即可生成相交面:图6的(6-7)图中,求得的相交面即由三角面片ta与三角面片tb组成;
[0148]
求得的交线la、lb、lc、ld与三角面片ta、tb可以直接交由图形引擎进行渲染显示出二维剖面的线与面;
[0149]
求得的交线la、lb、lc、ld,可以作为返回值,传递给接口函数,返回求得的剖面交线,用于他衍生应用。
[0150]
实施例3
[0151]
本实施例提供了一种在bim技术领域利用本发明的方法得到相交面的应用场景。
[0152]
如图7所示,图7为在easybim软件中某一建筑bim模型的基础平面图与对应的三维图。当需要对该bim模型进行相交面的求解时,一方面,先在基础平面图上绘制基础大样剖切符1-1,具体的,基础大样剖切符1-1包括起点坐标和终点坐标,用于剖切的竖直平面经过该起点和终点坐标,且与基础平面图所表示的地平面垂直,由此确定竖直平面的方程;另一方面,由于bim模型包含由三角面片渲染出的三维实体,在得到bim模型后,对bim模型利用各个bim软件公开api进行数据解析与提取,得到所述bim模型三维实体的三角面片数据(包括顶点数据);随后按照本发明步骤s1~s4进行相交面的求解。
[0153]
按照本发明步骤s1~s4进行相交面的求解时,当bim模型中存在n个三维实体,例如墙、柱、梁或基础,则每个三维实体对应一个独有的标识符,从而辨别该三维实体所对应的具体构件。依次分别对每个三维实体执行步骤s1~s4的求解方法,或者在执行步骤s1~s4的过程中分别依次处理每一个三维实体,得到该三维实体与竖直平面的所有交线以及交线汇总成的闭合环线,以及该三维实体对应的所有交线与该三维实体标识符的对应关系。对所有实体求解完成后,得到n组数据(n组交线与相应的标识符),返回给调用本发明方法的下游端,下游端可以通过读取标识符分辨该组交线所对应的是具体bim模型中的哪一个三维实体,从而辨别出该三维实体所表示的构件的边线。
[0154]
例如,在一种可能的实现方式中,获取目标地下室侧墙的bim模型后,下游端如cad/cam等软件,通过调用本发明方法对所述目标地下室侧墙的bim模型进行三维剖切,得到目标地下室侧墙的bim模型对应的侧墙剖面,即目标地下室侧墙的bim模型中多个三维实体(楼板、基础、侧墙等)与平面的交线以及该组交线对应的三维实体的标识符。根据标识符分别提取所述侧墙剖面的轮廓线信息,其中,所述轮廓线信息包括:楼板图元轮廓线、基础图元轮廓线、侧墙图元轮廓线以及各个图元轮廓线之间的层级关系。
[0155]
在另一种可能的实现方式中,获取bim模型后按照本发明步骤s1~s4进行相交面的求解,得到三维实体(楼板、基础、侧墙等)与平面的交线以及该组交线对应的三维实体的标识符后,还包括:应用于公开号为cn112324454a的专利所公开的一种基于bim技术的盾构区间疏散平台预拼装方法,获取各个支架放置点处的剖面,并导出该剖面对应的二维图,即支架放置点处的剖面图,基于支架放置点处的剖面获取符合限界需求的步道板和支架的预制信息。
[0156]
在一种可能的实现方式中,再次参考图7,获取某一建筑基础的bim模型后,将对应的bim模型三维实体利用基础大样剖切符1-1所生成的竖直平面按照本发明步骤s1~s4进行相交面的求解、转换为二维线数据后的二维剖面图如图8的左图所示,亦即基础剖面的轮廓线。图8的左图中,图中蓝色的线为剖切到的线,黑色的线为看线。基于三维数据的在剖面引擎中渲染的剖面图如图8中的右图所示,剖面引擎中渲染了真实的线和面,包括剖切到的线面和看到的线面。图8右图中的黄色矩形框,即为竖直剖切平面的范围框。
[0157]
上述某一建筑基础的bim模型与竖直平面进行相交面的求解的实例中,得到的所述基础剖面的轮廓线包括基础图元轮廓线以及非基础图元轮廓线,对所述轮廓线分别按照如下基础剖面大样自动绘制功能进行处理:
[0158]
(1)基于图元轮廓线信息对各图元进行边界分析,在非基础图元轮廓线的边界处
生成剖断线图元,并对基础图元进行封闭处理,并得到基础剖面的左右边界信息;
[0159]
(2)基于预设钢筋偏移距对封闭处理后的基础图元进行偏移处理,得到角筋控制点集以及轮廓偏移点集;
[0160]
(3)从轮廓偏移点集中提取阳角点,根据阳角形成分布筋控制点集;
[0161]
(4)根据基础剖面的左右边界信息,得到基础剖面的底部轮廓线,对底部轮廓线向外偏移预设的垫层厚度距离,得到垫层的轮廓线;
[0162]
(5)根据基础底部轮廓线,以及顶部轮廓线,分别形成水平、竖直尺寸标注,以及角度标注。由此得到了基础大样详图所需的所有图元。
[0163]
图9为在easybim软件中,采用基于本发明提供的上述基础剖面大样自动绘制功能,进一步进行点、标注等附加信息的添加,自动绘制的基础集水坑大样详图。只需在图7的基础平面布置图中,绘制基础大样剖切符1-1,利用相关的数据,按照本发明步骤s1~s4进行相交面的求解,得到基础剖面的轮廓线后对所述轮廓线分别按照上述基础剖面大样自动绘制功能进行处理,即可自动生成图9中的基础集水坑大样详图,并不需要实际创建或打开图8中的二维剖面图。
[0164]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1