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

eryar

PipeCAD - Plant Piping Design Software.
RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
posts - 603, comments - 590, trackbacks - 0, articles - 0

OpenCASCADE PCurve of Topological Face

Posted on 2015-04-25 12:22 eryar 閱讀(4048) 評論(2)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenCASCADE PCurve of Topological Face

eryar@163.com

Abstract. OpenCASCADE provides a class BRepBuilderAPI_MakeFace to build topological faces. A face maybe built from a surface, elementary surface from gp package, surface from Geom, from a wire and find the surface automatically if possible, etc. If a face is built, how to check it for visualization? What does PCurve means? The paper will answer those question.

Key Words. OpenCASCADE, Topological Face, PCurve, Holes

1. Introduction

OpenCASCADE中邊界表示法BRep的拓樸面Topological Face包含了完整的幾何信息,即給定一個TopoDS_Face,其中包含了邊和頂點,而邊和頂點包含了幾何曲線及三維點。對邊和頂點的可視化很好理解:顯示頂點就是在場景中繪制一個三維點;顯示邊最簡單的算法可以將邊中的曲線在參數空間中等分采樣,再將參數對應到曲線上的點連接起來就可以簡單顯示邊了;而面的可視化如何實現呢?

幾何造型內核中都有個參數曲線的概念,即PCurve(Parametric Curve),它是實現面可視化的一個很關鍵的數據。PCurve的定義是參數表示的曲面上的曲線在二維(u, v)參數空間中的二維樣條曲線,也就是曲面上的曲線(Curve on Surface)。

在理解PCurve定義的基礎上才好對其做進一步的研究,好回答“從哪兒來到哪兒去的問題”,即如何產生PCurve,如何使用生成的PCurve數據。本文主要介紹如何將OpenCASCADE拓樸面中的PCurve可視化,從而方便對拓樸面的檢查,也可以看出PCurve在曲可視化方面的應用。PCurve的產生及其他應用有待進一步挖掘。若您對PCurve有何看法,歡迎不吝賜教。


2.PCurve of a Face

由OpenCASCADE中對拓樸形狀可視化的算法[2]可知,對面的網格化需要先對面中環,環中的邊進行離散化,最后都統一到參數空間,即只需要一個二維網格化算法來對二維的參數空間進行網格化,最后將參數空間網格化的點映射回面中的幾何曲面上,即得到曲面的空間網格剖分。

wps_clip_image-29946

Figure 2.1 Mesh UV domain of a Surface

如上圖2.1所示,UV參數空間中的邊界線就是拓樸面的環中的邊的PCurve,即拓樸面中的環對應了參數空間中的邊界,而這些邊界的表示就是使用了PCurve。對參數空間進行網格化最常見的算法就是Delaunay三角剖分算法[3],早期OpenCASCADE的版本中使用了一個開源Delaunay庫Triangle[4]。通過將曲面在參數空間的結果映射回曲面的三維空間即可將曲面可視化了。如何控制曲面離散精度還有待進一步學習。

wps_clip_image-30572

Figure 2.2 A Smiley Face Meshed by Triangle

上圖2.2所示為二維三角剖分庫Triangle對一個笑臉進行剖分的結果。

在Draw Test Harness中,OpenCASCADE提供了對面的PCurve可視化的命令pcurve。使用pcurve命令可以將一個面中所有的pcurve根據朝向orientation以不同的顏色進行顯示。這個命令對檢查面中邊的朝向的正確性非常有用。下面使用Tcl命令在Draw Test Harness中對基本曲面的PCurve進行顯示。

2.1 Plane PCurve

OpenCASCADE中的平面的參數方程為:

wps_clip_image-8180

由上述參數表示的平面方程可知,平面的定義域是無窮的,所以為了生成一個有環的拓樸面,需要對平面設置邊界來對無限的平面進行裁剪。相應的Tcl腳本如下所示:

# 1. view the pcurves of a plane face
plane p

# trim the plane to (u,v)->[-1, 1][-1, 1]
trim p p -1 1 -1 1

# make the topo face
mkface p p

# extract the 2d curve of an edge on a face
pcurve p

# display pcurve in 2d viewer
av2d
fit
2dfit

# display face in 3d viewer
vdisplay p

生成結果如下圖所示:

wps_clip_image-22514

Figure 2.3 Color for PCurves

由圖2.3可知,pcurve有四種顏色:

