计算机辅助几何设计之教学演示系统.doc_第1页
计算机辅助几何设计之教学演示系统.doc_第2页
计算机辅助几何设计之教学演示系统.doc_第3页
计算机辅助几何设计之教学演示系统.doc_第4页
计算机辅助几何设计之教学演示系统.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机辅助几何设计之教学演示系统摘要计算机辅助几何设计教学演示系统(CAGD教学系统)是一个教学软件. 它可以用来交互地演示CAGD课程内的基本曲线与曲面的几何形状与几何性质. 其界面是用MFC类库构成, 几何绘图所用语言为OpenGL函数. 程序设计采用了面向对象的方法, 各类曲线曲面的绘制用的是最常用的算法. 关键词计算机辅助几何设计, 计算机辅助教学, OpenGL1 背景计算机辅助几何设计(Computer Aided Geometry Design)这门课主要研究各类几何曲线, 曲面的性质和应用1. 开发CAGD教学系统的目的, 是为了辅助 CAGD 这门课的课堂教学. 现在教师在讲授此课中遇到的一个问题普遍是, 当讲述某类曲线、曲面的几何特性时, 无法直观地把它们展示给学生. 在黑板上手工画出图形难度很大, 且无法交互地展示对曲线、曲面的各种操作. 现在的市场上有不少几何造型的系统(如 3D Studio), 但它们并不适于教学使用, 不能按教学上的要求, 对特定曲线、曲面演示其几何特性. 在教学软件类中, 还没有CAGD 这方面的真正软件. 因此我们在利用中国科技大学数学系CAGD小组多年来的科研成果,开发出自己的CAGD教学软件. 2 系统综述我们所开发的教学系统, 采用面向对象的设计技术. 其界面, 利用 VC+ 的 MFC 类库;作图显示, 借助 OpenGL 的 API函数. 由 MFC 产生界面比较方便, 因为它具有相当好的消息处理机制, 可以节省很多时间;而 OpenGL 的绘图功能, 用于三维作图近乎完美. 软件分成以下三大模块:1) 系统框架模块. 主要实现文件存取、数据输入、绘图环境设置、对图形的操作消息输入等功能. 2) 通用图形模块. 主要实现对几何物体属性的包装. 3) 几何对象模块. 包括八个子模块: Bzier 曲线、曲面模块, B-Spline 曲线、曲面模块, Coons 曲面模块, 隐式曲面模块. 实现对这些几何对象的各种几何变换、添加顶点、删除顶点、升阶、降阶、拼接、分离提取、求值等操作. 另外添加一些常用的图元如环、球、四面体等, 这些几何体采用OpenGL的命令直接绘制. 3 几何数据结构模型本软件使用的数据结构中, 所包含的几何信息有:曲面Surface、曲线Curve、离散点Point. 所包含的拓扑信息有:物体MyObject、图元Unit、控制顶点Vertex. 具体含义说明如下:a) 离散点Point:三维空间中的一个位置;b) 曲线Curve:曲线看作把一些离散点列用线段连接而成;c) 曲面Surface:曲面看作把离散点网格用线段连接(或并填充)而成;d) 控制顶点Vertex:用来控制 NURBS 曲线曲面的生成的那些离散点(不一定在曲线曲面上);e) 图元Unit:可作图的单元, 标记曲线曲面的特性, 用以标记一个可作图几何对象;f) 物体MyObject:由图元组成的可操作几何对象. 4 模块结构1) 系统框架模块在这个模块里, 实现各个系统元素的协调. 它的结构如图1所示:数据输入块数据显示块数据处理块几何算法块绘图块图1 系统框架模块具体实现时, 我们设计了几个主要类, 它们之间的关系如图2所示:CMyFormViewCMyListView CMyTreeViewCCAGDDoc CMyObjectCCAGDView 图2 类之间的关系以上几个类构成了系统框架模块. 2)通用绘图模块由下面几个类构成:点(CPoint3D)、线(CCurve)、面(CSuface)、图元(CUnit)、物体(CMyObject). 这几个类描述了简单的几何数据结构. 3)几何对象模块由这些类描述:Bezier曲线类(CBezierCurve)、Bezier曲面类(CBezierSurface)、B样条曲线(CBSplineCurve)、B样条曲面(CBSplineSurface)、Coons曲面(CCoonsSurface)、隐式曲线(CImplicitCurve)、隐式曲面(CImplicitSurface). 它们都称为几何图元类, 都由CUnit类继承而来. 在使用时, 这些类的对象作为CMyObject类的成员变量来调用绘制的. 5系统状态为了协调对各处几何对象的操作, 我们设置了一些状态. 把整个系统分为三个状态:缺省的不做任何操作的状态、创建几何对象状态、修改几何对象状态. 创建状态下, 又细分为用鼠标点击创建和用键盘输入创建两个子状态. 在修改状态下, 再由两个变量来组合确定最终状态的修改状态. 一个变量是选择层次, 一个是操作. 在CCAGDDoc中定义了一个结构tagStatus, 这个结构内的变量和取值如图3和图4所示: NONE_STATUS CREATE_BYMOUSEm_RenderStatus = CREATE_STATUS m_CreateMethod= CREATE_BYKEY MODIFY_STATUS图3 系统的状态设置 MOVE ROTATE SELECT_MYOBJECTm_Modifier = SCALE m_SelectLevel = SELECT_UNIT DELETE SELECT_VERTEX ADD 图4 系统的修改状态下子状态设置6 界面描述1)总体界面. 使用标准的 Window 窗口框架. 客户区分为四个视区(组成一个大视区)和一个控制区(如图5所示). 分别记为 Top, Front, Left, Perspective, 对应地, 在四个视区显示世界坐标系中从顶面、前面、左面、任意视点观察到的场景. 在四个小视区中的任一个中双击鼠标右键, 可切换至全视区;在全视区中双击, 可切换回四个小视区. 控制区内, 分为“创建”和“修改”两个大栏. 创建栏下, 提供了创建几何对象的操作. 修改栏提供了修改已创建了的几何对象的操作. 图5 主界面图2)为了更方便地进行交互操作, 我们加上快捷菜单, 提供当前状态下的可以进行的常用操作. 例如, 在选中了一个图元时, 右击鼠标可以弹出快捷菜单, 此时进行平移、旋转、伸缩、设置变换基准(基准有X、Y、Z、XY、YZ、ZX坐标轴)、显示图元属性、设置选择的层次. 3)选择的方式. 要对几何对象进行操作, 当然要先选定它们. 在屏幕上双击鼠标左键, 可选中所绘的几何对象. 我们设定了三个选择层次:选择物体(Select MyObject)、选择图元(Select Unit)、选择顶点(Select Vertex). 例如, 如果当前的选择层次是选择顶点, 则在绘制了几何图元的区域内双击, 可以选中在光标附近的顶点, 该顶点所在图元以红色画出, 该顶点以粗大的尺寸画出, 随后就可以针对该顶点进行各种操作了. 选择的方式之二是在控制区内进行, 在控制区内以组合框列举出了已画出的几何物体. 4)对图形的操作. 可以用鼠标拖动对图形进行移动、旋转、伸缩等操作. 另外, 为了方便观察, 可以用键盘的方向键旋转视点(但不改变图形的几何数据), 按 Home 键或 h 或 H 键可以恢复到缺省的视点位置. 7 讨论本软件系统自1998年8月19日开始着手讨论、试验, 到1999年1月10正式开发, 1月25日完成文档设计. 第二学期开学后, 于4月10日完成现版本的开发. 由于时间等因素, 上述功能有些还正处在实现过程中. 我们认为在下述方面,可以对现在版本做进一步的改进:1) 对界面功能全面具体实现. 现版本中, 有的界面组件只是列出了接口, 功能并未具体实现. 2) 实现较完善的几何数据结构. 3) 实现对各几何对象的未实现的操作, 例如拼接, CSG操作等. 4) 优化代码, 取消对 MFC 中的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论