亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

OpenCASCADE BRep vs. OpenNURBS BRep

系統(tǒng) 2581 0

OpenCASCADE BRep vs. OpenNURBS BRep

eryar@163.com

Abstract. BRep short for Boundary Representation. First give the definition of the BRep, then compare the BRep mode between OpenCASCADE and OpenNURBS. There are 3 main representation method: use face/edge/vertex to keep track all information in the solid model. The winged-edge data structure uses edges to keep track all information in the solid model. The paper focus on the BRep of OpenCASCADE and OpenNURBS.

Key Words. OpenCASCADE, BRep, OpenNURBS, The Winged-edge Structure,

1. Introduction

計算機內(nèi)對形狀信息的描述方法簡稱為造型(Modeling)技術。實體造型的本質(zhì)是要解決如何在計算機內(nèi)部表示一個實體模型的問題。以產(chǎn)品實體造 型所建立的三維幾何模型為基礎,可以進一步進行運動力學分析、模擬裝配、動動仿真、干涉檢查、數(shù)控編程以及加工模擬等。造型技術主要由形狀表達和形狀操作 兩個部分組成。形狀表達的任務是將形狀的結構用數(shù)據(jù)結構來表示。這種描述形狀的數(shù)據(jù)結構稱為模型(Model)。形狀操作的任務是實現(xiàn)對模型的生成、修 改、綜合、分析、計算、顯示等等操作,以便完成設計過程中的各種造型任務。造型技術是CAD的核心技術之一。目前常用的造型技術有:實體造型技術 (Solid Modeling):它將對象分解為一組有限的三維元素的集合,以及可施加在這組集合元素上的一組操作、曲面造型技術(Surface Modeling):它用數(shù)學函數(shù)如B樣條等來描述曲線曲面,并提供曲面的修改,連接,求交和顯示等一組操作、非幾何形體的造型技術:大多數(shù)自然物體如山 水,樹木等。

工程和制造行業(yè)的設計對象主要是三維實體,因此實體模型是目前CAD系統(tǒng)的主要造型方法。實體造型系統(tǒng)的結構如下圖所示:

wps_clip_image-3748

Figure 1.1 Solid Modeling System Structure

實體在該系統(tǒng)中具有雙層表達:內(nèi)部表達和在用戶接口中的表達。在內(nèi)部表達中,實體通常被表達為頂點、邊和面的數(shù)據(jù)結構,既要滿足各種操作的要求,又 要滿足良好的時空效率的要求。在用戶接口中,實體按照可理解性和操作的方便,使得設計人員易于掌握和操作。關于實體的操作通常可以分為兩類:一類是關于形 體的操作,如生成、修改、顯示等;另一類是關于形體的分析計算,如計算實體的體積、面積、檢測運動的實體間是否接觸等。這些操作各由算法支持,施加于實體 內(nèi)部數(shù)據(jù)結構之上。算法往往是組成成模塊,分層次實現(xiàn)。顯示軟件通常要求有三維顯示、二維投影顯示和真實感覺顯示等模式。實體造型視所用模型的不同,通常 分為以下三種:

v 結構模型(Constructive Models)

結構模型又稱為構造型實體幾何(Constructive Solid Geometry),簡稱CSG。CSG包含一組簡單的幾何實體類型,如Box、Sphere、Cylinder、Cone、Torus等。它們稱為基元 實體類型(Primitive Solid Type)。CSG還包含一組施加于基元實體類型上的操作,這些操作包含:幾何變換、集合運算及剖割等其他造型操作。CSG可以通過這些操作將基元實體組 成復雜的形狀,滿足設計師要求。

v 分解模型 (Decomposition Models)

分解模型的基元實體只有一種類型,即立方體。和二維圖像由像素(Pixel)組成一樣,分解模型中的形狀由空間網(wǎng)格中體素的有無而組合構成。體素通常被組織為八叉樹(Octree Representation)的形式,以求得更好的時空效率。

v 邊界模型 (Boundary Models)

邊界模型采用體、面、邊、點的空間坐標值和拓樸關系來表達實體模型。邊界模型可以十分精確地描述實體,又易與圖形軟件接合,但是數(shù)據(jù)結構比較復雜。