v rouge: FORWARD 胭脂紅表示正向;

v bleu: REVERSED 藍色表示反向;(不知道是法語寫法還是個錯別字,藍色英語應該為blue)

v rose: EXTERNAL 玫瑰紅表示向外;

v orange: INTERNAL 橙黃色表示向內;

根據上述的顏色規則來看圖2.4,可以看出平面邊界的pcurves是逆時針閉合的。

wps_clip_image-6057

Figure 2.4 Plane PCurves

wps_clip_image-27675

Figure 2.5 Plane Face in 3D Viewer

2.2 Cylinder PCurve

OpenCASCADE中圓柱面的參數方程為:

wps_clip_image-5104

由上述參數方程可知,u的取值范圍是有界的[2, 2pi),v的取值是無限的。所以為了得到有界的拓樸面,至少需要對其v方向進行裁剪。相應的Tcl腳本如下所示:

# 2. view the pcurves of a cylinder face
cylinder c 1

# trim the cylinder to (u,v)->[0, 2pi][0, 1]
trim c c 0 2*pi 0 1

# make the topo face
mkface c c 

# extract the 2d curve of an edge on a face
pcurve c

# display pcurves in 2d viewer
av2d
2dfit
fit

# display face in 3d viewer
vdisplay c

生成結果如下圖所示:

wps_clip_image-19747

Figure 2.6 Cylinder PCurves

由上圖根據pcurve的著色規則可知,圓柱面的pcurves也是按逆時針順序閉合的。其在三維中的顯示結果如下圖所示:

wps_clip_image-28392

Figure 2.7 Cylinder Face in 3d Viewer

3.3 Cone PCurve

OpenCASCADE中圓錐面的參數方程為:

wps_clip_image-17202

可知圓錐曲面與圓柱曲面一樣,都是在u方向有界,在v方向無界。對其進行裁剪生成拓樸面并顯示pcurve的Tcl腳本如下所示:

# 3. view the pcurves of a cone face
cone co 30 0

# trim the cone to (u,v)->[0, 2pi][0, 1]
trim co co 0 2*pi 0 1

# make the topo face
mkface co co

# extract pcurves
pcurve co

# display pcurves in 2d viewer
av2d
2dfit
fit

# display face in 3d viewer
vdisplay co

生成結果如下圖所示:

wps_clip_image-29814

Figure 2.8 Cone PCurves

由上圖根據pcurve的著色規則可知,圓錐面的pcurves也是按逆時針順序閉合的。其在三維中的顯示結果如下圖所示:

wps_clip_image-1397

Figure 2.9 Cone Face in 3D viewer

3.4 Sphere PCurve

OpenCASCADE中球面的參數方程為:

wps_clip_image-5770

由上述參數方程可知,球面在u和v方向均為有界的,所以可不用對其進行裁剪就可生成拓樸面,當然也可對其裁剪得到球面的部分。顯示球面pcurves的Tcl腳本如下所示:

# 4. view the pcurves of a sphere face
sphere s 1

# make the topo face
mkface s s 

# extract pcurves
pcurve s

# display pcurves in 2d viewer
av2d
2dfit
fit

# display sphere face in 3d viewer
vdisplay s

生成結果如下圖所示:

wps_clip_image-16324

Figure 2.10 Sphere PCurves

由上圖根據pcurve的著色規則可知,球面的pcurves也是按逆時針順序閉合的。其在三維中的顯示結果如下圖所示:

wps_clip_image-29852

Figure 2.11 Sphere in 3d viewer

3.5 Torus PCurve

OpenCASCADE中圓環面的參數方程為:

wps_clip_image-12978

由圓環面的參數方程可知,在參數區間上u和v都是有界的,所以可不用對其進行裁剪就可生成拓樸面,當然也可對其裁剪得到圓環面的部分。顯示圓環面pcurves的Tcl腳本如下所示:


# 5. view the pcurves of a torus face
torus t 20 5

# make the topo face
mkface t t

# extract pcurves
pcurve t

# display pcurves in 2d viewer
av2d
2dfit
fit
# display torus in 3d viewer
vdisplay t

生成結果如下圖所示:

wps_clip_image-22530

Figuer 2.12 Torus PCurves

由上圖根據pcurve的著色規則可知,圓環面的pcurves也是按逆時針順序閉合的。其在三維中的顯示結果如下圖所示:

