青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

Topology and Geometry in OpenCascade-Face

Posted on 2013-09-12 22:05 eryar 閱讀(5210) 評論(2)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

Topology and Geometry in OpenCascade-Face

eryar@163.com

摘要Abstract:本文簡要介紹了幾何造型中的邊界表示法(BRep),并結合程序說明OpenCascade中的邊界表示的具體實現,即拓樸與幾何的聯系。對具有幾何信息的拓樸結構頂點(vertex)、邊(edge)、面(face)進行了詳細說明。本文僅對面(Face)進行說明。

關鍵字Key Words:OpenCascade、BRep、Topology、Geometry、Face

一、引言 Introduction

面(Face)由一個外環和若干個內環來表示,內環完全在外環之內。根據環(Wire)的定義,在面上沿環的方向前進,左側總在面內,右側總在面外。面有方向性,一般用其外法矢方向作為該面的正向。若一個面的法矢向外,稱為正向面;反之,稱為反向面。面的形狀(surface)由面的幾何信息來表示,可以是平面或曲面,平面可用平面方程來描述,曲面可以用控制多邊形或型值點來描述(NURBS曲面),也可用曲面方程(隱式、顯式或參數形式)來描述。對于參數曲面,通常在其二維參數域上定義環,這樣就可以由一些二維的有向邊來表示環,集合運算中對面的分割也可在二維參數域上進行。

OpenCascade中的面結構如下圖所示:

wps_clip_image-8400

Figure 1.1 OpenCascade Face

根據其類圖可知,面除了其參數曲面mySurface外,還包含顯示曲面的剖分(由三角形組成)。當面在著色顯示模式下時會計算出面的三角形??梢暬乃惴ㄊ怯葿RepMesh::Mesh()來為每個面三角剖分后用來顯示。

二、面 Face

面(Face)是用來描述三維實體邊界的拓樸實體。面是由底層的曲面及一個或多個環(Wire)來描述。例如,一個圓柱體包含三個面:底面、頂面和側面。每個面都是無限的(無界的)(Geom_Plane和Geom_CylindricalSurface),通過邊界來限定無限的面得到面。即用位于Geom_Circle上的邊形成的環,限定出底面和頂面。側面包含四條邊:其中兩條邊與頂面和底面其享,剩下的兩條邊是縫合邊(seam edge),參看之前的討論。限定側面的環包含縫合邊兩次,兩個縫合邊具有不同的朝向。

2.1 曲面 Surface

讓我們簡要回顧一下什么是曲面(surface)。如果你在高中時學過數學分析(mathematical analysis),那么你可能對這個概念已經熟記于心。如果沒學過,那么可能需要讀些文章來自學。在wikipedia上有關于參數曲面的簡單例子。

曲面將二維參數空間{u, v}映射到三維空間。如下圖所示:

wps_clip_image-21610

Figure 2.1 Map parameter space{u, v} into 3D space

參數區間可以有界,也可以是無界的,也可以只在一個方向上有界。如平面(Plane)的參數空間是無界的;NURBS是有界的;圓柱面(Cylindrical Surface)在U方向上有界(U∈[0,2π]),在V方向上是無界的。

Geom_Surface::Value()返回一個對應于參數空間中的參數(U,V)的空間點(X,Y,Z)。例如:地球上的任意一點都由緯度(V)和經度(U)表示,但是在世界坐標系中可以看作三維點(假如地球的中心定義為原點)。這個函數是純虛函數,所有派生自Geom_Surface的類都有對這個函數的實現,使計算各種曲面上對應參數的空間點的方式統一。

讓我們回想一下,邊必須具有三維曲線(3D Curve)和曲面空間中的參數曲線(pcurve)。而OpenCascade要求面的邊界(環wire)在三維和二維空間中必須是閉合的。因此,圓柱的側面是采用前面我們討論的那樣來描述的。

2.2 朝向 Orientation

面的朝向表示面的法向與曲面法向之間的關系(Face orientation shows how face normal is aligned with its surface normal)。若面的朝向是TopAbs_FORWARD(向前),則面的法向與曲面的法向一致;若面的朝向是TopAbs_REVERSED(反向),則面的法向與曲面的法向相反。面的法向表示材質的位置,材料位于面的背面。在正確描述的實體中,所有面的法向都是向外的,如下圖所示:

wps_clip_image-19816

Figure 2.2 In a correct solid body all face normals go outward

面上的材料是由邊的朝向確定的。方向是由曲面不是面()的法向和邊的微分的叉積確定。若邊的朝向向前,則邊的導數等于它的三維曲線的導數;若邊的朝向反向,則邊的導數與它的三維曲線的導數相反。也許考慮邊的參數曲線會更易于理解:假如邊是向前的,材料在它的左側,假如是反向的,則材料在它的右側。這讓我想起了格林公式中對平面區域的邊界曲線正向的規定:對平面區域D的邊界曲線L,我們規定L的正向如下:當觀察者沿L的這個方向行走時,D內在他附近處的那一部分總在他的左邊。

wps_clip_image-4220

Figure 2.3 Orientation of the edge

