Opencascade源码学习之模型数据——TKG3d模块文件介绍

本文详细介绍了OpenCASCADE库中涉及模型数据的各个模块,包括TKG3d的曲线和表面适配器,AdvApprox的曲线拟合算法,Geom包中的基础几何对象如Bezier曲线和曲面,以及GeomAdaptor提供的几何对象接口,同时提到了几何属性计算的GeomLProp和全局属性分析的GProp模块。
摘要由CSDN通过智能技术生成


TKG3d

1、Adaptor3d

类图说明:

  • Adaptor3d_Curve

    几何算法工作的三维曲线的根类。适配曲线是由曲线提供的服务和使用它的算法对曲线所需的服务之间的接口。提供了两种具体的类:- Geom包中曲线的GeomAdaptor_Curve,Geom包中用于位于曲面上的曲线Adaptor3d_CurveOnSurface。用于评估的B样条曲线的多项式系数被缓存以获得更好的性能。因此,这些评估不是线程安全的,需要防止并行评估。

  • Adaptor3d_CurveOnSurface:

    Geom软件包中曲面上的曲线所提供的服务与使用该软件包的算法对曲线所需的服务之间的接口。该曲线在曲面的参数空间中被定义为Geom2d软件包中的2D曲线。

  • Adaptor3d_HSurfaceTool:

  • Adaptor3d_HVertex:

  • Adaptor3d_InterFunc:

    用于查找点U(t)=U0或V(t)=V0,以确定Adpator_CurveOnSurface相对于表面不连续性的Cn不连续性。用于查找函数的根

  • Adaptor3d_IsoCurve:

    定义曲面上的等参曲线。等参曲线的类型(U或V)由GeomAbs中的枚举IsoType定义,如果给定NoneIso,则会引发错误。

  • Adaptor3d_Surface:

    几何算法工作的曲面的根类。

    适配表面是由表面提供的服务和使用它的算法对表面所需的服务之间的接口。

    具体的类被以下提供:

    Geom包中的曲面GeomAdaptor_Surface。Surface类描述了用于通用算法的曲面的标准行为。

    可以使用NbIntervals方法将曲面分解为U和V中任意连续性的区间。

    可以设置当前间隔。大多数函数都可以应用于当前的间隔。

    警告:所有的函数都是虚函数,并通过提升来实现,以便只在重新定义的方法中使用。

    用于评估的B样条曲面的多项式系数被缓存以获得更好的性能。因此,这些评估不是线程安全的,并且需要防止并行评估。

  • Adaptor3d_TopolTool:

    此类提供了一个默认的拓扑工具,基于Adaptor3d中HSurface的Umin、Vmin、Umax和Vmax。

    从此类继承时,可以重新定义所有方法和字段。此类用于将算法实例化为交集、轮廓等,…

类图

Adaptor3d_Curve
Adaptor3d_CurveOnSurface
Adaptor3d_IsoCurve

2、AdvApprox

类图说明

  • AdvApprox_ApproxAFunction:拟合一个给定的函数;

  • AdvApprox_Cutting:在拟合中选择切合方式。

  • AdvApprox_DichoCutting:如果在[a,b]中需要cut,则在(a+b) / 2处进行cut。

  • AdvApprox_EvaluatorFunction:

    将C函数指针转换为虚拟类的,以避免使用静态函数和静态数据接口,用于实现由AdvApprov_ApproxAFunction近似的函数的类。

  • AdvApprox_PrefAndRec:

    继承自类Cutting;包含在切分管理中的优先点(pi)i的列表和推荐点的列表。如果在[a,b]中需要切割,我们在离(a+b)/2最近的di处切割。

  • AdvApprox_PrefCutting:

    继承自类Cutting;包含优先点列表(di)i。如果在[a,b]中需要切割,我们在距离(a+b)/2最近的di处切割。

  • AdvApprox_SimpleApprox:

    对一个区间[First,Last]上的函数进行拟合。结果是一个简单的多项式,其次数尽可能低,以满足所需的公差和最大次数。最大误差和平均误差由多项式逼近函数计算产生。

类图

AdvApprox_Cutting
AdvApprox_DichoCutting
AdvApprox_PrefAndRec
AdvApprox_PrefCutting

