occt关键内容摘要(二)

数据结构分析

数据结构,指的是数据元素之间的相互关系,尤其是数据的逻辑结构。

三种数据包括:二维几何数据、三维几何数据和拓扑数据。

1.数据结构模块的整体框架

数据结构模块的组成及其各工具箱提供的服务
数据结构模块
几何工具                       二维几何                        三维几何                                 拓扑
1.插值和逼近            1.二维几何类型           1.三维几何类型                1.保持 Shape 定位轨迹  
2.Shape 的直接构造 2.二维的集合容器        2.三维的集合容器            2.Shape和SubShape的处理
3.B样条转换             3.二维适配器                3.三维适配器                   3.拓扑数据结构的访问
4.极值计算                4.拓扑类型和拓扑方向 4.曲线和曲面的局部特征  4.Shape列表和Shape图


2.二维几何数据结构

二维几何数据结构的理解难点在于拓扑类型、拓扑方向和拓扑状态的理解。

a.二维空间上几何对象的数据结构,主要由Geom2d包提供。

        Geom2d 包提供的这些对象是非持久的,并且是通过引用而不是通过数值处理的。复制一个实例,只是将句柄拷贝而已,对象没有被拷贝。因此,对一个实例(对象)的改变,将在所有引用它的地方发生改变。如果需要的对象不是单一的,而是一系列的,那么 TColGeom2d 包将提供必要的功能。该包为通用类中那些标准和经常使用的实例化提供几何对象。

TColGeom2d 包为来自 Geom2d 包的曲线提供一维数组、二维数组和序列的实现。所有这些对象能以两种不同的方式处理:句柄处理和数值处理。

b.TopAbs 包

        TopAbs 包提供通用枚举类,用来描述拓扑学基本概念和处理枚举类的方法,不包含具体类

enum TopAbs_ShapeEnum

{

 TopAbs_COMPOUND,        //复合体由不同拓扑类型对象组成的整体

TopAbs_COMPSOLID,        //组合实心体由几个通过面连接的实心体组成它将线框和壳的概念延伸到实心体上。

TopAbs_SOLID,                 //实心体 由壳限制的空间的一部分。它是三维的

TopAbs_SHELL,                //壳 由几个面(通过边连接)组成。壳可以是开放的,也可以是封闭的

TopAbs_FACE,                 //面 在二维中,它是平面的一部分。在三维中,它是曲面的一部分;它的几何结构由构造函数决定;它是二维的

TopAbs_WIRE,                //线框 由一组边(通过定点连接)组成。它可以是开放的,也可以是封闭的,这取决于边是否彼此相连

TopAbs_EDGE,                / /边 与约束曲线对应的拓扑元素。边通常由顶点限制。它是一维的。

TopAbs_VERTEX,                //顶点 与点对应的拓扑元素。它没有维度。

 TopAbs_SHAPE                //Shape 包含以上所有类型的通用术语。

};

c.拓扑方向
        拓扑方向的概念由 TopAbs_Orientation 枚举类描述。在许多建模器里都用到了方向

enum TopAbs_Orientation

{

TopAbs_FORWARD, //前面

TopAbs_REVERSED, //后面

TopAbs_INTERNAL,//里面

TopAbs_EXTERNAL //外面

};

需要用到拓扑方向的三种 Shape 有:由顶点限制的曲线、由边限制的曲面和由面限制的空间。

d.拓扑状态

enum TopAbs_State

{

TopAbs_IN,        //点在内部

TopAbs_OUT,     //点在外部

TopAbs_ON,        //点在边上

TopAbs_UNKNOWN        //拓扑状态不明

};

