坡屋面的二维图纸三维重建方法、系统和介质转让专利

申请号 : CN201910948834.8

文献号 : CN110837666B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李钍

申请人 : 广联达科技股份有限公司

摘要 :

本发明公开了一种坡屋面的二维图纸三维重建方法,包括获取坡度和整体外轮廓线;根据坡度和外轮廓线,计算每两个屋面间的三维交线;计算所有交线的三维交点;选取高度值最小的一个交点;外轮廓线收缩,收缩前后的端点连线转化为屋脊线,收缩后形成的重叠边也转化为屋脊线;判断是否有残留的外轮廓线,如无则输出所有的屋脊线,如有残留的外轮廓线则选取高度值最小的一个交点进一步收缩。本发明采用了二维数据进行三维自动处理的方法,处理速度快,效率提高,免去了人工操作的麻烦;用最少的数据进行生成,原二维图纸中即使存在某些数据错误,也不影响最终结果。

权利要求 :

1.一种坡屋面的二维图纸三维重建方法,其特征在于所述方法包括:步骤一、获取坡度和整体外轮廓线;

步骤二、根据坡度和外轮廓线,计算每两个屋面间的三维交线;

步骤三、计算所有交线的三维交点;

步骤四、选取高度值最小的一个交点;

步骤五、外轮廓线收缩,收缩前后的端点连线转化为屋脊线,收缩后形成的重叠边也转化为屋脊线;其中,所述步骤五根据步骤四中的高度值,以及各外轮廓边的坡度,计算出外轮廓边向内的偏移距离,各边按其偏移距离各自进行偏移,并裁剪掉首尾多余的部分;其中,一条外轮廓线,在收缩前后的端点进行连线,就是屋脊线;由于可能存在多个高度相同的交点,因此某些外轮廓在收缩后,会出现共线的情况,此时共线的部分,就是屋脊线;

步骤六、判断是否有残留的外轮廓线,如无则进入步骤七,如有残留的外轮廓线则回到步骤四;其中,所述步骤六的判断具体为:根据步骤五,外轮廓线要么退化成一个点,从而消失;要么由于和若干其它外轮廓共线,从而消失;消失的外轮廓不会再产生交线和交点;如果尚有未消失的轮廓线,那么回到步骤四,寻找这些残留的轮廓线彼此所形成的交线中,高度最小的交点;

步骤七、输出所有的屋脊线。

2.根据权利要求1所述的坡屋面的二维图纸三维重建方法,其特征在于,所述步骤一为根据通过外部绘制外轮廓线,并输入每一条外轮廓线对应的坡度。

3.根据权利要求1所述的坡屋面的二维图纸三维重建方法,其特征在于,所述步骤一为加载数字图纸并显示,根据选择其中的线段、或通过描图来给出外轮廓,再选择其中的坡度文字,自动识别成坡度值。

4.根据权利要求1或2或3所述的坡屋面的二维图纸三维重建方法,其特征在于,所述步骤二具体包括以下步骤:步骤2.1、已知两条首尾相接的二维外轮廓线L1和L2,是直线或圆弧,在它们的相接点P(PX,PY)上,可计算出一阶导的垂向,为二维向量:二维直线的参数化表示为L=a+k*T,其中a和k都是二维向量,a为基准位置,k为基准方向,T为变量参数,L是以a为基准位置、k为基准方向的点的集合,把a记为(PosX,PosY),k记为(DirX,DirY);

对于参数化表示的直线,L(t)=(PosX,PosY)+t*(DirX,DirY),一阶导垂向为±(‑DirY,DirX);对于参数化表示的圆弧,C(t)=(PosX,PosY)+(R*cos(t),R*sin(t)),一阶导垂向为(PX–PosX,PY–PosY);

其中,R为半径,t是圆心角的角度,以X轴正方向为0,沿逆时针递增;

由上述二维直线的参数化表示,二维圆的参数化表示是C=a+k(t)*r,a为基准位置,k为可变方向,是圆心角t的函数,k=(cos(t),sin(t)),r为固定半径;

步骤2.2、已知它们对应的坡度S1和S2,利用坡度的定义,可知它们各自的曲面在交线上的法向,为一个三维向量:设二维轮廓线的一阶导垂向对应的单位向量为v(vX,vY),由于坡度=高度:水平距离,构造三维向量v’(vX,vY,S),然后将长度单位化,即为曲面在交线上的法向,其中,S为曲面的坡度,单位向量v1(vX1,vY1)的三维向量为(vX1,vY1,S1),单位向量v2(vX2,vY2)的三维向量为(vX2,vY2,S2);

