收藏 分享(赏)

基于mfc与opengl的光学非球面仿真.doc

上传人:cjc2202537 文档编号:237504 上传时间:2018-03-24 格式:DOC 页数:10 大小:98KB
下载 相关 举报
基于mfc与opengl的光学非球面仿真.doc_第1页
第1页 / 共10页
基于mfc与opengl的光学非球面仿真.doc_第2页
第2页 / 共10页
基于mfc与opengl的光学非球面仿真.doc_第3页
第3页 / 共10页
基于mfc与opengl的光学非球面仿真.doc_第4页
第4页 / 共10页
基于mfc与opengl的光学非球面仿真.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、基于 MFC 与 OpenGL 的光学非球面仿真机电技术2009 年第 4 期计算机技术应用基于 MFC 与 OpenGL 的光学非球面仿真车张世汉郭隐彪王哲(厦门大学机电工程系,福建厦门 361005)摘要:本文研究了基于 MFC 和 OpenGL 的光学非球面仿真平台的设计方法 ,给出了 MFC 下对话框控件中绘 SU-维图形和 OpenGL 绘U-维图形的一般方法和步骤 ,实现了对轴对称非球面,非轴对称非球面的仿真以及非球面测量数据的读取与显示.关键词:光学非球面 YFCOpenGL中图分类号:TH126.2TP391.9 文献标识码:A 文章编号 :16724801(2009)0400

2、804引言由于非球面在简化光电信息采集系统的结构和减小系统的尺寸和重量等方面有显着的作用,因此非球面系统在军用和民用光电仪器中得到越来越广泛的应用“.在光电系统中常用的非球面主要有:轴对称非球面,非轴对称非球面,复曲面,柱面等.轴对称非球面光学元件可以获得球面光学元件无可比拟的良好的成像质量,可提高光电系统的鉴别能力,在军用和民用光电产品中应用广泛,是光电系统中的重要零件;非轴对称非球面光学元件可以克服光学系统中的各种象差,广泛用在导弹跟踪扫描,雕刻机,激光打印机等精密设备中.本文针对这两种非球面设计仿真软件,为直观反映非球面的形貌,检验测量数据正确性提供一个有效的工具.MFC 是 Micro

3、softFoundationClasses 的简称,它是 VC 十+ 中直接由 Microsoft 提供的类库,封装了大部分重要的数据结构以及 API 函数调用.配合以 VC+提供的 AppWizard 可以创建应用程序框架,使用 ClassWizard 建立应用程序类,数据处理,消息处理函数或定义控件的属性,事件,方法.GDI 是 GraphicsDeviceInterface 的简称,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有 Windows 程序的图形输出.OpenGL 是一个开放的三维图形软件包,它独立于窗口系统和操作系统.以 OpenGL 为基础开发

4、的应用程序可以十分方便地在各种平台间移植.OpenGL 可以与 YisualC+紧密接口,实现复杂曲线曲面建模和三维图形变换.本文提出基于 MFC 和 OpenGL 的光学非球面仿真系统,该系统利用 MFC 中对话框控件配合 GDI 绘图函数实现二维图形的绘制,利用 0penGL 实现了三维曲面的仿真以及测量数据的读取和显示.1 非球面方程及参数光学系统中常用具有近轴区的轴对称非球面表面,在该表面中心点是连续的,该点的切线垂直于它的轴线.式(1)表示轴对称回转非球面的普遍公式:z()亍三专赢+口,IJ+L+口 Ixl()式中,X 为离非球面轴的径向距离;Z 为相应的垂直距离;C 为顶点曲率 c

