计算机图形学上机指导

计算机图形学上机指导
计算机图形学上机指导

计算机图形学上机指导(东北大学地质专业)

东北大学资源与土木工程学院

赵玉山编2007.5

1. 前言

国际标准化组织(ISO)给计算机图形学做出如下定义:计算机图形学是研究通过计算机将数据转换为图形,并在专用显示设备上显示的原理、方法和技术的科学。它的基本含义是使用计算机通过算法和程序在显示设备上构造出图形来。

在发达国家,计算机图形学已经广泛应用于工程技术与社会生活的各个领域之中,如机械、电子、建筑、船舶制造、航空航天、交通运输、文化教育等。在生产单位,计算机图形学对提高产品设计质量,加快产品更新换代发挥了极大的作用,如在珠宝首饰厂,设计人员可以应用计算机图形学原理和方法进行款式设计,在PC机上可以显示首饰三维造型,客户可直接根据图形效果下订单。在一些装修公司,工作人员根据用户房间面积大小和结构布局,设计出多种房间装修效果图,供用户选择。在工程勘查和研究部门,现在都在用计算机绘制各种平面的或三维的工程图件,手工绘图历史已基本结束。

与计算机图形学紧密相关的重要领域有:

计算机辅助设计(Computer Aided Design),简称CAD,它是利用计算机技术进行计算和绘图。这是通用的微机图形学实用技术也是本课程讲授及上机训练的重点内容。

计算机辅助制造(Computer Aided Manufacturing),简称CAM,它是使用计算机来进行生产设备的管理,控制和操纵生产的过程。

计算机辅助工程(Computer Aided Engineering),简称CAE,它是将CAD与CAM等有关的应用软件、图形处理系统、数据库管理系统等功能结合在一起成为一个多功能的系统工程。

目前微机绘图软件种类很多,但通用的软件为AutoCAD,根据教学计划安排,我校地质专业采用AutoCAD作为“计算机图形学”课程的上机软件。本上机指导书重点介绍AutoCAD 2007软件的实用方法及上机内容安排。

通过上机操作和训练,进一步加深对课堂讲授内容的理解,掌握AutoCAD 2007的使用方法,学会常用的平面与三维空间图形的绘制方法,能够结合勘查技术与工程具体实例制作相关的图形。

“计算机图形学”上机时间计划为12学时,上机结束后,学生以电子文件形式交上机作业,指导教师根据学生上机操作表现和作业情况评定上机成绩。

2. AutoCAD简介

2.1 AutoCAD简史

CAD技术萌芽于20世纪50年代后期,随着计算机硬件技术的不断发展,CAD技术得到了广泛的应用。在众多的CAD软件中,美国Autodesk公司的旗舰产品AutoCAD是最著名的用户最多的应用软件。

Autodesk公司于1982年11月正式推出其第一代产品,命名为MicroCAD(R1),在随后的几年中,该公司又相继推出了过渡性产品AutoCADR2、R3……R9,1988年10月推出AutoCADR10,国内推出了相应的汉化版本,AutoCAD也因此首次广泛地为国人所接受。1994年11月推出AutoCADR13,提供了Windows版本。1997年6月推出AutoCADR14,是该软件发展的一个里程碑,功能特别强大。

1999年3月,Autodesk公司正式发布AutoCAD 2000,AutoCAD 2000中文版也正式推出。Autodesk公司宣称AutoCAD 2000是一体化的、功能丰富的、面向未来的世界领先的设计软件。AutoCAD 2000为用户提供了一个智能化的二维和三维设计环境及工具,显著提高用户的设计效率,充分发挥用户的创造能力,辅助用户把理想和构思转化为现实。2003年,该公司又发布了AutoCAD2004,新增了某些功能。2006年,AutoCAD 2007面世,功能进一步增强。

2.2 AutoCAD 2007界面

AutoCAD 2007以Windows98、Me、NT、2000、XP为操作系统,用户界面与Windows 界面相似。

2.2.1标题栏

文件名称、最大化、最小化、关闭等。

2.2.2菜单栏

文件、编辑、视图、插入、格式、工具、绘图、标注、修改、窗口、帮助等,可自定义菜单。

2.2.3工具栏

AutoCAD 2007工具栏共有35个,全部是浮动的。常用的有标准、对象特征、绘图和修改等。

2.2.4状态栏

状态栏位于窗口底部,包括坐标显示区和捕捉、栅格、正交、极轴、对象捕捉、对象追踪、DUCS、DYN、线宽、模型。

2.2.5 命令行

接受用户键盘命令的区域。

2.2.6图形窗口

绘图工作区。

2.2.7附签栏

模型、布局1、布局2。

2.3 AutoCAD 2007基础知识

2.3.1绘图坐标

1. 世界坐标系(WCS)

坐标系是图形学的基础,利用坐标系可以确定对象在绘图空间所处的位置。AutoCAD 2007默认的坐标系为世界坐标系WCS(World Coordinate System),X轴为水平轴,向右为正;Y轴为垂直轴,向上为下;Z轴方向垂直XY平面,指向观察者为正。图形中的任意一点都可以用相对于坐标原点(0,0,0)的相对位移来表示,如(100,100,0)。该坐标系常用于平面绘图。

2. 用户坐标系(UCS)

AutoCAD2007还采用另外一种坐标系——用户坐标系UCS(User Coordinate System),它是一种相对坐标,常用于3D绘图。

3. 绝对直角坐标

在二维(2D)绘图环境中,直角坐标系包括相互正交的两个轴——X轴和Y轴,通过点到原点(0,0)的距离确定该点的坐标(x,y)。

4. 相对直角坐标

绝对直角坐标的参照点是原点(0,0),而相对直角坐标的参照点是前一点。在AutoCAD 2007中,使用相对直角坐标必须在坐标值前加上@,如某一点相对坐标为@ 4,5。

5. 绝对极坐标

通过相对于原点距离和与X轴的角度确定点的位置,如4<45,表示该点到原点距离为4,与X轴正方向夹角为45度。

6. 相对极坐标

绝对极坐标的参照点是原点(0,0),而相对极坐标的参照点是前一点。在AutoCAD 2007中,使用相对直角坐标必须在坐标值前加上@,如某一点相对坐标为@ 4<45。

2.3.2绘图单位

1. 调用方式

命令UNITS(UN)或格式——单位

2. 长度

类型:默认小数,有科学、分数、工程、建筑、等。

精度:默认0.0000,自己可以调整。

3. 角度

默认十进制,逆时针方向为正。

4. 单位

默认毫米,常用的还有厘米、米、公里、英寸等。

5. 方向

角度基准默认方向为东,即X轴正方向为角度基准。系统提供了东、南、西、北四个常用的方位为角度基准,用户也可以自定义方向为角度基准。

2.3.3绘图界限

1. 调用方式

命令LIMITS或格式——图形界限。

2. 设置

指定左下角,默认为<0.0000, 0.0000>

指定右上角,默认为<420.0000, 297.0000>即12×9英寸,A3纸。

注:A4纸为297×210,B5纸为257×182。

2.3.4图层

1. 调用方式

命令LAYER(LA)或格式——图层或在对象特性中点击图层。

2. 设置

在AutoCAD2007中,最重要的绘图技术之一就是层的使用。可以将工作窗口看成是包含了多页相互层叠的绘图媒体,通过上面的页面可以看到下面的图形。可以设置图层的当前状态、开关、锁定、颜色、线型、线宽、打印等要素。

2.3.5线型

1. 调用方式

命令LINETYPE(LT)或格式——线型或在对象特性中点击线型。

2. 设置

每个层上都有一相应的线型,各层线型可以相同也可以不同。系统默认的线型为实线。用户可以加载其它的线型,可以自定义线型,也可以改变线的宽度。

2.3.5颜色

1. 调用方式

命令COLOR(COL)或格式——颜色或在对象特性中点击颜色。

2.设置

在AutoCAD2007中,每一层都有自己的颜色体系,层与层之间的颜色可以相同也可以不同。常用的颜色有9种,用户可以在调色板上选取各式颜色。

3.上机内容

3.1 AutoCAD 2007平面图形绘制(2学时)

3.1.1点(POINT)(PO)

设置点的样式:调用方式为格式——点样式,选择图案。一般用系统默认的图案。

绘制方法:指定点位置(随意,不准确)、捕捉点位置(启用栅格捕捉)、键盘输入点位置(平面坐标方式)。

工具栏点击上为多点,键盘输入命令行PO命令为单点。

3.1.2直线(LINE)

调用方式多种,键盘输入L。鼠标指定起点位置(随意,不准确)、捕捉点位置(启用栅格捕捉)、键盘输入点位置(平面坐标方式准确)。下一点的位置同样方法确定。也可采用相对坐标@方式。

