OpenCascade Primitives BRep - Sphere

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 sphere BRep in OpenCascade, and also show how to use Tcl script to dump sphere BRep info.

Key words. OpenCascade, BRep, Boundary Representation, Sphere, Singularity

1. Introduction

球体的几何数据主要是一个球面,在OpenCascade中球面的参数方程如下所示:

在《Parametric Curves and Surfaces》一文中,对参数曲线曲面进行了介绍,并重点介绍了球面的奇异性(Singularity)。本文通过对Sphere的BRep表示进行分析,来理解边界表示法中对参数曲面上奇点(Singular Point)的处理及BRep_TEdge中包含的多种形式的曲线。

Figure 1.1 Sphere Generated by Tcl in Draw Test Harness

2. Dump Sphere BRep Info by Tcl

在OpenCascade中使用Tcl脚本来测试一些想法真是很方便,如这里要输出球的边界表示的数据,只需要三条命令就可以完成。以下Tcl命令生成了一个圆心在原点(0,0,0),半径为10的球:

Figure 2.1 Dump Sphere BRep Info in Draw Test Harness

Figure 2.2 Display the Sphere in Draw

与《OpenCascade Primitives BRep - Box》一样,根据这些信息,从Vertex开始编号,来分析球的BRep表示。

3. Sphere BRep in OpenCascade

球的拓朴顶点Vertex有两个,分别是#7(0, 0, -10)和#9(0, 0, 10),如下图所示:

Figure 3.1 Vertex of Sphere BRep in OpenCascade

Figure 3.2 Curve Representation of BRep_TEdge

边Edge有三种表现形式,分别是#5,#6和#8,其中#5和#8是退化边(Degenerated Edge),即球面参数方程的奇点(Singular Point),在前文《PCurve - Curve on Surface》中分析曲面上曲线PCurve时已经讨论过,此处略过。本文只对#6边中的几何信息进行详细分析。

Figure 3.3 Edge #6 of Sphere BRep in OpenCascade

从拓朴边中可以看出#6Edge中的曲线有三个:一是三维空间曲线(Curve 3D)1;另外两个是曲面上曲线。其中三维空间曲线1的参数方程及其参数如下图所示:

Figure 3.4 Parameters and Parametric equation of the Curve 3D

由上图可知,三维空间曲线1是一个圆,圆心位于坐标原点(0,0,0),半径为10,且位于XOZ平面上,对应范围的起点和终点分别为:

同理根据曲面上曲线的PCurve的定义,可以计算出曲面1上的曲线2和3,它们表示的曲线与三维空间曲线1相同,即边#6是衔接边(Seam Edge),对应OpenCascade中即是BRep_CurveOnClosedSurface。综上所述,可以画出球上的Edge,如下图所示:

Figure 3.5 Edges of the Sphere

Figure 3.6 Wire of the Sphere

由上图可知在形成Wire时,Edge6使用了两次且方向相反,退化边(Degenerated Edge)的方向可忽略,因为其已经退化为一点。根据Wire的信息画出球的Wire如下图所示:

Figure 3.7 Wire of the Sphere(Wire in Yellow color)

由Wire#4组成了Face#3,Face#3中的几何曲面为1。曲面1是一个参数的球面。由Face#3组成Shell #2,由Shell#2组成了Solid#1。球的边界表示的分析就结束了。

4. Conclusion

本文通过使用Tcl脚本在Draw Test Harness中生成球的BRep边界表示信息,分析了球在OpenCascade中的组织方式。对BRep中边包含的多种几何曲线形式进行了解。

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

OpenCascade Primitives BRep - Sphere的更多相关文章

  1. OpenCascade Primitives BRep - Box

    OpenCascade Primitives BRep - Box eryar@163.com Abstract. BRep is short for Boundary Representation. ...

  2. OpenCascade Primitives BRep-Cone

    OpenCascade Primitives BRep-Cone eryar@163.com Abstract. BRep is short for Boundary Representation. ...

  3. OpenCascade Primitives BRep-Torus

    OpenCascade Primitives BRep-Torus eryar@163.com Abstract. BRep is short for Boundary Representation. ...

  4. OpenCascade Primitives BRep-Cylinder

    OpenCascade Primitives BRep-Cylinder eryar@163.com Abstract. BRep is short for Boundary Representati ...

  5. OpenCASCADE Make Primitives-Sphere

    OpenCASCADE Make Primitives-Sphere eryar@163.com Abstract. The sphere is the simplest topology shape ...

  6. OpenCASCADE BRep vs. OpenNURBS BRep

    OpenCASCADE BRep vs. OpenNURBS BRep eryar@163.com Abstract. BRep short for Boundary Representation. ...

  7. Geometry Surface of OpenCascade BRep

    Geometry Surface of OpenCascade BRep eryar@163.com 摘要Abstract:几何曲面是参数表示的曲面 ,在边界表示中其数据存在于BRep_TFace中, ...

  8. Topology Shapes of OpenCascade BRep

    Topology Shapes of OpenCascade BRep eryar@163.com 摘要Abstract:通过对OpenCascade中的BRep数据的读写,理解边界表示法的概念及实现 ...

  9. Representation Data in OpenCascade BRep

    Representation Data in OpenCascade BRep eryar@163.com 摘要Abstract:现在的显示器大多数是光栅显示器,即可以看做一个像素的矩阵.在光栅显示器 ...

随机推荐

  1. 敏捷开发方法-Scrum

    为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资 ...

  2. struts2 validation.xml 注意点

    1.首先应该注意validation.xml的名字,一定要以Action的类名加“-validation.xml”作为文件名.入LoginAction-validation.xml. 2.LoginA ...

  3. C++是一把很奇怪的刀

    C++是一把很奇怪的刀,首尾都是刀刃.用刀能出什么,还是要看拿刀的人.

  4. 网上搜集了点资料,学web的人互相分享共同进步吧(php编码的好习惯必须养成)

    网上搜集了点资料,学web的人互相分享共同进步吧 一.优秀的代码应该是什么样的? 优秀的PHP代码应该是结构化的.大段的代码应该被分割整理成一个个函数或方法,而那些不起眼的小段代码则应该加上注释,以便 ...

  5. AndroidStudio学习笔记-第一个安卓程序

    要带一个本科生做一部分跟安卓有点关系的项目,于是趁着机会学习一下编写安卓程序. 第一篇材料来自谷歌官方,传送门:https://developer.android.com/training/basic ...

  6. 使用VirtualBox自带管理工具命令为虚拟磁盘扩展空间

    VirtualBox虚拟磁盘空间不够了,默认10G.想扩大,图形界面下没有找到可操作菜单.Google了一下用 Vbox自带的命令工具VBoxManage即可解决. C:\Program Files\ ...

  7. Error

    错误解决的方案: armv7错误: 或者: 友情提示:为了避免不必要的错误,私有的还是放在.m 中引用.h c does not support default arguments: 还没解决方案,待 ...

  8. React Native也正式发布了

    var React = require('react-native'); var { TabBarIOS, NavigatorIOS } = React; var App = React.create ...

  9. Python札记 -- MongoDB模糊查询

    最近在使用MongoDB的时候,遇到了使用多个关键词进行模糊查询的场景.竹风使用的是mongoengine库. 查了各种资料,最后总结出比较好用的方法.先上代码,后面进行详细说明.如下: #!/usr ...

  10. 用c#开发微信 系列汇总

    网上开发微信开发的教程很多,但c#相对较少.这里列出了我所有c#开发微信的文章,方便自己随时查阅.   一.基础知识 用c#开发微信(1)服务号的服务器配置和企业号的回调模式 - url接入 (源码下 ...