5、=1/Ro,Ro 为顶点曲率半径;足为二次常数;a 为多项式系数.设 e为偏心率,=0,一,变换式(1)可得到式(2).式(2)为二次曲线方程 ,根据 e 的不同取值可生成不同的二次曲线.=2Roz 一(1 一 e2)z.(2)二次曲线也可从圆锥体上用平面截取,因此又称为圆锥曲线.如图 1,为圆锥半顶角;为圆锥顶点到截点的距离;为截面与圆锥轴线的夹角.R0,e 与 L,的关系:图 1 圆锥截取二次曲线木基金资助:福建省科技重大专项/专题资助(2006HZ00024):厦门市科技计划项目资助(3502Z20083010).8计算机技术应用机电技术2009 年第 4 期I:Lsin(otansin

6、oc(cotof+cot)cos(3)Ie=COSsec=LCOS由式(3)可知, 只要知道圆锥截取参数 L,仅,就可以计算出 R0,e,再利用式(2)就可以得到给定的二次曲线方程.非轴对称非球面镜则具有两个对称面,其通用方程如下:y(x,z)=一 R+,JR+1=(4)1+41 一 (1+k)CZ式中:RS-R 十 A+Bx+C+D+Em+;G=I/R,;Rx 为非球面主轴基础半径;尼为非球面副轴基础半径;R 为非球面副轴半径;A,GDJEF为非球面副轴系数;k 为非球面系数.综上,轴对称非球面由于具有回转特性,可用其子午截面图描述.因此采用 VC+的绘图函数进行图形绘制,只需对式(1)(2

7、)(3)所描述的二次曲线进行采样连接,就可绘制出子午截面图像.而非轴对称非球面由于不具有回转特性,则需采用 OpenGL 描绘其三维图形.2 图形显示编程框架2.1MFC运行 0penGLVC+与 OpenGL 图形显示程序框架的建立步骤如下:(1)利用 MFCAppWizardexe新建一个单文档应用程序,命名为 Aspheric,将其基类改为CFormView.在 CMainFrame 中声明一个提供创建分区窗口功能的 CSplitterWnd 类对象m_wndSplitter,编写 CMainFrame 中的OnCreateC1ient 事件处理程序 ,先创建为一行两列的面板,再为它们指

8、定各自的视图区,分别作为数据输入区和图形显示区.(2)新建用于数据输入的对话框,为其创建一个新的类 CInput,基类设为 CFormView.根据式(4)的未知参数,插入和编辑所需的静态文本控件和编辑框控件,然后通过 ClassWizard 添加编辑框控件对应的成员变量.(3)建立用于显示三维图形 CRenderView 类,加入 OpenGL 链接库,对 OpenGL 进行必要的初始化设置,如:修改窗口风格,设置像素格式与创建渲染场境等;同时添加在释放窗口之前清除渲染场境的函数;添加 WMSIZE 消息的映射函数OnSize0,加入处理视图尺寸变化的代码.完9成以上工作后,就可以对函数 O

9、nPaint0 进行编写,添加 OpenGL 绘图代码,处理屏幕显示.(4)打开“添加窗口消息句柄“,选择鼠标左,右键,滚轮对应的响应事件,编写图形绘制区的鼠标事件处理程序,实现鼠标对图像的拖曳,旋转,缩放功能.2.2VC+对话框绘图程序框架VC+对话框绘图程序框架的建立步骤如下:(1)在 Aspheric 工程中新建一个对话框类Cdrawzdc.根据式 (1)(2)(3),添H_- 个组框控件,每个组框控件对应一组参数输入,添加相应的静态文本控件和编辑框控件用于标识和数据输入.修改各编辑框控件 ID,并在 ClassWizard 中添加其对应的成员变量.在每个组框控件前放置一个单选按钮控件,

10、同时选中它们并将属性中“组“选项勾起,利用 CIassWizard 添加单选按钮控件成员变量 mix,并在 OnInitDialog0 函数中初始化单选按钮控件选中情况.添加一个图像控件,将其拉伸至适当大小,ID 改为 IDCPic,勾起“样式“ 栏中的 “通知 “选项,使控件可以接受外部消息,该图像控件用于二维图形的显示.(2)修改 OnPaint0 函数,利用 GetDlgItem0获取 IDCPic 的控件指针,进而用 GetDC0 获取控件 DC,用 GetClientRect()获取图形控件矩形区域作为绘图区.然后设置绘图模式为MMISOTROPIC,设置好视口,窗口尺寸及视口原点,

11、窗口原点.(3)为三个单选按钮添加对应的成员函数,利用 EnableWindow0 函数实现点击单选按钮激活对应组框内控件的功能,同时赋予变量 mlx 对应值.为对话框添加一个按钮控件,为其添加一个成员函数 OnDrawZDC0,该函数自动判断 mix 的值从而调用不同的函数实现对应组框内数据的读取,计算和图形显示.3 非球面仿真程序设计3.1 轴对称非球面仿真(1)建立直角坐标系在 Cdrawzdc 类的 OnPaint0 函数中添加代码,获取控件 IDCPic 的矩形绘图区域,设置绘图模式,视口,窗口属性等.新建实线画刷,利用 MoveTo0 及 LineTo0 函数绘制网格背景及 X-Y

12、坐标轴,利用 TextOut0 函数标注坐标刻度 ,原点.机电技术2009 年第 4 期计算机技术应用(2)曲线点采样曲线采样点坐标(X,Y)可用二维结构体数组存储,定义名为 Point 的结构体 ,内含两个浮点型变量 x,Y.声明 Point 的两个数组变量 plM和 p2M,分别用于存储0 和0 时的采样点坐标.以式(1)为例,当 X0 时,令 pli.x=i,由式(1)分别循环计算第 i 个采样点对应的pli.Y 的值,即获得所需采样点坐标(pli.X,p1i.y).当 X0 时,可采用同样的方法得到第 j 个采样点坐标(p2j.x,p2j.Y).(3)曲线绘制曲线的绘制比较简单,利用

13、MoveTo0 和LineTo0 函数将获得的采样点坐标依次连接起来即得到所需的曲线.如图 2 所示,在面板左边输入高次非球面参数值,点击“绘图“ 按钮,即可在右边的图形控件得到曲线图像.式(2)和(3) 的曲线点的采样及图像绘制原理类似,不再赘述.图 2 轴对称非球面仿真图 3 非轴对称非球面仿真3.2 非轴对称非球面造型(1)曲面点采样10三维曲面采样点坐标(X,Y,Z) 可用三维结构体数组存储,定义名为 Points 的结构体,内含三个浮点型变量 X,Y,Z.以第一卦限为例,声明 Points 的一个数组变量 ptMN,用于存储采样点坐标.由公式(4)利用双重 for 循环,计算当 pt

14、ij.x=i,ptij.y=j 时ptij.Z 的值,得到采样点坐标 (ptij.X,ptij.Y,ptij.z).同样,曲面在其他卦限的采样点可以通过重复上面的方法得到.(2)绘制三维网格绘图的时候,用线段连接相邻两点,形成网格模式,这种方式图像直观,立体感强.OpenGL中有关图形绘制的程序均置于 glBegin0 及glEnd()函数对中,在该函数对中可以设定线形,线宽,颜色等参数.glVertex3f0 函数用来连接两个三维点,设变量 step 为网格最小边距,利用双重 for 循环将点 :(ptij.X,ptij.Y,ptiJ.Z),(pti+stepj.x,pti+stepj.y,

15、pti+step 儿 j.Z),pti+step 儿 j+step.x,pti+step 儿 j+step.Y,pti+stepJlj+step.Z),(ptij+step.X,ptij+step.y,ptij+step.Z)依次用线段两两连接 ,从而得到第一卦限的网格曲面.同理,读取其它卦限的采样点坐标值,采用同样的方法,可以画出整个三维曲面的网格视图.(3)建立空间直角坐标系空问直角坐标系的绘制比较简单,坐标轴采用直线绘制,箭头用小三角形表示.非轴对称非球面的仿真如图 3 所示.3.3 非球面测量数据显示高精度非球面测量仪测得的坐标数据可保存为文本格式,每行对应一个测量点坐标(X,Y,Z)