3.1.3构造线(XLINE)

无起点也无终点,它是参照线,命令XL。

指定点,任意位置;水平(H);垂直(V);角度(A);二等分(B),偏移(O)。

构造线经剪切后可以蜕化为射线或直线。

3.1.4射线(RAY)

有起点无终点,它是参照线,常用工具栏上无此命令,绘图下拉菜单中有该项。键盘输入为RAY。

射线经剪切后可以蜕化为直线。

3.1.5圆(CIRCLE)

AutoCAD2007中,系统提供6种圆的绘制方法,默认的方法是圆心加半径法。

命令行输入C,系统提示圆心、两点、三点、相切相切半径。注意捕捉各种点的位置。

3.1.6 圆环(DONUT)

常用工具栏上无此命令,绘图下拉菜单中有该项。键盘输入方式为DO。需输入圆环的内径和外径。

3.1.7圆弧(ARC)

AutoCAD2007中,系统提供11种圆弧的绘制方法,默认的方法是起点加圆心加端点方法。

命令行输入A,系统提示圆弧的起点或圆心(CE),另有起点—圆心—端点;起点—圆心—角度;起点—圆心—长度;起点—端点—角度;起点—端点—方向;起点—端点—半径;圆心—起点—端点;圆心—起点—角度;圆心—起点—长度;继续选项。

3.1.8椭圆(ELLIPSE)

椭圆由长轴和短轴组成。AutoCAD2007中,系统提供3种椭圆的绘制方法,默认的方法是指定椭圆的轴端点。

命令行输入EL,单击右键选择提示项。

3.1.9多段线(PLINE)

多线段是AutoCAD2007最常用的功能之一。它由首尾相连的直线和圆弧组成。多线段可以具有宽度。

命令行输入PL,单击右键选择提示项,圆弧(A)、闭合(C)、长度(L)、宽度(W)、半宽(H)。

选择圆弧(A),单击右键出现各提示项,选择角度(A),要求输入包角,包角为正值,圆弧按逆时针方向绘制,包角为负值,圆弧按顺时针方向绘制。选择圆心(CE)、闭合(C)、长度(L)、宽度(W)、半宽(H)、方向(D)、第二点(S)、半径(R)等项继续操作。

3.1.10多线(MLINE)

AutoCAD2007中的多线即为平行线,平行线中的每一条直线称为一个元素,可以有自己的偏移量、颜色、线型等。

AutoCAD2007默认的多线样式为STANDARD,用户可以加载。

调用方式:格式——多线样式。加载以后要保存才能有效。

绘制方法:命令行输入ML,确定比例、对正、样式。

3.1.11样条曲线(SPLINE)

样条曲线即光滑曲线。

绘制方法:命令行输入SPL,确定起点和拟合允差。

3.1.12矩形(RECTANG)

绘制方法:命令行输入REC,确定第一角点和第二角点。

3.1.13正多边形(POL YGON)

绘制方法:命令行输入POL,确定正多边形的边的数量,默认为4。确定圆心或边。注意多边形内接圆和外切圆的区别。

3.1.13图案填充(BHATCH)

绘制方法:命令行输入BH,确定图案类型,角度、拾取点、对象、是否删除孤岛等。用户可自定义图案填充类型。

3.1.14面域(REGION)

绘制方法:命令行输入REGION,选择对象,命令行提示提取了多少环,创建了多少面域。

创建面域后可以进行布尔(BOLLEAN OPERATION)运算。

3.1.15创建块(BLOCK)(B)、插入块(INSERT)

点击修改中的创建块,出现对话框,确定块的名称,选择对象,按回车键,再按确定创建完内部块。

命令行输入WBLOCK(W),出现对话框,确定块的名称,选择对象,按回车键,再按确定创建完外部块。外部块文件保存在磁盘中。

点击修改中的插入块,选择文件中的块名,插入即可。

内部块只能在同一图形中插入。

3.1.16对象编组(Group)(G)

编组是保存的对象集,可以根据需要同时选择和编辑这些对象,也可以分别进行。编组提供了以组为单位操作图形元素的简单方法。可以快速创建编组并使用默认名称。

3.2 AutoCAD 2007平面图形编辑(2学时)

3.2.1删除(ERASE)

点击修改中的删除,选择对象,按回车键即删除选中的对象。

3.2.2复制(COPY)

点击修改中的复制,选择对象,按回车键,指定位移基点,指定位移第二点,完成复制。

3.2.3镜像(MIRROR,MIRRTEXT)

点击修改中的镜像,选择对象,按回车键,指定镜面第一点,指定镜面上的第二点,完成镜像操作。原对象可保留,也可删除。文本镜像用MIRRTEXT命令,其值为0。3.2.4偏移(OFFSET)(O)

点击修改中的偏移,指定偏移距离或通过,指定点以确定偏移所在一侧。

3.2.5阵列(ARRAY)

点击修改中的阵列,选择对象,按回车键,输入阵列类型(矩形R,环形P)。

矩形阵列,输入行数,输入列数,输入行间距或指定单元,输入列间距,按回车键。

环形阵列,指定中心点,输入阵列中项目的数目,指定填充角度,默认360,按回车键。

3.2.6移动(MOVE)(M)

点击修改中的移动,选择对象,按回车键,指定位移基点,指定位移第二点,完成移动。

3.2.7旋转(ROTA TE)(RO)

点击修改中的旋转,选择对象,按回车键,指定基点,指定旋转的角度,完成旋指定位移第二点,完成移动。转。

3.2.8比例(SCALE)(SC)

比例是真实大小的缩放,点击修改中的比例,选择对象,按回车键,指定基点,指定比例因子,完成比例。

3.2.9拉伸(STRETCH)(S)

点击修改中的拉伸,选择对象,圈定顶点(不要全部选中),按回车键,指定基点,指定位移第二点,完成拉伸。要以交叉窗口或交叉多边形方式选择对象。

3.2.10拉长(LENGTHEN)(LEN)

点击修改中的拉长,选择对象或(增量DE,百分数P,全部T,动态DY)。增量DE 表示拉长的距离,百分数P表示拉长原长度的百分数,全部T表示拉长后的总长度,动态

DY表示随意拉长。

3.2.11修剪(TRIM)(TR)

点击修改中的修剪,选择剪切边,按回车键,选择要修剪的对象,完成修剪。

3.2.12延伸(EXTEND)(EX)

点击修改中的延伸,选择对象边界,,选择要延伸的对象,完成延伸。

3.2.13打断(BREAK)(BR)

点击修改中的打断,选择打断对象(注意点击位置),指定第二个打断点或第一点(F),完成打断。

3.2.14倒角(CHAMFER)(CHA)

点击修改中的倒角,选择第一条直线或(多段线P,距离D,角度A,修剪T,方法M),选择第二条直线,完成倒角。

3.2.15圆角(FILLET)(F)

点击修改中的圆角,选择第一个对象或(多段线P,半径R,修剪T),选择第二个对象,完成圆角。

3.2.16分解(EXPLODE)(EXP)

点击修改中的分解,选择对象,按回车键,完成分解。

3.3 AutoCAD 2007尺寸标注和文本编辑(2学时)

尺寸标注(DIMENSION)和文本编辑是图纸的重要组成部分,是识图和制造的重要信息和主要依据,AutoCAD2007提供了强大的标注功能。

3.3.1尺寸标注要素

尺寸标注由标注线、尺寸界线(也称延伸线)、箭头、尺寸文字等要素构成。

3.3.2尺寸标注类型

线性标注:标注线性尺寸,如长、宽等距离数值。

径向标注:标注圆或圆弧的直径或半径数值。

角度标注:标注角度数值。

3.3.3尺寸标注工具

菜单栏中有标注项,下拉菜单中有多种选项。

工具中有尺寸标注项,可打开该工具栏,共有17项内容。

3.3.4使用方法

线性标注:标注水平或垂直线段。

对齐标注:标注斜线。

坐标标注:标注点的坐标。

半径标注:标注圆或圆弧的半径。

直径标注:标注圆或圆弧的直径。

角度标注:标注圆、圆弧或直线的角度。

快速标注:选择整个编辑对象进行批量标注。

基线标注:先有一基准标注,然后在此基础上进行标注。

连续标注:先有一基准标注,然后在此基础上进行分段连续标注

快速引线:实现引出标志,对图中的特征点进行说明和注释。

圆心标注:标注圆心位置。

标注样式:对标注样式进行修改。

3.3.5文本编辑

文字是图形的一部分,在文本编辑中常用多行文字编辑器。

在格式——文字样式中有多种样式可供选择。用户也可自定义样式并保存备用。