步骤2.3、利用两曲面交线垂直于各自的法向,因此将两法向进行叉乘,即可知交线的方向,为一个三维向量I(IX,IY,IZ),同时可知沿此交线的坡度Si=IZ/sqrt(IX^2+IY^2);

步骤2.4、将此三维向量投影到二维平面上(令IZ=0,然后将长度单位化,然后去掉IZ)可得二维向量PI(PIX,PIY),再加上交线过相接点P,可知交线的二维投影方程:IL(t)=(PX,PY)+t*(PIX,PIY)

步骤2.5、此外可知,沿此交线上的各点在三维空间下的高度值:设点A(X,Y)在交线上,则A点的高度值为sqrt((X‑PX)^2+(Y‑PY)^2)*Si,其中Si为沿两曲面构成交线的坡度,即三维交线在XOY平面上的投影长度为1时,其三维起止点在Z轴上的差值。

5.根据权利要求4所述的坡屋面的二维图纸三维重建方法,其特征在于,由所述步骤二所得的所有交线二维投影方程,按照直线求交方程,可求得二维交点:设直线L1(t)=(X1,Y1)+t*(DX1,DY1),直线L2(t)=(X2,Y2)+t*(DX2,DY2),L1和L2交于一点,即X1+t1*DX1=X2+t2*DX2

Y1+t1*DY1=Y2+t2*DY2

二者联立为一个二元一次方程组,可解得t1和t2,则(X1+t1*DX1,Y1+t2*DX2)即为所求,其中X1和Y1为直线的参数表示,为变量参数;

然后根据步骤2.5计算两交线在此交点上的高度,若相等,则证明真正空间相交,记录此交点和高度值。

6.一种坡屋面的二维图纸三维重建系统,用于实现权利要求1所述的方法,该系统包括:数据获取单元,用于获取坡度和整体外轮廓线;

交线计算单元,用于根据坡度和外轮廓线,计算每两个屋面间的三维交线;

交点计算单元,用于计算所有交线的三维交点;

交点选取单元,用于选取高度值最小的一个交点;

外轮廓线收缩单元,用于外轮廓线收缩,收缩前后的端点连线转化为屋脊线,收缩后形成的重叠边也转化为屋脊线;

残留判断单元,用于判断是否有残留的外轮廓线,如无则输出,如有残留的外轮廓线则继续通过外轮廓线收缩单元来进行收缩;

屋脊线输出单元,用于输出所有的屋脊线。

7.根据权利要求6所述的系统,其特征在于,所述交线计算单元按照以下步骤来计算:步骤S1、已知两条首尾相接的二维外轮廓线L1和L2,可能是直线或圆弧,在它们的相接点P(PX,PY)上,可计算出一阶导的垂向,为一个二维向量:对于参数化表示的直线,L(t)=(PosX,PosY)+t*(DirX,DirY),一阶导垂向为±(‑DirY,DirX);对于参数化表示的圆弧,C(t)=(PosX,PosY)+(R*cos(t),R*sin(t)),一阶导垂向为(PX–PosX,PY–PosY);

步骤S2、已知它们对应的坡度S1和S2,利用坡度的定义,可知它们各自的曲面在交线上的法向,为一个三维向量:设二维轮廓线的一阶导垂向对应的单位向量为v(vX,vY),由于坡度=高度:水平距离,构造三维向量v’(vX,vY,S),然后将长度单位化,即为曲面在交线上的法向;

步骤S3、利用两曲面交线垂直于各自的法向,因此将两法向进行叉乘,即可知交线的方向,为一个三维向量I(IX,IY,IZ),同时可知沿此交线的坡度Si=IZ/sqrt(IX^2+IY^2);

步骤S4、将此三维向量投影到二维平面上(令IZ=0,然后将长度单位化,然后去掉IZ)可得二维向量PI(PIX,PIY),再加上交线过相接点P,可知交线的二维投影方程:IL(t)=(PX,PY)+t*(PIX,PIY);

步骤S5、此外可知,沿此交线上的各点在三维空间下的高度值:

设点A(X,Y)在交线上,则A点的高度值为sqrt((X‑PX)^2+(Y‑PY)^2)*Si。

