2022年2022年计算机辅助几何设计之教学演示系统 .pdf
计算机辅助几何设计之教学演示系统中国科学技术大学数学系科学计算与计算机图形学实验室摘要计算机辅助几何设计教学演示系统(CAGD 教学系统)是一个教学软件.它可以用来交互地演示CAGD 课程内的基本曲线与曲面的几何形状与几何性质.其界面是用MFC 类库构成,几何绘图所用语言为OpenGL函数.程序设计采用了面向对象的方法,各类曲线曲面的绘制用的是最常用的算法.关键词计算机辅助几何设计,计算机辅助教学,OpenGL 1 背景计算机辅助几何设计(Computer Aided Geometry Design)这门课主要研究各类几何曲线,曲面的性质和应用1.开发CAGD教学系统的目的,是为了辅助CAGD 这门课的课堂教学.现在教师在讲授此课中遇到的一个问题普遍是,当讲述某类曲线、曲面的几何特性时,无法直观地把它们展示给学生.在黑板上手工画出图形难度很大,且无法交互地展示对曲线、曲面的各种操作.现在的市场上有不少几何造型的系统(如3D Studio),但它们并不适于教学使用,不能按教学上的要求,对特定曲线、曲面演示其几何特性.在教学软件类中,还没有CAGD 这方面的真正软件.因此我们在利用中国科技大学数学系CAGD 小组多年来的科研成果,开发出自己的CAGD 教学软件.名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -2 系统综述我们所开发的教学系统,采用面向对象的设计技术.其界面,利用 VC+的 MFC 类库;作图显示,借助OpenGL 的 API 函数.由 MFC 产生界面比较方便,因为它具有相当好的消息处理机制,可以节省很多时间;而OpenGL 的绘图功能,用于三维作图近乎完美.软件分成以下三大模块:1)系统框架模块.主要实现文件存取、数据输入、绘图环境设置、对图形的操作消息输入等功能.2)通用图形模块.主要实现对几何物体属性的包装.3)几何对象模块.包括八个子模块:B zier 曲线、曲面模块,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)系统框架模块名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 7 页 -在这个模块里,实现各个系统元素的协调.它的结构如图1 所示:图 1 系统框架模块具体实现时,我们设计了几个主要类,它们之间的关系如图2 所示:数据输入块数据显示块数据处理块几何算法块绘图块名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -图 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_STA TUS CREATE_BYMOUSE CMyFormView CMyListView CCAGDDoc CMyTreeView CCAGDView CMyObject 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 7 页 -m_RenderStatus=CREATE_STATUS m_CreateMethod=CREATE_BYKEY MODIFY_STA TUS 图 3 系统的状态设置MOVE ROTATE SELECT_MYOBJECT m_Modifier=SCALE m_SelectLevel=SELECT_UNIT DELETE SELECT_VERTEX ADD 图 4 系统的修改状态下子状态设置6 界面描述名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 7 页 -1)总体界面.使用标准的Window 窗口框架.客户区分为四个视区(组成一个大视区)和一个控制区(如图 5 所示).分别记为Top,Front,Left,Perspective,对应地,在四个视区显示世界坐标系中从顶面、前面、左面、任意视点观察到的场景.在四个小视区中的任一个中双击鼠标右键,可切换至全视区;在全视区中双击,可切换回四个小视区.控制区内,分为“创建”和“修改”两个大栏.创建栏下,提供了创建几何对象的操作.修改栏提供了修改已创建了的几何对象的操作.图 5 主界面图2)为了更方便地进行交互操作,我们加上快捷菜单,提供当前状态下的可以进行的常用操作.例如,在选中了一个图元时,右击鼠标可以弹出快捷菜单,此时进行平移、旋转、伸缩、设置变换基准(基准有X、Y、Z、XY、YZ、ZX 坐标轴)、显示图元属性、设置选择的层次.名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 7 页 -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 中的 CArray 引用.现版本中,引用CArray 没有带来预想的好处,却带来代码的复杂性和低效率.参考文献1 G.Farin,Cuves and Surfaces for Computer Aided Geometric Design,Academic Press,Boston,Third edition,1993.名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 7 页 -