新四季網

曲面翻面方法

2023-06-01 16:46:26 3

專利名稱:曲面翻面方法
技術領域:
本發明涉及一種曲面處理方法,尤其是關於一種曲面翻面方法。
背景技術:
在產品的設計開發過程中,CAD設計人員採用幾何造型技術設計出產品的三維模型。三 維模型通常由多個曲面組成,每個曲面有一個法線方向。三維模型的曲面法線方向經常不統 一,有的指向模型的內部,有的指向模型的外部。如圖1所示,該三維模型由三個曲面組成 ,左邊是曲面sl,中間是曲面s2,右邊是曲面s3, sl的法線指向模型外部(以向上的箭頭表 示),s2、 s3的法線指向模型內部(以向下的箭頭表示)。曲面法線方向的不統一給曲面檢 測、工業設計、運動控制、逆向工程等帶來很多不便。

發明內容
鑑於以上內容,有必要提出一種能夠將三維模型的曲面法線方向一致化的曲面翻面方法
一種曲面翻面方法,能夠將三維模型的曲面法線方向一致化,該方法包括以下步驟 (a)接收用戶導入的三維模型及用戶設置的翻面參數,所述三維模型包括多個曲面的參數方 程,所述翻面參數包括選定曲面、基準面及最大公差,所述選定曲面是三維模型中需要方向 一致化的曲面;(b)由各個選定曲面的參數方程獲取各個選定曲面的環線,由各個選定曲面 的環線獲取各個選定曲面的環點;(c)根據用戶設置的最大公差、獲取的各個選定曲面的環 點求各個選定曲面的相交面;(d)根據各個選定曲面的相交面在選定曲面中査找需要翻面的 曲面;及(e)對需要翻面的曲面進行翻面。
本發明曲面翻面方法能夠將曲面法線方向一致化,給三維模型在曲面檢測、工業設計、 運動控制、逆向工程等方面的應用帶來了便利。