8.根据权利要求7所述的系统,其特征在于,所述交线计算单元所得的所有交线二维投影方程,按照直线求交方程,可求得二维交点:设直线L1(t)=(X1,Y1)+t*(DX1,DY1),直线L2(t)=(X2,Y2)+t*(DX2,DY2),L1和L2交于一点,即X1+t1*DX1=X2+t2*DX2

Y1+t1*DY1=Y2+t2*DY2

二者联立为一个二元一次方程组,可解得t1和t2,则(X1+t1*DX1,Y1+t2*DX2)即为所求。

9.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1‑5任一项所述方法的步骤。

说明书 :

坡屋面的二维图纸三维重建方法、系统和介质

技术领域

[0001] 本发明属于三维重建技术,涉及应用于工程预算中由坡屋面的二维图纸重建三维模型的技术,尤其涉及一种坡屋面的二维图纸三维重建方法、系统和计算机可读存储介质。

背景技术

[0002] 随着计算机技术的发展,BIM理念的发展,以及建筑预算对精度要求的提升,基于三维建筑模型进行预算的需求越来越迫切。而设计方交付的数据以二维图纸,尤其是AutoCAD绘制的二维图纸为主,因此预算人员需要在软件中手动重建三维模型。
[0003] 对于坡屋面来说,现有方案就是按照图中给出的坡屋面俯视图,依次绘制若干封闭的多边形,然后再按照图中信息设置坡度和方向,生成三维的屋面板。
[0004] 现有的方法存在以下缺陷:
[0005] 1、操作非常繁琐,二维图纸中的屋脊线只是定性的描述,与实际屋脊线不一致,需要手动根据图纸中给出的各处多边形尺寸、坡度、标高、高差等数据进行计算,算出各屋面板精确的多边形轮廓,否则屋面板之间会出现缝隙。
[0006] 2、二维图纸数据可能有误,某些地方的标高由于设计计算失误与坡度不符,导致手动建立三维模型时需要频繁调整。

发明内容