CSG、分解模型、邊界模型都是通用模型,它們適用于一個較大范圍的對象且達。各種模型各有優(yōu)缺點,在實用中往往要對各種模型進行評價,然后選擇合適的造型系統(tǒng),評價一個造型系統(tǒng)常常從以下幾個方面來比較:

v 表達對象的能力(Expressive Power);

v 表達的有效性(Validity);

v 模型的緊湊性(Conciseness):即占內(nèi)存空間的大小;

v 操作的閉包(Closure of Operations);

v 操作的簡易性(Ease of Operations);

2.Boundary Representation

邊界模型也稱為邊界表示法(Boundary Representation),使用實體的表面來表示實體的形狀。不管實體的表面形狀是多面體還是自由曲面,邊界模型通常都統(tǒng)一為多面體。即用一組三維 多邊形所圍成的形體表示實體。這種表達方法是圖形學基元表達的一種推廣,因此邊界表示法與圖形學有很好的銜接關系。組成邊界模型的元素是面Face、邊 Edge、頂點Vertex。

面可以包括平面、二次曲面和參數(shù)曲面等,面中可以有孔,但是面上的無孔部分必須是連通的。一個無孔的面只帶有一個邊界。一個有孔的面帶有一個以上的邊界。如下圖所示:

wps_clip_image-4216

Figure 2.1 Face and its loops

形體由面構成,而面是由邊來定義的,邊則由點來定義,點通過三個坐標值來定義。如下圖所示為邊界表示的數(shù)據(jù)組織方式:

wps_clip_image-8434

Figure 2.2 Solid, Face, Edge and Vertex of the Brep Model

邊界模型的關系型數(shù)據(jù)結構可以按照三類方法進行組織:以面為基礎的方法,以頂點為基礎的方法及以邊為基礎的方法。以面為基礎的方法可以通過面來追蹤實體的所有信息;以頂點為基礎的方法則可以通過點來追蹤實體的其他信息;以邊為基礎的方法則可以通過邊來追蹤實體的信息。

翼邊結構就是以邊為基礎的結構,通過邊來追蹤實體的所有信息。在翼邊結構中,點、邊、面之間的拓樸關系可以通過推理求得。如下圖所示:

wps_clip_image-30167

Figure 2.3 The Winged-Edge data structure

邊Edge是整個數(shù)據(jù)結構的核心,每個Edge代表一條邊,含有九個域:

1. Edge的編號ID:a;

2. Edge的起始頂點指針:X;

3. Edge的終止頂點指針:Y;

4. Edge左方向相鄰的面的指針:1;

5. Edge右方向相鄰的面的指針:2;

6. Edge上方向前鄰邊指針:b;

7. Edge上方向后鄰邊指針:c;

8. Edge下方向前鄰邊指針:d;

9. Edge下方向后鄰邊指針:e;

wps_clip_image-19357

Figure 2.4 The Winged Edge a

由上圖可知,以邊為基礎的結構很像一只鳥張開的雙翼,故而得名:The Winged-Edge data Structure。

3.OpenCASCADE BRep

根據(jù)OpenCASCADE中的類的繼承關系繪制其Brep表示主要的類圖如下所示:

wps_clip_image-22167

Figure 3.1 OpenCASCADE Brep Class Diagram

由上圖可知,TopoDS_Shape中有一個TopoDS_TShape的成員變量,即TopoDS_Shape包含 TopoDS_TShape,而一個TopoDS_TShape中又包含N個TopoDS_Shape。這種關系感覺有些繞,不過和結構型模式 Composite模式有幾分相似,但不是Composite模式,因為TopoDS_Shape與TopoDS_TShape之間只有包含關系,沒有繼 承關系,如下圖所示的Composite模式中的Composite類是派生自并且包含Component類的:

wps_clip_image-13239

Figure 3.2 Composite Pattern Class Diagram

