OpenCascade Primitives BRep-Cylinder
eryar@163.com
Abstract. BRep is short for Boundary Representation. Boundary Representation gives a complete description of an object by associating topological and geometric information for solid modeling. In this case, objects are described by their boundaries. There are two types of information in BRep: Topological information and Geometric information. This paper is concerned with the Cylinder BRep in OpenCascade, and also show how to use Tcl script to dump cylinder BRep info.
Key words. OpenCascade, BRep, Boundary Representation, Cylinder
1. Introduction
本文通過在Draw Test Harness中的Tcl腳本來生成圓柱Cylinder的邊界表示(BRep)數據,通過對生成的數據進行分析,來理解OpenCascade中的Cylinder的邊界表示方式。
如下圖所示為使用Tcl命令在Draw Test Harness中生成的圓柱:
Figure 1.1 Cylinder Generated by Tcl in Draw Test Harness
2. Dump Cylinder BRep Info by Tcl
使用Tcl腳本在Draw Test Harness中輸出圓柱(Cylinder)的邊界表示(BRep)數據的腳本程序如下圖所示:
Figure 2.1 Tcl Script to Dump Cylinder BRep Info
上述Tcl生成一個底面位于原點(0,0,0)半徑為10,高度為20的圓柱,如下圖所示:
Figure 2.2 The Cylinder Generated by Tcl
3. Cylinder BRep in OpenCascade
還是從頂點(Vertex)開始編號,來對圓柱(Cylinder)的BRep表示進行理解。從導出的信息可知,圓柱有兩個頂點Vertex,對其編號,如下圖所示:
Figure 3.1 Vertex of Cylinder
圓柱共有三條Edge,編號分別是#9,#10,#12。下面對三條Edge中的幾何曲線進行分析。其中#9邊Edge中包含了三條幾何曲線:一條三維空間曲線3D Curve和兩條曲面上曲線PCurve,三條曲線的取值范圍都是[0,2PI]。空間曲線3是圓心(0,0,0)半徑為10,位于圓柱底部的圓,參數方程如下所示:
Figure 3.2 Curve 3D in Edge #9
Figure 3.3 PCurve 5 on Surface 1 of Edge #9
曲面1上的參數曲線PCurve 5是位于原點(0,0)方向為u方向的直線。當u取[0,2PI]時,得到曲面上u,v值分別為(0,0)和(2PI,0)。對應到曲面1上時,u的取值范圍為[0,2PI],v的值為0。曲面1的參數方程如下所示:
當u取[0,2PI],v恒為0時,代入曲面參數方程得到空間圓的參數方程。
同理曲面3上的參數曲線PCurve 6是位于平面上的圓。邊Edge#12與Edge#9一樣,只不過#12是位于圓柱頂部的圓。
Figure 3.4 Edge #10 of the Cylinder
邊Edge#10中的三維空間曲線是起點為(10, 0, 0)方向為Z軸的直線,取值范圍[0,20]。曲面1上的參數曲線3,4是銜接邊(Seam Edge),對應于BRep_CurveOnClosedSurface。代入曲面的參數方程時,u只取兩個固定值0和2PI,v取值范圍為[0,20]得到的曲線與三維空間曲線相同。將所有邊編號繪出圖示如下:
Figure 3.5 Edges of the Cylinder
圓柱Cylinder的環Wire有三個:Wire #4,Wire#6和Wire#8。其中Wire#4是圓柱底部的圓,Wire#6是圓柱頂部的圓。Wire#8是上下兩個圓加上一個銜接邊(Seam Edge)組成閉合環。將所有環Wire編號繪出圖示如下:
Figure 3.6 Wires of the Cylinder
Wire#4,Wire#6和Wire#8分別對應Face#3,Face#5和Face#7。不過要注意面的朝向(Orientation)。最后這三個面Face組成一個Shell#2,Shell#2中又給每個Face定義了朝向。Shell#2組成了一個Solid#1。
4. Conclusion
通過Tcl生成的圓柱Cylinder的邊界表示BRep信息,分析了OpenCascade中的圓柱的邊界表示方式。要注意理解朝向(Orientation)對每個拓樸結構的意義。
5. References
1. OpenCascade, Test Harness User’s Guide 2013
2. OpenCascade, BRep Format Description White Paper, 2013
3. John K. Ousterhout, Tcl and Tk Toolkit, 1993