[0007] 针对现有技术的不足,本发明提供了一种高效的解决方案,获取整个坡屋面的轮廓多边形,以及轮廓多边形上每条边所对应的屋面板坡度,按照外轮廓、屋脊线、坡度生成屋面板的三维模型。
[0008] 为了达到上述发明目的,本发明提供了一种坡屋面的二维图纸三维重建方法,包括:
[0009] 步骤一、获取坡度和整体外轮廓线;
[0010] 步骤二、根据坡度和外轮廓线,计算每两个屋面间的三维交线;
[0011] 步骤三、计算所有交线的三维交点;
[0012] 步骤四、选取高度值最小的一个交点;
[0013] 步骤五、外轮廓线收缩,收缩前后的端点连线转化为屋脊线,收缩后形成的重叠边也转化为屋脊线;
[0014] 步骤六、判断是否有残留的外轮廓线,如无则进入步骤七,如有残留的外轮廓线则回到步骤四;
[0015] 步骤七、输出所有的屋脊线。
[0016] 优选的,上述步骤一为根据通过外部绘制外轮廓线,并输入每一条外轮廓线对应的坡度。
[0017] 优选的,上述步骤一为加载数字图纸并显示,根据选择其中的线段、或通过描图来给出外轮廓,再选择其中的坡度文字,自动识别成坡度值。
[0018] 优选的,上述步骤二具体包括以下步骤:
[0019] 步骤2.1、已知两条首尾相接的二维外轮廓线L1和L2,是直线或圆弧,在它们的相接点P(PX,PY)上,可计算出一阶导的垂向,为二维向量:
[0020] 二维直线的参数化表示为L=a+k*T,其中a和k都是二维向量,a为基准位置,k为基准方向,T为变量参数,L是以a为基准位置、k为基准方向的点的集合,把a记为(PosX,PosY),k记为(DirX,DirY);
[0021] 对于参数化表示的直线,L(t)=(PosX,PosY)+t*(DirX,DirY),一阶导垂向为±(‑DirY,DirX);对于参数化表示的圆弧,C(t)=(PosX,PosY)+(R*cos(t),R*sin(t)),一阶导垂向为(PX–PosX,PY–PosY);
[0022] 其中,R为半径,t是圆心角的角度,以X轴正方向为0,沿逆时针递增;
[0023] 由上述二维直线的参数化表示,二维圆的参数化表示是C=a+k(t)*r,a为基准位置,k为可变方向,是圆心角t的函数,k=(cos(t),sin(t)),r为固定半径;
[0024] 步骤2.2、已知它们对应的坡度S1和S2,利用坡度的定义,可知它们各自的曲面在交线上的法向,为一个三维向量:
[0025] 设二维轮廓线的一阶导垂向对应的单位向量为v(vX,vY),由于坡度=高度:水平距离,构造三维向量v’(vX,vY,S),然后将长度单位化,即为曲面在交线上的法向,其中,S为曲面的坡度,
[0026] 单位向量v1(vX1,vY1)的三维向量为(vX1,vY1,S1),单位向量v2(vX2,vY2)的三维向量为(vX2,vY2,S2);
[0027] 步骤2.3、利用两曲面交线垂直于各自的法向,因此将两法向进行叉乘,即可知交线的方向,为一个三维向量I(IX,IY,IZ),同时可知沿此交线的坡度Si=IZ/sqrt(IX^2+IY^2);
[0028] 步骤2.4、将此三维向量投影到二维平面上(令IZ=0,然后将长度单位化,然后去掉IZ)可得二维向量PI(PIX,PIY),再加上交线过相接点P,可知交线的二维投影方程:
[0029] IL(t)=(PX,PY)+t*(PIX,PIY)
[0030] 步骤2.5、此外可知,沿此交线上的各点在三维空间下的高度值:
[0031] 设点A(X,Y)在交线上,则A点的高度值为sqrt((X‑PX)^2+(Y‑PY)^2)*Si,其中Si为沿两曲面构成交线的坡度,即三维交线在XOY平面上的投影长度为1时,其三维起止点在Z轴上的差值。
[0032] 优选的,由上述步骤二所得的所有交线二维投影方程,按照直线求交方程,可求得二维交点:
[0033] 设直线L1(t)=(X1,Y1)+t*(DX1,DY1),直线L2(t)=(X2,Y2)+t*(DX2,DY2),L1和L2交于一点,即
[0034] X1+t1*DX1=X2+t2*DX2
[0035] Y1+t1*DY1=Y2+t2*DY2
[0036] 二者联立为一个二元一次方程组,可解得t1和t2,则(X1+t1*DX1,Y1+t2*DX2)即为所求,其中X1和Y1为直线的参数表示,为变量参数。
[0037] 然后根据步骤2.5计算两交线在此交点上的高度,若相等,则证明真正空间相交,记录此交点和高度值。
[0038] 优选的,上述步骤五根据步骤四中的高度值,以及各外轮廓边的坡度,计算出外轮廓边向内的偏移距离,各边按其偏移距离各自进行偏移,并裁剪掉首尾多余的部分。
[0039] 优选的,上述一条外轮廓线,在收缩前后的端点进行连线,就是屋脊线。;由于可能存在多个高度相同的交点,因此某些外轮廓在收缩后,会出现共线的情况,此时共线的部分,就是屋脊线。
[0040] 优选的,上述步骤六的判断具体为:根据步骤五,外轮廓线要么退化成一个点,从而消失;要么由于和若干其它外轮廓共线,从而消失;消失的外轮廓不会再产生交线和交点;
[0041] 如果尚有未消失的轮廓线,那么回到步骤四,寻找这些残留的轮廓线彼此所形成的交线中,高度最小的交点。
[0042] 一种坡屋面的二维图纸三维重建系统,包括:
[0043] 数据获取单元,用于获取坡度和整体外轮廓线;
[0044] 交线计算单元,用于根据坡度和外轮廓线,计算每两个屋面间的三维交线;
[0045] 交点计算单元,用于计算所有交线的三维交点;
[0046] 交点选取单元,用于选取高度值最小的一个交点;
[0047] 外轮廓线收缩单元,用于外轮廓线收缩,收缩前后的端点连线转化为屋脊线,收缩后形成的重叠边也转化为屋脊线;
[0048] 残留判断单元,用于判断是否有残留的外轮廓线,如无则输出,如有残留的外轮廓线则继续通过外轮廓线收缩单元来进行收缩;
[0049] 屋脊线输出单元,用于输出所有的屋脊线。
[0050] 优选的,上述交线计算单元按照以下步骤来计算:
[0051] 步骤S1、已知两条首尾相接的二维外轮廓线L1和L2,可能是直线或圆弧,在它们的相接点P(PX,PY)上,可计算出一阶导的垂向,为一个二维向量:
[0052] 对于参数化表示的直线,L(t)=(PosX,PosY)+t*(DirX,DirY),一阶导垂向为±(‑DirY,DirX);对于参数化表示的圆弧,C(t)=(PosX,PosY)+(R*cos(t),R*sin(t)),一阶导垂向为(PX–PosX,PY–PosY);
[0053] 步骤S2、已知它们对应的坡度S1和S2,利用坡度的定义,可知它们各自的曲面在交线上的法向,为一个三维向量:
[0054] 设二维轮廓线的一阶导垂向对应的单位向量为v(vX,vY),由于坡度=高度:水平距离,构造三维向量v’(vX,vY,S),然后将长度单位化,即为曲面在交线上的法向;
[0055] 步骤S3、利用两曲面交线垂直于各自的法向,因此将两法向进行叉乘,即可知交线的方向,为一个三维向量I(IX,IY,IZ),同时可知沿此交线的坡度Si=IZ/sqrt(IX^2+IY^2);
[0056] 步骤S4、将此三维向量投影到二维平面上(令IZ=0,然后将长度单位化,然后去掉IZ)可得二维向量PI(PIX,PIY),再加上交线过相接点P,可知交线的二维投影方程:
[0057] IL(t)=(PX,PY)+t*(PIX,PIY);
[0058] 步骤S5、此外可知,沿此交线上的各点在三维空间下的高度值:
[0059] 设点A(X,Y)在交线上,则A点的高度值为sqrt((X‑PX)^2+(Y‑PY)^2)*Si。
[0060] 优选的,上述交线计算单元所得的所有交线二维投影方程,按照直线求交方程,可求得二维交点:
[0061] 设直线L1(t)=(X1,Y1)+t*(DX1,DY1),直线L2(t)=(X2,Y2)+t*(DX2,DY2),L1和L2交于一点,即
[0062] X1+t1*DX1=X2+t2*DX2
[0063] Y1+t1*DY1=Y2+t2*DY2
[0064] 二者联立为一个二元一次方程组,可解得t1和t2,则(X1+t1*DX1,Y1+t2*DX2)即为所求。
[0065] 一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
[0066] 与现有技术相比,本发明效率更高,可以用最少的数据进行生成,原二维图纸中即使存在某些数据错误,也不影响最终结果。