3、Geom

类说明

  • Geom_Axis1Placement:

    描述三维空间中的轴。轴的定义如下:

    • 它的原点,也被称为轴的“定位点”,

    • 其单位向量,称为轴的“方向”。

    注:Geom_axs1Placement轴提供与gp_Ax1轴相同的“几何”服务,但具有更复杂的数据结构。Geom包提供的几何对象使用gp_Ax1对象在其数据结构中包括轴,或定义对称轴或旋转轴。Geom_Axis1Placement 轴用于可以由包含在公共数据结构中的多个对象共享的上下文中。

  • Geom_Axis2Placement:

    描述三维空间中的右手坐标系。

    坐标系定义如下:

    -它的原点,也被称为坐标系的“定位点”,

    -三个正交单位向量,分别称为坐标系的“X方向”、“Y方向”和“方向”(或“主方向”)。

    由于Geom_Axis2Placement 坐标系是右手坐标系的,其“方向”始终等于其“X方向”和“Y方向”的叉积。坐标系的“方向”被称为“主方向”,因为当修改该单位向量时,“X方向”和“Y方向”将被重新计算,而当更改“X方向“或“Y方向“时,“主方向“将被保留。“主方向”也是“Z方向”。

    注:Geom_axi2Placement坐标系提供与gp_Ax2坐标系相同的“几何”服务,但具有更复杂的数据结构。Geom包提供的几何对象使用gp_Ax2对象在其数据结构中包括坐标系,或定义应用于它们的几何变换。

    Geom_axi2Placement坐标系用于可以由包含在公共数据结构中的多个对象共享的上下文中。

  • Geom_AxisPlacement:

    抽象类AxisPlacement描述了三维空间中位置系统的常见行为,例如轴或坐标系。Geom软件包提供了两种3D定位系统的实现方式:

    • 轴(Geom_Axis1Placement类),其定义如下:

    • 它的原点,也被称为轴的“定位点”,

    • 其单位向量,称为轴的“方向”或“主方向”;

    • 右手坐标系(Geom_Axis2Placement类),其定义为:

      • 它的原点,也被称为坐标系的“定位点”,

      • 三个正交的单位向量,分别称为坐标系的“X方向”、“Y方向”和“方向”。由于坐标系是右旋的,因此这些单位向量具有以下关系:

        • “方向”=“X方向”^“Y方向”。
        • “方向”也被称为“主方向”,因为当单位向量被修改时,“X方向”和“Y方向”会被重新计算,而当“X方向“或“Y方向“被修改时”主方向“不会改变。
        • 原点为定位系统原点、单位向量为其“主方向”的轴也称为定位系统的“轴”或“主轴”。
  • Geom_BezierCurve:

    描述有理或非有理Bezier曲线

    • 非有理贝塞尔曲线由极点表(也称为控制点)定义,

      -有理贝塞尔曲线是由具有不同权重的极点表定义的。

    这些数据由两个并行数组操作:

    • 极点表,它是gp_Pnt点的阵列,以及
    • 权重表,它是一个实数数组。

    这些数组的边界是1,并且是曲线的“极点”数量。

    曲线的极点是用于使曲线变形的“控制点”。

    第一个极点是曲线的起点,而最后一个极点则是曲线的终点。连接第一个极点和第二个极点的线段是曲线起点处的切线,连接最后一个极点和倒数第二个极的线段是该曲线终点处的切线。

    给出权重的几何意义更困难,但它们对于提供圆或椭圆的弧的精确表示很有用。

    此外,如果所有极点的权重相等,则曲线是多项式;因此它是一条非有理曲线。非有理曲线是一种特殊且经常使用的情况。权重仅在有理曲线的情况下定义和使用。

    贝塞尔曲线的阶数等于极点的数量,减去1。它必须大于或等于1。然而,Geom_BezierCurve曲线的阶数被限制为由系统定义和控制的值(25)。此值由函数MaxDegree返回。

    贝塞尔曲线的参数范围为[0,1]。

    如果贝塞尔曲线的第一个控制点和最后一个控制点是同一点,则曲线是闭合的。例如,要创建具有四个控制点的封闭贝塞尔曲线,必须给出控制点集合P1、P2、P3和P1。贝塞尔曲线的连续性是无限的。不可能建立一个具有负权重的贝塞尔曲线。如果权重值小于或等于gp::Resolution(),则认为权重值为零。如果:|W2 - W1| <= gp::Resolution(),我们也认为两个权重值W1和W2相等。

    警告:

    • 当考虑闭合贝塞尔曲线在结点处的连续性时,请记住,这种类型的曲线从来都不是周期性的。这意味着,即使曲线是闭合的,参数u=0的导数也没有理由与参数u=1的导数相同。

    • Bezier曲线的长度可以为null。

  • Geom_BezierSurface:

    描述有理或非有理Bezier曲面。

    -非有理贝塞尔曲面由极点表(也称为控制点)定义。

    -有理贝塞尔曲面是由具有不同相关权重的极点表定义的。此数据使用两个关联的二维阵列进行操作:

    -极点表,它是gp_Pnt的2D阵列,以及

    -权重表,它是实数的2D数组。

    这些数组的边界是:

    • 1和NbUPoles用于行边界,其中NbUPolees是曲面在u参数方向上的极点数量,以及

    • 1和NbVPoles作为列边界,其中NbV极是曲面在v参数方向上的极数。

    表面的极点,即“控制点”,是用来塑造和重塑表面的点。它们由矩形的点组成:

    点(1,1),(NBUPole, 1), (1, NBVPole)和(NBUPole, NBVPole)是曲面的四个参数“角”。

    • 第一列极点和最后一列极点定义了两条Bezier曲线,在v参数方向上划分曲面。这些是v等参曲线,对应于v参数的值0和1。

    • 第一排极点和最后一排极点定义了两条Bezier曲线,在u参数方向上划分曲面。这是u参数的0和1对应的u等参曲线。

    更难的是定义权重的几何意义。但是,它们对于精确地表示二次曲面是有用的。此外,如果所有极点的权值相等,则该曲面为多项式方程,因此为“非理数曲面”。非有理曲面是一种特殊但常用的情况,其中所有的极点都有相同的权值。权值只在有理面的情况下定义和使用。有理特征在每个参数方向上都有定义。因此,曲面可以在u参数方向上是有理数,而在v参数方向上是无理数。同样,曲面的度也在每个参数方向上定义。Bezier曲面在给定参数方向上的度等于曲面在该参数方向上的极数,减1。这个必须大于等于1。然而,Geom_BezerSurface的度被限制在由系统定义和控制的值(25)。该值由函数MaxDegree返回。

    Bezier曲面在两个参数方向上的参数范围为[0,1]。Bezier曲面也可以在每个参数化方向上闭合或打开。如果第一排极点与最后一排极点相同,则曲面在u参数方向上是闭合的。如果第一列极点与最后一列极点相同,则曲面在v参数方向上闭合。Bezier曲面在u参数方向和v参数方向上的连续性是无限的。

    注意:不可能构建具有负权重的Bezier曲面。任何小于或等于gp::Resolution()的权重值都被视为零。如果:|W2-W1|<=gp::Resolution(),则认为W1和W2这两个权重值相等。

  • Geom_BoundedCurve:

    抽象类BoundedCurve描述了有界曲线在三维空间中的常见行为。有界曲线受到参数的两个有限值的限制,分别称为“第一个参数”和“最后一个参数”。“第一个参数”给出有界曲线的“起点”,“最后一个参数”则给出有界曲面的“终点”。有界曲线的长度是有限的。Geom软件包提供了三类具体的有界曲线:

    • 复杂曲线的两种常用数学公式:

      • Geom_BezierCurve,

      • Geom_BSplineCurve,以及

      • Geom_TrimedCurve修剪曲线,即仅截取受基准曲线参数两个值限制的曲线的一部分。

  • Geom_BoundedSurface:

    三维空间中有界曲面的根类。有界曲面由其2D参数空间中的矩形定义,即。

    -其u参数,其范围在两个有限值u0和u1之间,分别称为“第一个u参数”和“最后一个u参数”,以及

    -其v参数范围在两个有限值v0和v1之间,分别称为“第一个v参数”和“最后一个v参数“。

    曲面受四条曲线的限制,这四条曲线是曲面的边界:

    -u参数方向上的u0和u1等参曲线,以及

    -其在v参数化方向上的v0和v1等参曲线。

    有界曲面是有限的。

    所有有界曲面的常见行为由Geom_Surface类描述。

    Geom软件包提供了有界曲面的三种具体实现:

    -Geom_BezierSurface,

    -Geom_SplineSurface,以及

    -Geom_RectangularTrimmedSurface。

    其中前两个实现了复杂曲面的众所周知的数学定义,第三个使用四条等参曲线修剪曲面,即将其参数的变化限制在二维参数空间中的矩形。

  • Geom_BSplineCurve:

    B_样条曲线的定义。B样条曲线可以是:均匀或不均匀、有理性或非有理的、周期或非周期的;

    b样条曲线定义如下:

    b样条曲线的度数,Geom_BSplineCurve的度数被限制为由系统定义和控制的值(25)。此值由函数MaxDegree返回;

    -周期性或非周期性;

    -极点表(也称为控制点)。如果BSpline 曲线是有理的,则其权重相关的。曲线的极点是用于使曲线变形的“控制点”。如果曲线是非周期性的,则第一个极点是曲线的起点,最后一个极点是该曲线的终点。连接第一个极点和第二个极点的线段是曲线起点处的切线,连接最后一个极点和倒数第二极的线段是该曲线终点处的切线。如果曲线是周期性的,则这些几何属性不会被验证。

    给出权重的几何意义更困难,但对于提供圆或椭圆的弧的精确表示是有用的。此外,如果所有极点的权重相等,则曲线具有多项式方程;因此它是一条非有理曲线。

    -一个具有多重节点的表。对于Geom_BSplineCurve,结点表是一个不断增加的实数序列,没有重复;

    多重性定义了结的重复。B样条曲线是一条分段多项式或有理曲线。结点是两个零件之间连接点的参数。B样条曲线的knot(i)的多重性Mult(i)与knot(i)处曲线的连续度有关,该连续度等于degree-Mult(i),其中degree是B样条线的阶数。如果结点是规则间隔的(即两个连续结点之间的差异是恒定的),则可以确定结点分布的三种特定且经常使用的情况:

    -“均匀”,如果所有重复度都等于1,

    -“准均匀”,如果所有的重复度都等于1,除了第一个和最后一个节点的重复度为Degree+1,其中Degree是B样条曲线的阶,

    -“分段Bezier”,如果除第一个和最后一个节点的重复度为Degree+1之外,所有的重复度都等于Degree,其中Degree是B样条曲线的阶数。这种类型的曲线是贝塞尔曲线的弧的串联。如果B样条曲线不是周期性的:

    -Poles和Weights表的边界为1和NbPoles,其中NbPoles是B样条曲线的极点数,Knots和Multiplicity表的边界是1和NbKnots,其中NbKnots是B样线曲线的结点数。

  • Geom_BSplineSurface:和Geom_BSplineSurface类似;

  • Geom_CartesianPoint:描述三维空间中的点。Geom_CartesianPoint由gp_Pnt点定义,该点具有三个笛卡尔坐标X、Y和Z。

  • Geom_Circle:圆

  • Geom_Conic:圆台

  • Geom_ConicalSurface:圆锥曲面

  • Geom_Curve:

    抽象类Curve描述了曲线在三维空间中的常见行为。Geom软件包提供了许多具体的衍生曲线类别,包括直线、圆、二次曲线、贝塞尔曲线或B样条曲线等。

    这些曲线的主要特征是它们是参数化的。Geom_Curve类展示了:

    -如何使用曲线的参数方程来计算参数u的点,以及在这点的2、3、…N阶的向量正切和导数向量,…;

    -如何获得关于曲线的一般信息(例如,连续性水平、闭合特性、周期性、参数域的边界);

    -当几何变换应用于曲线或当曲线的方向反转时,参数如何变化。

    所有曲线都必须具有几何连续性:一条曲线至少为“C0”。通常,在构造时或编辑曲线时会检查此特性。

    如果不是这样的话,文档会如此明确地说明。

    警告:Geom软件包不会阻止构建长度为零的曲线或自相交的曲线。

  • Geom_CylindricalSurface:圆柱曲面

  • Geom_Direction:方向

  • Geom_ElementarySurface:

    描述在局部坐标系中具有简单参数方程的曲面的常见行为。Geom软件包提供了混凝土基本表面的几种实现方式:

    • 平面,以及

    • 四个简单的旋转表面:圆柱体、圆锥体、球体和环面。

    基本曲面继承Geom_surface曲面的常见行为。此外,它通过坐标系(gp_Ax3对象)定位在3D空间中,该坐标系也是它的局部坐标系。

    任何基本曲面都是定向的,即法向量总是被定义的,并在曲面上的任何点为曲面提供相同的方向。在拓扑中,此属性被称为“曲面的外部区域”。此方向与曲面的两个参数化方向有关。

    曲面绕其坐标系“主轴”的旋转,在坐标系“X方向”和“Y方向”给出的三角意义上,定义了基本旋转曲面的u参数方向。这是默认的构造模式。但是,也可以通过反转两个参数方向之一来更改曲面的方向:使用UReverse或VReverse函数来更改曲面上任何点的法线方向。

    警告:基本曲面的局部坐标系不一定是直接的:

    -如果它是直接的,则其定义的三角意义

    “主方向”与由其两个向量“X方向”和“Y方向”定义的三角意义相同:

    “主方向”=“X方向”^“Y方向”

    -如果它是间接的,那么三角意义的两个定义是相反的:

    “主方向”=-“X方向”^“Y方向”

  • Geom_Ellipse:椭圆

  • Geom_Geometry:

    3D空间的抽象类Geometry是Geom包中所有几何对象的根类。它描述了以下情况下这些对象的常见行为:

    -将几何变换应用于对象,以及

    -通过几何变换构建对象(包括复制)。

  • Geom_Hyperbola:双曲线

  • Geom_Line:直线

  • Geom_OffsetCurve:偏移曲线

  • Geom_OffsetSurface:偏移曲面

  • Geom_OsculatingSurface:接触面

  • Geom_Parabola:抛物线

  • Geom_Plane:平面

  • Geom_Point:点

  • Geom_RectangularTrimmedSurface:

    描述曲面(面片)的一部分,该部分受u参数方向上的两个u参数值和v参数方向上两个v参数值的限制。修剪曲面的域必须位于要修剪的曲面的域内。修剪后的曲面定义如下:

    • 基面,以及

    • 在u和v参数方向上限制它的值(umin,umax)和(vmin,vmax)。

    修剪后的曲面是根据基准曲面的副本构建的。因此,当修改基准曲面时,修剪后的曲面不会发生变化。

    因此,修剪后的曲面不一定具有与基准曲面相同的方向。

    警告:曲面被修剪的情况是周期性的,参数值可能在域之外。

    但是,修剪曲面的域可以平移、乘以(nX)周期。

  • Geom_SphericalSurface:球面

  • Geom_Surface:描述曲面在三维空间中的常见行为。Geom软件包提供了许多具体的派生的曲面的实现,如平面、圆柱体、圆锥体、球体和复曲面、线性挤出曲面、旋转曲面、贝塞尔曲面和B样条曲面等。

  • Geom_SurfaceOfLinearExtrusion:线性拉伸面

  • Geom_SurfaceOfRevolution:旋转曲面

  • Geom_SweptSurface:

    描述通过使用另一条曲线扫掠一条曲线而构建的曲面的常见行为。

    Geom包提供了两个派生的具体的曲面:旋转曲面(旋转曲面)和线性挤出曲面(挤出曲面)。

  • Geom_ToroidalSurface:圆环面

  • Geom_Transformation:矩阵变换

  • Geom_TrimmedCurve:

    描述受基准曲线参数域内两个参数值限制的曲线部分(称为“基准曲线”)。修剪后的曲线定义如下:

    • 基准曲线,以及

    • 限制它的两个参数值。

    修剪后的曲线可以具有与基准曲线相同的方向,也可以具有相反的方向。

  • Geom_Vector:方向

  • Geom_VectorWithMagnitude:多个方向

