曲面网格化系统及方法转让专利

申请号 : CN201110120975.4

文献号 : CN102779356B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张旨光吴新元

申请人 : 鸿富锦精密工业(深圳)有限公司鸿海精密工业股份有限公司

摘要 :

一种曲面网格化系统及方法,该方法包括步骤:获取待测物体的边界轮廓线的取样点,即边界线取样点;根据获取的边界线取样点构建一个边界点链表;获取待测物体的曲面的取样点,并构建一个曲面取样点队列;将边界点链表中的取样点插入到曲面取样点队列中,获取若干个包围盒;获取待测物体曲面的参数平面的V直线与边界轮廓线的交点,所述V直线是指平行于参数平面V方向的直线;用每个包围盒内的边界线取样点、曲面取样点及交点构建三角形。利用本发明可以对待测物体的CAD曲面模型的网格化数据进行精简。

权利要求 :

1.一种曲面网格化系统,应用于计算装置中,其特征在于,该系统包括:边界线取样点获取模块,用于从计算装置的存储器中获取待测物体的边界轮廓线的取样点,即边界线取样点;

所述边界线取样点获取模块还用于根据获取的边界线取样点构建一个边界点链表;

曲面取样点获取模块,用于获取待测物体的曲面的取样点,并构建一个曲面取样点队列;

插入模块,用于将边界点链表中的取样点插入到曲面取样点队列中,获取若干个包围盒;

其中,所述获取若干个包围盒的步骤包括:读取边界点链表与曲面取样点队列;遍历曲面取样点队列,计算出所有取样点的横轴坐标最大值Umax和最小值Umin,并根据横轴坐标最大值Umax和最小值Umin及参数平面U方向的控制点数量U0,计算L0=(Umax-Umin)/U0,对L0取整得到参数平面U方向的步长L,根据该U方向上的步长L用V直线将待测物体的参数平面分成若干个包围盒;遍历边界点链表,获取每个边界线取样点的横轴坐标值U0,计算P0=(U0-Umin)/L,对P0取整得到P,将该边界线取样点的链表指针指向曲面取样点队列的位置P处;当所有边界线取样点计算完毕后,输出更新后的边界点链表与曲面取样点队列;

交点计算模块,用于获取待测物体曲面的参数平面的V直线与边界轮廓线的交点,所述V直线是指平行于参数平面V方向的直线;及网格化模块,用于用每个包围盒内的边界线取样点、曲面取样点及交点构建三角形。

2.如权利要求1所述的曲面网格化系统,其特征在于,该系统还包括:输出模块,用于根据该待测物体曲面的参数方程将所有三角形顶点的二维UV坐标映射回三维空间曲面中的三维点坐标,并根据三角形顶点三维坐标输出三角网格化后的曲面。

3.如权利要求1所述的曲面网格化系统,其特征在于,所述边界线取样点获取模块获取边界线取样点包括:从存储器中读取待测物体的三维模型;

从该三维模型中读取待测物体的边界轮廓线;

从边界轮廓线中读取曲线,对曲线进行均匀布点以获取边界线取样点;

计算曲线上每两个取样点P1和P2连线的中点P3,并计算该两个取样点在曲线上的中点P4;

当P3和P4的距离大于第一预设值时,将P4加入边界线取样点队列中(P1、P4、P2、…);

当曲线上的所有取样点计算完毕后,输出边界线取样点队列。

4.如权利要求1所述的曲面网格化系统,其特征在于,所述边界线取样点获取模块根据获取的边界线取样点构建一个边界点链表包括:从边界线取样点队列中读取边界线取样点;

根据边界线取样点数量构造一个链表;

将每个边界线取样点在边界线取样点队列中的下标插入该链表内部;及将该链表连接成为一个环形链表。

5.如权利要求1所述的曲面网格化系统,其特征在于,所述曲面取样点获取模块获取待测物体的曲面的取样点,并构建一个曲面取样点队列包括:获取待测物体的曲面参数平面的U方向和V方向的控制点数量;

根据曲面参数平面U方向和V方向的控制点数量,获取U方向和V方向上的取样点;

计算U方向和V方向上每两个取样点P'1和P'2连线的中点P'3,并计算P'3到曲面的距离;

