CN101441781B - 曲面翻面方法 - Google Patents
曲面翻面方法 Download PDFInfo
- Publication number
- CN101441781B CN101441781B CN2007102026487A CN200710202648A CN101441781B CN 101441781 B CN101441781 B CN 101441781B CN 2007102026487 A CN2007102026487 A CN 2007102026487A CN 200710202648 A CN200710202648 A CN 200710202648A CN 101441781 B CN101441781 B CN 101441781B
- Authority
- CN
- China
- Prior art keywords
- loop wire
- curved surface
- phase cross
- closest approach
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000001514 detection method Methods 0.000 claims abstract description 4
- 238000013459 approach Methods 0.000 claims description 66
- 230000007306 turnover Effects 0.000 claims description 59
- 230000008676 import Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 4
- 238000000151 deposition Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
一种曲面翻面方法,该方法包括步骤:接收三维模型及翻面参数,翻面参数包括选定曲面、基准面及最大公差;获取各个选定曲面的环线、环点;求各个选定曲面的相交面;根据基准面及最大公差查找需要翻面的曲面;及对需要翻面的曲面进行翻面。本发明能够将三维模型的曲面法线方向一致化,给三维模型在曲面检测、工业设计、运动控制、逆向工程等方面的应用带来了便利。
Description
技术领域
本发明涉及一种曲面处理方法,尤其是关于一种曲面翻面方法。
背景技术
在产品的设计开发过程中,CAD设计人员采用几何造型技术设计出产品的三维模型。三维模型通常由多个曲面组成,每个曲面有一个法线方向。三维模型的曲面法线方向经常不统一,有的指向模型的内部,有的指向模型的外部。如图1所示,该三维模型由三个曲面组成,左边是曲面s1,中间是曲面s2,右边是曲面s3,s1的法线指向模型外部(以向上的箭头表示),s2、s3的法线指向模型内部(以向下的箭头表示)。曲面法线方向的不统一给曲面检测、工业设计、运动控制、逆向工程等带来很多不便。
发明内容
鉴于以上内容,有必要提出一种能够将三维模型的曲面法线方向一致化的曲面翻面方法。
一种曲面翻面方法,能够将三维模型的曲面法线方向一致化,该方法包括以下步骤:(a)接收用户导入的三维模型及用户设置的翻面参数,所述三维模型包括多个曲面的参数方程,所述翻面参数包括选定曲面、基准面及最大公差,所述选定曲面是三维模型中需要方向一致化的曲面;(b)由各个选定曲面的参数方程获取各个选定曲面的环线,由各个选定曲面的环线获取各个选定曲面的环点;(c)根据用户设置的最大公差、获取的各个选定曲面的环点求各个选定曲面的相交面;(d)根据各个选定曲面的相交面在选定曲面中查找需要翻面的曲面;及(e)对需要翻面的曲面进行翻面。
本发明曲面翻面方法能够将曲面法线方向一致化,给三维模型在曲面检测、工业设计、运动控制、逆向工程等方面的应用带来了便利。
附图说明
图1是曲面翻面前的示意图。
图2是本发明曲面翻面方法较佳实施例的应用环境图。
图3是本发明曲面翻面方法较佳实施例的主流程图。
图4是图3中步骤S304的详细流程图。
图5是图4中步骤S404的详细流程图。
图6是图3中步骤S305的详细流程图。
图7是图6中步骤S603的详细流程图。
图8是图4中步骤S402中盒子的示意图。
图9是曲面翻面后的示意图。
具体实施方式
参阅图2所示,是本发明曲面翻面方法较佳实施例的应用环境示意图。该运行环境主要包括数据库1、与数据库1连接的主机2以及与主机2连接的显示设备3。数据库1用于存储三维模型。主机2用于运行曲面翻面程序20,该曲面翻面程序20接收用户从数据库1导入的三维模型及用户设置的翻面参数(包括基准面、选定曲面及最大公差),根据用户设置的基准面及最大公差在选定曲面中查找需要翻面的曲面并进行翻面,使得选定曲面的法线方向与基准面的法线方向一致。显示设备3提供一显示界面,用于显示翻面前的曲面和翻面后的曲面。
如图3所示,是本发明曲面翻面方法较佳实施例的主流程图。
步骤S301,接收用户从数据库1导入的三维模型并显示在显示设备3上,该三维模型包含多个曲面的参数方程,从曲面参数方程可得到曲面的面积、曲面上环线的参数方程,由环线的参数方程可以得到环线的长度。环(loop)是曲面的封闭边界,一个曲面可能有多个环,环线(loop线)是组成环的曲线,每个环由若干条环线组成。如图1中的三维模型由三个曲面s1、s2、s3组成,曲面s1有一个环,即由s1封闭边界上的点A1、B1、C1、D1、E1、F1连成的封闭边界,s1的环线是A1到B1的曲线、B1到C1的曲线、……、F1到A1的曲线,分别用loop1、loop2、……、loop6(在图上均未画出)表示;曲面s2有一个环,即由s2封闭边界上的点J2、I2、H2、G2、F2、E2、D2、C2、B2、A2连成的封闭边界,s2的环线是A2到J2的曲线、J2到I2的曲线、……、B2到A2的曲线,分别用loop7、loop8、……、loop16(在图上均未画出)表示;曲面s3有两个环,分别是D3、C3、B3、A3连成的封闭边界及G3、H3、F3、E3连成的封闭边界,s3的环线是A3到D3、D3到C3的曲线、C3到B3的曲线、B3到A3的曲线、E2到G2的曲线、G3到H3的曲线、H3到F3的曲线、F3到E3的曲线,分别用loop17、loop18、……、loop24(在图上均未画出)表示。
步骤S302,接收用户设置的翻面参数,所述翻面参数包括选定曲面、基准面及最大公差。选定曲面是三维模型中需要方向一致化的曲面,基准面是选定曲面中的一个曲面,翻面时以基准面为基准,将选定曲面的法线方向变为与基准面的法线方向一致。如图1所示,s1的法线指向模型外部,s2、s3的法线指向模型内部,假设s1、s2、s3是选定曲面,若s1是基准面,则需要将s2、s3翻面;若s2是基准面,则只需将s1翻面。最大公差用来判定两个曲面是否相交,本发明依据两个曲面的环线的最近距离来判定两个曲面是否相交,若两个曲面的环线的最近距离小于等于最大公差,判定两个曲面相交,本实施例所述的曲面的最近距离也就是曲面环线的最近距离。如图1所示,假设s1的6条环线是loop1、loop2、……、loop6,s2的10条环线是loop7、loop8、……、loop16,s1环线(loop1、loop2、……或loop6)上的点A(a0,a1,a2),s2环线(loop7、loop8、……或loop16)上的点B(b0,b1,b2),A、B的距离是 若对于任意A’(A’属于loop1、loop2、……或loop6)、B’(B’属于loop7、loop8、……或loop16),若A’、B’的距离|A’B’|大于等于|AB|,则|AB|是s1、s2的最近距离,A、B是s1、s2距离最近的两个点。假定最大公差是2,若两个曲面的最近距离小于等于2,则两个曲面相交,若两个曲面的最近距离大于2,则两个曲面不相交。
需要说明的是,本实施例是对一组有相交关系的曲面进行方向一致化,若选定曲面中存在孤立的曲面(与其他曲面没有相交关系),则不进行方向一致化。对于孤立的曲面,用户可以手动进行翻面。若有多组相交面,各组之间没有相交关系(即不同组中的任意曲面不相交),只需分别对各组进行处理。
步骤S303,由三维模型获取各个选定曲面的环线,由各个选定曲面的环线获取各个选定曲面环线上的点(以下简称环点)。从曲面参数方程可得到环线参数方程,由环线的参数方程可得到环线的长度。如图1所示,假定曲面s1的6条环线是loop1、loop2、……、loop6,曲面s2的10条环线是loop7、loop8、……、loop16,曲面s3的8条环线是loop17、loop18、l……、loop24,则从s1的曲面参数方程可得到loop1、loop2、……、loop6的环线参数方程及长度,从s2的曲面参数方程可得到loop7、loop8、……、loop16的环线参数方程及长度,从s3的曲面参数方程可得到loop17、loop18、……、loop24的环线参数方程及长度。在环线上等间隔取点,例如loop1长度为10、loop2长度为20、……、loop24长度为13,则在loop1取10个点、在loop2取20个点、……、在loop24取13个点,取得的点即为获取的环点。假定loop1的环点用数组LoopPts1表示,loop2的环点用数组LoopPts2表示,……,loop24的环点用数组LoopPts24表示。求两个曲面的最近距离即求两个曲面的环点的最近距离,每一环点有唯一的坐标(x,y,z)。获取环线及环点可以通过调用CAD的接口函数实现,此处不再赘述。
步骤S304,根据用户设置的最大公差及各个选定曲面的环点求各个选定曲面的相交面。如图1所示,假定选定曲面是曲面s1、s2、s3,经过该步骤求得s1的相交面为s2,s2的相交面为s1、s3,s3的相交面为s2,各个选定曲面的相交面(即总相交面)为s1、s2、s3。假设选定曲面是s1、s2、s3、s4(图1中未画出),其中s4是孤立的曲面,则s4没有相交面,各个选定曲面的相交面是s1、s2、s3。步骤S304的详细流程参见图4。
步骤S305,根据各个选定曲面的相交面在选定曲面中查找需要翻面的曲面。该步骤依次选定一个基准面及其一个相交面,以该基准面作为参考面,判定该参考面及相交面是否有相交线,若有相交线,进一步判断该相交面是否需要翻面。步骤S305的详细流程参见图6。
步骤S306,对需要翻面的曲面进行翻面并显示在显示设备3上。翻面的具体方法是:输入需要翻面的曲面;创建一个新的图层;将需要翻面的曲面加到新创建的图层中;锁住需要翻面的曲面所在图层以外的其他图层;对需要翻面的曲面执行翻面;将翻面后的曲面恢复到其原来图层,并将其他图层解锁。该步骤通过调用CAD的接口函数实现,此处不再赘述。
如图4所示,是图3中步骤S304的详细流程图。
步骤S401,输入各个选定曲面的环点。为便于说明,以数组LoopPts表示各个选定曲面的环点。假设选定曲面的环线为loop1、loop2、……、loop24,数组LoopPts1表示loop1的环点,数组LoopPts2表示loop2环点,……,数组LoopPts24表示loop24环点,则数组LoopPts表示loop1、loop2、……、loop24的环点。
步骤S402,将各个选定曲面的环点根据其坐标分到各个盒子里。
此处是对各个选定曲面的环点进行分组,每一组对应一个盒子。如图8所示,是边长为1的立方体形状的盒子示意图,该立方体的顶点坐标是(0,0,0)、(0,1,0)、(1,0,0)、(1,1,0)、(0,0,1)、(0,1,1)、(1,0,1)、(1,1,1)。将该立方体称为一个盒子,立方体的边长称为盒子的边长,若一个点在该立方体内,称该点属于该盒子。如有四个点,坐标分别为(0,0.5,0)、(0.2,0.5,0.6)、(1.2,2,3)、(0.6,1,1.2),则(0,0.5,0)、(0.2,0.5,0.6)属于这个盒子,(1.2,2,3)、(0.6,1,1.2)不属于这个盒子。与此类似,若将环点所在空间分为多个大小相等的盒子(盒子的边长不一定为1),则每个环点可以分到其所属的盒子。一个盒子对应一个存储结构,如数组,将属于该盒子的环点存入该盒子对应的存储结构中。
该步骤S402将各个选定曲面的环点根据其坐标分到各个盒子里的具体方法如下:
首先求一个包含各个选定曲面的环点的空间。设各个选定曲面的环点在x轴上的最小坐标为x0、y轴上的最小坐标为y0、z轴上的最小坐标为z0,x轴上的最大坐标为x1、y轴上的最大坐标为y1、z轴上的最大坐标为z1,则平面x=x0,x=x1,y=y0,y=y1,z=z0,z=z1确定一个长方体,该长方体包含各个选定曲面的环点,将包含特定环点的长方体,如上述包含各个选定曲面的环点的长方体,称为包围盒,称(x0,y0,z0)为最小坐标点,称(x1,y1,z1)为最大坐标点,包围盒由最小坐标点(x0,y0,z0)及最大坐标点(x1,y1,z1)确定。假设有五个环点,坐标分别是(0.8,1,1.5)、(2,0.5,2)、(1.2,2.1,0.6)、(3.4,4,2.8)、(3.6,2,2)、(1.2,2.1,2.5),则x轴上的最小坐标是0.8、y轴上的最小坐标为0.5、z轴上的最小坐标为0.6,x轴上的最大坐标为3.6、y轴上的最大坐标为4、z轴上的最大坐标为2.5,平面x=0.8,x=3.6,y=0.5,y=4,z=0.6,z=2.5确定的,或者说最小坐标点(0.8,0.5,0.6)及最大坐标点(3.6,4,2.5)确定的包围盒包含上述五个环点。
将该包围盒分成大小相等的盒子,使得每个盒子包含适当数量的环点,例如使得大致每个盒子有一个环点。此时需要根据环点的分布来确定盒子的边长。如将环点投影到x轴、y轴、z轴,若三个坐标轴投影的最大平均间距大约为1,则设定盒子的边长为1,若在x轴、y轴、z轴投影的最大平均间距大约为0.1,则取盒子的边长为0.1。如有三个环点(0.8,0.3,0.5)、(1.5,2.4,1.2)、(2.6,4.5,2.6),三个环点在x轴的投影是0.8、1.5、2.6(平均间距约为1),在y轴的投影是0.3、2.4、4.5(平均间距约为2),在z轴的投影是0.5、1.2、2.6(平均间距约为1),则边长取为2。每一个盒子由唯一的最小坐标点及最大坐标点确定,如图8的盒子由最小坐标点(0,0,0)及最大坐标点(1,1,1)确定。
分别计算该包围盒的长(x轴方向)、宽(y轴方向)、高(z轴方向)可划分的边长个数。
RefX=(x1-x0)/dBoxStep
RefY=(y1-y0)/dBoxStep
RefZ=(z1-z0)/dBoxStep
其中,dBoxStep代表盒子的边长,x1代表x轴上的最大坐标,y1代表y轴上的最大坐标,z1代表z轴上的最大坐标,x0代表x轴上的最小坐标,y0代表y轴上的最小坐标,z0代表z轴上的最小坐标。
上面求得的RefX、RefY、RefZ可能是小数,分别取不小于RefX、RefY、RefZ的最小整数nRefX、nRefY、nRefZ。划分的盒子的个数iBoxNum=nRefX*nRefX*nRefZ。如若RefX=4.2,RefY=3.8,RefZ=2.0,则nRefX=5,nRefY=4,nRefZ=2,iBoxNum=nRefX*nRefX*nRefZ=5*4*2=40。
将各个选定曲面的环点存入相应的盒子中,即存入盒子对应的存储结构中,为便于说明,假定该存储结构是数组。以环点LoopPts[i]为例,假设Box[nG]代表第nG个盒子,LoopPts[i]属于盒子Box[nG],nG可以由下面的公式计算:
nPosX=(LoopPts[i].x-x0)/dBoxStep
nPosY=(LoopPts[i].y-y0)/dBoxStep
nPosZ=(LoopPts[i].z-z0)/dBoxStep
nG=nPosX*nRefX*nRefZ+nPosY*nRefZ+nPosZ
其中,LoopPts[i].x表示LoopPts[i]的x坐标,LoopPts[i].y表示LoopPts[i]的y坐标,LoopPts[i].z表示LoopPts[i]的z坐标。将LoopPts[i]存储至第nG个盒子对应的数组中。
步骤S403,从各个选定曲面的环点(数组LoopPts)中取出一个环点(LoopPts[i])。
步骤S404,在各个选定曲面的环点中求LoopPts[i]的最近点,该最近点满足三个条件:(1)该最近点与LoopPts[i]距离最近;(2)该最近点与LoopPts[i]不在一个曲面;(3)该最近点所在曲面不在LoopPts[i]所在曲面的相交面数组中。步骤S404的详细流程参见图5。
步骤S405,判断LoopPts[i]到最近点的距离是否小于等于最大公差,若LoopPts[i]到最近点的距离大于最大公差,转到步骤S407。
步骤S406,若LoopPts[i]到最近点的距离小于等于最大公差,则LoopPts[i]所在曲面与该最近点所在曲面相交,更新LoopPts[i]所在曲面的相交面数组。若该最近点所在曲面不在LoopPts[i]所在曲面的相交面数组中,将该最近点所在曲面加入LoopPts[i]所在曲面的相交面数组。相交面数组用来存放各个选定曲面的相交面,每个选定曲面有一个相交面数组。
步骤S407,判断各个选定曲面的环点(LoopPts)中是否还有其他的环点,若还有其他的环点,返回步骤S403取出一个其他的环点。
如图5所示,是图4中步骤S404的详细流程图。
步骤S501,得到环点LoopPts[i]所对应的盒子,如Box[j],设Box[j]由最小点(4,5,6)、最大点(5,6,7)确定。
步骤S502,根据最大公差及盒子的边长确定查找范围,得到需要查找的盒子(以下简称查找盒)。如以Box[j]为中心向外扩展N层,得到查找盒。向外扩展的N层指的是取一个盒子周围的N层盒子。如最大公差为2,盒子边长为1,则向外扩展2层,扩展层数取不小于最大公差/盒子边长的最小整数N,如最大公差为2,盒子边长为0.6,最大公差/盒子边长≈3.3,则N=4。该步骤是根据两个相交面的最近距离不能大于所设置的最大公差来缩小查找最近点的查找范围。若向外扩展2层,设Box[j]由最小点(4,5,6)、最大点(5,6,7)确定,则在由最小点(2,3,4)、最大点(7,8,9)确定的查找盒中进行查找。
步骤S503,提取LoopPts[i]的查找盒中所有环点,假设数组tPts代表查找盒中所有环点。
步骤S504,从查找盒的所有环点(tPts)中取出一个环点(以下简称查找点)(tPts[k])。
步骤S505,若查找点tPts[k]与环点LoopPts[i]在同一曲面,转到步骤S508,否则进行下一步骤S506。
步骤S506,若查找点tPts[k]所在曲面在环点LoopPts[i]所在曲面的相交曲面数组中,转到步骤S508,否则进行下一步骤S507。最初环点LoopPts[i]所在曲面的相交曲面数组中是空数组,没有相交曲面。
步骤S507,计算LoopPts[i]与tPts[k]的距离,求出最近点。若LoopPts[i]与tPts[k]的距离小于LoopPts[i]与上一个查找点(假设是tPts[k-1])的距离,将tPts[k]记为最近点。若是第一次求最近点,将第一个查找点记为最近点。
步骤S508,判断tPts中是否还有其他的查找点,若有其他的查找点,转到步骤S504取出一个其他的查找点。
如图6所示,是图3中步骤S305的详细流程图。
步骤S601,输入一个基准面作为参考面。该基准面是基准面数组中的一个基准面,所述基准面数组用于存放基准面,该基准面数组最初只有一个元素,即用户设置的基准面。设输入的参考面是RefSurface[i],该参考面的相交面数组是iIstSurfaces。
步骤S602,输入该参考面RefSurface[i]的一个相交面。设参考面RefSurface[i]的一个相交面是iIstSurfaces[j]。
步骤S603,判断该参考面RefSurface[i]与该相交面iIstSurfaces[j]是否有相交线,若有相交线,得到参考面相交环线、相交面相交环线、参考面最近点及相交面最近点,进入下一步骤S604,否则转到步骤S607。如图1所示,假定s1的环线loop2(B1到C1的曲线)与s2的环线loop7(A2到J2的曲线)是s1与s2的相交线,s2的环线loop8(I2到H2的曲线)与s3的环线loop17(A3到D3的曲线)是s2与s3的相交线,该步骤即为查找上述的相交线。该步骤S603的详细流程参见图7。
步骤S604,根据参考面相交环线、相交面相交环线、参考面最近点及相交面最近点判断该相交面iIstSurfaces[j]是否需要翻面,若不需要翻面,转到步骤S607。具体判断方法如下:若两相交线最近点在各自相交线上的法线方向相同且该参考面不在翻面数组中,或者两相交线最近点在各自相交线上的法线方向相反且该参考面在翻面数组中,则该相交面需要翻面,否则该相交面不需要翻面。所述翻面数组存放需要翻面的曲面。
步骤S605,若需要翻面,更新翻面数组。若相交面iIstSurfaces[j]不在翻面数组中,将该相交面加入翻面数组。
步骤S606,更新参考面数组,若相交面iIstSurfaces[j]不在参考面数组中,将该相交面加入到参考面数组。所述参考面数组存放查找需要翻面的曲面时作为参考面的曲面,每次查找到一个新的需要翻面的曲面,将该需要翻面的曲面加入参考面数组。
步骤S607,判断该参考面RefSurface[i]是否还有其他的相交面,若有其他的相交面,则转到步骤S602输入一个其他的相交面。
步骤S608,判断参考面数组是否还有其他的参考面,若有其他的参考面,转到步骤S601输入一个其他的参考面。
步骤S609,输出翻面数组。
如图7所示,是图6中步骤S603的详细流程图。
步骤S701,输入该参考面及该相交面的环线。假设参考面的环线是loop1、loop2、……、loop6,相交面的环线是loop7、loop8、……、loop16。
步骤S702,取出一条参考面的环线。设取出loop1,数组CursRef表示loop1的环点。
步骤S703,取出一条相交面的环线。设取出loop7,数组CursCross表示loop7的环点。
步骤S704,判断该参考面的环线与该相交面的环线是否有相交区域,若参考面的环线与相交面的环线没有相交区域,转到步骤S711,否则进入下一步骤。
利用包围盒进行判断。假设CursRef的包围盒是box1,CursCross的包围盒是box2,若两个包围盒没有相交区域,则loop1与loop7没有相交区域。
分别求CursRef及CursCross的最大坐标点、最小坐标点。设CursRef的最大坐标点(x3,y3,z3),最小坐标点(x2,y2,z2);CursCross的最大坐标点(x5,y5,z5),最小坐标点(x4,y4,z4)。若同时满足(1)x3的值在x4与x5之间,(2)y3的值在y4与y5之间,(3)z3的值在z4与z5之间,或者同时满足(1)x2的值在x4与x5之间,(2)y2的值在y4与y5之间,(3)z2的值在z4与z5之间,则loop1与loop7对应的包围盒有相交区域,判断loop1与loop7有相交区域。也就是说,若逻辑表达式(x4≤x3≤x5)&&(y4≤y3≤y5)&&(z4≤z3≤z5)为真,或者逻辑表达式(x4≤x2≤x5)&&(y4≤y2≤y5)&&(z4≤z2≤z5)为真,则loop1与loop7有相交区域。
步骤S705,求该参考面的环线与该相交面的环线的最近点。假设loop1的环点A(a0,a1,a2),loop7的环点B(b0,b1,b2),A、B的距离是 若对于任意A’(A’属于CursRef)、B’(B’属于CursCross),若|AB|小于等于A’、B’的距离|A’B’|,则|AB|是参考面的环线到相交面的环线的最近距离(称绝对最近距离),A、B是loop1与loop7的最近点。称A是参考面的环线最近点,B是相交面的环线最近点。
步骤S706,判断参考面的环线到相交面的环线的绝对最近距离是否小于等于最大公差,若大于最大公差,转到步骤S711,否则进入下一步骤S707。
步骤S707,判断最近点是否平行,若平行,转到步骤S711,否则进入下一步骤S708。设A是参考面的环线最近点,B是相交面的环线最近点,若A在参考面的环线上的法线方向与B在相交面的环线上的法线方向平行(方向相同或相反),则A、B平行。
步骤S708,在参考面环线上参考面的环线最近点附近选取一组环点,如取20个环点,或者根据参考面的环线和相交面的环线的环线长度取适当数量的环点。
步骤S709,根据选取的环点判定参考面的环线与相交面的环线是否相交,若不相交,转到步骤S711,否则,进入步骤S710。若参考面的环线与相交面的环线有一段线段足够贴近,则该参考面的环线与该相交面的环线相交。具体方法如下:计算该组环点中到相交面环线的相对最近距离与绝对最近距离之差小于指定数值(如0.01)的环点的个数,若该个数小于指定个数(如5),则参考面的环线与相交面的环线不相交,转到步骤S711,若该个数大于等于指定个数,则参考面的环线与相交面的环线相交。
步骤S710,若参考面的环线与相交面的环线相交,则将该参考面环线作为参考面相交环线,将该相交面的环线作为相交面相交环线,将参考面环线的绝对最近点作为参考面最近点,将相交面环线的绝对最近点作为相交面最近点,流程结束。
步骤S711,判断该相交面是否还有其他的相交面的环线,若该相交面有其他的相交面的环线,转到步骤S703取出一条其他的相交面的环线。
步骤S712,判断该参考面是否还有其他的环线,若该参考面有其他的环线,转到步骤S702取出一条其他的环线。
图9是曲面翻面后的示意图,图中以s1、s2、s3为选定曲面,s1为用户设置的基准面,翻面后各个选定曲面的法线方向与s1的法线方向相同(以向上的箭头表示指向模型外部)。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (9)
1.一种曲面翻面方法,能够将三维模型的曲面法线方向一致化,应用于曲面检测、工业设计、运动控制与逆向工程,其特征在于,该方法包括以下步骤:
(a)接收用户导入的三维模型及用户设置的翻面参数,所述三维模型包括多个曲面的参数方程,所述翻面参数包括选定曲面、基准面及最大公差,所述选定曲面是三维模型中需要方向一致化的曲面;
(b)由各个选定曲面的参数方程获取各个选定曲面的环线,由各个选定曲面的环线获取各个选定曲面的环点;
(c)根据用户设置的最大公差、获取的各个选定曲面的环点求各个选定曲面的相交面;
(d)根据各个选定曲面的相交面在选定曲面中查找需要翻面的曲面;及
(e)对需要翻面的曲面进行翻面。
2.如权利要求1所述的曲面翻面方法,其特征在于,所述步骤(c)包括以下步骤:
(c1)从各个选定曲面的环点中选取一个环点作为参考点;
(c2)在各个选定曲面的环点中计算该参考点的最近点;
(c3)判断该参考点到最近点的距离是否小于等于最大公差,若该参考点到最近点的距离大于最大公差,转到步骤(c5);
(c4)若该参考点到最近点的距离小于等于最大公差,则该参考点所在曲面与该最近点所在曲面相交,将该最近点所在曲面记为该参考点所在曲面的相交面;及
(c5)判断各个选定曲面的环点中是否还有未选取的环点,若还有未选取的环点,返回步骤(c1)选取一个未选取的环点作为参考点。
3.如权利要求2所述的曲面翻面方法,其特征在于,所述参考点的最近点满足以下三个条件:(1)最近点与该参考点的距离最近,(2)最近点与该参考点不在同一曲面,以及(3)最近点所在曲面不是该参考点所在曲面的相交面。
4.如权利要求2所述的曲面翻面方法,其特征在于,所述步骤(c2)包括以下步骤:
(c21)根据用户设置的最大公差得到该参考点的一组查找点,该组查找点是各个选定曲面环点中的一组环点,在该组环点中查找该参考点的最近点;
(c22)从该组查找点中选取一个查找点;
(c23)若该查找点与参考点在同一曲面,直接转到步骤(c26);
(c24)若该查找点所在曲面是参考点所在曲面的相交曲面,直接转到步骤(c26);
(c25)计算参考点与查找点的距离,得到参考点的最近点,该最近点是与参考点距离最近的查找点;及
(c26)判断该组查找点中是否还有未选取的查找点,若有未选取的查找点,转到步骤(c22)选取一个未选取的查找点。
5.如权利要求1所述的曲面翻面方法,其特征在于,所述步骤(d)包括以下步骤:
(d1)输入一个基准面作为参考面;
(d2)输入该参考面的一个相交面;
(d3)判断该参考面与该相交面是否有相交线,若有相交线,得到参考面相交环线、相交面相交环线、参考面最近点及相交面最近点,进入步骤(d4),否则转到步骤(d6);
(d4)根据参考面相交环线、相交面相交环线、参考面最近点及相交面最近点判断该相交面是否需要翻面,若不需要翻面,转到步骤(d6),否则将相交面记为需要翻面的曲面;
(d5)若该相交面不是基准面,将该相交面记为基准面,否则直接进入步骤(d6);
(d6)判断该参考面是否还有其他的相交面,若有其他的相交面,则转到步骤(d2)输入一个其他的相交面;
(d7)判断基准面中是否还有其他的基准面,若有其他的基准面,转到步骤(d1)输入一个其他的基准面作为参考面;及
(d8)输出需要翻面的曲面。
6.如权利要求5所述的曲面翻面方法,其特征在于,所述步骤(d3)包括以下步骤:
(d301)选取该参考面的一条环线;
(d302)选取该相交面的一条环线;
(d303)判断该参考面环线与该相交面环线是否有相交区域,若没有相交区域,则该参考面环线与该相交面环线不相交,转到步骤(d310);
(d304)若有相交区域,则计算该参考面环线与该相交面环线的绝对最近距离及绝对最近点,绝对最近点包括参考面环线的绝对最近点和相交面环线的绝对最近点;
(d305)判断绝对最近距离是否大于用户设置的最大公差,若绝对最近距离大于最大公差,则参考面环线与相交面环线不相交,转到步骤(d310);
(d306)若绝对最近距离小于等于最大公差,则判断参考面环线绝对最近点在参考面环线上的法线方向与相交面环线绝对最近点在相交面环线上的法线方向是否平行,若不平行,则参考面环线与相交面环线不相交,转到步骤(d310);
(d307)若平行,则在参考面环线的绝对最近点附近选取一组环点;
(d308)计算该组环点中到相交面环线的相对最近距离与绝对最近距离之差小于指定数值的环点的个数,若该个数小于指定个数,则参考面的环线与相交面的环线不相交,进入步骤(d310);
(d309)若该个数大于等于指定个数,则参考面的环线与相交面的环线相交,将该参考面环线作为参考面相交环线,将该相交面环线作为相交面相交环线,将参考面环线的绝对最近点作为参考面最近点,将相交面环线的绝对最近点作为相交面最近点,流程结束;
(d310)当参考面环线与相交面环线不相交时,判断该相交面是否还有未选取的环线,若该相交面有未选取的环线,则转到步骤(d302)选取该相交面的一条未选取的环线;及
(d311)当相交面没有未选取的环线时,判断该参考面是否还有未选取的环线,若该参考面有未选取的环线,则转到步骤(d301)选取该相交面的一条未选取的环线。
7.如权利要求6所述的曲面翻面方法,其特征在于,所述步骤(d303)的判断方法是:
计算参考面环线的x轴上的最小坐标x2、y轴上的最小坐标y2、z轴上的最小坐标z2,x轴上的最大坐标x3、y轴上的最大坐标y3、z轴上的最大坐标z3,以及相交面环线的x轴上的最小坐标x4、y轴上的最小坐标y4、z轴上的最小坐标z4,x轴上的最大坐标x5、y轴上的最大坐标y5、z轴上的最大坐标z5;
若同时满足x3的值在x4与x5之间、y3的值在y4与y5之间、z3的值在z4与z5之间,或者同时满足x2的值在x4与x5之间、y2的值在y4与y5之间、z2的值在z4与z5之间,则参考面环线与相交面环线有相交区域。
8.如权利要求5所述的曲面翻面方法,其特征在于,所述步骤(d4)的判断方法包括:若该参考面最近点在相交面环线上的法线方向与该相交面最近点在相交面环线上的法线方向相同,且所述参考面不是需要翻面的曲面,则该相交面需要翻面,否则该相交面不需要翻面。
9.如权利要求8所述的曲面翻面方法,其特征在于,所述步骤(d4)的判断方法还包括:若该参考面最近点在相交面环线上的法线方向与该相交面最近点在相交面环线上的法线方向相反,且所述参考面是需要翻面的曲面,则该相交面需要翻面,否则该相交面不需要翻面。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007102026487A CN101441781B (zh) | 2007-11-23 | 2007-11-23 | 曲面翻面方法 |
US12/274,356 US8248408B2 (en) | 2007-11-23 | 2008-11-20 | Method for uniformizing surface normals of a three-dimensional model |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007102026487A CN101441781B (zh) | 2007-11-23 | 2007-11-23 | 曲面翻面方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101441781A CN101441781A (zh) | 2009-05-27 |
CN101441781B true CN101441781B (zh) | 2011-02-02 |
Family
ID=40669316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007102026487A Expired - Fee Related CN101441781B (zh) | 2007-11-23 | 2007-11-23 | 曲面翻面方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8248408B2 (zh) |
CN (1) | CN101441781B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8774523B2 (en) * | 2009-07-28 | 2014-07-08 | Schlumberger Technology Corporation | Precise boundary segment intersection for boundary representation modeling |
JP4951111B2 (ja) * | 2010-11-04 | 2012-06-13 | 株式会社東芝 | 設計支援装置、設計支援方法およびプログラム |
US8983803B2 (en) * | 2011-09-02 | 2015-03-17 | Siemens Product Lifecycle Management Software Inc. | Tolerant intersections in graphical models |
ES2949171T3 (es) * | 2014-01-23 | 2023-09-26 | Techovation Ab | Sistema y método para fabricar un cuerpo de tabla |
CN104700449A (zh) * | 2014-12-10 | 2015-06-10 | 陈露兰 | 一种基于3d技术的工艺美术品快速设计方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1391194A (zh) * | 2002-07-19 | 2003-01-15 | 章新苏 | 绘制三维图形的装置 |
CN1499447A (zh) * | 2002-11-12 | 2004-05-26 | 松下电器产业株式会社 | 曲面图像处理装置及曲面图像处理方法 |
EP1473678A1 (en) * | 2002-02-06 | 2004-11-03 | Digital Process Ltd. | Three-dimensional shape displaying program, three-dimensional shape displaying method, and three-dimensional shape displaying device |
CN1996392A (zh) * | 2006-08-14 | 2007-07-11 | 东南大学 | 三维扫描系统中的图形重构方法 |
CN101052997A (zh) * | 2004-04-29 | 2007-10-10 | 哈利伯顿兰德马克绘图公司 | 逼近可编辑曲面的系统和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1131495C (zh) * | 1996-08-29 | 2003-12-17 | 三洋电机株式会社 | 特征信息赋予方法及装置 |
EP1337963A4 (en) * | 2000-10-30 | 2005-11-02 | Translation Technologies Inc | COMPUTATIONAL GEOMETRY SYSTEM, INTERRUPTION INTERFACE, GEOMETRIC MODEL COMPARATOR, AND CORRESPONDING METHOD |
US7427991B2 (en) * | 2002-02-12 | 2008-09-23 | Sony Corporation | System and process for digital generation, placement, animation and display of feathers and other surface-attached geometry for computer generated imagery |
JP2005525863A (ja) * | 2002-05-22 | 2005-09-02 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 医療用データの統合された視覚化用の医療用視検システム及び画像処理 |
US20070080967A1 (en) * | 2005-10-11 | 2007-04-12 | Animetrics Inc. | Generation of normalized 2D imagery and ID systems via 2D to 3D lifting of multifeatured objects |
US8264487B2 (en) * | 2007-04-27 | 2012-09-11 | Sony Corporation | Method for converting polygonal surfaces to levelsets |
US20090033674A1 (en) * | 2007-08-02 | 2009-02-05 | Disney Enterprises, Inc. | Method and apparatus for graphically defining surface normal maps |
-
2007
- 2007-11-23 CN CN2007102026487A patent/CN101441781B/zh not_active Expired - Fee Related
-
2008
- 2008-11-20 US US12/274,356 patent/US8248408B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1473678A1 (en) * | 2002-02-06 | 2004-11-03 | Digital Process Ltd. | Three-dimensional shape displaying program, three-dimensional shape displaying method, and three-dimensional shape displaying device |
CN1391194A (zh) * | 2002-07-19 | 2003-01-15 | 章新苏 | 绘制三维图形的装置 |
CN1499447A (zh) * | 2002-11-12 | 2004-05-26 | 松下电器产业株式会社 | 曲面图像处理装置及曲面图像处理方法 |
CN101052997A (zh) * | 2004-04-29 | 2007-10-10 | 哈利伯顿兰德马克绘图公司 | 逼近可编辑曲面的系统和方法 |
CN1996392A (zh) * | 2006-08-14 | 2007-07-11 | 东南大学 | 三维扫描系统中的图形重构方法 |
Also Published As
Publication number | Publication date |
---|---|
US20090135181A1 (en) | 2009-05-28 |
CN101441781A (zh) | 2009-05-27 |
US8248408B2 (en) | 2012-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2915826B2 (ja) | 干渉チェック装置 | |
CN101441781B (zh) | 曲面翻面方法 | |
CN103714129B (zh) | 基于条件规则的动态数据结构和关系的构建装置和构建方法 | |
CN105549548B (zh) | 三维装配工艺生成方法和生成装置 | |
Chen et al. | Three-dimensional shape optimization with variational geometry | |
CN108170980A (zh) | 一种基于bim和gis的参数化结构化建模设计方法 | |
KR102039974B1 (ko) | 객체의 위치별 작업분류체계와 자동 수량 산출을 이용한 wbs 공사비 자동산출 시스템 및 방법 | |
CN102629391A (zh) | 基于数字图形介质的三维空间结构图形切割及切片方法 | |
CN105243237A (zh) | 一种装配工艺结构树及其构建方法 | |
CN101908215A (zh) | 一种空间数据的融合方法 | |
JP2023084699A (ja) | 製造及び構造性能を促進するフィーチャ厚制御を用いるコンピュータ支援ジェネレーティブ設計 | |
CN112395660A (zh) | 使用虚拟模型和基于图形的模拟为制造资源的操作区建模 | |
Rekleitis et al. | Efficient topological exploration | |
CN110757806A (zh) | 一种面向3d打印的双类形状密铺方法及系统 | |
CN105787020B (zh) | 图数据划分方法及装置 | |
CN109977455B (zh) | 一种适用于带地形障碍三维空间的蚁群优化路径构建方法 | |
de Berg et al. | Kinetic convex hulls, Delaunay triangulations and connectivity structures in the black-box model | |
CN111415383A (zh) | 一种平面多边形包含关系确定方法 | |
Zhang et al. | Piecewise B-spline surfaces fitting to arbitrary triangle meshes | |
Xin et al. | Path Planning Research Based on An Improved A* Algorithmfor Mobile Robot | |
Bronsvoort et al. | Product development with multiple-view feature modelling | |
Tanaka et al. | Generalized symmetry and its application to 3D shape generation | |
US20240126933A1 (en) | Computer aided shape synthesis with connectivity filtering | |
Rajan et al. | A comparison of natural and geometric approaches for shape optimal design | |
Stojadinović et al. | Ant colony optimisation of the measuring path of PMPs on a CMM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110202 Termination date: 20151123 |
|
CF01 | Termination of patent right due to non-payment of annual fee |