wps_clip_image-10501

Figure 2.13 Torus in 3d viewer

3.PCurve of a Face With Holes

由OpenGL編程指南[10]可知,要對一個NURBS曲面進行裁剪,可以創建gluPwlCurve和gluNurbsCurve來在參數空間形成閉合區域。其中gluPwlCurve創建是多段直線,而gluNurbsCurve生成的是在單位參數空間的NURBS曲線。創建裁剪曲線時需要考慮曲線的朝向(orientation),即曲線是順時針的還是逆時針的。曲線裁剪曲面的方式很簡單,想像你沿著曲線走,左手邊的將會被保留,右手邊的將會被去除。

wps_clip_image-29949

Figure 3.1 Parametric Trimming Curves

裁剪曲線還必須閉合且不能自交(Trimming curves must be closed and nonintersecting)。這里的裁剪曲線與OpenCASCADE中的參數曲線pcurve的概念相同。OpenCASCADE中的面也是采用的相同的規則。下面通過Tcl腳本來測試OpenCASCADE中帶有開孔的面的pcuve是否滿足OpenGL中裁剪曲面的規則。

# test face with one hole
plane p
trim p p 
-10 10 -10 10
mkface p p
pcylinder c 
1 2

bop p c
bopcut s

vdisplay s

explode s F
pcurve s_1

av2d
2dfit
fit

上述Tcl腳本為將一個平面用圓柱去挖一個孔,如下圖所示:

wps_clip_image-8553

Figure 3.2 Face with a Hole

遍歷被挖孔(boolean operation)得到的形狀的面,得到一個面,顯示這個面的pcurve如下圖所示:

wps_clip_image-26044

Figure 3.3 PCurve of a Face with one hole

由上圖3.3可知,pcurve的規則與OpenGL中的裁剪曲線一致。孔的pcurve為藍色,即為逆時針的反向:順時針。當一個面上生成多個孔時,是否仍然滿足上述規則呢?下面使用Tcl來對驗證一下:

# test pcurve of a face with multi-holes
sphere s 10
mkface s s

pcylinder c1 
1 30
pcylinder c2 
1 30

ttranslate c1 
-5 -5 -15
ttranslate c2 
5 5 -15

bop s c1
bopcut s

bop s c2
bopcut s

explode s F
pcurve s_1

av2d
2dfit
fit

用腳本在一個球面上生成四個孔,如下圖所示:

wps_clip_image-13810

Figure 3.4 A sphere face with 4 holes

遍歷boolean operation生成孔后的形狀的面,可看到只生成了一個面。將這個面的pcurve顯示出來如下圖所示:

wps_clip_image-16372

Figure 3.5 PCurves for a sphere with 4 holes

由上圖3.5可知,pcurve的朝向也與OpenGL中裁剪曲線的朝向一致。當一個面生成的開孔如圖3.1中的D和E時,在OpenCASCADE中是如何表示的呢?下面也有Tcl腳本測試測試:

plane p
trim p p 
-10 10 -10 10
mkface p p

ptorus t 
5 1

bop p t
bopcut s

vdisplay s

explode s F
pcurve s_1
pcurve s_2

av2d
2dfit
fit

生成結果如下圖所示:

wps_clip_image-31602

Figure 3.6 A Plane cut a Torus

wps_clip_image-8216

Figure 3.7 PCurves for the faces

由上圖可知,當一個平面去掉一個圓環面后,生成了兩個面,與有些幾何內核的用鏈表來將結果表示成一個面不同,OpenCASCADE中將結果生成了兩個面。其pcurves的朝向也與OpenGL中的裁剪曲線的朝向一致。

4.Conclusion

綜上所述,曲面上的曲線pcurve的概念是一個非常重要的概念,理解pcurve對造型及可視化有著重要意義。本文結合OpenGL中裁剪曲線的規則及OpenCASCADE的Draw Test Harness中顯示拓樸面pcurve的命令,來對基本曲面及裁剪曲面的pcurve的朝向進行檢驗。掌握了這些規則,可方便對自己構造拓樸面的正確性進行檢驗。

5. Acknowledge

時光荏苒,從畢業到現在不經意間就到了而立之年。滄海桑田,歲月蹉跎,經歷春夏秋冬的四季,品嘗酸甜苦辣的人生。感謝一路走來,親人、朋友、同事等對給予我的支持,信任和鼓勵,讓我可以做自己喜歡的事情,找到人生的方向。

