OPENCASCADE--拓扑与几何

                                                                                图1 拓扑类型继承关系图

一、TopoDS_Shape包含三个成员变量,位置、朝向以及一个TopoDS_TShape的句柄,如下图所示。各种不同的形体(shape)可以共享拓扑形体和位置信息,例如,一条边属于两个面,具有相同的拓扑形体和位置,但是具有不同的朝向(在一个面中朝向向前,另一个面朝向相反)。

 

                                                             图 2 TopoDS_Shape的三个成员变量

1.◆ Location() [2/2]
void TopoDS_Shape::Location	(	const TopLoc_Location & 	theLoc	)	
inline
Sets the shape local coordinate system.(位置)

2.Orientation() [2/2]
void TopoDS_Shape::Orientation	(	TopAbs_Orientation 	theOrient	)	
inline
Sets the shape orientation.(朝向)

3.TShape() [1/2]
const Handle< TopoDS_TShape >& TopoDS_Shape::TShape	(		)	const
inline
Returns a handle to the actual shape implementation。(句柄)

 二、拓扑与几何的关系

拓扑与几何的关联是通过TopoDS包里的抽象拓扑类实现的,在BRep包中通过这些类实现对具有边界的模型描述。只有三种类型的拓扑体具有几何特征,顶点(vertex)、边(edge)、面(face),如图3所示。

   图 3 抽象拓扑类与几何信息的关系

三、点、边、面的几何信息详解

  顶点(vertex):顶点的几何表示是在三维空间中用gp_Pnt类描述的一个点,这算是描述顶点在空间中的位置几何信息。另一个重要的属性是误差(tolerance),用来描述其位置的精确度,其几何意义是:一个具有半径为误差的圆球,这些圆球必须通过所有与该点相连接的曲线端部,误差是不同CAD软件间模型数据交换需要考虑的一个东西。顶点的最后一个属性是朝向,它本身没有直接的几何意义,但是当与边考虑的时候就具有明确的几何意义,朝向若为TopAbs_FORWARD,该点与曲线较小参数的端部对应,若为TopAbs_REVERSED则对应参数大的端部。

  生成顶点拓扑结构有两种形式:一是BRepBuilderAPI_MakeVertex类,该类的内部使用BRep_Builder生成顶点,二是从底层构建,通过BRep_Builder工具。构建之后可以通过BRep_Tool提供的静态方法访问几何信息。

图 4 误差圆球必须通过所有在该点相连接的曲线端部

//通过BRepBuilderAPI_MakeVertex
TopoDS_Vertex vertex=BRepBuilderAPI_MakeVertex(gp_Pnt(10.0,10.0,10.0));


//通过BRep_Builder底层构建
gp_Pnt aPoint(10.0,10.0,10.0);
BRep_Builder aBuilder;
TopoDS_Vertex aVertex;
aBuilder.MakeVertex(aVertex,aPoint,Precision::Confusion());
aVertex.Orientation(TopAbs_REVERSED);


//通过BRep_Tool获取拓扑点的几何信息
Standard_Real aTolerance=BRep_Tool::Tolerance(aVertex);//获取误差
gp_Pnt aPoint=BRep_Tool::Pnt(aVertex);//获取几何点

边(Edge):边对应的几何对象是曲线,有的边对应多个曲线,主要有两种一是三维空间中参数曲线,二是曲面上的曲线,还有可能是Polygon3D、PolygonOnTriangulations实现的边。其中曲面上的曲线将面和边联系起来,虽然两种边的表示方式不同,但是对于同一个参数,通过两种曲线计算得到的几何点坐标是相同。

   边按照和面的关系分为:悬空边(不属于任何面)、共享边(属于两个或者多个面)、自由边(只属于一个面的边),还有一些特殊的边如退化边(起点和终点重合的边如南北半球的极点处,这种边位于曲面的奇异点处,在三维空间中退化为一个点)和缝合边(这种边在同一个面上出现两次比如在同一个面上具有2个参数曲线)。

   边的朝向:朝向向前意外着与边的逻辑方向与曲线的方向相同,反向意外着逻辑方向与曲线相反。 

   边的误差:其三维曲线和其它任何表示方式之间的最大偏差。

   边的标志位:same range true意味空间参数曲线和曲面上的曲线取值区间相同

                         same parameter true意味空间参数曲线和曲面上的曲线对同一个参数值,点的空间位置相同

 图 5 Draw Test Harness工具生成一个box的拓扑信息中的一个边中的三条曲线

  面(Face)由一个外环和若干个内环来表示,内环完全在外环之内。根据环(Wire)的定义,在面上沿环的方向前进,左侧总在面内,右侧总在面外。面有方向性,一般用其外法矢方向作为该面的正向。若一个面的法矢向外,称为正向面;反之,称为反向面。面的形状(surface)由面的几何信息来表示,可以是平面或曲面,平面可用平面方程来描述,曲面可以用控制多边形或型值点来描述(NURBS曲面),也可用曲面方程(隐式、显式或参数形式)来描述。对于参数曲面,通常在其二维参数域上定义环,这样就可以由一些二维的有向边来表示环,集合运算中对面的分割也可在二维参数域上进行。

  Face的方向标识的是Face的法失是否和曲面的法失同向,如果同向,则为TopAbs_FORWARD,反向则为TopAbs_REVERSED。该方向对Face的参数域和裁剪环的方向,都有影响。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值