当P'3到曲面的距离大于第二预设值时,将P'1和P'2在曲线上的中点P'4加入曲面取样点队列中(P'1、P'4、P'2、…);及当曲面上U方向和V方向所有取样点计算完毕后,输出曲面取样点队列。

6.如权利要求1所述的曲面网格化系统,其特征在于,所述网格化模块用每个包围盒内的边界线取样点、曲面取样点及交点构建三角形包括:获取边界线取样点、曲面取样点及交点;

连接每个包围盒内的边界线取样点、曲面取样点及交点,得到一个或多个多边形;

从每个多边形中提取一个或多个三角形,并移除多边形的外部三角形,获取一个三角形队列;及当所有多边形拆分完毕后,输出待测物体曲面的参数方程及所有三角形顶点的二维UV坐标。

7.一种曲面网格化方法,运行于计算装置中,其特征在于,该方法包括如下步骤:边界线取样点获取步骤,从计算装置的存储器中获取待测物体的边界轮廓线的取样点,即边界线取样点;

边界点链表构建步骤,根据获取的边界线取样点构建一个边界点链表;

曲面取样点获取步骤,获取待测物体的曲面的取样点,并构建一个曲面取样点队列;

插入步骤,将边界点链表中的取样点插入到曲面取样点队列中,获取若干个包围盒;

其中,所述获取若干个包围盒的步骤包括:读取边界点链表与曲面取样点队列;遍历曲面取样点队列,计算出所有取样点的横轴坐标最大值Umax和最小值Umin,并根据横轴坐标最大值Umax和最小值Umin及参数平面U方向的控制点数量U0,计算L0=(Umax-Umin)/U0,对L0取整得到参数平面U方向的步长L,根据该U方向上的步长L用V直线将待测物体的参数平面分成若干个包围盒;遍历边界点链表,获取每个边界线取样点的横轴轴坐标值U0,计算P0=(U0-Umin)/L,对P0取整得到P,将该边界线取样点的链表指针指向曲面取样点队列的位置P处;当所有边界线取样点计算完毕后,输出更新后的边界点链表与曲面取样点队列;

交点计算步骤,获取待测物体曲面的参数平面的V直线与边界轮廓线的交点,所述V直线是指平行于参数平面V方向的直线;及网格化步骤,用每个包围盒内的边界线取样点、曲面取样点及交点构建三角形。

8.如权利要求7所述的曲面网格化方法,其特征在于,该方法还包括输出步骤,根据该待测物体曲面的参数方程将所有三角形顶点的二维UV坐标映射回三维空间曲面中的三维点坐标,并根据三角形顶点三维坐标输出三角网格化后的曲面。

9.如权利要求7所述的曲面网格化方法,其特征在于,所述边界线取样点获取步骤包括:从存储器中读取待测物体的三维模型;

从该三维模型中读取待测物体的边界轮廓线;

从边界轮廓线中读取曲线,对曲线进行均匀布点以获取边界线取样点;

计算曲线上每两个取样点P1和P2连线的中点P3,并计算该两个取样点在曲线上的中点P4;

当P3和P4的距离大于第一预设值时,将P4加入边界线取样点队列中(P1、P4、P2、…);

当曲线上的所有取样点计算完毕后,输出边界线取样点队列。

10.如权利要求7所述的曲面网格化方法,其特征在于,所述边界点链表构建步骤包括:从边界线取样点队列中读取边界线取样点;

根据边界线取样点数量构造一个链表;

将每个边界线取样点在边界线取样点队列中的下标插入该链表内部;及将该链表连接成为一个环形链表。

11.如权利要求7所述的曲面网格化方法,其特征在于,所述曲面取样点获取步骤包括:获取待测物体的曲面参数平面的U方向和V方向的控制点数量;

根据曲面参数平面U方向和V方向的控制点数量,获取U方向和V方向上的取样点;

计算U方向和V方向上每两个取样点P'1和P'2连线的中点P'3,并计算P'3到曲面的距离;

当P'3到曲面的距离大于第二预设值时,将P'1和P'2在曲线上的中点P'4加入曲面取样点队列中(P'1、P'4、P'2、…);及当曲面上U方向和V方向所有取样点计算完毕后,输出曲面取样点队列。

12.如权利要求7所述的曲面网格化方法,其特征在于,所述网格化步骤包括:获取边界线取样点、曲面取样点及交点;

连接每个包围盒内的边界线取样点、曲面取样点及交点,得到一个或多个多边形;

从每个多边形中提取一个或多个三角形,并移除多边形的外部三角形,获取一个三角形队列;及当所有多边形拆分完毕后,输出待测物体曲面的参数方程及所有三角形顶点的二维UV坐标。

说明书 :

曲面网格化系统及方法

技术领域

[0001] 本发明涉及一种影像量测系统及方法,尤其涉及一种曲面网格化系统及方法。

背景技术

[0002] 在三次元测量中,CAD曲面模型(待测物体三维模型)主要应用于测针仿真、离线编程、运动控制和影像量测,而这些应用需要CAD曲面模型做快速移动、缩放和旋转等动态变换。但是,在常规的CAD曲面模型网格化处理方法中,因网格化后的数据量超过了实际所需的几十倍或上百倍,从而造成CAD曲面模型动态变换的计算量过大,使整个测量过程都会变得缓慢,更严重的后果可能是无法应用。

发明内容

[0003] 鉴于以上内容,有必要提供一种曲面网格化系统,其可对待测物体的CAD曲面模型的网格化数据进行精简。
[0004] 鉴于以上内容,还有必要提供一种曲面网格化方法,其可对待测物体CAD曲面模型的网格化数据进行精简。
[0005] 一种曲面网格化系统,应用于计算装置中,该系统包括:
[0006] 边界线取样点获取模块,用于从计算装置的存储器中获取待测物体的边界轮廓线的取样点,即边界线取样点;
[0007] 所述边界线取样点获取模块还用于根据获取的边界线取样点构建一个边界点链表;
[0008] 曲面取样点获取模块,用于获取待测物体的曲面的取样点,并构建一个曲面取样点队列;
[0009] 插入模块,用于将边界点链表中的取样点插入到曲面取样点队列中,获取若干个包围盒;
[0010] 交点计算模块,用于获取待测物体曲面的参数平面的V直线与边界轮廓线的交点,所述V直线是指平行于参数平面V方向的直线;及
[0011] 网格化模块,用于用每个包围盒内的边界线取样点、曲面取样点及交点构建三角形。
[0012] 一种曲面网格化方法,运行于计算装置中,该方法包括如下步骤:
[0013] 边界线取样点获取步骤,从计算装置的存储器中获取待测物体的边界轮廓线的取样点,即边界线取样点;
[0014] 边界点链表构建步骤,根据获取的边界线取样点构建一个边界点链表;
[0015] 曲面取样点获取步骤,获取待测物体的曲面的取样点,并构建一个曲面取样点队列;
[0016] 插入步骤,将边界点链表中的取样点插入到曲面取样点队列中,获取若干个包围盒;
[0017] 交点计算步骤,获取待测物体曲面的参数平面的V直线与边界轮廓线的交点,所述V直线是指平行于参数平面V方向的直线;及
[0018] 网格化步骤,用每个包围盒内的边界线取样点、曲面取样点及交点构建三角形。
[0019] 前述方法可以由电子设备(如电脑)执行,其中该电子设备具有附带了图形用户界面(GUI)的显示屏幕、一个或多个处理器、存储器以及保存在存储器中用于执行这些方法的一个或多个模块、程序或指令集。在某些实施例中,该电子设备提供了包括无线通信在内的多种功能。
[0020] 用于执行前述方法的指令可以包含在被配置成由一个或多个处理器执行的计算机程序产品中。
[0021] 相较于现有技术,所述的曲面网格化系统及方法,其可对待测物体的CAD曲面模型的网格化数据进行精简,并在精减的过程中保持高精度的要求,以实现测量所需的速度,提高了影像测量的效率。

附图说明

[0022] 图1是本发明计算装置的结构示意图。
[0023] 图2是曲面网格化系统的功能模块图。
[0024] 图3是本发明曲面网格化方法的较佳实施例的流程图。
[0025] 图4是图3中步骤S1的具体流程图。
[0026] 图5是步骤S1的示例图。
[0027] 图6是图3中步骤S2的具体流程图。
[0028] 图7是步骤S2的示例图。
[0029] 图8是图3中步骤S3的具体流程图。
[0030] 图9是步骤S3的示例图。
[0031] 图10是图3中步骤S4的具体流程图。
[0032] 图11是步骤S4的示例图。
[0033] 图12是图3中步骤S6的具体流程图。
[0034] 图13和图14是步骤S6的示例图。
[0035] 主要元件符号说明
[0036]计算装置 2
显示设备 20
输入设备 22
存储器 23
曲面网格化系统 24
处理器 25
边界线取样点获取模块 201
曲面取样点获取模块 202
[0037]插入模块 203
交点计算模块 204
网格化模块 205
输出模块 206
[0038] 如下具体实施方式将结合上述附图进一步说明本发明。

具体实施方式

[0039] 参阅图1所示,是本发明计算装置的结构示意图。在本实施例中,该计算装置2包括通过数据总线相连的显示设备20、输入设备22、存储器23、曲面网格化系统24和处理器25。在本实施例中,所述计算装置2可以是电脑或服务器等。
[0040] 所述曲面网格化系统24用于对待测物体的CAD曲面模型(即三维模型)的网格化数据进行精简,并将精简后的CAD曲面模型显示在显示设备20上,具体过程以下描述。
[0041] 所述存储器23用于存储所述曲面网格化系统24的程序代码,及待测物体的三维模型等资料。所述显示设备20用于显示待测物体的三维模型等资料,所述输入设备22用于输入测试人员设置的网格化参数等。
[0042] 在本实施例中,所述曲面网格化系统24可以被分割成一个或多个模块,所述一个或多个模块被存储在所述存储器23中并被配置成由一个或多个处理器(本实施例为一个处理器25)执行,以完成本发明。例如,参阅图2所示,所述曲面网格化系统24被分割成边界线取样点获取模块201、曲面取样点获取模块202、插入模块203、交点计算模块204、网格化模块205和输出模块206。本发明所称的模块是完成一特定功能的程序段,比程序更适合于描述软件在计算装置2中的执行过程。
[0043] 如图3所示,是本发明曲面网格化方法的较佳实施例的流程图。
[0044] 步骤S1,边界线取样点获取模块201从存储器23中获取待测物体的边界轮廓线的取样点,即边界线取样点。具体流程参阅图4的描述。
[0045] 步骤S2,边界线取样点获取模块201根据上述获取的边界线取样点构建一个边界点链表。具体流程参阅图6的描述。
[0046] 步骤S3,曲面取样点获取模块202获取待测物体的曲面的取样点,并构建一个曲面取样点队列。具体流程参阅图8的描述。
[0047] 步骤S4,插入模块203将边界点链表中的取样点插入到曲面取样点队列中,获取若干个包围盒。具体流程参阅图10的描述。
[0048] 步骤S5,交点计算模块204计算待测物体曲面的参数平面的V直线与边界轮廓线的交点。于本实施例中,参数平面的水平方向用U表示,垂直方向用V表示,U、V的取值范围为0-1。所述V直线是指平行于V方向的直线。
[0049] 步骤S6,网格化模块205用每个包围盒内的边界线取样点、曲面取样点及交点构建三角形,具体流程参阅图12的描述。
[0050] 进一步地,于其它实施例中,输出模块206根据该待测物体曲面的参数方程将所有三角形顶点的二维UV坐标映射回三维空间曲面中的三维点坐标,并根据三角形顶点三维坐标输出三角网格化后的曲面。
[0051] 如图4所示,是图3中步骤S1的具体流程图。
[0052] 步骤S10,边界线取样点获取模块201从存储器23中读取待测物体的三维模型。
[0053] 步骤S11,边界线取样点获取模块201从该三维模型中读取待测物体的边界轮廓线。
[0054] 步骤S12,边界线取样点获取模块201从边界轮廓线中读取曲线,对曲线进行均匀布点以获取边界线取样点。
[0055] 步骤S13,边界线取样点获取模块201计算曲线上每两个取样点P1和P2连线的中点P3,并计算该两个取样点在曲线上的中点P4(参阅图5所示)。
[0056] 步骤S14,当P3和P4的距离大于第一预设值时,边界线取样点获取模块201将P4加入边界线取样点队列中(P1、P4、P2、...)。
[0057] 于其它实施例中,还可以进一步包括:将P1与P4、P4与P2分别重复执行步骤S13与步骤S14,直到计算出的距离小于或等于第一预设值时结束。例如,假设P1和P4连线的中点为P5,P1和P4在曲线上的中点为P6。如果P5和P6的距离大于第一预设值时,边界线取样点获取模块201将P6加入边界线取样点队列中(P1、P6、P4、P2、...)。如果P5和P6的距离小于或等于第一预设值时,则结束P1与P4的重复执行S13与S14的步骤。同理,P4与P2之间也重复执行S13与S14的步骤,在此不再赘述。
[0058] 步骤S15,当曲线上的所有取样点计算完毕后,边界线取样点获取模块201输出边界线取样点队列。
[0059] 如图6所示,是图3中步骤S2的具体流程图。
[0060] 步骤S20,边界线取样点获取模块201从边界线取样点队列中读取边界线取样点。
[0061] 步骤S21,边界线取样点获取模块201根据边界线取样点数量构造一个链表。在本实施例中,链表的节点的个数等于该边界线取样点数量。
[0062] 步骤S22,边界线取样点获取模块201将每个边界线取样点在边界线取样点队列中的下标插入该链表内部。参阅图7所示,边界线取样点P1的下标为1,则在链表中的位置为1。
[0063] 步骤S23,边界线取样点获取模块201将该链表连接成为一个环形链表。
[0064] 如图8所示,是图3中步骤S3的具体流程图。
[0065] 步骤S30,曲面取样点获取模块202获取曲面布点参数。在本实施例中,所述曲面布点参数包括,但不限于,待测物体的曲面参数平面的U方向和V方向的控制点数量(即取样点数量)。例如,参阅图9所示,U方向的控制点数量为6,V方向的控制点数量5。
[0066] 步骤S31,曲面取样点获取模块202根据曲面参数平面U方向和V方向的控制点数量,获取U方向和V方向上的取样点。例如,如果U方向的控制点数量为10,则在U方向上取10个点。
[0067] 步骤S32,曲面取样点获取模块202计算U方向和V方向上每两个取样点P′1和P′2连线的中点P′3,并计算P′3到曲面的距离。
[0068] 步骤S33,当P′3到曲面的距离大于第二预设值时,曲面取样点获取模块202将P′1和P′2在曲线上的中点P′4加入曲面取样点队列中(P′1、P′4、P′2、...)。
[0069] 于其它实施例中,还可以进一步包括:将P′1与P′4,P′4与P′2重复执行步骤S32与步骤S33,直到计算出的距离小于或等于第二预设值时结束。例如,假设P′1和P′4连线的中点为P′5,P′1和P′4在曲线上的中点P′6。如果P′5到曲面的距离大于第二预设值时,曲面取样点获取模块202将P′6加入边界线取样点队列中(P′1、P′6、P′4、P′2、...)。如果P′5到曲面的距离小于或等于第二预设值时,则结束P′1与P′4的重复执行S32与S33的步骤。同理,P′4与P′2之间也重复执行S32与S33的步骤,在此不再赘述。
[0070] 步骤S34,当曲面上U方向和V方向所有取样点计算完毕后,曲面取样点获取模块202输出曲面取样点队列。
[0071] 如图10所示,是图3中步骤S4的具体流程图。
[0072] 步骤S40,插入模块203读取边界点链表与曲面取样点队列。
[0073] 步骤S41,插入模块203遍历曲面取样点队列,计算出所有取样点的横轴坐标(即U方向)最大值Umax和最小值Umin,并根据横轴坐标最大值Umax和最小值Umin及参数平面U方向的控制点数量U0,计算L0=(Umax-Umin)/U0,对L0取整得到参数平面U方向的步长L,根据该U方向上的步长L用V直线将待测物体的参数平面分成若干个包围盒。
[0074] 其中,所述V直线是指平行于V方向的直线。参阅图11所示,待测物体的参数平面被分成5个包围盒:box1、box2、box3、box4、box5。
[0075] 在本实施中,为了减少网格化数据,只在U方向上用V直线对待测物体的参数平面进行了包围盒划分。在其它实施例中,也可以进一步在V方向上用U直线对待测物体的参数平面进行包围盒划分。所述U直线是指平行于U方向的直线。
[0076] 步骤S42,插入模块203遍历边界点链表,获取每个边界线取样点的横轴坐标值U0,计算(U0-Umin)/L=P0,对P0取整得到P,将该边界线取样点的链表指针指向曲面取样点队列的位置P处,即将该边界线取样点放入序号为P的包围盒中。例如,如果P=1,则将该边界线取样点放入第一个包围盒box1中。
[0077] 步骤S43,当所有边界线取样点计算完毕后,插入模块203输出更新后的边界点链表与曲面取样点队列。
[0078] 如图12所示,是图3中步骤S6的具体流程图。
[0079] 步骤S60,网格化模块205获取边界线取样点、曲面取样点及交点。
[0080] 步骤S61,网格化模块205连接每个包围盒内的边界线取样点、曲面取样点及交点,得到一个或多个多边形。参阅图13所示,假设网格化模块205提取第5个包围盒box5,则会得到图14中所示的多边形M1。
[0081] 步骤S62,网格化模块205从每个多边形中提取一个或多个三角形,并移除多边形的外部三角形,获取一个三角形队列(参阅图14所示)。
[0082] 在本实施例中,为了减少提取的三角形数量,步骤S5中只计算了待测物体曲面的参数平面的V直线与边界轮廓线的交点,因此步骤S62中提取的三角形数量会减少。在其它实施例中,也可以在步骤S5计算待测物体曲面的参数平面的U直线与边界轮廓线的交点、及V直线与边界轮廓线的交点。
[0083] 步骤S63,当所有多边形拆分完毕后,网格化模块205输出待测物体曲面的参数方程及所有三角形顶点的二维UV坐标。
[0084] 然后,输出模块206根据该待测物体曲面的参数方程将所有三角形顶点的二维UV坐标映射回三维空间曲面中的三维点坐标,并根据三角形顶点三维坐标输出三角网格化后的曲面。
[0085] 最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。