类图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yyKZHJBc-1679207676427)(D:\OpenCASCADE-7.6.0-vc14-64\opencascade-7.6.0\doc\refman\html\class_geom___geometry__inherit__graph.png)]

4、GeomAdaptor

类图说明

  • GeomAdaptor:

    该软件包包含使用算法所需的曲线和曲面的几何定义。

  • GeomAdaptor_Curve

    此类提供了Geom包中任何曲线所提供的服务与使用它的算法对曲线所需的服务之间的接口。

    加载曲线的创建-曲线是分段C1的。

    用于评估的B样条曲线的多项式系数被缓存以获得更好的性能。因此,这些评估不是线程安全的,并且需要防止并行评估。

  • GeomAdaptor_Surface:

    Geom包中任何曲面提供的服务与使用该曲面的算法所需曲面服务之间的接口。

    加载曲面的创建曲面为分段C1的。

    用于评估的B样条曲面的多项式系数被缓存以获得更好的性能。因此,这些评估不是线程安全的,并且需要防止并行评估。

  • GeomAdaptor_SurfaceOfLinearExtrusion:

    通用圆柱体。这个表面是通过在给定方向上扫过一条曲线而获得的。参数U的参数化范围是通过参照曲线来定义的。

    参数V的参数化范围为[-infinite,+infinite]

    曲线的位置给出了参数V的原点。

    曲面在V方向上的连续性为CN。

  • GeomAdaptor_SurfaceOfRevolution:此类定义了一个完整的旋转曲面。