寄蜉蝣與天地,渺滄海之一粟。準備回到離家近的武漢工作,切換到生活模式,多些時間陪伴父母親人,以報養育之恩。

6. References

1. Shing Liu. PCurve - Curve on Surface. 

http://www.cnblogs.com/opencascade/p/3601859.html

2. Shing Liu. Topology and Geometry in OpenCASCADE-Edge.

http://www.cnblogs.com/opencascade/p/3604052.html

3. Topology and Geometry in OpenCASCADE-Face.

http://www.cnblogs.com/opencascade/p/3605729.html

4. Shing Liu. Mesh Algorithm in OpenCASCADE.  http://www.cnblogs.com/opencascade/p/3648532.html

5. Shing Liu. Delaunay Triangulation in OpenCASCADE. 

http://m.shnenglu.com/eryar/archive/2013/05/26/200605.aspx

6. Shing Liu. Triangle-Delaunay Triangulator. 

http://www.cnblogs.com/opencascade/p/3632705.html

7. OpenCASCADE, Draw Test Harness User Guide.

8. OpenCASCADE, BRep Format White Paper.

9. Richard S. Wright Jr., Benjamin Lipchak. OpenGL SuperBible. Sams Publishing. 2004

10. Dave Shreiner. OpenGL Programming Guide. Addison-Wesley. 2009

Feedback

# re: OpenCASCADE PCurve of Topological Face  回復  更多評論   

2015-11-08 23:13 by 佚名
博主您好!
一直喜歡讀您的博文,受益匪淺,現在碰到個問題想請教,就是兩個面的共享邊問題,面是通過edge生成的,比如三條edge邊a、b、c生成一個面,a、d、e生成另外一個面,應該說它們有共享邊a,可是實際上explore兩個面發現它們沒有共享邊,在它們交界處是重合的兩條邊,這兩條邊既不isequal也不issame,不知道是何原因,怎么才能保障共邊,請指教,謝謝。

# re: OpenCASCADE PCurve of Topological Face  回復  更多評論   