1. 单行文本

命令行输入TEXT,指定起点(对正J,样式S),输入文字。

样式:格式——文字样式,新建样式。

2. 多行文本(MT)

点击修改中的多行文字,圈定一长方形,确定对正J,样式S,旋转R,高度H,宽度W。编辑文字,确定退出。

3. 弧形文本

点击菜单栏快捷工具中的文字——弧形对齐文字,选择一弧形,编辑文字,确定退出。

3.4 AutoCAD 2007三维图形(4学时)

AutoCAD2007支持三种类型的三维建模:线框模型、曲面(网格)模型和实体模型。每种模型都有自己的创建方法和编辑技术。线框模型描绘三维对象的框架。线框模型中没有面,只有描绘对象边界的点、直线和曲线。用AutoCAD2007可在三维空间的任何位置放置二维(平面)对象来创建线框模型。AutoCAD2007也提供一些三维线框对象,例如三维多段线(只能显示CONTINUOUS线型)和样条曲线。由于构成线框模型的每个对象都必须单独绘制和定位,因此,这种建模方式可能最为耗时。曲面模型比线框模型更为复杂,它不仅定义三维对象的边而且定义面。曲面模型使用多边形网格定义镶嵌面。由于网格面是平面的,因此网格只能近似于曲面。实体建模是最容易使用的三维建模类型。利用AutoCAD2007实体模型,可以通过创建基本三维形状来创建三维对象,然后对这些形状进行合并,找出它们差集或交集(重叠)部分,结合起来生成更为复杂的实体。也可以将二维对象沿路径延伸或绕轴旋转来创建实体。

3.4.1UCS坐标系统

1. 三维视图

菜单栏——视图——三维视图

2. 新建UCS

命令行输入UCS,根据提示建立新的坐标系统或在工具栏中调出UCS和UCSⅡ进行

相应操作。

3. 三维导航

命令行输入3DORBIT或在工具栏中点击图标可调出三维导航。

3.4.2三维线框

线框是描述三维对象的框架,它仅由描述对象边的点、直线和曲线构成,不售描述表面信息。在AutoCAD 2007中,通过将任意二维平面对象放置到三维空间的任何位置可创建线框模型,可以使用以下几种方法:

1. 输入三维坐标

输入定义对象的X、Y和Z位置的坐标。

2.设置默认构造平面

在设置默认构造平面(XY)上面将通过定义UCS来绘制对象。

3.移动或复制

创建对象之后,将它移动或复制到其适当的三维位置。

3.4.2三维曲面(网格)

1. 三维曲面模型

菜单栏——绘图——曲面——三维曲面或从绘图工具栏中调出曲面或在命令栏中键入3D,可绘制9种曲面模型。

(1)长方体表面(AI_BOX):指定角点,指定长度,指定宽度,指定高度,指定长方体表面绕Z 轴旋转的角度或[参照(R)]。

(2)楔形表面(AI_WEDGE):指定角点给楔体表面,指定长度给楔体表面,指定楔体表面的宽度,指定高度给楔体表面,指定楔体表面绕Z 轴旋转的角度。

(3)棱锥面(AI_PYRAMID):指定棱锥面底面的第一角点,指定棱锥面底面的第二角点,指定棱锥面底面的第三角点,指定棱锥面底面的第四角点或[四面体(T)],指定棱锥面的顶点或[棱(R)/顶面(T)]。

(4)圆锥面(AI_CONE):指定圆锥面底面的中心点,指定圆锥面底面的半径或[直径(D)],指定圆锥面顶面的半径或[直径(D)] <0>,指定圆锥面的高度,输入圆锥面曲面的线段数目<16>。

(5)球面(AI_SPHERE):指定中心点给球面,指定球面的半径或[直径(D)],输入曲面的经线数目给球面<16>,输入曲面的纬线数目给球面<16>。

(6)上半球面(AI_DOME):指定中心点给上半球面,指定上半球面的半径或[直径(D)],输入曲面的经线数目给上半球面<16>,输入曲面的纬线数目给上半球面<8>。

(7)下半球面(AI_DISH):指定中心点给下半球面,指定下半球面的半径或[直径(D)],输入曲面的经线数目给下半球面<16>,输入曲面的纬线数目给下半球面<8>。

(8)圆环面(AI_TORUS):指定圆环面的中心点,指定圆环面的半径或[直径(D)],指定圆管的半径或[直径(D)],输入环绕圆管圆周的线段数目<16>,输入环绕圆环面圆周的线段数目<16>。

(9)网格(AI_MESH):指定网格的第一角点,指定网格的第二角点,指定网格的第三角点,指定网格的第四角点,输入M 方向上的网格数量,输入N 方向上的网格数量。

2. 创建三维曲面

(1)三维面(3DFACE):指定第一点或[不可见(I)],指定第二点或[不可见(I)],指定第三点或[不可见(I)],指定第四点或[不可见(I)],……在N方向上只有2点,M方向上可有多点。

(2)三维网格(3DMESH):输入M 方向上的网格数量(3),输入N 方向上的网格数量(3),指定顶点(0, 0) 的位置,指定顶点(0, 1) 的位置,指定顶点(0, 2) 的位置,指定顶点(1, 0) 的位置,指定顶点(1, 1) 的位置,指定顶点(1, 2) 的位置,指定顶点(2, 0) 的位置,指定顶点(2, 1) 的位置,指定顶点(2, 2) 的位置。注意点的输入顺序。

(3)平移曲面(TABSURF):用于创建由轨迹线和方向向量定义的曲面。首先选择用作轮廓曲线的对象,然后选择用作方向矢量的对象。

(4)旋转曲面(REVSURF):用于将一个对象绕一个轴旋转来创建曲面。执行命令后系统提示当前线框密度: SURFTAB1=6 SURFTAB2=6,选择要旋转的对象,选择定义旋转轴的对象,指定起点角度<0>,指定包含角(+=逆时针,-=顺时针) <360>。

(5)直纹曲面(RULESURF):在两条曲线之间创建曲面。执行命令后系统提示当前线框密度: SURFTAB1=6,选择第一条定义曲线,选择第二条定义曲线。

(6)边界曲面(EDGESURF):用于创建三维多边形网格,边界曲面是通过4条首尾相连的边进行插值获得。执行命令后系统提示当前线框密度: SURFTAB1=6 SURFTAB2=6,选择用作曲面边界的对象1,选择用作曲面边界的对象2,选择用作曲面边界的对象3,选择用作曲面边界的对象4。

3.4.3三维实体(建模)

1. 三维实体模型

菜单栏——绘图——实体或从绘图工具栏中调出实体,可绘制6种实体模型。

(1)长方体(BOX):指定长方体的角点或[中心点(CE)] <0,0,0>,指定角点或[立方体(C)/长度(L)],指定高度。

(2)球体(SPHERE):执行命令后系统提示当前线框密度: ISOLINES=4,指定球体球心<0,0,0>,指定球体半径或[直径(D)]。

(3)圆柱体(CYLINDER):执行命令后系统提示当前线框密度: ISOLINES=4,指定圆柱体底面的中心点或[椭圆(E)] <0,0,0>,指定圆柱体底面的半径或[直径(D)],指定圆柱体高度或[另一个圆心(C)]。

(4)圆锥体(CONE):执行命令后系统提示当前线框密度: ISOLINES=4,指定圆锥体底面的中心点或[椭圆(E)] <0,0,0>,指定圆锥体底面的半径或[直径(D)],指定圆锥体高度或[顶点(A)]。

(5)楔形(WEDGE):指指定楔体的第一个角点或[中心点(CE)] <0,0,0>,指定角点或[立方体(C)/长度(L)],指定高度。

(6)圆环体(TORUS):执行命令后系统提示当前线框密度: ISOLINES=4,指定圆环体中心<0,0,0>,指定圆环体半径或[直径(D)],指定圆管半径或[直径(D)]。

(7)实体倒角(CHAMFER):点击修改中的倒角,选择第一条直线或(多段线P,距离D,角度A,修剪T,方法M),选择一个棱,实际上选择的是一个面,回车,指定基面的倒角距离,回车,指定其他曲面的倒角距离,回车,选择边或[环(L)],回车,完成倒角。

(8)实体圆角(FILLET):点击修改中的倒角,选择第一个对象或[多段线(P)/半径(R)/修剪(T)],选择一个棱,输入圆角半径,选择边或[链(C)/半径(R)],回车,完成圆角。

2. 创建三维实体

(1)拉伸(EXTRUDE):通过拉伸现有的二维对象来创建三维实体。执行命令后系统提示当前线框密度: ISOLINES=4,选择一个或多个二维对象后回车,指定拉伸高度或[路径(P)],指定拉伸的倾斜角度<0>。