圖l是曲面翻面前的示意圖。
圖2是本發明曲面翻面方法較佳實施例的應用環境圖。 圖3是本發明曲面翻面方法較佳實施例的主流程圖。 圖4是圖3中步驟S 304的詳細流程圖。 圖5是圖4中步驟S404的詳細流程圖。
6圖6是圖3中步驟S 30 5的詳細流程圖。
圖7是圖6中步驟S603的詳細流程圖。
圖8是圖4中步驟S402中盒子的示意圖。
圖9是曲面翻面後的示意圖。
具體實施例方式
參閱圖2所示,是本發明曲面翻面方法較佳實施例的應用環境示意圖。該運行環境主要 包括資料庫l、與資料庫1連接的主機2以及與主機2連接的顯示設備3。資料庫l用於存儲三維 模型。主機2用於運行曲面翻面程序20,該曲面翻面程序20接收用戶從資料庫1導入的三維模 型及用戶設置的翻面參數(包括基準面、選定曲面及最大公差),根據用戶設置的基準面及 最大公差在選定曲面中査找需要翻面的曲面並進行翻面,使得選定曲面的法線方向與基準面 的法線方向一致。顯示設備3提供一顯示界面,用於顯示翻面前的曲面和翻面後的曲面。
如圖3所示,是本發明曲面翻面方法較佳實施例的主流程圖。
步驟S301,接收用戶從資料庫1導入的三維模型並顯示在顯示設備3上,該三維模型包含 多個曲面的參數方程,從曲面參數方程可得到曲面的面積、曲面上環線的參數方程,由環線 的參數方程可以得到環線的長度。環(loop)是曲面的封閉邊界, 一個曲面可能有多個環, 環線(lo叩線)是組成環的曲線,每個環由若干條環線組成。如圖l中的三維模型由三個曲 面sl、 s2、 s3組成,曲面sl有一個環,即由sl封閉邊界上的點Al、 Bl、 Cl、 Dl、 El、 Fl連成 的封閉邊界,sl的環線是Al到Bl的曲線、B1到C1的曲線、……、F1到A1的曲線,分別用 loopl、 loop2、……、loop6 (在圖上均未畫出)表示;曲面s2有一個環,即由s2封閉邊界 上的點J2、 12、 H2、 G2、 F2、 E2、 D2、 C2、 B2、 A2連成的封閉邊界,s2的環線是A2到J2的曲 線、J2到I2的曲線、……、B2到A2的曲線,分別用loop7、 loop8、……、loopl6 (在圖上均 未畫出)表示;曲面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、 loopl8、…… 、loop24 (在圖上均未畫出)表示。
步驟S302,接收用戶設置的翻面參數,所述翻面參數包括選定曲面、基準面及最大公差 。選定曲面是三維模型中需要方向一致化的曲面,基準面是選定曲面中的一個曲面,翻面時 以基準面為基準,將選定曲面的法線方向變為與基準面的法線方向一致。如圖1所示,sl的 法線指向模型外部,s2、 s3的法線指向模型內部,假設sl、 s2、 s3是選定曲面,若sl是基準 面,則需要將s2、 s3翻面;若s2是基準面,則只需將sl翻面。最大公差用來判定兩個曲面是否相交,本發明依據兩個曲面的環線的最近距離來判定兩個曲面是否相交,若兩個曲面的環 線的最近距離小於等於最大公差,判定兩個曲面相交,本實施例所述的曲面的最近距離也就 是曲面環線的最近距離。如圖1所示,假設sl的6條環線是loopl、 1o叩2、……、1—, s2
的10條環線是loop7、 loop8、 ......、 loopl6, sl環線(loopl、 loop2、......或loop6)上的
點A (a0,al,a2) , s2環線(loop7、 loop8、......或loopl6)上的點B (b0,bl,b2) , A、 B的
距離是闊=^0 —叫2+(。1 —M)2+(a2 —")2,若對於任意A' (A'屬於loopl、 looP2、…
…或loop6) 、 B' (B'屬於loop7、 loop8、......或loopl6),若A'、 B'的距離| A'B' |大於等
於lABl,則lABl是sl、 s2的最近距離,A、 B是sl、 s2距離最近的兩個點。假定最大公差是2 ,若兩個曲面的最近距離小於等於2,則兩個曲面相交,若兩個曲面的最近距離大於2,則兩 個曲面不相交。
需要說明的是,本實施例是對一組有相交關係的曲面進行方向一致化,若選定曲面中存 在孤立的曲面(與其他曲面沒有相交關係),則不進行方向一致化。對於孤立的曲面,用戶 可以手動進行翻面。若有多組相交面,各組之間沒有相交關係(即不同組中的任意曲面不相 交),只需分別對各組進行處理。
步驟S303,由三維模型獲取各個選定曲面的環線,由各個選定曲面的環線獲取各個選定 曲面環線上的點(以下簡稱環點)。從曲面參數方程可得到環線參數方程,由環線的參數方 程可得到環線的長度。如圖1所示,假定曲面sl的6條環線是loopl、 1o叩2、……、1—,
曲面s2的10條環線是loop7、 loop8、 ......、 loopl6,曲面s3的8條環線是loop17、 loopl8、
1……、loop24,則從sl的曲面參數方程可得到loopl、 loop2、……、lQop6的環線參數方程 及長度,從s2的曲面參數方程可得到lo叩7、 1o叩8、……、1o叩16的環線參數方程及長度, 從s3的曲面參數方程可得到loop17、 1—8、……、1o叩24的環線參數方程及長度。在環線 上等間隔取點,例如loopl長度為10、 lQop2長度為20、……、10op24長度為13,則在loopl 取10個點、在lo叩2取20個點、……、在lo叩24取13個點,取得的點即為獲取的環點。假定 loopl的環點用數組LoopPtsl表示,10op2的環點用數組LoopPts2表示,……,10op24的環點 用數組LoopPts24表示。求兩個曲面的最近距離即求兩個曲面的環點的最近距離,每一環點 有唯一的坐標(x,y,z)。獲取環線及環點可以通過調用CAD的接口函數實現,此處不再贅述
步驟S304,根據用戶設置的最大公差及各個選定曲面的環點求各個選定曲面的相交面。 如圖1所示,假定選定曲面是曲面sl、 s2、 s3,經過該步驟求得sl的相交面為s2, s2的相交 面為sl、 s3, s3的相交面為s2,各個選定曲面的相交面(即總相交面)為sl、 s2、 s3。假設選定曲面是sl、 s2、 s3、 s4 (圖l中未畫出),其中s4是孤立的曲面,則s4沒有相交面,各 個選定曲面的相交面是sl、 s2、 s3。步驟S304的詳細流程參見圖4。
步驟S305,根據各個選定曲面的相交面在選定曲面中査找需要翻面的曲面。該步驟依次 選定一個基準面及其一個相交面,以該基準面作為參考面,判定該參考面及相交面是否有相 交線,若有相交線,進一步判斷該相交面是否需要翻面。步驟S305的詳細流程參見圖6。
步驟S306,對需要翻面的曲面進行翻面並顯示在顯示設備3上。翻面的具體方法是輸 入需要翻面的曲面;創建一個新的圖層;將需要翻面的曲面加到新創建的圖層中;鎖住需要 翻面的曲面所在圖層以外的其他圖層;對需要翻面的曲面執行翻面;將翻面後的曲面恢復到 其原來圖層,並將其他圖層解鎖。該步驟通過調用CAD的接口函數實現,此處不再贅述。
如圖4所示,是圖3中步驟S304的詳細流程圖。
步驟S401,輸入各個選定曲面的環點。為便於說明,以數組LoopPts表示各個選定曲面 的環點。假設選定曲面的環線為loopl、 loop2、……、loop24,數組LoopPtsl表示loopl的
環點,數組LoopPts2表示loop2環點,......,數組LoopPts24表示loop24環點,則數組
LoopPts表示loopl、 loop2、 ......、 lciop24的環點。
步驟S402,將各個選定曲面的環點根據其坐標分到各個盒子裡。
此處是對各個選定曲面的環點進行分組,每一組對應一個盒子。如圖8所示,是邊長為 l的立方體形狀的盒子示意圖,該立方體的頂點坐標是(O,O,O)、 (O,l,O)、 (l,O,O)、 (l,l,O)、 (O,O,l)、 (O,l,l)、 (l,O,l)、 (l,l,l)。將該立方體稱為一個盒子,立方體的邊 長稱為盒子的邊長,若一個點在該立方體內,稱該點屬於該盒子。如有四個點,坐標分別為 (0,0.5,0)、 (0. 2, 0. 5, 0. 6) 、 (1.2, 2, 3)、 (0. 6, 1, 1. 2),貝lj (0, 0. 5, 0) 、 (0. 2, 0. 5, 0. 6)屬於 這個盒子,(1. 2, 2, 3) 、 (0. 6, 1, 1. 2)不屬於這個盒子。與此類似,若將環點所在空間分為多 個大小相等的盒子(盒子的邊長不一定為l),則每個環點可以分到其所屬的盒子。 一個盒 子對應一個存儲結構,如數組,將屬於該盒子的環點存入該盒子對應的存儲結構中。 該步驟S402將各個選定曲面的環點根據其坐標分到各個盒子裡的具體方法如下 首先求一個包含各個選定曲面的環點的空間。設各個選定曲面的環點在x軸上的最小坐 標為x0、 y軸上的最小坐標為y0、 z軸上的最小坐標為z0, x軸上的最大坐標為xl、 y軸上的最 大坐標為yl、 z軸上的最大坐標為zl,則平面x二x0, x=xl, y=y0, y=yl, Z=z0, z二zl確定一 個長方體,該長方體包含各個選定曲面的環點,將包含特定環點的長方體,如上述包含各個 選定曲面的環點的長方體,稱為包圍盒,稱(x0,y0,z0)為最小坐標點,稱(xl,yl,zl)為 最大坐標點,包圍盒由最小坐標點(x0,y0,z0)及最大坐標點(xl,yl,zl)確定。假設有五個環點,坐標分別是(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),貝Ux軸上的最小坐標是O. 8、 y軸上的最小坐標為O. 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軸,若三個坐標軸投影的最大平均間距大約為l,則設定盒子的邊長為l,若在x軸、y軸 、z軸投影的最大平均間距大約為O. 1,則取盒子的邊長為O. 1。如有三個環點( 0.8, 0.3, 0.5) 、 (1. 5, 2. 4, 1. 2) 、 (2. 6, 4. 5, 2. 6),三個環點在x軸的投影是O. 8、 1.5、 2.6 (平均間距約為l),在y軸的投影是0.3、 2.4、 4.5 (平均間距約為2),在z軸的投影是 0.5、 1.2、 2.6 (平均間距約為l),則邊長取為2。每一個盒子由唯一的最小坐標點及最大 坐標點確定,如圖8的盒子由最小坐標點(0, 0, O)及最大坐標點(l, 1, l)確定。
分別計算該包圍盒的長(x軸方向)、寬(y軸方向)、高(z軸方向)可劃分的邊長個數。
RefX = (xl _ x0) / dBoxSt印 RefY = (yl - y0) / dBoxSt印 RefZ = (zl - z0) / dBoxSt印
其中,dBoxSt印代表盒子的邊長,xl代表x軸上的最大坐標,yl代表y軸上的最大坐標, zl代表z軸上的最大坐標,xO代表x軸上的最小坐標,yO代表y軸上的最小坐標,zO代表z軸上 的最小坐標。
上面求得的RefX、 RefY、 RefZ可能是小數,分別取不小於RefX、 RefY、 RefZ的最小整數 nRefX、 nRefY、 nRefZ。劃分的盒子的個數iBoxNum = nRefX*nRefX*nRefZ。如若RefX = 4.2, RefY = 3.8, RefZ = 2.0,貝lJnRefX = 5, nRefY = 4, nRefZ = 2, iBoxNum = nRefX^iRefX^iRefZ=5*4*2=40 。
將各個選定曲面的環點存入相應的盒子中,即存入盒子對應的存儲結構中,為便於說明 ,假定該存儲結構是數組。以環點LoopPts[i]為例,假設Box[nG]代表第nG個盒子, LoopPts [i]屬於盒子Box [nG] , nG可以由下面的公式計算
nPosX = (XoopPts [i]. x _xO)/ dBoxStep
nPosY = (LoopPts[i].y _ y0)/ dBoxStep
10nPosZ = (XoopPts [i]. z _z0)/ dBoxStep
nG = nPosX * nRefX氺iiRefZ + 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,判斷Lo叩Pts[i]到最近點的距離是否小於等於最大公差,若Lo叩Pts[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,盒子邊長為l,則向外擴展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]的 距離小於Lo叩Pts[i]與上一個査找點(假設是tPts[k-1])的距離,將tPts[k]記為最近點。 若是第一次求最近點,將第一個査找點記為最近點。
步驟S508,判斷tPts中是否還有其他的査找點,若有其他的査找點,轉到步驟S504取出 一個其他的査找點。
如圖6所示,是圖3中步驟S305的詳細流程圖。
步驟S601,輸入一個基準面作為參考面。該基準面是基準面數組中的一個基準面,所述 基準面數組用於存放基準面,該基準面數組最初只有一個元素,即用戶設置的基準面。設輸 入的參考面是RefSurface[i],該參考面的相交面數組是ilstSurfaces。
步驟S602,輸入該參考面RefSurface[i]的一個相交面。設參考面RefSurface [i]的一個 相交面是ilstSurfaces[j]。
步驟S603,判斷該參考面RefSurface[i]與該相交面ilstSurfaces[j]是否有相交線,若 有相交線,得到參考面相交環線、相交面相交環線、參考面最近點及相交面最近點,進入下 一步驟S604,否則轉到步驟S607。如圖1所示,假定sl的環線loop2 (B1到C1的曲線)與s2的 環線loop7 (A2到J2的曲線)是sl與s2的相交線,s2的環線loop8 (12到H2的曲線)與s3的環 線loopl7 (A3到D3的曲線)是s2與s3的相交線,該步驟即為査找上述的相交線。該步驟 S603的詳細流程參見圖7。
步驟S604,根據參考面相交環線、相交面相交環線、參考面最近點及相交面最近點判斷 該相交面ilstSurfaces[j]是否需要翻面,若不需要翻面,轉到步驟S607。具體判斷方法如 下若兩相交線最近點在各自相交線上的法線方向相同且該參考面不在翻面數組中,或者兩 相交線最近點在各自相交線上的法線方向相反且該參考面在翻面數組中,則該相交面需要翻 面,否則該相交面不需要翻面。所述翻面數組存放需要翻面的曲面。
步驟S605,若需要翻面,更新翻面數組。若相交面ilstSurfaces[j]不在翻面數組中, 將該相交面加入翻面數組。步驟S606,更新參考面數組,若相交面ilstSurfaces[j]不在參考面數組中,將該相交 面加入到參考面數組。所述參考面數組存放査找需要翻面的曲面時作為參考面的曲面,每次 査找到一個新的需要翻面的曲面,將該需要翻面的曲面加入參考面數組。
步驟S607,判斷該參考面RefSurface[i]是否還有其他的相交面,若有其他的相交面, 則轉到步驟S602輸入一個其他的相交面。
步驟S608,判斷參考面數組是否還有其他的參考面,若有其他的參考面,轉到步驟 S601輸入一個其他的參考面。
步驟S609,輸出翻面數組。
如圖7所示,是圖6中步驟S603的詳細流程圖。
步驟S701,輸入該參考面及該相交面的環線。假設參考面的環線是loopl、 1o叩2、……
、loop6,相交面的環線是loop7、 loop8、 ......、 loopl6。
步驟S702,取出一條參考面的環線。設取出loopl,數組CursRef表示loopl的環點。 步驟S703,取出一條相交面的環線。設取出loop7,數組CursCross表示loop7的環點。 步驟S704,判斷該參考面的環線與該相交面的環線是否有相交區域,若參考面的環線與 相交面的環線沒有相交區域,轉到步驟S711,否則進入下一步驟。
利用包圍盒進行判斷。假設CursRef的包圍盒是boxl, CursCross的包圍盒是box2,若兩 個包圍盒沒有相交區域,貝Uloopl與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之間,貝ljloopl與loop7對應的包圍盒有相交區域,判斷loopl與 1o叩7有相交區域。也就是說,若邏輯表達式
(i4 5 i3&5) & &C74 ^"力)&船4 &3 ^5)為真,或者邏輯表達式
(i4 5 " 5 A & &Cy4 5力)&嶺4 5 " 為真,貝Uk叩工與k叩7有相交區域。
步驟S705,求該參考面的環線與該相交面的環線的最近點。假設lo叩l的環點A ( a0,al,a2) , 10op7的環點B (b0,bl,b2) , A、 B的距離是
|AB| = >K+(fll-^+(W-^,若對於任意A' (A'屬於cursRef) 、 B' (B'屬於
CursCross),若lABl小於等於A'、 B'的距離lA'B'l,則| AB |是參考面的環線到相交面的環 線的最近距離(稱絕對最近距離),A、 B是loopl與lo叩7的最近點。稱A是參考面的環線最
13近點,B是相交面的環線最近點。
步驟S706,判斷參考面的環線到相交面的環線的絕對最近距離是否小於等於最大公差, 若大於最大公差,轉到步驟S711,否則進入下一步驟S707。
步驟S707,判斷最近點是否平行,若平行,轉到步驟S711,否則進入下一步驟S708。設 A是參考面的環線最近點,B是相交面的環線最近點,若A在參考面的環線上的法線方向與B在 相交面的環線上的法線方向平行(方向相同或相反),則A、 B平行。
步驟S708,在參考面環線上參考面的環線最近點附近選取一組環點,如取20個環點,或 者根據參考面的環線和相交面的環線的環線長度取適當數量的環點。
步驟S709,根據選取的環點判定參考面的環線與相交面的環線是否相交,若不相交,轉 到步驟S711,否則,進入步驟S710。若參考面的環線與相交面的環線有一段線段足夠貼近, 則該參考面的環線與該相交面的環線相交。具體方法如下計算該組環點中到相交面環線的 相對最近距離與絕對最近距離之差小於指定數值(如O.Ol)的環點的個數,若該個數小於指 定個數(如5),則參考面的環線與相交面的環線不相交,轉到步驟S711,若該個數大於等 於指定個數,則參考面的環線與相交面的環線相交。
步驟S710,若參考面的環線與相交面的環線相交,則將該參考面環線作為參考面相交環 線,將該相交面的環線作為相交面相交環線,將參考面環線的絕對最近點作為參考面最近點 ,將相交面環線的絕對最近點作為相交面最近點,流程結束。
步驟S711,判斷該相交面是否還有其他的相交面的環線,若該相交面有其他的相交面的 環線,轉到步驟S703取出一條其他的相交面的環線。
步驟S712,判斷該參考面是否還有其他的環線,若該參考面有其他的環線,轉到步驟 S702取出一條其他的環線。
圖9是曲面翻面後的示意圖,圖中以sl、 s2、 s3為選定曲面,sl為用戶設置的基準面, 翻面後各個選定曲面的法線方向與sl的法線方向相同(以向上的箭頭表示指向模型外部)。
最後所應說明的是,以上實施例僅用以說明本發明的技術方案而非限制,儘管參照較佳 實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明的技術方 案進行修改或等同替換,而不脫離本發明技術方案的精神和範圍。
權利要求
權利要求1一種曲面翻面方法,能夠將三維模型的曲面法線方向一致化,其特徵在於,該方法包括以下步驟(a)接收用戶導入的三維模型及用戶設置的翻面參數,所述三維模型包括多個曲面的參數方程,所述翻面參數包括選定曲面、基準面及最大公差,所述選定曲面是三維模型中需要方向一致化的曲面;(b)由各個選定曲面的參數方程獲取各個選定曲面的環線,由各個選定曲面的環線獲取各個選定曲面的環點;(c)根據用戶設置的最大公差、獲取的各個選定曲面的環點求各個選定曲面的相交面;(d)根據各個選定曲面的相交面在選定曲面中查找需要翻面的曲面;及(e)對需要翻面的曲面進行翻面。
2.如權利要求l所述的曲面翻面方法,其特徵在於,所述步驟(c)包 括以下步驟(c 1)從各個選定曲面的環點中選取一個環點作為參考點; (c2)在各個選定曲面的環點中計算該參考點的最近點;(c3)判斷該參考點到最近點的距離是否小於等於最大公差,若該參考點到最近點的距 離大於最大公差,轉到步驟(c5);(c4)若該參考點到最近點的距離小於等於最大公差,則該參考點所在曲面與該最近點 所在曲面相交,將該最近點所在曲面記為該參考點所在曲面的相交面;及(c5)判斷各個選定曲面的環點中是否還有未選取的環點,若還有未選取的環點,返回 步驟(cl)選取一個未選取的環點作為參考點。
3.如權利要求2所述的曲面翻面方法,其特徵在於,所述參考點的最 近點滿足以下三個條件(l)最近點與該參考點的距離最近,(2)最近點與該參考點不在同一 曲面,以及(3)最近點所在曲面不是該參考點所在曲面的相交面。
4.如權利要求2所述的曲面翻面方法,其特徵在於,所述步驟(c2)包括以下步驟(C21)根據用戶設置的最大公差得到該參考點的一組査找點,該組査找點是各個選定曲 面環點中的一組環點,在該組環點中査找該參考點的最近點; (c22)從該組査找點中選取一個査找點;(c23)若該査找點與參考點在同一曲面,直接轉到步驟(c26); (c24)若該査找點所在曲面是參考點所在曲面的相交曲面,直接轉到步驟(c26); (c25)計算參考點與査找點的距離,得到參考點的最近點,該最近點是與參考點距離最 近的査找點;及(c26)判斷該組査找點中是否還有未選取的査找點,若有未選取的査找點,轉到步驟 (c22)選取一個未選取的査找點。
5.如權利要求l所述的曲面翻面方法,其特徵在於,所述步驟(d)包 括以下步驟(dl)輸入一個基準面作為參考面;(d2)輸入該參考面的一個相交面;(d3)判斷該參考面與該相交面是否有相交線,若有相交線,得到參考面相交環線、相 交面相交環線、參考面最近點及相交面最近點,進入步驟(d4),否則轉到步驟(d6);(d4)根據參考面相交環線、相交面相交環線、參考面最近點及相交面最近點判斷該相交面是否需要翻面,若不需要翻面,轉到步驟(d6),否則將相交面記為需要翻面的曲面;(d5)若該相交面不是基準面,將該相交面記為基準面,否則直接進入步驟(d6); (d6)判斷該參考面是否還有其他的相交面,若有其他的相交面,則轉到步驟(d2)輸入 一個其他的相交面;(d7)判斷基準面中是否還有其他的基準面,若有其他的基準面,轉到步驟(dl)輸入一 個其他的基準面作為參考面;及(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)的 判斷方法還包括若該參考面最近點在相交面環線上的法線方向與該相交面最近點在相交面 環線上的法線方向相反,且所述參考面是需要翻面的曲面,則該相交面需要翻面,否則該相 交面不需要翻面。
全文摘要
一種曲面翻面方法,該方法包括步驟接收三維模型及翻面參數,翻面參數包括選定曲面、基準面及最大公差;獲取各個選定曲面的環線、環點;求各個選定曲面的相交面;根據基準面及最大公差查找需要翻面的曲面;及對需要翻面的曲面進行翻面。本發明能夠將三維模型的曲面法線方向一致化,給三維模型在曲面檢測、工業設計、運動控制、逆向工程等方面的應用帶來了便利。
文檔編號G06T17/40GK101441781SQ200710202648
公開日2009年5月27日 申請日期2007年11月23日 優先權日2007年11月23日
發明者吳新元, 張旨光, 敏 王 申請人:鴻富錦精密工業(深圳)有限公司;鴻海精密工業股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