类图

Adaptor3d_Curve
GeomAdaptor_Curve
Adaptor3d_Surface
GeomAdaptor_Surface
GeomAdaptor_SurfaceOfLinearExtrusion
GeomAdaptor_SurfaceOfRevolution

5、GeomEvaluator

类说明:用于计算3D中不同类型Geom的值和导数的接口。适用于适配器和Geom。

  • GeomEvaluator_Curve:
  • GeomEvaluator_OffsetCurve:
  • GeomEvaluator_Surface
  • GeomEvaluator_OffsetSurface
  • GeomEvaluator_SurfaceOfExtrusion
  • GeomEvaluator_SurfaceOfRevolution

类图

GeomEvaluator_Curve
GeomEvaluator_OffsetCurve
GeomEvaluator_Surface
GeomEvaluator_OffsetSurface
GeomEvaluator_SurfaceOfExtrusion
GeomEvaluator_SurfaceOfRevolution

6、GeomLProp

类说明:计算通过在两条其他曲线(或曲线的一部分)的连接点处连接而建立的3D曲线的连续度,某一点的值、导数、切向、法向等。

classDiagra 
GeomLProp:
GeomLProp_CLProps
GeomLProp_CurveTool
GeomLProp_SLProps
GeomLProp_SurfaceTool