(2)旋转(REVOLVE):绕轴旋转二维对象以创建实体。执行命令后系统提示当前线框密度: ISOLINES=4,选择对象,回车,指定旋转轴的起点或定义轴依照[对象(O)/X 轴(X)/Y 轴(Y)],指定旋转角度<360>。

使用SWEEP 命令,可以通过沿开放或闭合的二维或三维路径扫掠开放或闭合的平面曲线(轮廓)来创建新实体或曲面。

(3)扫掠(SWEEP):用于沿指定路径以指定轮廓的形状(扫掠对象)绘制实体或曲面。可以扫掠多个对象,但是这些对象必须位于同一平面中。如果沿一条路径扫掠闭合的曲线,则生成实体。

(4)放样(LOFT):使用LOFT 命令,可以通过对包含两条或两条以上横截面曲线的一组曲线进行放样(绘制实体或曲面)来创建三维实体或曲面。横截面定义了结果实体或曲面的轮廓(形状)。横截面(通常为曲线或直线)可以是开放的(例如圆弧),也可以是闭合的(例如圆)。LOFT 用于在横截面之间的空间内绘制实体或曲面。使用LOFT 命令时,至少必须指定两个横截面。如果对一组闭合的横截面曲线进行放样,则生成实体。

(5)剖切(SLICE):用平面剖切(切开)一组实体。选择一个或多个实体对象后回车,指定切面上的第一个点,依照[对象(O)/Z 轴(Z)/视图(V)/XY 平面(XY)/YZ 平面(YZ)/ZX 平面(ZX)/三点(3)] <三点>,指定平面上的第二个点,指定平面上的第三个点,在要保留的一侧指定点或[保留两侧(B)]。

3. 实体编辑

(1)并集(UNION):用并集创建组合面域或实体。选择对象(多于一个),回车。

(2)差集(SUBTRACT):用差集创建组合面域或实体。选择要从中减去的实体或面域,回车,选择要减去的实体或面域,回车。

(3)交集(INTERSECT):从实体或面域的交集创建组合实体或面域。选择对象(多于一个),回车。

(4)拉伸面:按指定高度或沿路径拉伸实体对象的选定面。执行命令后首先选择面,

回车,指定拉伸高度或[路径(P)],回车,指定拉伸倾斜角度<0>,回车。

(5)移动面:按指定高度或沿路径移动实体对象的选定面。执行命令后首先选择面,回车,指定基点或位移,指定位移第二点。

(6)偏移面:按指定的距离或点等距偏移实体对象。执行命令后首先选择面,回车,指定偏移距离。

(7)删除面:删除面,包括实体对象上的倒角或圆角。恢复(还原)切掉的面。执行命令后首先选择面,回车。

(8)旋转面:绕指定的轴旋转实体对象上的一个或多个面。执行命令后首先选择面,回车,指定轴点或[经过对象的轴(A)/视图(V)/X 轴(X)/Y 轴(Y)/Z 轴(Z)] <两点>,在旋转轴上指定第二个点,指定旋转角度或[参照(R)],回车,完成旋转。只有实体的内表面才可以旋转,实体外表面无法旋转。

(9)倾斜面:用指定的角度倾斜实体对象的面。执行命令后首先选择面,回车,指定基点,指定沿倾斜轴的另一个点,指定倾斜角度,回车,完成倾斜。

(10)复制面:将实体对象上的面复制为面域或实体。执行命令后首先选择面,回车,指定基点或位移,指定位移第二点,回车,完成复制。

(11)着色面:修改实体对象单个面的颜色。执行命令后首先选择面,回车,确定颜色,点击确定,完成着色。

(12)抽壳:以指定的厚度在实体对象上创建中空的薄壁。执行命令后首先选择三维实体,回车,指定抽壳偏移距离,回车,完成抽壳。

4. 三维操作

(1)三维镜像(MIRROR3D):选择对象,回车,指定镜像平面(三点) 的第一个点或[对象(O)/最近的(L)/Z 轴(Z)/视图(V)/XY 平面(XY)/YZ 平面(YZ)/ZX 平面(ZX)/三点(3)] <三点>,在镜像平面上指定第二点,在镜像平面上指定第三点指定平面上的三点,是否删除源对象?[是(Y)/否(N)] <否>,回车,完成镜像。

(2)三维阵列(3DARRAY):选择对象,回车,输入阵列类型[矩形(R)/环形(P)] <矩形>,回车,输入行数(---) <1>,输入列数(|||) <1>,输入层数(...) <1>,指定层间距(...),回车,完成矩形阵列。如果选择环形(P),输入阵列中的项目数目,指定要填充的角度(+=逆时针, -=顺时针) <360>,旋转阵列对象?[是(Y)/否(N)] <是>,指定阵列的中心点,指定旋转轴上的第二点,完成环形阵列。

(3)三维旋转(ROTATE3D):选择对象,回车,指定轴上的第一个点或定义轴依据,[对象(O)/最近的(L)/视图(V)/X 轴(X)/Y 轴(Y)/Z 轴(Z)/两点(2)],确定旋转轴,指定旋转角度,完成旋转。

3.4.4三维渲染

可以将照明和材质添加到三维对象的表面,以产生真实效果。决定图形的什么部分要渲染后,可以添加光、阴影和附着材质或图像。

AutoCAD 运用几何图形、光源和材质来把模型渲染为具有真实感的图像。如果是为

了演示,那么就需要全部渲染。如果时间有限,或者显示设备和图形设备不能提供足够的灰度等级和颜色,那么就不必精细渲染。如果只需快速查看一下设计的整体效果,那么简单消隐或着色图像就足够了。

1.渲染类型

(1)一般渲染:基本的AutoCAD 渲染选项,可以获得最佳性能。使用“一般渲染”选项时,不需要应用任何材质、添加任何光源,也不需要设置场景就可以对模型进行渲染。当渲染一个新的模型时,AutoCAD 渲染程序自动使用一个虚拟的“在肩膀上方”的平行光源。这个光源不能移动或调整。

(2)照片级真实感渲染:照片级真实感扫描线渲染程序,可以显示位图材质和透明材质,并产生体积阴影和贴图阴影。

(3)照片级光线跟踪渲染:照片级真实感光线跟踪渲染程序,它使用光线跟踪产生反射、折射和更加精确的阴影。

2.渲染光源

光源照射模型每个表面的方式受面与光线之间夹角的影响,对于点光源和聚光灯,还要受光源到面之间距离的影响。光源从一个表面的反射受表面材质反射性质的影响。

AutoCAD可以支持四种类型的光源:环境光、平行光、点光源和聚光灯。从这些光源发出的光穿过面,默认情况下不会投下阴影。要创建阴影,请使用“照片级真实感”、“照片级光线跟踪”渲染程序或3D Studio。

(1)环境光:环境光为模型的每个表面都提供相同的照明。它既不来自特定的光源,也没有方向性。可以设置环境光的强度或将其关闭。应该将环境光设得低一些,否则它会使图像的颜色饱和并产生一种发旧的感觉。关闭环境光可以模拟黑暗的房间内部或夜晚的场景。环境光本身并不能产生具有真实感的图像。因为所有面的照明都一样,所以分辨不出邻接面。使用环境光可以为那些不能被有向光源(如聚光灯)直接照射到的表面提供填充光。

(2)平行光:平行光源只向一个方向发射统一的平行光射线。光射线在指定的光源点的两侧无限延伸。平行光的强度并不随着距离的增加而衰减,对于每一个被照射的表面,其亮度都与其在光源处相同。在图形中,平行光的方向要比其位置重要得多。所有的对象都能照亮,包括任何相对光线被“遮挡”了的对象。平行光的特点是就好象它位于图形之外。为了避免混淆,最好将平行光源放置在图形范围内。可以用平行光统一照亮对象或背景,并模拟日光。单个平行光可以模拟太阳。虽然太阳是向所有方向辐射,但是因为它的尺寸和距离都很大,当其光线到达地球时,实际上已经可以看作是平行光了。由于平行光频繁地以这种方式模拟日光,特别是对建筑物渲染时,照片级真实感渲染程序提供了一个专门的太阳角度计算器,用来根据时间和地理位置计算太阳的位置。要定位平行光源,可以使用“新建平行光”和“修改平行光”对话框中的“方位角”和“仰角”控件。

(3)点光源:点光源从其所在位置向所有方向发射光线。点光源的强度随着距离的增加根据其衰减率衰减。点光源可以用来模拟灯泡发出的光。使用点光源以达到基本的照