16、,xt,Yt,Z 问用空格隔开 .为了读取测量点坐标文件,需要利用文件选择对话框.构造CfileDialog 类的一个对象 fieDlg,设定其为打开对话框,默认的文件扩展名为 txt,指明可供选择的文件类型和相应的扩展名;建立一个存储数据的指针数组*pBuffer,将读取的坐标数据存入该缓冲区,并用 SetWindowText0 函数显示在数据输入区的对应文本框控件中;构造CstdioFile 类的个对象 filel,用 ReadString0 函数逐行读取坐标数据,获得数据的行数 LineNum,以确定储存数据的动态数组的大小;定义存放坐标数据的动态数组 pOriginX,pOriginY

17、,计算机技术应用机电技术2009 年第 4 期pOriginZ,并对数组清零;利用 ReadString0和 Sscanf0 函数按行将坐标数据依照空格进行分割并循环存储至动态数组中.最后在OpenGL 中将测量点集用点阵的方式显示出来.图4 是利用高精度非球面测量仪测得的条形光滑非球面的测量数据仿真图,可通过放大,平移,旋转观察所测非球面面形.图 4 条形光滑非球面3.4 软件界面设计本文利用 MFC 和 OpenGL 建立的非球面仿真平台界面如图 5 所示.界面左边为数据输入区,从上至下依次为轴对称非球面参数,非轴对称非球面参数及外部坐标数据输入.右边为三维图形显示区,它和弹出的对话框绘图

18、区一起,实现了对非球面的仿真和外部坐标数据的读取和显示.4 总结本文对基于 MFC 和 OpenGL 的非球面仿真平台进行了研究和探讨,总结归纳出了实现的一般方法霪 1rIl_ 一一一 ._ll 鼎躐蝴豁箍醢蕊|i 眷警毫|三誊薯 j|-:|尊|i 鼍 0|蠢畴 i0l_t%嚣一穗|誓;l.II|00图 5 非球面仿真平台界面和步骤,详细研究了 MFC 和 OpenGL 在曲线,曲面绘制方面的功能.目前本平台可以实现对各种方程描述的光学非球面的仿真,以及高精度非球面测量仪测量数据的三维显示.鉴于 VC+良好的接口特性以及 OpenGL 强大的图形显示功能,该平台可以方便的整合到非球面加工软件系

19、统之中,发挥更大的作用.参考文献:1辛企明.光学塑料非球面制造技术M.北京:国防工业出版社,2005.2潘君骅.光学非球面的设计,加工与检验M.苏州:苏州大学出版社,2004.3费广正,乔林 .Visualc+6.0 高级编程技术.OpenGL 篇M. 北京: 中国铁道出版社,20004王清辉,王彪 .Visualc+CAD 应用程序开发技术M.北京:机械工业出版社,2003.5程飞.Vc+与高等数学整合一例J.安徽教育学院.2005,23(6):5963.6孙鑫,余安萍 .VC+深入详解 M.北京:电子工业出版社,2006.作者简介:张世汉(1986 年一),男,硕士研究生,主要研究方向:超精密加工与检测技术.通讯作者:郭隐彪(1962 年一),男,工学博士,教授,研究方向:精密超精密加工,光机电一体化,数控技术.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报