由圖3.1可知,根據(jù)一個TopoDS_Shape來訪問其子結構很方便,因為其成員變量myTShape中就包含了其子結構的一個列表。而訪問其 父結構是不方便的,如要訪問TopoDS_Edge的父節(jié)點數(shù)據(jù)就很不方便,需要遍歷包含Edge的整個TopoDS_Shape模型。由于這種結構只有 包含關系,所以可以方便地找到父結構到子結構的關系,如一個Face包含哪幾個Wire或Edge,而沒有直接從子結構找到父結構的拓樸關系,如與一條 Edge相關的所有面是哪些不能直接確定。

OpenCASCADE的Brep中幾何信息都是保存在BRep_TFace、BRep_TEdge和BRep_TVertex中。畫出類圖如下所示:

wps_clip_image-31073

Figure 3.3 Geometry in OpenCASCADE Brep

由上圖可知,BRep_TVertex, BRep_TEdge, BRep_TFace這三個類中都包含了幾何信息,其中頂點和邊包含了幾何信息的一個列表,列表中可以保存多種不同類型的幾何信息,每種類型都表示了一種 幾何之間的關系,如頂點的幾何信息中BRep_PointOnSurface就定義了點與面的關系,邊中的BRep_CurveOnSurface也定義 了邊與面的關系。即他們的每一個派生類就描述了一種相互關系。OpenCASCADE中的頂點的幾何數(shù)據(jù)包含點、線和面的幾何之間的一些關系,如面上的 點、線上的點、PCurve上的點等。邊的幾何數(shù)據(jù)包含了線與面的關系,如面上的線、閉合面上的線、三角網(wǎng)格上的多段線等。而面中包含的幾何數(shù)據(jù)只有面的 參數(shù)表示的數(shù)據(jù)。

如果硬要往翼邊結構這種方式上來靠,可以看出OpenCASCADE中從頂點的幾何數(shù)據(jù)出發(fā),可以找到與之有關的線和面,所以從這方面來說是以頂點 為基礎的邊界表示方法。而從邊的幾何數(shù)據(jù)出發(fā)只能找到與之相關的面的信息,而找不到點的信息,所以不是翼邊結構。也不是以面為基礎的表示方法,因為面中只 包含面的幾何信息,沒有與其他幾何數(shù)據(jù)的關系。但是OpenCASCADE并不推薦直接訪問TopoDS_TShape的數(shù)據(jù)。由類 TopoDS_TShape的說明:Users have no direct access to the classes derived from TopoDS_TShape。即這種關系也不能直接用來訪問。

4.OpenNURBS BRep

OpenNURBS主要用于NURBS相關的計算,代碼清晰簡明,其中也有關于Brep的數(shù)據(jù)結構,結合其代碼,將其類圖列出如下所示:

wps_clip_image-19376

Figure 4.1 OpenNURBS Brep Class Diagram

由上圖可知,類ON_Brep中包含了Brep體的所有幾何及拓樸信息。幾何信息包含二維參數(shù)曲線m_C2、三維曲線m_C3、曲面m_S;拓樸信息包括頂點m_V、邊m_E、Trim(m_T)、Loop(m_L)、面m_F。其它幾種拓樸結構中分別包含信息描述如下:

ON_BrepFace ?
成員變量 變量說明
m_face_index Face在ON_Brep中的編號;
m_li Face中包含的所有Loop的編號;
m_si Face的幾何信息編號;
m_brep 包含所有幾何及拓樸信息的ON_Brep指針;

?

ON_BrepLoop ?
成員變量 變量說明
m_loop_index Loop在ON_Brep中的編號;
m_ti Loop中所有Trim的編號;
m_fi 使用這個Loop的Face的編號;
m_brep 包含所有幾何及拓樸信息的ON_Brep指針;

?

?

ON_BrepTrim ?
成員變量 變量說明
m_trim_index Trim在ON_Brep中編號;
m_c2i Trim的二維參數(shù)曲線;
m_ei Trim中邊的編號;
m_vi[2] Trim端部的兩個頂點編號;
m_li 與這個Trim相關的所有ON_BrepLoop的編號;
m_brep 包含所有幾何及拓樸信息的ON_Brep指針;

?