明效果。将点光源与聚光灯组合起来可以得到我们通常希望的“照明效果”。点光源可以替换环境光在局部区域中提供填充光。

(4)聚光灯:聚光灯发射有向的圆锥形光。可以指定光的方向和圆锥的尺寸。与点光源相似,聚光灯的强度也随着距离的增加而衰减。聚光灯有聚光角和照射角,它们一起控制光沿着圆锥的边如何衰减。当来自聚光灯的光照射表面时,照明强度最大的区域被照明强度较低的区域所包围。

3.材质

为了给渲染提供更多的真实感,可以在模型的表面应用材质,如钢和塑料。可以为单个对象、具有特定编号的所有对象、块或图层附着材质。

渲染通常包括三个步骤:

?准备模型:包括以下特有的绘图技术、消除隐藏面、构造平滑着色网格和设置视图分辨率。

?照明:包括创建和放置光源以及创建阴影。

?添加颜色:包括定义材质的反射质量和将材质与可见表面相关联。

3.5 AutoCAD 2007综合训练(2学时)

3.5.1 平面图形

结合实际制作平面图形,要使用图层、线型、颜色、图案填充等功能,大比例尺图形要有图名、标注和文本注解标签等,小比例尺图形要有图名、图例、比例尺和文本标签等。

3.5.2 三维图形

绘制自然界真实三维物体或创作虚构三维物体,要使用拉伸、剖切、旋转、布尔运算、镜向、阵列等功能。

以上平面和三维图形文件存于U盘中交指导教师评阅。

计算机图形学作业

计算机图形学第一次作业 计算机X班XXX 1XXX010XXX 1.你是否想用图形学的有关知识去解决一两个实际问题?你想解决的问题是什么?考虑如何解决? 答:我希望可以解决的有设计汽车外壳和制作动画。 解决方法:(1)汽车外壳 使用3D MAX/AutoCAD软件进行设计。 (2)制作动画 利用动画制作软件(3D MAX)在计算机上制作动画 2.某彩色图形显示系统,CRT显示器的分辨率为1024×1024,它可以从2^17次方种颜色中选择出2^15次方来显示,其帧缓冲器的容量应该如何计算?查色表的长度和宽度应为多少? 解:16b==2B 因为分辨率为1024x1024 所以1024*1024*2B=2MB 3.采用Bresenham画线算法,绘出起点(1,3),终点为(9,18)的直线段。 解: void DrawBresenhamline(int x0, int y0, int x1, int y1) { int dx = x1 - x0;//x偏移量 int dy = y1 - y0;//y偏移量 int ux = dx >0 ?1:-1;//x伸展方向 int uy = dx >0 ?1:-1;//y伸展方向 int dx2 = dx <<1;//x偏移量乘2 int dy2 = dy <<1;//y偏移量乘2 if(abs(dx)>abs(dy)) {//以x为增量方向计算 int e = -dx; //e = -0.5 * 2 * dx,把e 用2 * dx* e替换 int x = x0;//起点x坐标 int y = y0;//起点y坐标 for (x = x0; x < x1;x+=ux) { printf ("%d,%d\n",x, y); e=e + dy2;//来自2*e*dx= 2*e*dx + 2dy (原来是e = e + k) if (e > 0)//e是整数且大于0时表示要取右上的点(否则是右下的点) { y += uy; e= e - dx2;//2*e*dx = 2*e*dx - 2*dx (原来是e = e -1) } } } else {//以y为增量方向计算

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

计算机图形学上机实验报告

计算机图形学实验报告 姓名: 学号: 班级:

目录 实验一OpenGL程序结构练习 (3) 实验二基本图形生成 (6) 实验三交互式控制 (9) 实验四图形基本变换 (12) 实验五三维图形生成及显示 (15) 实验六三维图形生成及显示 (19)

实验一OpenGL程序结构练习 【实验目的】 1.熟悉C语言环境下OpenGL的使用方法; 2.了解OpenGL程序的基本结构。 【实验原理】 绝大多数OpenGL程序具有类似的结构,包含下述函数 main(): 定义回调函数,打开一个或多个具有指定属性的窗口,进入事件循环(最后一条可执行语句) init(): 设置状态变量、视图、属性、回调、显示函数、输入和窗口函数#include // glut.h includes gl.h and glu.h void display() { ……} void init() { ……} int main( intargc, char **argv) { ……}

【实验内容】 1.了解程序中各个结构的功能; 2.用OpenGL生成三角形。 【实验步骤及结果】 1.导入OpenGL的glut3 2.lib和glut.h文件:将.lib文件存放到C 语言程序文件夹的Library下,.h文件放到Include下;导入应用程序扩展文件glut32.dll,存放到system文件夹下。 2.打开VC 6.0,新建工程,并命名为text1,如图1. 图 1 3.在工程text1下新建源文件,并命名为text1.cpp。 4.编写代码并编译链接,如图2所示。

计算机图形学作业-Display-答案分析

计算机图形学作业I 一.判断题 1.齐次坐标提供了坐标系变换的有效方法,但仍然无法表示无穷远的点;(×) 2.若要对某点进行比例、旋转变换,首先需要将坐标原点平移至该点,在新的坐标系下做比例或旋转变换,然后在将原点平移回去;(√) 3. 相似变换是刚体变换加上等比缩放变换;(√) 4. 保距变换是刚体变换加上镜面反射;(√) 5. 射影变换保持直线性,但不保持平行性。(√) 二、填空题 1.透视投影的视见体为截头四棱锥形状;平行投影的视见体为长方体形状。 2.字符的图形表示可以分为矢量表示和点阵表示两种形式。 3.仿射变换保持直线的平行性 4.刚体变换保持长度 5.保角变换保持向量的角度 三、单项选择题 1. 分辨率为1024×1024的显示器各需要多少字节位平面数为24的帧缓存?( D) A. 512KB; B. 1MB; C. 2MB; D. 3MB ; 2. 在透视投影中,主灭点的最多个数是( C ) A 1; B 2; C 3; D 4 3. 以下关于图形变换的论述不正确的是( B ) A. 平移变换不改变图形大小和形状,只改变图形位置; B. 拓扑关系不变的几何变换不改变图形的连接关系和平行关系; C.旋转变换后各图形部分间的线性关系和角度关系不变,变换后直线的长度不变 D.错切变换虽然可引起图形角度的改变,但不会发生图形畸变; 4. 使用下列二维图形变换矩阵:将产生变换的结果为( D ) A. 图形放大2倍; B. 图形放大2倍,同时沿X、Y1个绘图单位; C.沿X坐标轴方向各移动2个绘图单位; D.沿X坐标轴方向放大2倍,同时沿X、Y坐标轴方向各平移1个绘图单位。 5. 下列有关投影的叙述语句中,正确的论述为(B ) A. 透视投影具有近小远大的特点; B. 平行投影的投影中心到投影面距离是无限的; C. 透视投影变换中,一组平行于投影面的线的投影产生一个灭点; T =

计算机图形学实验报告,DOC

欢迎共阅

目录

实验一直线的DDA算法 一、【实验目的】 1.掌握DDA算法的基本原理。 2.掌握 3. 1.利用 2.加强对 四 { glClearColor(1.0f,1.0f,1.0f,1.0f); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150.0); } voidDDALine(intx0,inty0,intx1,inty1) { glColor3f(1.0,0.0,0.0); intdx,dy,epsl,k; floatx,y,xIncre,yIncre; dx=x1-x0;dy=y1-y0;

x=x0;y=y0; if(abs(dx)>abs(dy))epsl=abs(dx); elseepsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { glPointSize(3); glBegin(GL_POINTS); glEnd(); } } { } { } { glutInitWindowSize(400,300); glutInitWindowPosition(100,120); glutCreateWindow("line"); Initial(); glutDisplayFunc(Display); glutReshapeFunc(winReshapeFcn); glutMainLoop(); return0; }

计算机图形学作业-Display-答案