2015-11-09 19:04 by eryar
@佚名
可以把代碼貼上來看看不?
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            99re热这里只有精品免费视频| 国内精品国产成人| 亚洲天堂成人| 亚洲综合第一页| 亚洲免费视频一区二区| 亚洲欧美春色| 欧美主播一区二区三区| 欧美一级一区| 久久躁日日躁aaaaxxxx| 欧美成熟视频| 国产精品欧美一区喷水| 国产一区二区三区在线观看视频| 国内揄拍国内精品少妇国语| 亚洲剧情一区二区| 欧美亚洲一级| 欧美激情视频免费观看| 一区二区三区四区国产| 久久久91精品| 欧美视频亚洲视频| 亚洲高清不卡| 亚洲免费在线视频| 亚洲电影在线播放| 亚洲品质自拍| 免费人成精品欧美精品| 久久久免费av| 欧美日韩成人在线播放| 国产一区二区在线观看免费播放| 欧美在线free| 国产精品爱啪在线线免费观看 | 亚洲高清电影| 亚洲精品在线免费| 欧美一级专区| 欧美日韩综合一区| 亚洲黄色高清| 久久久久久9| 亚洲精品国久久99热| 久久爱www.| 国产区亚洲区欧美区| 亚洲午夜久久久久久久久电影网| 老司机精品导航| 亚洲一区二区久久| 欧美日韩精品国产| 亚洲人成77777在线观看网| 久久婷婷国产综合精品青草| 一本色道**综合亚洲精品蜜桃冫| 欧美 日韩 国产一区二区在线视频 | 国产精品久久久久7777婷婷| 国内免费精品永久在线视频| 亚洲一区二区三| 日韩午夜视频在线观看| 欧美护士18xxxxhd| 亚洲黄色尤物视频| 欧美国内亚洲| 久久嫩草精品久久久久| 国产视频在线观看一区二区三区| 亚洲一二三区精品| 亚洲精选成人| 欧美剧在线观看| 亚洲成人在线观看视频| 久热精品视频在线| 久久国产夜色精品鲁鲁99| 欧美日韩妖精视频| 亚洲国产天堂久久国产91| 欧美.日韩.国产.一区.二区| 久久精品一区二区国产| 在线观看国产精品淫| 久久九九99视频| 午夜免费电影一区在线观看| 国产精品天天摸av网| 久久成人18免费网站| 欧美在线一二三区| 亚洲黄色av一区| 日韩网站在线观看| 国产美女诱惑一区二区| 久久久久久久综合| 久久精品网址| 亚洲国产三级网| 久久黄色级2电影| 久久国产精品色婷婷| 亚洲第一在线视频| 日韩视频一区二区在线观看 | 亚洲一区二区在线观看视频| 日韩视频国产视频| 国产欧美日韩视频| 久久美女艺术照精彩视频福利播放| 久久久久久久久伊人| 欧美国产欧美亚洲国产日韩mv天天看完整 | 免费观看成人www动漫视频| 欧美日韩精品免费观看视频完整| 欧美激情精品久久久六区热门| 好男人免费精品视频| 欧美成人午夜激情视频| 欧美一区二区视频在线| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲女性裸体视频| 国产欧美亚洲日本| 欧美成人69av| 国产精品www网站| 久久青草欧美一区二区三区| 久久精品国产一区二区三区| 一本色道久久综合亚洲精品不| 欧美一区不卡| 日韩一级成人av| 亚洲视频欧美在线| 亚洲国产成人av在线| 亚洲免费在线观看视频| 亚洲国产裸拍裸体视频在线观看乱了| 一区二区国产在线观看| 黑人操亚洲美女惩罚| 亚洲一区3d动漫同人无遮挡| 亚洲电影在线看| 性欧美xxxx大乳国产app| 日韩视频在线观看免费| 欧美在线视频一区二区三区| 99精品福利视频| 亚洲美女区一区| 久久精品一区二区国产| 亚洲色图在线视频| 麻豆精品传媒视频| 久久久久久黄| 欧美日韩一区二区三区免费| 美女免费视频一区| 狠狠色狠狠色综合日日五| 99国产精品久久久久久久| 亚洲三级视频在线观看| 久久精品91久久久久久再现| 欧美一区二区成人6969| 欧美吻胸吃奶大尺度电影| 亚洲国产一区二区a毛片| 在线观看视频一区二区欧美日韩| 欧美专区在线| 久久国产精品99国产精| 国产乱码精品一区二区三区五月婷| 亚洲毛片在线观看.| 在线欧美电影| 久久五月婷婷丁香社区| 蜜臀va亚洲va欧美va天堂| 国产女优一区| 久久精品国产一区二区三区| 国产精品久久久久aaaa九色| 日韩网站在线观看| 亚洲美女诱惑| 亚洲青色在线| 欧美精品国产精品| 亚洲区一区二| 一区二区三区免费网站| 欧美精品综合| aa级大片欧美| 亚洲制服av| 国产日韩一区二区三区在线| 欧美在线视频不卡| 亚洲第一综合天堂另类专| 一本久久精品一区二区| 欧美激情综合五月色丁香小说| 亚洲精选在线观看| 午夜精品影院在线观看| 国产亚洲视频在线| 欧美成人激情视频免费观看| 亚洲卡通欧美制服中文| 欧美久久在线| 亚洲视频在线观看| 久久久免费观看视频| 亚洲国产高清一区| 欧美激情偷拍| 亚洲网站在线看| 久久本道综合色狠狠五月| 亚洲电影观看| 欧美日韩一级片在线观看| 9久re热视频在线精品| 欧美一区二区三区久久精品茉莉花| 国产精品网站视频| 久久久亚洲高清| 亚洲电影天堂av| 亚洲欧美激情精品一区二区| 国产精品日本精品| 亚洲欧美第一页| 久久亚洲不卡| 亚洲一区二区三区在线| 国产欧美精品国产国产专区| 美女精品在线| 欧美在线视频日韩| 一本久道久久综合狠狠爱| 久久一区激情| 亚洲自拍偷拍福利| 午夜精品影院| 国产精品伦一区| 亚洲小说欧美另类婷婷| 欧美激情一区二区久久久| 亚洲欧美日韩在线| 亚洲精品日韩一| 国产精品制服诱惑| 暖暖成人免费视频| 久久精品国产77777蜜臀| 亚洲精品国产拍免费91在线| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲亚洲精品在线观看| 一区二区久久久久| 91久久精品日日躁夜夜躁欧美| 国产精品视频一区二区三区| 欧美插天视频在线播放|