ON_BrepEdge ?
成員變量 變量說明
m_edge_index 邊在ON_Brep中的編號;
m_v[2] 邊兩端頂點編號;
m_ti 與這條邊相關的ON_BrepTrim的編號;
m_brep 包含所有幾何及拓樸信息的ON_Brep指針;

?

?

ON_BrepVertex ?
成員變量 變量說明
m_vertex_index 頂點在ON_Brep中的編號;
m_ei 從這個頂點出發(fā)或者回到這個頂點的邊的編號;

從上面的類及表格可知,OpenNURBS的Brep與The Winged-Edge結構很像了,在類ON_BrepTrim中包含了與其他結構之間的關系。這個ON_BrepTrim與ON_BrepEdge的意義類似。

通過這些編號及m_brep指針,可以很容易地訪問到所需要的數(shù)據(jù)。也正是通過這些編號建立起了Brep內(nèi)部數(shù)據(jù)之間的關系,這種方式比較清晰簡單。

5.OpenCASCADE vs. OpenNURBS

綜上所述,可以看出OpenCASCADE中的Brep表示法各有特色,下面對他們的做個簡單的比較。

v OpenCASCADE的拓樸結構要多于OpenNURBS。OpenCASCADE中有TopoDS_Solid, TopooDS_CompSolid, TopoDS_Shell,而OpenNURBS中沒有這些。其中OpenNURBS沒有ON_BrepSolid這個結構,其實類ON_Brep已經(jīng)包 含了所有幾何及拓樸數(shù)據(jù),相當于這個結構了;

v OpenCASCADE的Brep表示要比OpenNURBS復雜。OpenCASCADE中的TopoDS_Shape和TopoDS_TShape之 間的組合關系及各自類的派生,使得其Brep表示法不直觀,需要一些面向對象編程的思想才便于理解。而OpenNURBS中Brep表示要清晰簡單明了。 幾何之間的關系(拓樸)通過編號建立聯(lián)系,比較直觀。

v OpenCASCADE中的幾何之間的關系(拓樸)要比OpenNURBS復雜。OpenCASCADE中幾何之間的拓樸關系通過類的成員變量的聚合關系 來表示父結構與子結構之間的關系。通過類來定義幾何之間的關系,如曲線上的點,描述了點與邊之間的關系,曲面上的線,描述了邊與面之間的關系等。正是使用 了聚合的關系,所以從父結構遍歷子結構很方便,但是不能從子結構直接訪問父結構了。而OpenNURBS中直接通過編號來建立這些關系,并且包含 ON_Brep的指針,使得數(shù)據(jù)的查找比較方便,可以直接訪問任何結構,包括父結構的數(shù)據(jù)。

v 內(nèi)存使用情況比較。由于OpenCASCADE中的智能指針Handle的使用,所以幾何之間的關系都是使用了這種方式,即幾何引用了相同的內(nèi)存數(shù)據(jù)。如 面上的點和面上的邊這些關系中,所用的面都是同一個面的內(nèi)存數(shù)據(jù)。但是需要內(nèi)存空間來保存描述這些關系的對象。OpenNURBS通過編號來建立這個拓樸 圖,只是多了這些編號的數(shù)據(jù)。

v 拓樸數(shù)據(jù)訪問比較。OpenCASCADE中的拓樸關系比較復雜,所以提供了一些訪問函數(shù),來便于相關數(shù)據(jù)的訪問。OpenNURBS中可以直接操作這些成員變量,也可以通過相關的函數(shù)。在面向對象的程序中,成員變量一般可以設置成private,以確保數(shù)據(jù)安全。

v 邊界表示方式比較。因為一般的書籍上都詳細重點描述了邊界表示中以為邊為核心的翼邊數(shù)據(jù)結構,所以有人想從這方面來給OpenCASCADE中的Brep 表示法來給個說法。結合上面的類圖可知,從邊出發(fā)并不能訪問到與這條邊相關的其他信息,如頂點的信息。如果硬是想在這里給個名分,倒是從點出發(fā)可以找到邊 及面的幾何信息,所以OpenCASCADE中的Brep表示法應該更像是以點為基礎的表示方法。OpenNURBS中通過ON_BrepTrim,可以 訪問其他的信息,而ON_BrepTrim與邊ON_BrepEdge的意義有些相似,所以應該是以邊為核心的翼邊結構了。

