OOD在光学系统CAD中的应用
1引言
有关共轴球面光学系统摘助设计的算法已发展得相当完善,但对于非球面或非共轴系统,不断有新的思想和算法提出.尽管这些新算法大多以传统的共轴球面计算体系为基础,但由于目前光学设计程序大都采用传统编程技禾舞对于算法的稍许变动和扩充,就必须将程序源代码完全推倒,重新书写。此外夕在光学计算中大彝啤用向最和矩阵的操作,传统的程序设计与其算法的数学描述相差甚远,给修改和维护带来很大麻烦。本文将介绍一种全新的程序设计方法…面向对象设计方法(object一oriented Design:ooD).
所谓的对象就是把数据结构和对数据进行操作的过程融为一体的一个逻辑实体,而面向对象则是以模型抽象和抽象数据类型为基础概念,以信息隐蔽为基本观点,以继承机制为基本抽象机制,以动态连接为其灵活特征的程设计方法。面向对象方法学认为:客观世界是由许多不同种类的对象构成,每个对象都有各自的内部状态和运动规律,不同对象间的相互联系和相互作用便构成了客观世界.所以面向对象程序设计(ooP)不同于传统的函数式程序设计(FP)—将计算过程看作为函数作用过程,而将计算过程看作为分类过程加状态变换过程。它所具有封装性继承性、多态性等特征使其完全达到软件工程学模块化:信息隐蔽,弱祸合度,强内聚度,可扩充性的各项要求。面向对象方法成为由传统“瀑布型”的对系统分析、设计和实现的方法所不能解决的“软件危机”之突破],它在光学系统CAD中的应用,将使我们得到能扩充、复用并极易维护的程序源代码.
下面以BOrlandC++3.0为语言蓝本,从光路追迹和数值分析两方面讨论ooD在其中的实现.
2光路追迹
光线追迹的目的是:在已知光学系统结构参数,孔径光栏与物体的位置、尺寸条件下,通过选取不同的光线,得出它们的轨迹,并由此计算各类像差,这一过程将得到以下几组表(见表1和表2):
为了实现程序设计的模块化,数据信息隐蔽和局部化,我们将透过镜面(光线通过不同介质的折射面)的光线数据和对其进行操作的函数进行封装,建立镜面类,并用双向链表这一数据结构把光学系统结构—一组镜面对象连续起来.
2.1球面共轴
在球面共轴镜面类中,Paraxjalproc~r函数是处理旁轴光线的,由于十分简单,这里不作讨论。让我们看一下处理空间光线转面的Processor函数,如图1:当前镜面对象利用链表调用上一镜面对象得到光线坐标矢量To,光线方面矢量q。,经过Processor函数处理把坐标原点平移到当前镜面顶点,并计算出经当前镜面折射后的光线坐标矢量T1与光线方向矢量q1.
相关文章
- 2023-12-21基于SolidWorks的深孔件冷挤压工艺设计
- 2024-09-17一种索支撑柔性结构轨迹跟踪控制方法
- 2023-12-26基于EdgeCAM的数控加工技术在模具加工中的应用
- 2023-10-27光电跟踪测量系统中调光机构的设计
- 2024-01-26常压储罐声发射及漏磁检测技术
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。