计算机图形学作业 I 一.判断题 1.齐次坐标提供了坐标系变换的有效方法,但仍然无法表示无穷远的点;(×) 2.若要对某点进行比例、旋转变换,首先需要将坐标原点平移至该点,在新的坐标系下做比例或旋转变换,然后在将原点平移回去;(√) 3. 相似变换是刚体变换加上等比缩放变换;(√) 4. 保距变换是刚体变换加上镜面反射;(√) 5. 射影变换保持直线性,但不保持平行性。(√) 二、填空题 1.透视投影的视见体为截头四棱锥形状;平行投影的视见体为长方体形状。 2.字符的图形表示可以分为矢量表示和点阵表示两种形式。 3.仿射变换保持直线的平行性 4.刚体变换保持长度 5.保角变换保持向量的角度 三、单项选择题 1. 分辨率为1024×1024的显示器各需要多少字节位平面数为24的帧缓存?( D) A. 512KB; B. 1MB; C. 2MB; D. 3MB ; 2. 在透视投影中,主灭点的最多个数是( C ) A 1; B 2; C 3; D 4 3. 以下关于图形变换的论述不正确的是( B ) A. 平移变换不改变图形大小和形状,只改变图形位置; B. 拓扑关系不变的几何变换不改变图形的连接关系和平行关系; C.旋转变换后各图形部分间的线性关系和角度关系不变,变换后直线的长度不变 D.错切变换虽然可引起图形角度的改变,但不会发生图形畸变; 4. 使用下列二维图形变换矩阵:将产生变换的结果为( D ) A. 图形放大2倍; B. 图形放大2倍,同时沿X、Y1个绘图单位; C.沿X坐标轴方向各移动2个绘图单位; D.沿X坐标轴方向放大2倍,同时沿X、Y坐标轴方向各平移1个绘图单位。 5. 下列有关投影的叙述语句中,正确的论述为(B ) A. 透视投影具有近小远大的特点; B. 平行投影的投影中心到投影面距离是无限的; C. 透视投影变换中,一组平行于投影面的线的投影产生一个灭点; T =

计算机图形学实验二

实验报告 课程名称:计算机图形学 实验项目:区域填充算法 实验仪器:计算机 系别:计算机学院 专业:计算机科学与技术 班级姓名:计科1602/ 学号:2016011 日期:2018-12-8 成绩: 指导教师:

一.实验目的(Objects) 1.实现多边形的扫描线填充算法。 二.实验内容 (Contents) 实现多边形的扫描线填充算法,通过鼠标,交互的画出一个多边形,然后利用种子填充算法,填充指定的区域。不能使用任何自带的填充区域函数,只能使用画点、画线函数或是直接对图像的某个像素进行赋值操作;

三.实验内容 (Your steps or codes, Results) //widget.cpp //2016CYY Cprogramming #include"widget.h" #include #include #include using namespace std; #define H 1080 #define W 1920 int click = 0; //端点数量 QPoint temp; QPoint first; int result = 1; //判断有没有结束 int sign = 1; //2为画线 int length = 5; struct edge { int ymax; float x; float dx; edge *next; }; edge edge_; QVector edges[H]; QVector points;//填充用 bool fin = false; QPoint *Queue = (QPoint *)malloc(length * sizeof(QPoint)); //存放端点的数组 Widget::Widget(QWidget *parent) : QWidget(parent) { } Widget::~Widget() { } void Widget::mouseMoveEvent(QMouseEvent *event) { setMouseTracking(true); if (click > 0 && result != 0) { startPt = temp; endPt =event->pos(); sign = 2; update(); } } void Widget::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { } else if (event->button() == Qt::RightButton) { sign = 2;

计算机图形学实验指导书1

佛山科学技术学院计算机图形学实验指导书 李晓东编 电信学院计算机系 2011年11月

实验1 直线段的扫描转换 实验类型:设计性 实验类别:专业实验 实验目的 1.通过实验,进一步理解直线段扫描转换的DDA算法、中点bresenham算法及 bresenham算法的基本原理; 2.掌握以上算法生成直线段的基本过程; 3.通过编程,会在C/C++环境下完成用DDA算法、中点bresenham算法及 bresenham算法对任意直线段的扫描转换。 实验设备及实验环境 计算机(每人一台) VC++6.0或其他C/C++语言程序设计环境 实验学时:2学时 实验内容 用DDA算法中点bresenham算法及bresenham算法实现任意给定两点的直线段的绘制(直线宽度和线型可自定)。 实验步骤: 1、复习有关算法的基本原理,明确实验目的和要求; 2、依据算法思想,绘制程序流程图; 3、设计程序界面,要求操作方便; 4、用C/C++语言编写源程序并调试、执行; 5、分析实验结果 6、对程序设计过程中出现的问题进行分析与总结; 7、打印源程序或把源程序以文件的形式提交; 8、按格式要求完成实验报告。 实验报告要求: 1、各种算法的基本原理; 2、各算法的流程图 3、实验结果及分析(比较三种算法的特点,界面插图并注明实验条件) 4、实验总结(含问题分析及解决方法)

实验2 圆的扫描转换 实验类型:设计性 实验类别:专业实验 实验目的 1、通过实验,进一步理解和掌握中点bresenham画圆算法的基本原理; 2、掌握以上算法生成圆和圆弧的基本过程; 3、掌握在C/C++环境下完成用中点bresenham算法圆或圆弧的绘制方法。实验设备及实验环境 计算机(每人一台) VC++6.0或其他C/C++语言程序设计环境 实验学时:2学时 实验内容 用中点(Besenham)算法实现圆或圆弧的绘制。 实验步骤 1.复习有关圆的生成算法,明确实验目的和要求; 2.依据算法思想,绘制程序流程图(注意圆弧生成时的输入条件); 3.设计程序界面,要求操作方便; 4.用C/C++语言编写源程序并调试、执行; 5.分析实验结果 6.对程序设计过程中出现的问题进行分析与总结; 7.打印源程序或把源程序以文件的形式提交; 8.按格式要求完成实验报告。 实验报告要求: 1.分析算法的工作原理; 2.画出算法的流程图 3.实验结果及分析(比较圆与圆弧生成算法的不同) 4.实验总结(含问题分析及解决方法)

计算机图形学实验

实验1 直线的绘制 实验目的 1、通过实验,进一步理解和掌握DDA和Bresenham算法; 2、掌握以上算法生成直线段的基本过程; 3、通过编程,会在TC环境下完成用DDA或中点算法实现直线段的绘制。实验环境 计算机、Turbo C或其他C语言程序设计环境 实验学时 2学时,必做实验。 实验内容 用DDA算法或Besenham算法实现斜率k在0和1之间的直线段的绘制。 实验步骤 1、算法、原理清晰,有详细的设计步骤; 2、依据算法、步骤或程序流程图,用C语言编写源程序; 3、编辑源程序并进行调试; 4、进行运行测试,并结合情况进行调整; 5、对运行结果进行保存与分析; 6、把源程序以文件的形式提交; 7、按格式书写实验报告。 实验代码:DDA: # include # include