v 幾何數(shù)據(jù)表示的比較。OpenCASCADE中幾何數(shù)據(jù)的表示方式很多,即有常見幾何數(shù)據(jù)的定義,如圓、拋物線、球面、圓柱面等,也有B樣條曲線曲面。而 OpenNURBS統(tǒng)一使用B樣條曲線曲面。有人說分的種類多,處理有關算法(如求交算法)時可分情況來處理,性能較高。有人說統(tǒng)一使用NURBS曲線曲 面來表示,算法統(tǒng)一,內(nèi)核簡單,但是有些算法的性能會稍差,都沒有完美的解決方案啊。這應該留給數(shù)學家們?nèi)プ非蠛唵巍⒔y(tǒng)一、高效的方式了。

6.Conclusion

總之,OpenCASCADE與OpenNURBS中的Brep表示法各有特色。OpenCASCADE使用了更多的類的繼承與組合,使Brep看起來有點復雜。而OpenNURBS中只使用了簡單的繼承,使用編號來建立拓樸結構,看起來要簡單清晰很多。

從Brep表示法中三種方式:以點為基礎、以邊為基礎及以面為基礎上來看,OpenCASCADE更像是以點為核心的方式,而OpenNURBS更像翼邊結構。不管以什么方式感覺并不重要,只要能方便訪問其拓樸結構即可。不管白貓黑貓,只看結果。

理解Brep表示的數(shù)據(jù)結構后,可結合構造基本體如立方體、圓柱體、球體等的算法,來理解相關的造型算法,并加深對Brep表示法的理解。

最后對OpenCASCADE和OpenNURBS的Brep表示法做的比較都是個人觀點,僅供參考。由于水平所限,文中的錯誤不妥之處在所難免,敬請不吝指教,作者將不勝感激。

7. References

1. 孫家廣,胡事民. 計算機圖形學基礎教程. 清華大學出版社. 2009

2. 孫家廣. 計算機圖形學. 清華大學出版社. 2000

3. 莫蓉,常智勇. 計算機輔助幾何造型技術. 科學出版社. 2009

4. Hongxin Zhang, Jieqing Feng. Introduction to Solid Modeling. Zhejiang University.

http://www.cad.zju.edu.cn/home/zhx/GM/015/00-ism.pdf

5. OpenCASCADE: http://www.opencascade.org/

6. OpenNURBS: http://discourse.mcneel.com/category/opennurbs

?

OpenCASCADE BRep vs. OpenNURBS BRep


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲日韩aⅴ在线视频 | 国产精品久久久久久麻豆一区 | 日日干视频 | 日韩中文字幕网站 | 久草热草 | 奇米影视亚洲春色 | 国产99视频精品免费视频免里 | 亚洲欧洲日韩国产一区二区三区 | 久久九九影视 | 国产香港特级一级毛片 | 色综合a怡红院怡红院首页 色综合h | 成人网在线免费观看 | 色综合久久夜色精品国产 | 亚洲精品国产精品一区二区 | 国产亚洲欧美精品久久久 | 天天干天天操天天碰 | 国产色婷婷精品综合在线手机播放 | 四虎黄色影视库 | 99久久99热久久精品免费 | 97高清国语自产拍 | 九九热在线精品 | 亚洲国产美女视频 | 精品一区二区三区视频在线观看 | 国产日韩精品视频一区二区三区 | 亚洲欧美成人综合久久久 | 最新视频 - 88av | 99re6久精品国产首页 | 激情网站视频 | 在线观看成人影院 | 中文字幕日韩精品中文区 | a级亚洲片精品久久久久久久 | 91国内精品线免费播放 | 一区二区三区日韩 | 精品动漫中文字幕一区二区三区 | 久久久久国产精品四虎 | 一级毛片真人免费观看 | 黄视频网站观看 | 日本a在线 | 婷婷色在线视频 | 日本欧美一区二区三区 | 老妇毛片久久久久久久久 |