OpenCascade Primitives BRep-Cylinder
OpenCascade Primitives BRep-Cylinder
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
PDF Version: OpenCascade Primitives BRep-Cylinder
OpenCascade Primitives BRep-Cylinder的更多相关文章
- OpenCascade Primitives BRep - Sphere
OpenCascade Primitives BRep - Sphere eryar@163.com Abstract. BRep is short for Boundary Representati ...
- OpenCascade Primitives BRep - Box
OpenCascade Primitives BRep - Box eryar@163.com Abstract. BRep is short for Boundary Representation. ...
- OpenCascade Primitives BRep-Cone
OpenCascade Primitives BRep-Cone eryar@163.com Abstract. BRep is short for Boundary Representation. ...
- OpenCascade Primitives BRep-Torus
OpenCascade Primitives BRep-Torus eryar@163.com Abstract. BRep is short for Boundary Representation. ...
- OpenCASCADE Make Primitives-Sphere
OpenCASCADE Make Primitives-Sphere eryar@163.com Abstract. The sphere is the simplest topology shape ...
- OpenCASCADE BRep vs. OpenNURBS BRep
OpenCASCADE BRep vs. OpenNURBS BRep eryar@163.com Abstract. BRep short for Boundary Representation. ...
- Geometry Surface of OpenCascade BRep
Geometry Surface of OpenCascade BRep eryar@163.com 摘要Abstract:几何曲面是参数表示的曲面 ,在边界表示中其数据存在于BRep_TFace中, ...
- Topology Shapes of OpenCascade BRep
Topology Shapes of OpenCascade BRep eryar@163.com 摘要Abstract:通过对OpenCascade中的BRep数据的读写,理解边界表示法的概念及实现 ...
- Representation Data in OpenCascade BRep
Representation Data in OpenCascade BRep eryar@163.com 摘要Abstract:现在的显示器大多数是光栅显示器,即可以看做一个像素的矩阵.在光栅显示器 ...
随机推荐
- ng-repeat循环出来的部分调用同一个函数并且实现每个模块之间不能相互干扰
使用场景:用ng-repeat几个部分,每个部分调用同一个函数,但是每个模块之间的功能不能相互干扰 问题:在用repeat实现.content块repeat的时候打算这样做:新建一个空的数组(nmbe ...
- 解决jquery新加入的元素没有绑定事件问题
在使用jquery操作时,往往需要动态的添加一些元素,但是这些新加入的元素并没有像css那样被赋予原本定义的样式,解决方法如下: 1.动态插入元素后,并用bind事件给新加入的元素绑定事件. 2.如果 ...
- monodroid 调用 JNI Native 的一些问题
在Android版本开发的过程中,需要使用一些用JNI开发的NDK的native库.这里谈一谈踩到的坑,给大家参考. 虽然java的程序我还算熟悉,但是没有了解过 JNI Native 的开发,一般是 ...
- Ubuntu 14.04 更换阿里云源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份 sudo vim /etc/apt/sources.list #修改 sudo ...
- Matlab读取数据中出现的问题
在运行Matlab读取一段数据并做处理的时候,常常会提示服务器错误,但是等待一会再次运行就会成功运行. 代码如下: clc; clear all; [~,~,rawdata] = xlsread('进 ...
- Cannot attach the file ‘{0}' as database '{1}'
EF使用CodeFirst,当使用localDB时,删除mdf文件,会报“Cannot attach the file ‘{0}' as database '{1}'”错误. 解决方法如下: 1.打开 ...
- linux platform设备与驱动
struct platform_driver { int (*probe)(struct platform_device *); int (*remove)(struct platform_devic ...
- 联想昭阳E47外接显示器屏幕由扩展改为复制
公司给我配的电脑室是联想昭阳e47,显卡是集成显卡,很差,做开发看显示屏久了眼睛很累视力会下降的很快. 所以本人自己买了一个三星22寸的显示器,京东上¥779买的,第二天早上就送来了. 之前我自己的电 ...
- 使用post方式提交表单如何获取图片数据及其他文本参数[NodeJS]
当POST方式提交包含图片的表单时,如上传图片时,需要在<form>字段需要添加参数enctype="multipart/form-data",表明以二进制方式传输数据 ...
- python setup.py 管理
发布项目遇到了坑……特此记录. How to write setup.py: https://docs.python.org/2/distutils/setupscript.html Setup.py ...