7、GProp

类说明:该软件包定义了计算一组点、曲线、曲面、实体(用几何实体分隔的非无限空间区域)、复合几何系统(先前实体的异质组成)的全局属性的算法。

全球财产包括:

  • 长度、面积、体积,

  • 质心,

  • 惯性轴,

  • 惯性矩,

  • 回转半径。

它还提供了一个类来编译一组点的平均点或线。

GProp
GProp_GProps
GProp_CelGProps
GProp_EquaType
GProp_PEquationGProp_PGProps
GProp_PrincipalProps
GProp_SelGProps
GProp_ValueType
GProp_VelGProps

类图

GProp_GProps
GProp_CelGProps
GProp_PGProps
GProp_SelGProps
GProp_VelGProps

8、LProp3d

类说明:与GeomLProp类似

LProp3d_CLProps
LProp3d_CurveTool
LProp3d_SLProps
LProp3d_SurfaceTool

9、TColGeom

对不同类型的列表进行重定义

10、TopAbs

类说明:该包为面向拓扑的应用程序提供资源,例如:拓扑数据结构,

拓扑算法。

它包含:

  • ShapeEnum枚举用于描述不同的拓扑形状。

  • 用于描述拓扑形状方向的Orientation枚举。

  • 用于描述点相对于形状的位置的状态枚举。

  • 管理枚举的方法。

TopAbs
TopAbs_Orientation
TopAbs_ShapeEnum
TopAbs_State
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值