3.三维几何数据结构

        三维几何对象的数据结构主要由 Geom 包提供。

        Geom 包包含了所有的基本几何转换(如等价、旋转、平移、镜像、缩放和复合变换等)。另外,Geom 包也提供了一些基于几何对象引用定义的特殊函数(如在 B 样条曲线上增加一个控制点,对曲线进行改善等)。

        Geom 包中所有几何实体都是以 STEP 方式处理的。包中可实现的非持久的通过句柄处理的对象有:点、笛卡尔点、向量、方向具有幅值的向量、轴、曲线、直线、圆锥、圆、椭圆、双曲线与抛物线、基本曲面、平面、边界曲线与边界曲面、裁剪曲线与裁剪曲面、非均匀有理化 B 样条曲线与曲面、Bezier 曲线与曲面、圆柱面、球面与螺旋面、扫描曲面、线性挤压曲面、旋转曲面、偏移曲面。对于每一条曲线(具有一个参数),其局部特征有:点、导数、正切、法向量、曲率和曲率中心。对于每一个参数,曲面(具有两个参数)的局部特征有:导数、切线、曲率中心、点、法向量、最大曲率、最小曲率、曲率的主方向、中间曲率和高斯曲率。另外,GeomLProp 和 Geom2dLProp 包提供了一些描述算法的类。

TColGeom 为那些来自 Geom 包的曲线和曲面提供一维数组、二维数组和序列的实现。

4.拓扑数据 结构

        拓扑数据结构定义了参数空间中对象的数据结构。由拓扑工具箱提供五种服务:保持 Shape 位置轨迹,Shape、SubShape 以及它们的拓扑方向和拓扑状态的命名,Shape 和 SubShape 的处理,访问拓扑数据结构,以及使用Shape 列表和 Shape 图。

        CLProps 这个函数计算了曲线的局部特征(正切、曲率、法向量和扭矩)。它在二维上计算曲率极值和变形点。SLProps 这个函数计算了曲面的局部特征(切线、放向量和曲率)。Continuity 这个全局函数计算了两曲线连接处的平滑性。

a.保持 Shape 位置轨迹
        可以将 OCC 的局部坐标系可以看作以下两者之一:
(1)具有一个原点和三个标准正交向量的右手三面体。这个定义由 gp _Ax2类提供。
(2)由 a+1 决定的转换,它允许我们在局部引用框架和全局引用框架间进行坐标转换。这个定义由 gp_Trsf 类提供。

b.Shape 和 SubShape 的处理

       [1]  由 TopoDS 包提供,TopoDS 包描述了具有以下特征的拓扑数据结构:
        (1)对没有拓扑方向也没有位置的抽象 Shape 的引用
        (2)通过工具类对数据结构的访问。
        TopoDS 包是基于 TopoDS_Shape 类和那个定义了自己下层 Shape 的类的。TopoDS 包提供了两套类:一套由下层 Shape(既没有拓扑方向也没有位置)派生;另一套则由 TopoDS_Shape(与 TopoAbs 包中列出的标准拓扑 Shape 一致)派生。

        [2] TopoDS_Shape 类

        TopoDS_TShape 类是所有 Shape 描述的根类,包含一个 Shape 列表。该类是通过引用处理的 。Shape 的特殊信息总是由 TopoDS_TShape 的派生类的派生类添加。TopoDS_TShape 类是不可见的、是推迟类、是通过引用处理的。

        TopoDS_Shape 类它包含一个指向下层抽象 Shape 的引用、一个拓扑方向和一个引用坐标。该类是通过数值处理的,因此不能被共享。  TopoDS_Shape 类通过数值处理 。TopoDS_Shape 的派生类没有构造函数。TopoDS 包提供了能够通过类型匹配,将 TopoDS_Shape 类的一个对象抛掷给 TopoDS_Shape 派生类的一个对象。  

TopoDS_Shape aShape;        

TopoDS_Vertex v1 = TopoDS::Vertex(aShape);

一个Shape模型是一个可共享的数据结构,因为它可以被其它Shape使用。可共享的数据结构是通过引用来处理的。若一个简单引用不够充分时,需要增加两个信息:一个拓扑方向和一个局部坐标引用。拓扑方向 描述被引用的形状如何在一个边界使用。一个局部引用坐标(Location from TopLoc)允许程序员在 Shape 的定义位置之外引用该 Shape。

        [3]拓扑数据结构的访问

        TopExp 包提供了一些工具。 TopExp_Explorer 类用来找到指定类型的所有子对象 ,用来访问由 TopoDS 包描述的数据结构。例如,找到实心体的所有面。

        a.MapShapes ,用来收集一个 Shape 的子图对象。

        b.MapShapesAndAncestors,用来收集子对象和包含子对象的对象;

        c.FirstVertex、LastVertex 和 Vertices 这三者用来寻找边的顶点。

标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值