附图说明

[0067] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0068] 图1示出了本发明坡屋面的二维图纸三维重建方法中建立关联并进行计算流程示意图;
[0069] 图2(a)‑2(e)示出了本发明一实施例示意图。

具体实施方式

[0070] 下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
[0071] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0072] 如图1所示,本实施例提供一种坡屋面的二维图纸三维重建方法,包括:
[0073] S1、获取坡度和整体外轮廓线;
[0074] S2、根据坡度和外轮廓线,计算每两个屋面间的三维交线;
[0075] S3、计算所有交线的三维交点;
[0076] S4、选取高度值最小的一个交点;
[0077] S5、外轮廓线收缩,收缩前后的端点连线转化为屋脊线,收缩后形成的重叠边也转化为屋脊线;
[0078] S6、判断是否有残留的外轮廓线,如无则进入步骤七,如有残留的外轮廓线则回到步骤四;
[0079] S7、输出所有的屋脊线。
[0080] 在一些实施例中,步骤S1为根据通过外部绘制外轮廓线,并输入每一条外轮廓线对应的坡度。
[0081] 在一些实施例中,步骤S1为加载数字图纸并显示,根据选择其中的线段、或通过描图来给出外轮廓,再选择其中的坡度文字,自动识别成坡度值。
[0082] 在一些实施例中,步骤S2具体包括以下步骤:
[0083] 步骤2.1、已知两条首尾相接的二维外轮廓线L1和L2,是直线或圆弧,在它们的相接点P(PX,PY)上,可计算出一阶导的垂向,为二维向量:
[0084] 二维直线的参数化表示为L=a+k*T,其中a和k都是二维向量,a为基准位置,k为基准方向,T为变量参数,L是以a为基准位置、k为基准方向的点的集合,把a记为(PosX,PosY),k记为(DirX,DirY);
[0085] 对于参数化表示的直线,L(t)=(PosX,PosY)+t*(DirX,DirY),一阶导垂向为±(‑DirY,DirX);对于参数化表示的圆弧,C(t)=(PosX,PosY)+(R*cos(t),R*sin(t)),一阶导垂向为(PX–PosX,PY–PosY);
[0086] 其中,R为半径,t是圆心角的角度,以X轴正方向为0,沿逆时针递增;
[0087] 由上述二维直线的参数化表示,二维圆的参数化表示是C=a+k(t)*r,a为基准位置,k为可变方向,是圆心角t的函数,k=(cos(t),sin(t)),r为固定半径;
[0088] 步骤2.2、已知它们对应的坡度S1和S2,利用坡度的定义,可知它们各自的曲面在交线上的法向,为一个三维向量:
[0089] 设二维轮廓线的一阶导垂向对应的单位向量为v(vX,vY),由于坡度=高度:水平距离,构造三维向量v’(vX,vY,S),然后将长度单位化,即为曲面在交线上的法向,其中,S为曲面的坡度,
[0090] 单位向量v1(vX1,vY1)的三维向量为(vX1,vY1,S1),单位向量v2(vX2,vY2)的三维向量为(vX2,vY2,S2);
[0091] 步骤2.3、利用两曲面交线垂直于各自的法向,因此将两法向进行叉乘,即可知交线的方向,为一个三维向量I(IX,IY,IZ),同时可知沿此交线的坡度Si=IZ/sqrt(IX^2+IY^2);
[0092] 步骤2.4、将此三维向量投影到二维平面上(令IZ=0,然后将长度单位化,然后去掉IZ)可得二维向量PI(PIX,PIY),再加上交线过相接点P,可知交线的二维投影方程:
[0093] IL(t)=(PX,PY)+t*(PIX,PIY)
[0094] 步骤2.5、此外可知,沿此交线上的各点在三维空间下的高度值:
[0095] 设点A(X,Y)在交线上,则A点的高度值为sqrt((X‑PX)^2+(Y‑PY)^2)*Si,其中Si为沿两曲面构成交线的坡度,即三维交线在XOY平面上的投影长度为1时,其三维起止点在Z轴上的差值。
[0096] 在一些实施例中,由所述步骤S2所得的所有交线二维投影方程,按照直线求交方程,可求得二维交点:
[0097] 设直线L1(t)=(X1,Y1)+t*(DX1,DY1),直线L2(t)=(X2,Y2)+t*(DX2,DY2),L1和L2交于一点,即
[0098] X1+t1*DX1=X2+t2*DX2
[0099] Y1+t1*DY1=Y2+t2*DY2
[0100] 二者联立为一个二元一次方程组,可解得t1和t2,则(X1+t1*DX1,Y1+t2*DX2)即为所求,其中X1和Y1为直线的参数表示,为变量参数。
[0101] 然后根据步骤2.5计算两交线在此交点上的高度,若相等,则证明真正空间相交,记录此交点和高度值。
[0102] 在一些实施例中,步骤S5根据步骤S4中的高度值,以及各外轮廓边的坡度,计算出外轮廓边向内的偏移距离,各边按其偏移距离各自进行偏移,并裁剪掉首尾多余的部分。
[0103] 在一些实施例中,一条外轮廓线,在收缩前后的端点进行连线,就是屋脊线。由于可能存在多个高度相同的交点,因此某些外轮廓在收缩后,会出现共线的情况,此时共线的部分,就是屋脊线。
[0104] 在一些实施例中,步骤S6的判断具体为:根据步骤五,外轮廓线要么退化成一个点,从而消失;要么由于和若干其它外轮廓共线,从而消失;消失的外轮廓不会再产生交线和交点;
[0105] 如果尚有未消失的轮廓线,那么回到步骤四,寻找这些残留的轮廓线彼此所形成的交线中,高度最小的交点。
[0106] 本发明还提供一种实施例,一种坡屋面的二维图纸三维重建系统,包括:
[0107] 数据获取单元,用于获取坡度和整体外轮廓线;
[0108] 交线计算单元,用于根据坡度和外轮廓线,计算每两个屋面间的三维交线;
[0109] 交点计算单元,用于计算所有交线的三维交点;
[0110] 交点选取单元,用于选取高度值最小的一个交点;
[0111] 外轮廓线收缩单元,用于外轮廓线收缩,收缩前后的端点连线转化为屋脊线,收缩后形成的重叠边也转化为屋脊线;
[0112] 残留判断单元,用于判断是否有残留的外轮廓线,如无则输出,如有残留的外轮廓线则继续通过外轮廓线收缩单元来进行收缩;
[0113] 屋脊线输出单元,用于输出所有的屋脊线。
[0114] 在一些实施例中,交线计算单元按照以下步骤来计算:
[0115] 步骤S1、已知两条首尾相接的二维外轮廓线L1和L2,可能是直线或圆弧,在它们的相接点P(PX,PY)上,可计算出一阶导的垂向,为一个二维向量:
[0116] 对于参数化表示的直线,L(t)=(PosX,PosY)+t*(DirX,DirY),一阶导垂向为±(‑DirY,DirX);对于参数化表示的圆弧,C(t)=(PosX,PosY)+(R*cos(t),R*sin(t)),一阶导垂向为(PX–PosX,PY–PosY);
[0117] 步骤S2、已知它们对应的坡度S1和S2,利用坡度的定义,可知它们各自的曲面在交线上的法向,为一个三维向量:
[0118] 设二维轮廓线的一阶导垂向对应的单位向量为v(vX,vY),由于坡度=高度:水平距离,构造三维向量v’(vX,vY,S),然后将长度单位化,即为曲面在交线上的法向;
[0119] 步骤S3、利用两曲面交线垂直于各自的法向,因此将两法向进行叉乘,即可知交线的方向,为一个三维向量I(IX,IY,IZ),同时可知沿此交线的坡度Si=IZ/sqrt(IX^2+IY^2);
[0120] 步骤S4、将此三维向量投影到二维平面上(令IZ=0,然后将长度单位化,然后去掉IZ)可得二维向量PI(PIX,PIY),再加上交线过相接点P,可知交线的二维投影方程:
[0121] IL(t)=(PX,PY)+t*(PIX,PIY);
[0122] 步骤S5、此外可知,沿此交线上的各点在三维空间下的高度值:
[0123] 设点A(X,Y)在交线上,则A点的高度值为sqrt((X‑PX)^2+(Y‑PY)^2)*Si。
[0124] 在一些实施例中,交线计算单元所得的所有交线二维投影方程,按照直线求交方程,可求得二维交点:
[0125] 设直线L1(t)=(X1,Y1)+t*(DX1,DY1),直线L2(t)=(X2,Y2)+t*(DX2,DY2),L1和L2交于一点,即
[0126] X1+t1*DX1=X2+t2*DX2
[0127] Y1+t1*DY1=Y2+t2*DY2
[0128] 二者联立为一个二元一次方程组,可解得t1和t2,则(X1+t1*DX1,Y1+t2*DX2)即为所求。
[0129] 以某场景为实施例,如图2(a)所示,输入所有外轮廓线和坡度。
[0130] 如图2(b)所示,首先求出所有外轮廓的交线,图中没有直接画出,但应该位于且并不局限于图中标记为a的线段及其延长线上;然后寻找高度最小的交点,即图中的标记为P的点所标识的两个点;然后按交点的高度,对外轮廓进行收缩,得到图中的标记为b的线段,他们的端点,与收缩前轮廓的端点相连,就得到了屋脊线,即图中的标记为a的线段;此外,两个交点间的轮廓线,在收缩后是共线的,因此也可以确定是屋脊线,即图中的标记为c的线段。
[0131] 如图2(c)所示,继续寻找剩余外轮廓线的交线形成的交点中高度最小的,即图中标记为P的两个点;与图2(b)中的步骤一样,按照高度对外轮廓收缩,得到标记为b的线段,然后与在图2(b)中的线段连线得到屋脊线,然后左下的收缩结果由于共线,也直接转化为屋脊线。
[0132] 如图2(d)所示,继续上述步骤,本次得到三个高度相同的交点标记为P,轮廓收缩为上个步骤中所得线段继续收缩,得到标记为a和标记为c的屋脊线。到此为止,所有的外轮廓都已经消除,不再继续。
[0133] 如图2(e)所示,对得到的所有屋脊线进行共线时的合并处理,得到最终的屋脊线。
[0134] 本发明还提供一种实施例,计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤
[0135] 此外,还可以提供一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。
[0136] 与现有技术相比,本发明具有以下优点:
[0137] 1、采用了二维数据进行三维自动处理的方法,处理速度快,效率提高,免去了人工操作的麻烦;
[0138] 2、用最少的数据进行生成,原二维图纸中即使存在某些数据错误,也不影响最终结果。
[0139] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0140] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0141] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0142] 本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0143] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0144] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0145] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0146] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0147] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0148] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0149] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0150] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。