编辑: 丑伊 2019-07-06

当选择三 维图形显示时 ,系统则将曲面数据转化成三维 图形显示 ,通过旋转、 缩放等相应操作 ,还可从 不同角度观察图形 ,也可形成磁盘文件. 当选择历史数据回放时 ,数据来源改道历 史数据库.通过数据库访问技术 ADO( ActiveX Data Objects) ,从历史数据库中读取风箱温度检 测的历史数据 ,再进行数据处理及图形展示.

212 关键技术的设计

21211 系统数据 API 接口的设计 为实现烧结风箱温度状态显示 ,系统必须 实时调用过程控制系统中的检测数据 (风箱温 度数据) ,来快速生成相应的图形.由此 ,有必 要设计一组软件数据接口 ,来实现这一数据通 信.为此 ,本系统专门设计了一套动态链接库 , 库中封装了一组公共函数及共享数据缓冲区. 通过调用其中的函数功能实现数据交换 ,而共 享数据缓冲区则用于交换数据的存储.系统数 据API 接口采用 Visual C + + 语言开发 ,由主模 块程序与定义模块程序两部分组成 ,具体实现 原理如图

2 所示. 图2数据接口原理框图

21212 二次抛物插值算法的实现 为了精确地再现整个烧结过程的温度状 态 ,从理论上讲 ,只有在烧结风箱中尽可能多地 布置温度检测点 ,但这种做法通常是不现实的 , 情况也不允许.我们只能通过烧结风箱中适量 的温度检测点 ,再利用数学上的插值方法来添 加足够多的计算点 ,以完成对烧结温度状态图 的仿真显示. 为确保计算出的插值点尽可能地接近真实 值 ,我们采用了曲线的最佳拟合技术 ,即数学上 称为多项式的最小二乘曲线拟合.我们知道 , 为实现烧结风箱温度的三维显示 ,采用二次抛 物曲线插值算法能很好地满足温度场这一特性 要求. 二次抛物曲线插值的基本原理是 ,通过函

0 2 烧结球团第32 卷第6期数曲线上的三个点作一抛物线 ,用它来代替该 曲线 ,再根据设定的插值点个数 ,在抛物线上相 邻两点之间等间距取值 ,完成插值点计算.如图3所示. 图3二次抛物插值原理 由图

3 可以看出 ,经过二次抛物插值算法 处理后的数据会成倍增加 (具体与插值点数有 关) ,其形成的烧结温度状态曲面精度也随之大 大提高.

21213 三维图形的自由旋转 通常 ,三维图形仅仅显示是不够的 ,我们还 需要从各个角度对其进行观察 ,以便更好地理 解图形的形态 ,形成更为直观的感性认识.一般,我们用鼠标的拖动来实现图形的旋转 ,就好 像手握一个包含图形的虚拟球一样.按一下鼠 标 ,即在这个虚拟球上确定了一点 ,而拖动鼠标 就是移动那个点 ,这样就实现了对虚拟球的旋 转 ,同时达到旋转图形的目的. 我们假定这个虚拟球的中心位于显示窗口 的中心 ,这样球的一半则位于显示屏以外.我 们将鼠标点击的点定义为外半球上的点.这样,对应的屏幕坐标与三维图形坐标的映射关 系可表示为 : ( x , y) ∝ R・ x x

2 + y

2 , R・ y x2 + y2 ,0 x2 + y2 >

R x , y , R2 - x2 - y2 其它 (1) 其中( x , y) 是以球心为原点的屏幕坐标 , R 为 球的半径. 在球上给定起点和终点后 , 接下来需要确 定图形旋转的轴和角度.从图

4 中可以看出 : 旋转轴是两个鼠标矢量 ( m1 和m2) 所组成的平 面的法向量 , 通过求 m1 和m2 的叉乘可以得 到 ,而旋转角度就是 m1 和m2 之间的夹角 α. 这样就可以实现图形的自由旋转. 图4虚拟球旋转示意图

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题