CurveRepresentation类总结

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:Arial; mso-fareast-font-family:宋体;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} -->

上次提到了Edge中的曲线表示形式,比较复杂,这里比较详细的说明一下。如下是类继承图:

BRep_CurveRepresentation

――BRep_CurveOn2Surfaces

――BRep_GCurve

――――BRep_Curve3D

――――BRep_CurveOnSurface

――――――BRep_CurveOnClosedSurface

――BRep_Polygon3D

――BRep_PolygonOnSurface

――――BRep_PolygonOnClosedSurface

――BRep_PolygonOnTriangulation

――――BRep_PolygonOnClosedTriangulation

 

BRep_CurveRepresentation 类,仅包含一个位置属性:

       TopLoc_Location myLocation;

这是为了方便曲线几何数据的共享吧。

 

Brep_Gcurve 类,通常的curve 表示类,包含一个参数的范围。属性:

Standard_Real myFirst;

Standard_Real myLast;

即一定范围内部的curve 。可以是3d 曲线,也可以是2d 参数曲线。

Brep_Curve3D 类,表示一条3D 曲线。属性:

       Handle_Geom_Curve myCurve; 记录了3d 曲线的reference

 

BRep_CurveOnSurface 类,表示了曲面上参数域内的一条曲线,即参数曲线,通常为2d 曲线,该参数曲线计算出2 维点,为曲面参数域内部的点,可以由此计算对应曲面上的点。如记:p(t) 为参数曲线,S(u,v) 为曲面,则t 对应曲面上的点应如下计算:

       (u1,v1) = p(t) pt3d = S(u1,v1)

属性有如下:

       gp_Pnt2d myUV1;

gp_Pnt2d myUV2; 参数曲线的起始和终止2 维点。

Bnd_Box2d myBox; 参数曲线在参数域内的包围盒。

Handle_Geom2d_Curve myPCurve; 参数曲线

Handle_Geom_Surface mySurface; 所在的曲面

通常,可以根据参数曲线和其范围,计算出myUV1myUV2 的值,不知这里记录这个信息为什么。待后续深入。

 

BRep_CurveOnClosedSurface 类,OCCT 文档说明:

Representation  of a    curve by two  pcurves   on a closed surface. 即是说,记录一个闭合曲面上的对应两个参数曲线的曲线。典型例子就是:圆柱面,两条直线边重合,则直线边就采用该类表示,此时,两个边使用同一个3d 曲线,但两个边对应的参数曲线却是不同的,起始边的参数曲线可能代表的是[0,x - y] 范围内的参数域,而终止边代表的可能是[2PI,x-y] 范围内的参数域。

       这是一个特殊的表示形式。而实际在造型中,会遇到很多这样的情况。两条参数曲线的方向通常是相反的。

       属性除从基类继承的外,尚有:

       Handle_Geom2d_Curve myPCurve2;

GeomAbs_Shape myContinuity;

gp_Pnt2d myUV21;

gp_Pnt2d myUV22;

Bnd_Box2d myBox2;

记录了第二条参数曲线的信息,并且记录了连续性。

 

BRep_CurveOn2Surfaces 类,OCCT 文档说明:

Defines a continuity between two surfaces 。即定义了两个曲面间的连续性。属性包括:

属性如下:

Handle_Geom_Surface mySurface;

Handle_Geom_Surface mySurface2;

TopLoc_Location myLocation2;

GeomAbs_Shape myContinuity;

可见,主要是记录了两个曲面的信息,及其连续性信息。

 

下面来看剖分数据相关类,即Polygon 相关的类,这些类都记录了进行剖分后的数据,用于图形的显示。

BRep_Polygon3D 类,记录了一条3d 曲线离散后的数据,为一系列点的信息。属性如下:

Handle_Poly_Polygon3D myPolygon3D;

Poly_Oplygon3D 类,是一条曲线的离散近似表示,由一组点定义,每个点都是3d 点。

使用这些数据,可以方便近似显示该曲线。

 

BRep_PolygonOnSurface 类:

Representation of a 2D polygon in the parametric space of a surface. 即定义了参数域内部的一个polygon 。是参数曲线的离散数据。属性有:

Handle_Poly_Polygon2D myPolygon2D;

Handle_Geom_Surface mySurface;

这里Poly_Polygon2D 类,表示2D 空间上的一个polygon ,有一组2D 点定义,通常表示参数域上的一条曲线的近似。

 

BRep_PolygonOnClosedSurface 类,Representation by two 2d polygons in the parametric          space of a surface. 即是记录BRep_CurveOnClosedSurface 类的离散数据。

属性有:

       Handle_Poly_Polygon2D myPolygon2;

记录第二条参数曲线的离散数据。

 

       显而易见,上述poly 类都和前面的曲线表示类有一一对应的关系,分别表示了曲线类的离散数据的数据结构。例如:Polygon3DCurve3D 的离散信息的记录类等。但上述线上曲面的离散信息是基于未剖分的原始曲面的数据。下面看曲面剖分后曲面上曲线的离散数据的表示。

 

BRep_PolygonOnTriangulation 类,A representation by an array of nodes on a          triangulation ,记录了曲面剖分后三角数据上的离散曲线的信息。属性如下:

       Handle_Poly_PolygonOnTriangulation myPolygon;

Handle_Poly_Triangulation myTriangulation;

       分别对应了曲线的离散信息和曲面的剖分信息。Poly_Triangulation 记录了曲面三角剖分后的数据。而Poly_PolygonOnTriangulation 类,provides a polygon in 3D space, based on the triangulation of a surface. 即记录了基于三角剖分数据的3d 空间的polygon 的信息。

这些结构在mesh 部分再仔细研究。

BRep_PolygonOnClosedTriangulation 类,也相应的容易理解了。多了如下属性:

       Handle_Poly_PolygonOnTriangulation myPolygon2;

 

最后,附带提一些Brep package 中两个很基本和常用的类:Brep_Builder 类和Brep_Tool 类,阅读其代码可以加深对上述类的了解。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值