當用積分區域的概念來理解邊的朝向時好像要容易些。把參數空間看作積分區域D,其中藍色的邊表示材料在參數曲線的右側;紅色的邊表示材料在邊的左側。

2.3 容差 Tolerance

面的容差的幾何意義是包圍面的一個具有厚度的板。如下圖所示:

wps_clip_image-16586

Figure 2.4 Face Tolerance

與邊和頂點的容差相比,建模算法中用到面的容差的情況相對要少。通常都使用默認值Precision::Confusion()。通常情況下,OpenCascade要求注意以下條件:

當邊位于面上,頂點位于邊上時,面的容差<=邊的容差<=頂點的容差。

2.4 三角剖分 Triangulation

除了面的參數表示,為了面的顯示,需要對面進行三角剖分,剖分得到的三角形也保存在面的數據結構中。當在著色渲染模式下時,可視化算法內部調用了BRepMesh::Mesh()來對每個面進行三角剖分,并將三角剖分得到的三角形加到面的數據結構中。

2.5 附加位置 Additional location

與邊和頂點不同,面有附加位置信息(TopLoc_Location),它是面(BRep_TFace)的成員變量。所以,在使用底層曲面或三角剖分得到的三角形時,不要忘了將其考慮進去。

三、示例程序 Example Code

3.1 底層創建面并訪問其數據 Creating a face bottom-up and accessing the data

與創建邊和頂點一樣,需要類BRep_Builder和Brep_Tool來從底層創建面和訪問面中的數據。代碼如下所示:

 

 1 BRep_Builder aBuilder; 
 2 TopoDS_Face aFace; 
 3 
 4 aBuilder.MakeFace (aFace, aSurface, Precision::Confusion()); 
 5 
 6  
 7 
 8 TopLoc_Location aLocation; 
 9 Handle(Geom_Surface) aSurf = BRep_Tool::Surface (aFace, aLocation); 
10 
11 gp_Pnt aPnt = aSurf->Value (aU, aV).Transformed (aLocation.Transformation()); 
12 
13 //or to transform a surface at once 
14 //Handle(Geom_Surface) aSurf = BRep_Tool::Surface (aFace); 
15 //gp_Pnt aPnt = aSurf->Value (aU, aV); 
16 Handle(Poly_Triangulation) aTri = BRep_Tool::Triangulation (aFace, aLocation); 
17 
18 aPnt = aTri->Nodes.Value (i).Transformed (aLocation.Transformation()); 
19 
20 


一定要考慮面的附加位置信息。

四、結論 Conclusion

面是邊界表示法BRep中有幾何數據的最后一個拓樸結構。為了面的顯示,需要對其進行三角剖分,三角剖分后的數據也是保存在面的數據結構中。面還有附加位置數據需要考慮,若不考慮附加位置,剖分后的三角形都是相對于原點的。

從底層創建面和訪問面的屬性數據,與頂點和邊一樣,使用類BRep_Builder和類BRep_Tool來實現。

五、參考資料 

1. Roman Lygin, OpenCascade notes, opencascade.blogspot.com

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

3. OpenCascade source code.

 

Feedback

# re: Topology and Geometry in OpenCascade-Face  回復  更多評論   

2015-12-27 21:00 by robust
博主您好!
我遇到一個問題,就是先通過三個點創建一條樣條線,然后樣條線繞x軸revol生成面,出現的問題是有時候生成的面不可見,這時候把生成樣條線的點的順序顛倒一下再生成面就可見. 那么有沒有方法判斷生成的面是否可見.我試著僅改變面的方向TopAbs_FORWARD,TopAbs_REVERSED,
TopAbs_INTERNAL,TopAbs_EXTERNAL但都沒效果.特請教博主指教,謝謝!

# re: Topology and Geometry in OpenCascade-Face  回復  更多評論   

