




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学 学士学位 论文 1 目 录 摘 要 . 3 Abstract . 4 1 绪论 . 5 2 系统环境 . 7 2.1 系统所用关于 visual c+知识介绍 . 7 2.1.1 MFC 工程文件中自动生成类 . 8 2.1.2 使用点、刷子、笔、位图 . 9 2.2 太阳系简介 . 10 3 系统总体设计 . 11 3.1 功能设计 . 11 3.2 系统界面设计 . 12 3.2.1 侧视界面 . 12 3.2.2 俯视界面 . 12 3.2.3 工具条 . 12 3.3 系统模块设计 . 12 3.3.1 放大模块 . 12 3.3.2 缩小模块 . 12 3.3.3 左移模块 . 12 3.3.4 右移模块 . 12 3.3.5 上移模块 . 13 3.3.6 下移模块 . 13 3.3.7 运行模块 . 13 3.3.8 暂停模块 . 13 3.3.9 还原模块 . 13 3.4 测试设计 . 13 4 系统界面设计 . 14 4.1 侧视界面 . 14 4.1.1 过程设计 . 14 4.1.2 数据结构 . 14 4.1.3 模块实现及伪代码 . 15 4.1.3 侧试界面效果图 . 18 4.2 俯视界面 . 18 4.2.1 过程设计 . 18 4.2.2 数据结构 . 19 4.2.3 模块实现及伪代码 . 19 武汉理工大学 学士学位 论文 2 4.2.2 界面效果图 . 21 5 功能模块设计 . 22 5.1 放大模块 . 22 5.1.1 模块实现及伪代码 . 22 5.1.2 效果图 . 23 5.2 缩小模块 . 24 5.2.1 模块实现及伪代码 . 24 5.2.2 效果图 . 25 5.3 左移模块 . 26 5.3.1 模块实现及伪代码 . 26 5.3.2 效果图 . 27 5.4 右移模块 . 28 5.4.1 模块实现及伪代码 . 28 5.4.2 效果图 . 29 5.5 上移模块 . 30 5.5.1 实现代码 . 30 5.5.2 效果图 . 31 5.6 下移模块 . 32 5.6.1 实现代码 . 33 5.6.2 效果图 . 33 5.7 运行模块 . 35 5.7.1 模块实现及伪代码 . 35 5.7.2 效果图 . 36 5.8 暂停模块 . 37 5.8.1 模块实现及代码 . 37 5.8.2 效果图 . 38 5.9 还原模块 . 38 5.9.1 模块实现及伪代码 . 38 6 总结与展望 . 40 参考文献 . 41 致 谢 . 42 附 录 . 43 武汉理工大学 学士学位 论文 3 摘 要 本次设计的内容 是 太阳系概貌模拟 系统 。 主要 功能包括 :近日、远日行星的显示, 放大、缩小、左(右、上、下)移动功能,多视角观察太阳系概貌,行星 运行、静止以及初始状态复原 。 在这个系统中 有二种视角来观看太阳系,分别为:俯视和侧视。 每种视角下都可以实现放大、缩小、平移、静止和运行功能。 实现此系统的 第一个 难点 就在于对行星运动的处理,想让行星在轨道上 动起来,就要知道这个行星下个时刻的坐标是什么,在放大、缩小和上(下,左,右)移动轨道后,运行轨道的参数 相应变化了 ,要想使行星随着轨道的变动还能准确的在轨道上运行的话,就得对 行星下个位置的坐标的计算公式做变型,也就是加上或减去一些偏差值 。第二个难点就在于对行星的动和静的处理。在单线程的情况下,线程开始执行后,直到结束我们是没法手动去干涉它的,那么想在行星动的时候让它静下来,并且再次动的时候是接着上次停下来的地方运行的话,只使用一个线程的话是很难做到的,所以在这 点儿的处理上我用到了多线程。主线程中来处理轨道的参数,辅线程运行的时候让行星运动起 来。 本系统比较好的完成了所要求的任务,综合考虑了用户使用的方便,尽量做到了界面的美观和功能的实用。 关键词 : 多线程, 行星运动 ,多视角 武汉理工大学 学士学位 论文 4 Abstract My graduation design is the system of The Design and Implementation Of Solar System. The function mainly includes: display the planets far from the sun, display the planets near the sun, zoom the solar system in (out), move the solar system left(right, up and down) ,overview the solar system from multi-angle, planet run and stop. Through this system ,we can see the global profile of the Solar System and the distant solar system become real with the computer.There are two kinds of angle to watch the solar system. One is looking from up to down and the other is looking from side. Both angle can realize all the function: zoom the solar system in (out), move the solar system left(right, up and down) , planet run and stop. One difficulty to implement this system is handling the movement of the planet. If you want the planet run on the orbit currently you must know the coordinate that the planet will arrive. As the orbit is a ellipse we can use the ellipse formula to calculate the coordinate . However ,when you zoom the ellipse out or move the orbit left the parameter of the ellipse will chang. To make the planet run currently on the orbit we have to do variations on the formula. That is ,parameters plus or minus some offset to make sure the planet can find its orbit. Another difficulty to implement this system is how to stop the running planet. As we know in the case of single thread when the thread begins running it will not stop until the thread end. It is very difficult to stop the running thread in the case of single thread. So it is necessary to use multithread to handle it. The main thread is used to set the parameters of orbit. Assistant thread is used to control the planets action. If we want the planet to move we need to create assistant thread. If we want the planet to stop we need to cancel the assistant thread. The system complete the requested task. Considering the convenience of the user I try my best to prettify the interface of the system and prefect the function. Key words: multithread , the movement of planets, multi_angle 武汉理工大学 学士学位 论文 5 1 绪论 随 着计算机技术的不断进步, 计算机的应用 已经 渗透入人们生活的方方面面,现在几乎所有的邻域都离不开计算机。在生活中人们需要用计算机来进行普通的计算,办公,娱乐,以及存储。在高科技中,那就更离不开计算机了,发射导弹,飞船上天, 预测天体运行等等,这些高科技离不开计算机,计算机也离不开高科技,计算机可以使很繁锁的任务变得简单,人们日益增多的需求也促进了计算机的发展。 我这次所做的系统是有关计算机模拟方面的应用 。 计算机模拟是 指用电子计算机对科学问题或社会问题进行模仿性试验研究 , 从而 建立真实系统的模型 ,并通过计算来观察系统随时间变化的行为 或系统表 现出来的特性 。计算机模拟 是以相似原理、模型理论、系统技术、信息技术以及其应用领域的有关专业技术为基础,以计算机系统、与应用相关的物理效应设备及仿真器为工具,利用系统模型参与已有或设想的系统进行研究、分析、设计、加工生产、试验、运行、评估、维护、和报废(全生命周期)活动的一门多学科的综合性技术。半个多世纪来, 计算机模拟 技术在各类应用需求的牵引及有关学科技术的推动下,已经发展形成了较完整的专业技术体系,并迅速地发展为一项通用性、战略性技术。它已成功 地应用于航空航天、信息、生物、材料、能源、先进制造等高新技术和工业、农业、商业、教育、军事、交通、社会、经济、医学、生命、娱乐、生活服务等众多领域。人们认为, 模拟 技术与高性能计算一起,正成为继理论研究和实验研究之后第三种认识、改造客观世界的重要手段。 我们每个人从小时候起都对茫茫地宇宙充满无限的好奇与向往,但是人类相对于整个宇宙来说太渺小 了,就连我们想飞离我们的地球都是一件难事儿 。每个小孩或许都会问他们的父母宇宙长的什么样,作为我们该怎么回答他们呢,如果没有一个完备的演示系统我们恐怕难以回答他们的问题。科学 家要想发射飞船,或着说实现太空行走,都是要以他们非常了解太阳系为前提,那么他们如何向其它的科学家描述太阳系的状况呢,他们也必须借助计算机来逼真的模拟太阳系的运行情况才能和其它科学家合作来解决有关宇宙的问题。在天体运行中,我们要处理大量的数据,还有这些数据都是非常大的浮点型数,如果单纯通过人工操作计算,那么即使我们都会计算,那也不能保证这些数据的准确性,更何况人根本不可能手工处理这么宠大的数据,所以完善的高质量的太阳系模拟系统应运而生了。 这次我所要做的太阳系概貌的模拟系统 就是用来 模拟太阳系运行时最主要最基本 的特征,实现太阳系各行星运动概貌的模拟。让用户可以全面的看到整个太阳系的全貌,并且看到太阳系各星体的运行状况 ,满足那些普通用户的需求 ,但是此系统不能完成像科学实验中的那些关于星体运行的计算 。但是 通过太阳系概貌的模拟系统我们可以看到太阳系的全貌 ,以及太阳系运行时最主要最基本的特征,实现太阳系各行星运动概貌的模拟 ,让用武汉理工大学 学士学位 论文 6 户可以多方面多视角的观看太阳系 【 1】 。这可以满足用户想逼真观看太阳系的需求,让我们仿佛置身宇宙中,仿佛站在太阳系的上方看到太阳系的动态效果。当然这是了解太阳系的第一步,这也为以后精确认识太阳系的各 种其它特性,为以后对太阳系的精确研究并且预测末来太阳系的运行打下基础。 本系统使用 VC+来设计与实现。为了使效果看起来更逼真,我从网上下载太阳系各大行星的图片来进行处 理 【 2】 。在此系统中,用户可以体验二种视角来观赏太阳系的运行,不仅如此 用户还可以放大、缩小, 上(下,左,右)移动太阳系,并且还可以将运行的行星暂停,还原 等一系列功能。 该系统的设计从头到尾都是采用软件工程学的设计方法,向读者展示了一个模拟系统的设计过程。现在简单地介绍本论文的组织内容,让读者对本系统的设计与开发有个大概的了解,能清楚地知道每节将 要向读者介绍那些内容。 2 系统环境:本章向大家介绍有关 Visual C+方向的知识,以及太阳系的基本资料。 3 系统的总体设计:此章开始从需求分析介绍,确定系统的功能模块,设计系统的界面。 4 系统的界 面设计:由于此系统是模拟系统,所以对界面的要求比较高,我将用一 章来说明我的系统界面。 5 系统的功能模块设计:此章介始各模块的实现方法,以及里面比较经典的算法。 6 总结与展望总结了本此设计心得体会,并对未来作了初步的展望。 武汉理工大学 学士学位 论文 7 2 系统环境 2.1 系统所用关于 visual c+知识 介绍 Visual C+是 Microsoft 公司的 Visual Studio 开发工具箱中的一个 C+程序开发包。VisualStudio 提供了一整套开发 Internet 和 Windows 应用程序的工具,包括 VisualC+, Visual Basic, Visual Foxpro, Visual InterDev, Visual J+以及其他辅助工具,如代码管理工具 Visual SourceSafe 和联机帮助系统 MSDN。 Visual C+包中除包括 C+编译器外,还包括所有的库、例子和为创建 Windows 应用程序所需要的 文档。 从最早期的 1.0 版本,发展到最新的 6.0 版本, Visual C+已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的 6.0 版本在编译器、 MFC 类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。 Visual C+一般分为三个版本 :学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种。 Visual C+6.0 不仅是一个 C+编译器,而且是一个基于 Windows 操作系统的可视化集成开发环境( integrated development environment,IDE)。 Visual C+6.0 由许多组件组成,包括编辑器、调试器以及程序向导 AppWizard、类向导 Class Wizard 等开发工具。 这些组件通过一个名为 Developer Studio 的组件集成为和谐的开发环境。 Visual C+它大概可以分成三个主要的部分: 1 Developer Studio 这是一个集成开发环境,我们日常工作的 99%都是在它上面完成的,再加上它的标题赫然写着 “Microsoft Visual C+”,所以很多人理所当然 的认为,那就是 Visual C+了。其实不然,虽然 Developer Studio 提供了一个很好的编辑器和很多 Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道, Developer Studio 并不是专门用于 VC 的,它也同样用于 VB, VJ,VID 等 Visual Studio 家族的其他同胞兄弟。所以不要把 Developer Studio 当成 Visual C+, 它充其量只是 Visual C+的一个壳子而已。这一点请切记! 2 MFC 从理论上来讲, MFC 也不是专用于 Visual C+, Borland C+, C+Builder 和Symantec C+同样可以处理 MFC。同时,用 Visual C+编写代码也并不意味着一定要用 MFC,只要愿意,用 Visual C+来编写 SDK 程序,或者使用 STL, ATL,一样没有限制。不过, Visual C+本来就是为 MFC 打造的, Visual C+中的许多特征和语武汉理工大学 学士学位 论文 8 言扩展也 是为 MFC 而设计的,所以用 Visual C+而不用 MFC 就等于抛弃了 Visual C+中很大的一部分功能。但是, Visual C+也不等于 MFC。 3 Platform SDK 这才是 Visual C+和整个 Visual Studio 的精华和灵魂,虽然我们很少能直接接触到它。大致说来, Platform SDK 是以 Microsoft C/C+编译器为核心(不是 Visual C+,看清楚了),配合 MASM,辅以其他一些工具和文档资料。上面说到 Developer Studio没有编译程序的功能,那 么这项工作是由谁来完成的呢?是 CL,是 NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成 Visual Studio 的基石。 要想 学好 VC+需要有好的 C/C+基础,学习 visual C+集成环境 , 理解 Windows的消息机制,一定要理解 MFC 中消息映射的作用 ,记住一些常用的消息名称和参数的意义。 并且要善于利用向导。 向导是一个通过一步步的帮助引导你工作的工具。 Developer Studio 中包含三个向导,用来帮助程序员开发简单的 Windows 程序,它们是: (1)AppWizard:用来创建一个 Windows 程序的基本框架结构。 AppWizard 向导会一步步向程序员提出问题,询问他所创建的项目的特征,然后 AppWizard 会根据这些特征自动生成一个可以执行的程序框架,程序员然后可以在这个框架下进一步填充内容。 AppWizard 支持三类程序:基于视图 /文档结构的单文档应用、基于视图 /文档结构的多文档应用程序和基于对话框的应用程序。也可以利用 AppWizard 生成最简单的控制台应用程序(类似于 DOS 下用字符输入输出的程序)。 (2)ClassWizard:用来定义 AppWizard 所创建的程序中的类。可以利用 ClassWizard在项目中增加类、为类增加处理消息的函数等。 ClassWizard 也可以管理包含在对话框中的控件,它可以将 MFC 对象或者类的成员变量与对话框中的控件联系起来。 (3)ActiveX Control Wizard:用于创建一个 ActiveX 控件的基本框架结构。 ActiveX控件是用户自定义的控件,它支持一系列定义的接口,可以作为一个可再利用的组件。 2.1.1 MFC 工程文件中自动生成类 我所做系统是基于 MFC 的 C+编程。 创建一个 MFC 工程文件后 , 会自动生成几个 类,分别为: (1)CmainFrame 主框架窗口类 : 从 MFC 的 CFrameWnd 框架窗口类派生,对应于主窗口,管理主程序窗口,包含菜单、工具条、状态条的设定等 。 此系统有用到工具条。 (2)CGraphicsApp 应用程序类: 从 MFC 的 CWinApp Windows 应用程序类派生,对应于应用程序,用来控制应用程序的所有对象(文档、视图以及边框窗口),并完成应用程序的初始化和最后的清除工作。在一个程序执行时,系统首先创建一个应用程序对象,然后对该对象进行初始化操作。一般将应用程序运行过程中 需记录的变量定义为本类的属性,将应用程序中关系到整个应用程序的菜单的响应程序等写在本类中。我所做的系统对武汉理工大学 学士学位 论文 9 此类也没有编写代码。 (3)CGraphicsDoc 文档类: 从 MFC 的 CDocument 文档类派生,对应于应用程序所处理的文档,用于存取文档数据,一般将对文档的修改程序写在本类中,通常将应用程序中 “编辑 ”等菜单的响应程序写在本类中。本系统没有用到文档所以没有对此类编码。 (4)CGraphicsView 视图类: 从 MFC 的 CView 视图类派生,对应于应用程序所显示的视图,用来显示文档数据,处理用户输入和管 理视图窗口,一般将所有与输入、显示及打印有关的操作写在本类中,通常将应用程序中 “视图 ”菜单的响应程序写在本类中。 此系统的代码几乎都是在此类中,所以对本系统来说此类非常重要。 (5) CAboutDlg“关于 ”对话框类: 从 MFC 的 CDialog 派生,一般不需对其增写程序,每当加入一个新的对话框时,系统就会从 CDialog 类派生出一个新的类,供编程这在其中编写此对话框的处理程序。本系统中没有用到对话框,所以末对此类进行编码。 2.1.2 使用点、刷子、笔 、位图 在本系统中,行星的轨道是自己画出来的所以要学习如何 用刷子,笔进行绘制椭圆。用位图处理显示图片。 CDC:设备文本(或者设备描述表),从 CObject 类派生,是 Windows 应用程序与设备驱动程序与输出设备之间的连接桥梁。所有的绘图函数都在 CDC 类中定义。在视图客户区中进行绘制的设备文本类是从 CDC 派生的 CClientDC 类。 CClientDC:是 CDC 的派生类,对应于特定窗口的用户区,可用窗口对象指针初始化对象,如: CClientDC dc(this); 即用当前窗口对象指针 this 对 CClientDC 对象 dc 进行初始化 。 CRect:用来表示矩形的类 ,拥有四个成员变量: top left bottom right。分别表示左上角和右下角的坐标。可以通过以下的方法构造: CRect(int l,int t,int r,int b),其中的 l, t, r, b 分别指明 Crect 的四个顶点坐标。 其成员函数主要为: int Width( ) const; 得到宽度 int Height( ) const; 得到高度 CSize Size( ) const; 得到尺寸 CPoint& TopLeft( ); 得到左上角坐标 CPoint& BottomRight( ); 得到右下角坐标 CPoint CenterPoint( ) const; 得到中心坐标 CRect 可以用来定义一个矩形区域,在画椭圆的时候会用到。 CPen:定义画笔类型,通过 SelectObject(&pen)为 DC 选择画笔对象。 画笔决定所画图形的线条的样式。 CBrush: 画刷。 如果需要用颜色或者图案对一个封闭的图形内部进行填充 ,就要使用画刷 ,画刷是 CBrush 类的对象 ,明智来填充封闭图形内部的工具 。 武汉理工大学 学士学位 论文 10 CBitmap: 位图。 类 CBitmap 封装了 Windows 图形设备接 口( GDI)中的位图,并且提供了操纵位图的成员函数。使用 CBitmap 对象之前要先构造 CBitmap 对象,调用其中的一个初始化成员函数设置位图对象的句柄。此后就可以调用其它成员函数了。 宏 RGB:用来定义颜色,包括红,绿,蓝三种颜色分量,取值范围为 (0 255), 例如:RGB(0, 0, 0)为黑色, RGB(255, 255, 255)为白色。 用以设置填充色。 2.2 太阳系简介 太阳系( solar system)就是我们现在所在的恒星系统。 主要 由太阳、 8 颗大行星(原先有九大行星,因为冥王星被剔除为矮行星) 以及无数的小行星、彗星及陨星 所组成。 行星由太阳起往外的顺序是:水星( mercury)、金星( venus)、地球( earth)、火星( mars)、木星 (jupiter)、土星( saturn)、天王星( uranus)、海王星( neptune)。 这些行星都以太阳为中心以椭圆轨道公转,虽然除了水星的十分接近于圆。行星轨道中或多或少在同一平面内(称为黄道面并以地球公转轨道面为基准)。黄道面与太阳赤道仅有 7 度的倾斜。冥王星的轨道大都脱离了黄道面,倾斜度达 17 度。 太阳系中的八大行星都朝同一方向绕太阳公转。除金星以外,其他 行星的自转方向和公转方向相同。 水星 ::平均日距 57,910,000 km (0.38 天文单位 ) , 直径 4,878 km , 质量 3.30e23 kg ,密度 5.43 gm/cm , 重力 0.376 G , 公转 87.97 地球天 。 金星: 平均日距 108,200,000 km (0.72 天文单位 ) , 直径 12,103.6 km , 质量 4.869e24 kg , 密度 5.24 gm/cm, 重力 0.903 G , 公转 224.7 地球天 。 地球: 平均日距 149,600,000 km (1.00 天文单位 ) , 直径 12,756.3 km , 质量 5.976e24 kg, 密度 5.52 gm/cm, 重力 1 G(9.8 m/s2) , 公转 365.26 地球天 。 火星:平均日距 227,940,000 km (1.52 天文单位 ), 直径 6,794 km, 质量 6.4219e23 kg,密度 3.94 gm/cm, 重力 0.38 G, 公转 686.98 地球天 。 木星:平均日距 778,330,000 km (5.20 天文单位 ), 直径 142,984 km (equatorial), 质量 1.900e27 kg, 密度 1.31 gm/cm, 重力 2.34 G, 公转 11.86 地球年 。 土星:平均日距 1,429,400,000 km (9.54 天文单位 ), 直径 120,536 km (equatorial), 质量 5.688e26 kg , 密度 0.69 gm/cm, 重力 1.16G, 公转 29.46 地球年 。 天王星:平均日距 2,870,990,000 km (19.218 天文单位 ), 直径 51,118 km (equatorial),质量 8.686e25 kg, 密度 1.28 gm/cm, 重力 1.15G, 公转 84.81 地球年 。 海王星: 平均日距 4,504,000,000 km (30.06 天文单位 ),行 星直径: 49,532 km,质量 : 1.0247e26 千克 (为地球质量的 17.22 倍) , 公转周期:约 164.8 个地球年 平均密度:1.66g/cm3。武汉理工大学 学士学位 论文 11 3 系统总体设计 3.1 功能设计 第一:系统是单用户的,这里的单用户是指不需要用户名和密码 , 用户进入系统可以直接对 系统 进行操作 。第二: 系统有多视角 。第三:太阳系是可以放大、缩小的 ,并且保证放大、缩小后行星照样能正确的运行 。第四 : 太阳系可以进行上、下、左、右的平移,并且平移后行星照样能正确地运行。 第五:有专门的初始化工具。 第六:有对应的工具按钮。 系统为模拟系统,外观要逼真才比较好,所以我需要从网下下载关于行星的图片,这样看起来比较逼真。真实的太阳系是三维空间的,不同的视角下观看的结果是不一样的,所以在 系统要实现 从 二种视角来观看太阳系,分别为:俯视和侧视。这二种视角看到太阳系的感觉是完全不一样的。选定了一种视角后就可以在这种视角下观看太阳系各行星的运行,当然也可以放大,缩小,左(右,上,下)移动整个太阳系,在太阳系运行过程中,当然 也可以来暂停行星的运行,使太阳系处于静止状态,再次点击运行行星会接着动起来。如果想回到最初状态,也可以点一下复原按钮,整个太阳系又回到了此视角下的最初始的状态。如果想换个换角来看太阳系,直接点击你想要的视角的按钮,这二种视角下可以行使的功能是一样的。 根据功能的划分,我将系统划分为以下 9 个功能模块 和二大界面 ,以及在工具栏上设置工具按钮 。 图 1 系统 模块 图 太阳 侧视模块 俯视模块 平移模块 放大缩小模块 运动静止 模块 还原 模块 平移模块 放大缩小模块 运动静止 模块 还原 模块 武汉理工大学 学士学位 论文 12 3.2 系统界面设计 3.2.1侧 视界面 在此种界面下的视觉像是在太阳系的旁边观看太阳系运行,给人 一种立体的感觉。在对图像进行处理的时候,前面的像要挡住后面的像,这样可以出现立体的效果。 3.2.2 俯 视界面 在此种界面下的视觉像是在太阳系的正上方观看太阳系运行。此时各个轨道看起来像是一系列同心的椭圆,各行星在上面运行时不会出现遮挡的效果。看起来没有侧视有立体感。 3.2.3 工具条 工具条里面存放各种功能的工具,方便用户的操作,实现交互。当然如果不想点击工具栏上的按钮的话,也可以通过相应的键来实现相应的功能,具体各功能对应什么键在下面的模块设计中有详细介绍。 3.3 系统模块设计 3.3.1放大模块 功能:放 大 整个太阳系,并保证放大后行星依然可以正确地在轨道上运行。 在工具条上设置此功能相应的工具,并且可以用 HOME 键来进行触发。 3.3.2 缩小模块 功能: 缩小整个太阳系,并保证缩小后行星依然能正确地在轨道上运行。 在工具条上设置此功能对应的工具,并且可以用 END 键来进行触发。 3.3.3 左移模块 功能:左移整个太阳系,并保证左移后行星依然能正确地在轨道上运行。 在工具条上设置此功能对应的工具,并且可以用左光标键来进行触发。 3.3.4 右移模块 功能:右移整个太阳系,并保证右移后行星依然能正确地在 轨道上运行。 在工具条上设置此功能对应的工具,并且可以用右光标键来进行触发。 武汉理工大学 学士学位 论文 13 3.3.5 上移模块 功 能:上移整个太阳系,并保证上移后行星依然能正确地在轨道上运行。 在工具条上设置此功能对应的工具,并且可以用上光标键来进行触发 。 3.3.6 下移模块 功 能:下移整个太阳系,并保证下移后行星依然能正确地在轨道上运行。 在工具条上设置此功能对应的工具,并且可以用下光标键来进 行触发。 3.3.7 运行模块 功能:运行此模块时,行星可以在自自的轨道上运行 在工具条上设置相应的工具,并且可以用回车键来进行触发 。 3.3.8 暂停模块 功 能:运行此模块时,行星可以停住。 在工具条上设置相应的工具,并且可以用空格键来进 行触发。 3.3.9 还原模块 功能:运行此模块时,可以将太阳系还原来初始状态。 在工具条上设置相应的工具,并且可以用 Delete 键来进行触发 。 3.4 测试设计 测试主要围绕行星是否能准确在轨道上运行来进行,首先看在初始化妆态行星是否准确运行,切换视角后能否正准运行,对太阳系进行上下左右平移变换后是否能准确运行,进行放大缩小变换后是否能准确运行, 并且在这些情况下是不是能让运行的行星停下来,能让静止的行星运动 起来。 武汉理工大学 学士学位 论文 14 4 系统界面设计 4.1 侧视 界面 4.1.1 过程设计 侧视 界面 组成: 界面有太阳图片,九大行星图片,以及背景图片,以及自己所绘椭圆行星轨道所组成。 主要 思想: ( 1) 映射模式: MM TEXT。 在此映射模式下,坐标被映射到了象素,X 值向右方向递增, Y 值向下递增,所以用它来表示设备坐标系是再合适不过了。 ( 2) 轨道: 行星的运行轨道是用 GDI 对象画出来的。画轨道时用到的 GDI 对象有 :CBrush,刷子定义了一种位图形式的象素,得用它可对域内部填充 颜色; CPen,笔是一种用来画线及绘制有形边框的工具, 我们可以指定它的颜色及厚度,并且可以指定它画实线,点线或虚线 。 可以自己构造一个 CGdiObject 派生类的对象, 用 SelectObject()将自己构造的对象选进来;也可以使用库存的 GDI 对象,用 SelectStockObject()选入。在选进自己的 GDI 对象的同时,须将原来的 GDI 对象也保存起来,当任务完成后,再将原来的对象恢复,这样就可以将自己的 GDI 对象删除。 当然也可以使用另外一种更加方便的方法:可以直接选择库存的 GDI 对象,这样原来的对象将会被自动分离出来。 ( 3) 图片: 将基于资源的 图片 转换成 GDI 位图来进行处理, GDI 位图只不过是另外一种 GDI 对象。首先,我们必须创建一个位图,然后再把它选进设备环境中,当我们使用完了以后,还必须将它从设备环境中选出来,然后再把它删掉。在显示位图的时候,我们必须先利用函数 CDC: CreateCompatibleDC,为位图创建一个特殊的内存设备环境,然后再利用 CDC 的 StretchBlt 成员函数,将内存设备环境中的各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药品管理规范试题及答案
- 激光技术工程师证书考试的类别试题及答案探究
- 化妆证考试题及答案
- 肌力分级相关试题及答案
- 持续学习在光电考试中的必要性试题及答案
- 激光技术工程师考试注意事项和试题及答案
- 幼儿书法测试题及答案
- 2025-2030宠物罐头市场市场现状供需分析及投资评估规划分析研究报告
- 2025-2030定制系统开发行业市场深度调研及趋势前景与投融资研究报告
- 2025-2030婴童用品行业消费需求研究及投资盈利性战略规划研究报告
- 2025年吉林交通职业技术学院单招职业技能考试题库新版
- 提高感染性休克集束化治疗完成率工作方案
- 小学音乐国测(国家义务教育质量监测)复习内容
- 茶艺-认识茶具(课堂PPT)
- 生物药物监测检测报告.docx
- 钢丝绳理论重量计算方式
- 国家开放大学《计算机应用基础》终结性考试操作题
- 浒墅关镇社区家长学校工作台帐(模板)
- 电子科技大学自主招生软件工程硕士招生简章 —校外培养点
- 安全生产标准化创建工作启动会(PPT 87页)
- 【原创】幼儿园教师简笔画创意与技能技巧
评论
0/150
提交评论