void DDALine(int x0,int y0,int x1,int y1,int color) { int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { putpixel((int)(x+0.5),(int)(y+0.5),4); x+=xIncre; y+=yIncre; } } main(){ int gdriver ,gmode ;

计算机图形学作业题

计算机图形学作业题 1. 计算机中由图形的形状参数(方程或分析表达式的系数,线段的端点坐标等)加属性参数(颜色、线型等)来表示图形称图形的参数表示;枚举出图形中所有的点称图形的点阵表示,简称为图像(数字图像) 2. 什么是计算机图形学?计算机图形学有哪些研究内容? 3. 计算机图形学有哪些应用领域? 4. 计算机图形学有哪些相关学科分支?它们的相互关系是怎样的? 5. 图形系统的软件系统由哪些软件组成?举例说明。 6. 了解计算机图形系统的硬件。 7. 什么是显示器的分辨率、纵横比、刷新率? 8. 什么是像素、分辨率、颜色数?分辨率、颜色数与显存的关系? 分辨率M ?N 、颜色个数K 与显存大小V 的关系: 例:分辨率为1024像素/行?768行/ 帧,每像素24位(bit )颜色(224种颜色)的显示器,所需的显存为:1024?768?24位(bit )=1024?768?24/8=2359296字节(byte )。或:每像素16777216种颜色(24位真彩色),1024?768的分辨率,所需显存为:1024?768?log 216777216位显存=2359296字节显存。 9. 什么是图元的生成?分别列举两种直线和圆扫描转换算法。 10. OpenGL 由核心库GL(Graphics Library)和实用函数库GLU(Graphics Library Utilities)两个库组成。 11. 区域填充算法要求区域是连通的,因为只有在连通区域中,才可能将种子点的颜色扩展到区域内的其它点。 区域可分为 向连通区域和 向连通区域。区域填充算法有 填充算法和 填充算法。 12. 字符生成有哪两种方式? 点阵式(bitmap fonts 点阵字——raster 光栅方法):采用逐位映射的方式得到字符的点阵和编码——字模位点阵。 笔画式(outline fonts 笔画字——stroke 方法):将字符笔画分解为线段,以线段端点坐标为字符字模的编码。 13. 图形信息包含图形的 和 。 14. 什么是图形变换?图形变换只改变图形的 不改变图形的 。图形变换包括 和 ( )。 15. 熟练掌握二维图形的齐次坐标表示、平移、比例、旋转、对称变换以及复合变换的方法和原则。 16. 图形的几何变换包括 、 、 、 、 ;图形连续作一次以上的几何变换称 变换。 17. 试写出图示多边形绕点A(xo,yo)旋转的变换矩阵。要求写出求解过程及结果。 18. 试写出针对固定参考点、任意方向的比例变换矩阵。 19. 试写出对任意直线y=mx+b 的对称变换矩阵。 20. 什么是窗口?什么是视区?什么是观察变换? 21. 简述二维观察变换的流程。 22. 试述窗口到视区的变换步骤,并推出变换矩阵。 ??—(位) —K N M V 2log ??≥

计算机图形学课程参考文献

《计算机图形学》课程参考文献 [1 Kenneth R. Castleman, “Digital Image Processing”, Prentice-Hall International,Inc, 1996 [2] James Sharman. The Marching Cubes Algorithm[EB]. https://www.360docs.net/doc/cf10163853.html,/. [3] William E. Lorensen, Harvey E. Cline. Marching Cubes: A High Resolution 3D Surface Construction Algrorithm[J].Computer Graphics, 1987, 21(4). [4] Jan Horn. Metaballs程序[CP]. http://www.sulaco.co.za. [5] 唐泽圣,等.三维数据场可视化[M].北京:清华大学出版社,1999.177-179. [6] 白燕斌,史惠康,等.OpenGL三维图形库编程指南[M].北京:机械工业出版社,1998. [7] 费广正,芦丽丹,陈立新.可视化OpenGL程序设计[M].北京:清华大学出版社,2001. [8] 田捷,包尚联,周明全.医学影像处理与分析[M].北京:电子工业出版社,2003. [9] 三维表面模型的重构、化简、压缩及其在计算机骨科手术模拟中的应用[R]. https://www.360docs.net/doc/cf10163853.html,/~yike/uthesis.pdf ; [10] 首套中国数字化可视人体二维图像[DB]. http://www.chinesevisiblehuman. com/ pic/pictype.asp [11] 季雪岗,王晓辉,张宏林,等.Delphi编程疑难详解[M].北京:人民邮电出版社,2000. [12] 郑启华.PASCAL程序设计(第二版)[M].北京:清华大学出版社,1996. [13] 涂晓斌,谢平,陈海雷,蒋先刚.实用微机工程绘图实验教程[M].西南交通大学出版社,2004,4. [14] David F.Rogers.计算机图形学算法基础[M].北京:电子工业出版社,2002. [15] 李信真,车刚明,欧阳洁,封建湖.计算方法[M].西安:西北工业大学出版社,2000. [16] Paul Bourke Polygonising a scalar field [CP]. http://astronomy. https://www.360docs.net/doc/cf10163853.html,.au/ ~pbourke/ modelling/polygonise/ [17] 刘骏.Delphi数字图像处理及高级应用[M].北京:科学出版社,2003. [18] 李弼程,彭天强,彭波,等.智能图像处理技术[M].北京:电子工业出版社,2004. [19] Kenneth R.Castleman著,朱志刚,石定机,等译.数字图像处理[M].北京:电子工业出版社,2002. [20] Milan Sonka, Vaclav Hlavac, Roger Boyle.Image Processing, Analysis, and Machine Vision [M].北京:人民邮电出版社,2003. [21] 阮秋奇.数字图像处理学[M]. 北京:电子工业出版社, 2001. [22] 刘宏昆,等.Delphi应用技巧与常见问题[M]. 北京:机械工业出版社, 2003. [23] 张增强,李鲲程,等.专家门诊—Delphi开发答疑300问[M].北京:人民邮电出版社,2003.6.

计算机图形学实验报告

《计算机图形学》实验报告姓名:郭子玉 学号:2012211632 班级:计算机12-2班 实验地点:逸夫楼507 实验时间:15.04.10 15.04.17

实验一 1 实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力; 编程实现DDA 算法、Bresenham 中点算法;对于给定起点和终点的直线,分别调用DDA 算法和Bresenham 中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel 等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。 2 实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One (自制平台) 3 实验结果 3.1 程序流程图 (1)DDA 算法 是 否 否 是 是 开始 计算k ,b K<=1 x=x+1;y=y+k; 绘点 x<=X1 y<=Y1 绘点 y=y+1;x=x+1/k; 结束

(2)Mid_Bresenham 算法 是 否 否 是 是 是 否 是 否 开始 计算dx,dy dx>dy D=dx-2*dy 绘点 D<0 y=y+1;D = D + 2*dx - 2*dy; x=x+1; D = D - 2*dy; x=x+1; x

3.2程序代码 //-------------------------算法实现------------------------------// //绘制像素的函数DrawPixel(x, y); (1)DDA算法 void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) { //----------请实现DDA算法------------// float k, b; float d; k = float(Y1 - Y0)/float(X1 - X0); b = float(X1*Y0 - X0*Y1)/float(X1 - X0); if(fabs(k)<= 1) { if(X0 > X1) { int temp = X0; X0 = X1; X1 = temp; }

计算机图形学作业题

1、已知一直线段起点(0,0),终点(8,6),利用Bresenham算法生成此直线段,写出 生成过程中坐标点及决策变量d的变化情况,并在二维坐标系中,标出直线上各点。 2、试用中点画圆算法原理推导第一象限中y=0到x=y半径为R的圆弧段的扫描转换算法。(要求写清原理、误差函数和递推公式,并进行优化) 3、如下图所示多边形,若采用扫描线算法进行填充,试写出该多边形的ET表和当扫描线Y=3时的有效边表(AET表)。 4、试按左下右上顺序用四向算法,分析当S1为种子时,下图区域的填充过程。 5、将下图中的多边形ABCD先关于点C(3,4)整体放大2倍,再绕点D(5,3)顺时针旋转90 ,试推导其变换矩阵、计算变换后的图形各顶点的坐标,并画出变换后的图形。

6、已知三角形ABC 各顶点的坐标A(3,2)、B(5,5)、C(4,5),相对直线P 1P 2(线段的坐标分别为:P 1 (-3,-2) 、P 2 (8,3) )做对称变换后到达A ’、B ’、C ’。 试计算A ’、B ’、C ’的坐标值。(要求用齐次坐标进行变换,列出变换矩阵,列出计算式子,不要求计算结果) 7、试作出下图中三维形体ABCDE 的三视图。要求写清变换过程,并画出生成的三视图。 x 8、试采用Sutherland –Cohen 裁剪算法,叙述裁剪如下图所示的直线AB 和CD 的步骤: ① 写出端点A 、B 、C 、D 的编码; ② 写出裁剪原理和直线AB 、CD 的裁剪过程。 A B C D 9 、用梁友栋算法裁减如下图线段AB ,A 、B 点的坐标分别为(3,3)、(-2,-1) 裁剪窗口为wxl=0,wxr=2,wyb=0,wyt=2。

一种基于计算几何方法的最小包容圆求解算法.kdh

2007年 工 程 图 学 学 报2007 第3期 JOURNAL OF ENGINEERING GRAPHICS No.3一种基于计算几何方法的最小包容圆求解算法 张 勇, 陈 强 (清华大学机械工程系先进成形制造重点实验室,北京 100084) 摘要:为实现点集最小包容圆(最小外接圆)的求解,将计算几何中的α-壳的概 念应用到最小包容圆的计算过程,提出了一种精确有效的最小包容圆求解算法。根据α-壳定 义及最小包容圆性质,证明当1/α等于最小包容圆半径时点集的α-壳顶点共圆,1/α小于最小 包容圆半径时α-壳不存在,1/α大于最小包容圆半径时随着1/α减小α-壳顶点数逐渐减小的规 律。将α-壳顶点数目作为搜索最小包容圆半径的依据,实现了最小包容圆半径的搜索和最小包容圆的求解。 关键词:计算机应用;优化算法;计算几何;最小包容圆;α-壳 中图分类号:TP 391 文献标识码:A 文章编号:1003-0158(2007)03-0097-05 Algorithm for Minimum Circumscribed Circle Detection Based on Computational Geometry Technique ZHANG Yong, CHEN Qiang ( Key Laboratory for Advanced Manufacturing by Materials Processing Technology, Department of Mechanical Engineering, Tsinghua University, Beijing 100084, China ) Abstract: α-hulls are applied to calculate the minimum circumscribed circle (MCC) of point set and an accurate and effective method for MCC detection is established through finding the least squares circle of the point set and iteratively approaching the MCC with recursive subdivision. Several theorems concerning the properties of α-hulls are presented. If 1/α is equal to the radius of points’ MCC, all vertices of the α-hull will be on the same circle. When 1/α is larger than the MCC’s radius, the number of vertices of α-hulls will decrease with decreasing of 1/α, and the number of vertices’ number will reach zero when 1/α is smaller than MCC’s radius. From the above rules, an algorithm for detecting MCC is developed, and experimental results show this algorithm is reliable. Key words: computer application; optimized algorithm; computational geometry; minimum circumscribed circle; α-hull 收稿日期:2005-12-20 基金项目:国家自然科学基金资助项目(50275083);高校博士点基金资助项目(20020003053)

计算机图形学上机实验指导

计算机图形学上机实验指导 指导教师:张加万老师 助教:张怡 2009-10-10

目录 1.计算机图形学实验(一) – OPENGL基础 ..................................... - 1 - 1.1综述 (1) 1.2在VC中新建项目 (1) 1.3一个O PEN GL的例子及说明 (1) 2.计算机图形学实验(二) – OPENGL变换 ..................................... - 5 - 2.1变换 (5) 3.计算机图形学实验(三) - 画线、画圆算法的实现....................... - 9 - 3.1MFC简介 (9) 3.2VC6的界面 (10) 3.3示例的说明 (11) 4.计算机图形学实验(四)- 高级OPENGL实验...................... - 14 - 4.1光照效果 (14) 4.2雾化处理 (16) 5.计算机图形学实验(五)- 高级OPENGL实验........................ - 20 - 5.1纹理映射 (20) 5.2反走样 (24) 6.计算机图形学实验(六) – OPENGL IN MS-WINDOWS .......... - 27 - 6.1 实验目标: (27) 6.2分形 (28)

1.计算机图形学实验(一) – OpenGL基础 1.1综述 这次试验的目的主要是使大家初步熟悉OpenGL这一图形系统的用法,编程平台是Visual C++,它对OpenGL提供了完备的支持。 OpenGL提供了一系列的辅助函数,用于简化Windows操作系统的窗口操作,使我们能把注意力集中到图形编程上,这次试验的程序就采用这些辅助函数。 本次实验不涉及面向对象编程,不涉及MFC。 1.2在VC中新建项目 1.2.1新建一个项目 选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32 Console Application项,然后填入你自己的Project name,如Test,回车即可。VC为你创建一个工作区(WorkSpace),你的项目Test就放在这个工作区里。 1.2.2为项目添加文件 为了使用OpenGL,我们需要在项目中加入三个相关的Lib文件:glu32.lib、glaux.lib、opengl32.lib,这三个文件位于c:\program files\microsoft visual studio\vc98\lib目录中。 选中菜单Project->Add To Project->Files项(或用鼠标右键),把这三个文件加入项目,在FileView中会有显示。这三个文件请务必加入,否则编译时会出错。或者将这三个文件名添加到Project->Setting->Link->Object/library Modules 即可。 点击工具条中New Text File按钮,新建一个文本文件,存盘为Test.c作为你的源程序文件,再把它加入到项目中,然后就可以开始编程了。 1.3一个OpenGL的例子及说明 1.3.1源程序 请将下面的程序写入源文件Test.c,这个程序很简单,只是在屏幕上画两根线。 #include

计算机图形学上机实验4_实现Bezier曲线和Bezier曲面的绘制

昆明理工大学理学院 信息与计算科学专业操作性实验报告 年级: 10级姓名:刘陈学号: 201011101128 指导教师: 胡杰 实验课程名称:计算机图形学程序设计开课实验室:理学院机房216 实验内容: 1.实验/作业题目:用计算机高级语言VC++6.0实现计算机的基本图元绘制2.实验/作业课时:2学时 3.实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能):实验环境:(1)硬件:每人一台PC机 (2)软件:windows OS,VC++6.0或以上版本。 试验内容及步骤: (1)在VC++环境下创建MFC应用程序工程(单文档) (2)编辑菜单资源 (3)添加菜单命令消息处理函数 (4)添加成员函数 (5)编写函数内容 试验要求: (1)掌握Bezier曲线、Bezier曲面、及另一个曲面的算法。 (2)实现对Bezier曲线、Bezier曲面、及另一个曲面。 (3)试验中调试、完善所编程序,能正确运行出设计要求结果。 (4)书写试验报告上交。 4.程序结构(程序中的函数调用关系图)

5.算法描述、流程图或操作步骤: 在lab4iew.cpp文件中添加如下头文件及变量 int flag_2=0; int n_change; #define M 30 #define PI 3.14159 //圆周率 #include "math.h" //数学头文件 在lab4iew.h文件中的public内添加变量: int move; int graflag; void Tiso(float p0[3],float x0, float y0, float p[3]); void OnBezierface(); 在lab4iew.h文件中的protected内添加变量: int n;//控制点数 const int N;//控制点数的上限 CPoint* a;//控制点存放的数组 double result[4][2]; 在lab4iew.cpp文件中的函数Clab4iew::OnDraw(CDC* pDC)下添加如下代码: int i,j; for(i=0;iFillSolidRect(a[i].x-2,a[i].y-2,4,4,RGB(255,55,255)); } pDC->MoveTo(a[0]);

16秋西交《计算机图形学》在线作业

奥鹏17春16秋西交《计算机图形学》在线作业 一、单选(共30 道,共60 分。) 1. 在三维造型中,不可以使用垂直扫掠造型方法构造的有( )。 A. 园柱 B. 长方体 C. 三棱锥 D. 正十二面体 标准解: 2. 在直线段的参数方程表示方法中,参数t的取值范围为( )。 A. 【0,1】 B. 【0,∞】 C. 【-1,1】 D. 【-1,0】 标准解: 3. 如果希望在CorelDRAW中创建的多个页面具有相同的图形元素,可以执行下面的哪一项操作( ) A. 先创建多个页面,然后分别在各个页面中绘制相同的图形元素 B. 创建一个页面并在此页面绘制需要的图形元素,然后再将此页面复制多个 C. 选择“Layout-Page Setup”命令,在弹出的对话框中进行设置 D. 在Master Page中创建一个图层,在此图层中绘制希望出现在各个页面中的图形元素,则此各个页面将具有相同的图形元素 标准解: 4. 下列有关平面几何投影的叙述,错误的是( )。 A. 透视投影又可分为一点透视、二点透视、三点透视 B. 斜投影又可分为等轴测、斜二测 C. 正轴测又可分为等轴测、正二测、正三测 D. 正视图又可分为主视图、侧视图、俯视图 标准解: 5. 要快速以递增的方式增大字体大小,可以利用“文本”工具选择特定的字符后,执行以下哪步操作( ) A. 按CTRL + "+"键 B. 双击“缩放”工具 C. 按CTRL + 数字小键盘上的"8" D. 按CTRL + 数字小键盘上的"2" 标准解: 6. 有M个控制顶点Pi(i=1,…k)所决定的n次B样曲线,由()段n次B样曲线段光滑连接而成。

计算机图形学实验报告

计算机图形学 实验报告 学号:20072115 姓名: 班级:计算机 2班 指导老师:何太军 2010.6.19

实验一、Windows 图形程序设计基础 1、实验目的 1)学习理解Win32 应用程序设计的基本知识(SDK 编程); 2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。 4)学习MFC 类库的概念与结构; 5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框); 6)学习使用MFC 的图形编程。 2、实验内容 1)使用WindowsAPI 编写一个简单的Win32 程序,调用绘图API 函数绘制若干图形。(可选任务) 2 )使用MFC AppWizard 建立一个SDI 程序,窗口内显示"Hello,This is my first SDI Application"。(必选任务) 3)利用MFC AppWizard(exe)建立一个SDI 程序,在文档视口内绘制基本图形(直线、圆、椭圆、矩形、多边形、曲线、圆弧、椭圆弧、填充、文字等),练习图形属性的编程(修改线型、线宽、颜色、填充样式、文字样式等)。定义图形数据结构Point\Line\Circle 等保存一些简单图形数据(在文档类中),并在视图类OnDraw 中绘制。 3、实验过程

1)使用MFC AppWizard(exe)建立一个SDI 程序,选择单文档; 2)在View类的OnDraw()函数中添加图形绘制代码,说出字符串“Hello,This is my first SDI Application”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制; 3)在类视图中添加图形数据point_pp,pp_circle的类,保存简单图形数据,通过在OnDraw()函数中调用,实现线、圆的绘制。 4、实验结果 正确地在指定位置显示了"Hello,This is my first SDI Application"字符串,成功绘制了圆,椭圆,方形,多边形以及曲线圆弧、椭圆弧,同时按指定属性改绘了圆、方形和直线。成功地完成了实验。 结果截图: 5、实验体会 通过实验一,了解了如用使用基本的SDI编程函数绘制简单的图

相关文档
最新文档