2015-12-27 21:03 by eryar
@robust
正常的面離散化后都是可見的,這可能是occ的bug,可以提交到occ的mantis
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美日韩区| 黄色成人在线观看| 夜夜爽av福利精品导航 | 国内精品久久久久久久果冻传媒| 国产精品爱啪在线线免费观看| 欧美日韩天堂| 国产精品嫩草影院一区二区| 国产女主播视频一区二区| 国产一区二区精品| 在线国产日韩| 一个色综合导航| 久久国产精品亚洲va麻豆| 欧美成人乱码一区二区三区| 免费不卡视频| 一区二区三区回区在观看免费视频| 亚洲一级一区| 女同性一区二区三区人了人一| 欧美日韩喷水| 一区二区三区中文在线观看| 99视频有精品| 久久天天狠狠| 一本色道久久综合亚洲精品高清 | 亚洲国产日韩欧美| 亚洲在线网站| 欧美国产日韩在线| 亚洲综合第一页| 欧美高清视频在线播放| 国产一区视频在线看| 日韩午夜一区| 免费看黄裸体一级大秀欧美| 这里只有精品视频| 久久午夜精品一区二区| 国产精品老牛| 一区二区三区精品视频| 免费在线成人av| 亚洲一区国产精品| 欧美激情在线| 亚洲高清网站| 久久亚洲综合色| 亚洲一区二区成人| 欧美日韩视频一区二区| 91久久久久久久久久久久久| 久久蜜桃av一区精品变态类天堂| 99国产精品久久久久老师| 久久伊人一区二区| 国产日韩精品一区二区三区在线| 亚洲视频免费看| 亚洲国产精品99久久久久久久久| 午夜精品视频| 国产精品综合网站| 午夜视频一区在线观看| 一区二区高清视频| 欧美日韩精品二区第二页| 亚洲欧洲一区二区三区在线观看| 久久精品一区二区三区四区 | 亚洲片国产一区一级在线观看| 久久综合色综合88| 欧美资源在线观看| 伊甸园精品99久久久久久| 久久久综合香蕉尹人综合网| 欧美在线播放视频| 一区在线视频| 欧美成人精品高清在线播放| 麻豆成人av| 欧美一级电影久久| 国产精品久久久久77777| 亚洲一区二区精品视频| 夜夜狂射影院欧美极品| 国产精品国产三级国产专播精品人| 亚洲天堂av在线免费观看| 一区二区三区.www| 国产精品―色哟哟| 久久久青草婷婷精品综合日韩 | 亚洲精品乱码久久久久久按摩观| 亚洲国产高清一区二区三区| 欧美国产一区二区三区激情无套| 日韩一区二区精品在线观看| 99精品福利视频| 国产精品久久久久久久久久ktv| 午夜精品久久久久久久蜜桃app| 亚洲欧美韩国| 在线观看一区视频| 亚洲精品社区| 国产日韩三区| 欧美激情第4页| 欧美视频中文字幕| 久久深夜福利免费观看| 欧美激情导航| 久久精品国产96久久久香蕉| 免费观看欧美在线视频的网站| 中文日韩在线| 久久久www成人免费精品| 亚洲免费av电影| 亚洲欧美日韩中文视频| 亚洲国产第一页| 一区二区电影免费观看| 韩日在线一区| 夜夜嗨av一区二区三区中文字幕 | 好看的亚洲午夜视频在线| 亚洲激情黄色| 国内精品福利| 亚洲美女在线观看| 一区二区三区自拍| 亚洲桃色在线一区| 亚洲激情视频网站| 亚洲欧美日韩直播| 亚洲桃色在线一区| 免费h精品视频在线播放| 久久精品91久久香蕉加勒比| 欧美高清在线精品一区| 久久久五月婷婷| 国产精品一区二区久久| 欧美激情一区二区三区| 国产一区视频网站| 亚洲综合色丁香婷婷六月图片| 日韩亚洲欧美精品| 美女图片一区二区| 久久综合激情| 国产有码一区二区| 亚洲欧美日本伦理| 午夜久久电影网| 亚洲午夜av| 国产精品蜜臀在线观看| 男人的天堂亚洲| 国产午夜精品全部视频播放| 亚洲精品在线观看免费| 亚洲美女黄色片| 免费成人av在线| 久久亚洲春色中文字幕久久久| 国产精品免费aⅴ片在线观看| 亚洲老板91色精品久久| 夜夜嗨av一区二区三区网页 | 国产精品美女久久久免费| 亚洲人成久久| 99精品免费视频| 女生裸体视频一区二区三区 | 一区二区三区波多野结衣在线观看| 亚洲福利久久| 男同欧美伦乱| 亚洲国产视频一区| 日韩视频国产视频| 欧美日韩黄视频| 一区二区欧美精品| 亚洲综合三区| 国产精品永久免费在线| 亚洲综合精品自拍| 久久国产精品一区二区三区| 国产综合在线视频| 久久青草久久| 亚洲区一区二| 亚洲免费在线视频| 国产免费观看久久黄| 欧美一区二区在线观看| 麻豆91精品| 一本大道久久a久久综合婷婷| 欧美激情一区三区| 亚洲视频视频在线| 久久男女视频| 亚洲精品美女在线观看播放| 欧美精品偷拍| 亚洲小视频在线观看| 久久一区二区三区四区五区| 亚洲欧洲视频在线| 国产精品日韩在线播放| 久久精品人人做人人爽电影蜜月| 免费一级欧美在线大片| 一区二区三区成人精品| 国产亚洲精品激情久久| 欧美freesex交免费视频| 亚洲深夜福利网站| 蜜桃久久av一区| 性刺激综合网| 亚洲精品久久久久久久久久久| 欧美网站在线观看| 午夜精品影院| 亚洲激情电影在线| 久久久久久尹人网香蕉| 99热在这里有精品免费| 国产精品视频成人| 欧美大尺度在线| 欧美一进一出视频| 亚洲欧洲综合| 老司机一区二区| 性娇小13――14欧美| 一本色道88久久加勒比精品| 国产综合av| 国产精品久久一区主播| 免费在线欧美黄色| 欧美一区二区三区在线| 日韩一区二区精品在线观看| 国产午夜精品视频| 亚洲欧洲免费视频| 久久久久久电影| 亚洲欧美国内爽妇网| 亚洲国产婷婷| 激情欧美日韩| 国产婷婷色一区二区三区| 欧美色图天堂网| 欧美电影免费观看高清完整版| 欧美在线免费一级片|