英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料
基于MFC编程框架的视景仿真系统设计
摘要
本文的主要目的是为了提高可操作性、动态可配置性和视景仿真系统的功能集成度,提出将Vega Prime整合进MFC编程框架的方法,以及如何转发到基于MFC从Vega Prime的窗口传递的消息到应用程序的消息循环。
此外,对模拟系统中开关多个场景进行了详细介绍,以及如何设计基于MFC编程框架功能模块,并对于配置视景仿真系统的基本原理进行了分析。基于上述的方法和面向对象的技术的基础上,建立了场景仿真系统。这种设计方法对于视景仿真系统的有很大的优势:视景仿真系统具有良好的可扩展性;软件的结构更简单和灵活;这种架构的软件的通用性好。得到的效果是在实际应用中是十分有效的。
关键词:情景模拟,MFC,Vega Prime,模拟过程主要控制过程
I. 简介
Vega Prime(下面用VP表示)通过MultiGen中的公司开发的,它是用于场景仿真主要的软件开发的工具。 VP提供类库给C (应用编程接口),用于现场类库渲染基于VSG(Vega的场景图),它包含不同的应用领域的许多可选模块。 VP可以改善场景模拟的开发效率,减少代码的复杂性。通常,在Windows平台上运行由VP开发的模拟应用程序主要包括三种类型:Win32控制台应用程序,Windows的应用程序和MFC的应用程序(微软基础库)。 MFC是C 的一个完美的类库,它可以有效地提高软件的开发效率。 VP也是一个类库,它与C 和STL的类库完全兼容(标准模板库)也由MFC支持,因此,基于MFC程序开发VP视景仿真是一个正确的选择。
建立基于MFC的良好性能的场景仿真系统的方法,对文档/MFC视图原理基础上的ARMFC的结构如何构建场景仿真系统进行了深入的研究。这分析了现场仿真系统设计中存在的问题。同时介绍了现场仿真系统的关键技术。对如何转发来自Vega Prime窗口的消息提出了应用程序主控程序窗口和多个场景切换的窗口。同时在上述基础上,构建了基于上述的场景仿真系统框架方法。
II. 基于MFC的视景仿真应用程序设计
MFC 中包含了Windows API的大部分功能。它可以减少用户编程的工作量,提高代码的可重用性。基于MFC的文档/视图的应用程序框架是一个相当重要的开发应用程序窗口的架构。在本文中,应用程序的场景仿真开发使用这种架构。场景仿真系统的关键技术如下:
A.场景仿真系统的整体架构
为了提高模拟平台的灵活性,我们将场景仿真系统分为若干功能模块,分别设计各个模块。我们可以修改任何模块,而不影响其它模块。该软件的设计模式可以提高系统的可扩展性和可维护性。在视景仿真系统的运行时,可以由用户通过键盘和鼠标来控制。此外,多个模拟场景不能交换使用多线程动态技术由于VP自身的问题原因。因此,多进程技术系统总体结构采用了系统的总体结构:主控制过程和模拟过程。主要任务是:控制过程的开始、结束,视景仿真系统退出、配置,场景切换、管理者,显示模拟参数等。基于VP的仿真程序的任务是:场景渲染、碰撞检测、SCegrave;NE遍历等。场景仿真系统和主控制处理和模拟处理之间的相互作用模式的整个结构被示于图1。为了保持情景模拟的所有功能模块的完整性,各个功能模块尽可能的在一个单独的类中实现。系统主要功能模块如图2所示。可以知道每个模拟的场景都有它自己的模块所有模拟场景的初始化和配置以及显示模块和其他功能模块都是公开的。考虑到共性和差异性不同的模拟场景,本设计采用保持不同模块耦合小、凝聚力强的尽可能是视景仿真系统模式。
B. 基于MFC框架的V呼叫
通过以上分析,可以知道整个模拟系统是由两个过程组成的,它们之间的通信方式是由消息传递完成的。然而,如何整合过程实现基于MFC框架VP呼叫是模拟系统的建立主要任务。图3显示了它的流程图,一些关键代码如下,并且类CSimuSystemView可用于显示某模拟场景。
CSimuSystemView::OnCreate (LPCREATESTRUCT lpCS)
{
.
.
.
Class of CInitApp is used for configuring corresponding
simulative scene.
m_pInit=new CInitApp
.
.
.
VP is initialized.
vp::initialize(argc, argv);
Completion of definition.
m_pInit -gt;define(*.acf);
VP is configured.
m_pInit-gt;configure();
.
.
.
The window of VP is gotten.
vpWindow *vpWin=*vpWindow::begin();
Setting paternal window of window of VP.
vpWin-gt;setParent(m_hWnd);
.
.
.
Setting of timer.
SetTimer(ID, t, NULL);
}
Cycle of frame of VP based on timer.
CSimuSystemView::OnTimer(ID, nIDEvent)
{
.
.
.
vpKernel::instance () -gt;beginFrame();
.
.
.
vpKernel::instance ()-gt;endFrame();
.
.
.
}
C. 主要控制过程与模拟过程之间的相互作用
在这项研究中,消息被用为两个过程之间的相互作用的主要模式。当模拟过程呼叫主要控制过程,来自VP窗口的信息将根据下列在一些关键代码中描述的过程来处理。m_pWindow 是一个可变的VP窗口。消息的响应函数声明。
m_pWindow-gt;setUserMessageHandler(vrWinMsgHandler)
Definitions of response function of message.
vrWinMsgHandler(param1, param2, hellip;)
{
Switch (identifier of message)
{
case vrWindow:: certain type of message
{
.
.
.
Call of main control process.
.
.
.
}
}
vrWin-gt;defaultMessageHandler(param1, param2,hellip;)
}
主控制过程中的消息可用于通过类的静态成员变量来配置虚拟样机的仿真过程。其基本过程是:(1)消息来自主控制控制过程的处理消息的响应函数;(2)在消息的响应函数中,静态成员变量被改变;(3)静态成员变量的变动被传递到模拟过程。
D. 模拟系统的功能模块设计
从图1和图2中,我们可以知道,这个场景模拟系统包含许多独立的模块。为了减少不同功能模块之间的影响,所有模块尽可能的都封装到一个类里面。以以下模块为例,该类的主要成员变量和函数如下:
1)Definition for coordinates of position of observer.
float m_CoordinateX, m_CoordinateY, m_CoordinateZ.
2)Definition for attitude angle of observer.
float m_YawAngle, m_PitchAngle, m_RowAngle.
3)Definition for distance between observer and certain simulative object. float m_DistanceX, m_DistanceY, m_DistanceZ.
4)Definition for indicative flag.
bool flag1, flag2, hellip;, flagn.
5)Definition for variable of some edit control ,button control and list control.
CEdit m_CoordinateControl, hellip;, m_AttitudeControl.
These controls are used for configuring position, attitude and so on dynamically.
CButton m_DynamicandStaticControl, hellip;, m_ExitControl.
These controls are used for switch between dynamic
and static configuration of observer, exit of dialog and so on.
CListCtrl m_SimulationObjectControl.
This control is used to determine that which simulative
objects will be seen carefully.
6)Definition for some response function of message.
void OnBnClickedDynamicandStaticSetButton().
void OnBnClickedOk().
.
.
.
这些响应函数是用来处理相应的配置,状态的观察等。
E. 多个模拟场景的切换
在场景仿真系统中,需要动态切换多个模拟场景来提高系统的集成度。在本文中,主窗口类的成员函数(CMainFrame)为开关创建不同的模拟场景。不同模拟场景的切换通过相应窗口的视图实现。这种软件设计模式的目的是通过视图窗口切换到的旧场景的析构函数,并分配新的资源,通过窗口的视图切换在构造函数的新场景完全配置。这个基本过程如图4所示。
F. 场景仿真系统的运行过程
基于上述方法的综合场景仿真系统就可以建立起来了。它的基本运行过程可以概括为五个步骤:
1)场景仿真系统根据默认配置启动运行。
2)模拟现场系统是基于消息传输的原理动态来配置的。该配置包括:为模拟对象的动生参数等的视场的设置,特殊效果的管理和显示。
3)不同模拟场景开关。
4)可以根据实际需求配置新的模拟场景。
5)模拟系统或切换到其他仿真场景的出口。
一些场景仿真系统的运行结果如下图所示。图5是整个场景仿真系统的整体运行结果。图6是运行管理中模块的结果,和通过静态成员变量的控制模拟的过程的分析。图7是环境效应的运行结果,它是通过转发消息共同产生的。从窗口到窗口的主控流程。图8是管理视图模块的运行结果和通过静态成员变量与图控制的仿真过程
III. 结论
VP是软件开发场景仿真平台,它在许多领域都得到成功使用。为了提高可操作性,动态可配置性和视景仿真系统的功能集成度,本文中提出了对如何将Vega Prime融合到MFC编程框架和如何转发来自基于MFC框架应用程序的Vega Prime的窗户的消息的方法。此外,在模拟系统中设置了多个场景开关,并详细介绍了主控制处理与模拟过程之间的相互作用。根据上述方法,开发成功了场景仿真系统,且效果是在实际应用中非常有效。然而,如果用于控制帧的周期WM_TIMER的消息的优先级低,就会影响场景仿真系统的效果。因此,用于控制帧周期消息的高优先级,需要采用在今后的研究。
C / MFC数据结构动态演示系统
摘要
数据结构课程是计算机科学课程中的核心和基石,而在数据结构中有很多复杂繁琐的算法。为了帮助学生去掌握这些算法,本文采用C /MFC动态演示系统来进行开发。这样就可以逐步地完成这些复杂的算法。基于这些算法的输出和变量可以在同一时间被观察到。这是数据结构课程的一种非常直观的学习方式。
关键词:数据结构,动态演示,算法,C /MFC。
1.背景介绍
数据结构是组织和访问数据的一种系统的方法。数据结构课程是计算机科学课程的核心和基石。同时,它还是主修计算机科学与技术专业的大二学生的一个晦涩难懂的专业课程。如何帮助学生更容易学习这门课程越来越成为一个重要问题。本文将主要介绍动态演示系统。在这个系统中,动态演示会显示出各种数据结构算法。学生可以一步一
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[148708],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。