当前位置:文档之家› C语言计算机图形学

C语言计算机图形学

《计算机图形学基础》第一次作业参考答案 一、名词解释 1、计算机图形学:是使用计算机通过算法和程序在显示设备上构造出图形来,是真实物体或虚构物体的图形综合技术。 2、图像处理:是景物或图象的分析技术,它所研究的是计算机图形学的逆过程。包括图象增强、模式识别、景物分析、计算机视觉等,并研究如何从图象中提取二维或三维物体的模型。 3、逐点比较法:这是绘图仪经常采用的一种方法,就是在绘图过程中,绘图笔每画一笔,就与规定图形进行比较,然后决定下一步的走向,用步步逼近的方法画出规定的图形。 4、造型技术:要在计算机中构造三维物体的一幅图像,首先必须在计算机中构造出该物体的模型,这一模型是由一批几何数据及数据之间的拓朴关系来表示,这就是造型技术。 二、简答 1、计算机图形系统的组成包括哪些? 答:计算机图形系统由硬件和软件两部分组成,硬件包括:主计算机、图形显示器以及I/O交互工具和存储设备;软件包括操作系统、高级语言、图形软件和应用软件。 现代计算机图形系统与一般计算机系统最主要的差别是具有图形的输入、输出设备以及必要的交互工具,在速度和存储容量上具有较高的要求。另外,人也是这个系统的组成部分。 2、简述图形软件的组成。 答:图形软件系统应该具有良好的结构,要有合理的层次结构的模块结构,以便于设计、维护和调试。 1、零级图形软件:是最底层的软件,主要解决图形设备与主机的通讯、接口等问题,又称设备驱动程序,是一些最基本的输入、输出子程序,要求程序质量高,它是面向系统的,而不是面向用户的。 2、一级图形软件:又称基本子程序,包括生成基本图形元素,对设备进行管理的各程序模块,既面向系统又面向用户。 3、二级图形软件:也称功能子程序,是在一级图形软件基础上编制的,其主要任务是建立图形数据结构,定义、修改和输出图形;以及建立各图形设备之间的联系,要具有较强的交互功能,它是面向用户的。(以上三级通常称为支撑软件) 4、三级图形软件:是为解决某种应用问题的图形软件,是整个应用软件的一部分,通常由用户编写或与设计者一起编写。 三、算法实现 写出Bresenham方法生成直线的C语言算法。 答案: int bres_line(int x1,int y1,int x2,int y2,int color) { int oldcolor,itag; int dx,dy,tx,ty,inc1,inc2,d,curx,cury; oldcolor=setcolor(color);

实验一二维基本图元的生成与填充 实验目的 1.了解并掌握二维基本图元的生成算法与填充算法。 2.实现直线生成的DDA算法、中点算法和Bresenham算法。 3.实现圆和椭圆生成的DDA和中点算法, 对几种算法的优缺点有感性认识。 二.实验内容和要求 1.选择自己熟悉的任何编程语言, 建议使用VC++。 2.创建良好的用户界面,包括菜单,参数输入区域和图形显示区域。 3.实现生成直线的DDA算法、中点算法和Bresenham算法。 4.实现圆弧生成的中点算法。 5.实现多边形生成的常用算法, 如扫描线算法,边缘填充算法。 6.实现一般连通区域的基于扫描线的种子填充算法。 7.将生成算法以菜单或按钮形式集成到用户界面上。 8.直线与圆的坐标参数可以用鼠标或键盘输入。 6. 可以实现任何情形的直线和圆的生成。 实验报告 1.用户界面的设计思想和框图。 2.各种实现算法的算法思想。 3.算法验证例子。 4.上交源程序。 直线生成程序设计的步骤如下: 为编程实现上述算法,本程序利用最基本的绘制元素(如点、直线等),绘制图形。如图1-1所示,为程序运行主界面,通过选择菜单及下拉菜单的各功能项分别完成各种对应算法的图形绘制。 图1-1 基本图形生成的程序运行界面 2.创建工程名称为“基本图形的生成”单文档应用程序框架 (1)启动VC,选择“文件”|“新建”菜单命令,并在弹出的新建对话框中单击“工程”标签。 (2)选择MFC AppWizard(exe),在“工程名称”编辑框中输入“基本图形的生成”作为工程名称,单击“确定”按钮,出现Step 1对话框。 (3)选择“单个文档”选项,单击“下一个”按钮,出现Step 2对话框。 (4)接受默认选项,单击“下一个”按钮,在出现的Step 3~Step 5对话框中,接受默认选项,单击“下一个”按钮。

计算机图形学复习题 一、简答题与名词解释: 1. 什么是图形?在计算机中,图形是如何表示的?计算机图形学的主要研究的内容是什么?2.列举三个你接触过的计算机图形学的应用实例。 3.设有两个显示分辨率分别为640×480及1280×1024的光栅扫描系统,如果每个象素12位,这两个系统各需多大的帧缓存?可显示的颜色数有多少种?如果每个象素为24位情况又如何? 答:(1)每个象素12位时: 可显示颜色数=212=4096(种) 第一个系统所需缓存大小=640×480×12/8=460800(B)=450(KB) 第二个系统所需缓存大小=1280×1024×12/8=1966080(B)=1920(KB)=1.875(MB) (2)每个象素24位时: 可显示颜色数=224=16777216(种) 第一个系统所需缓存大小=640×480×24/8=921600(B)=900(KB) 第二个系统所需缓存大小=1280×1024×24/8=3932160(B)=3840(KB)=3.75(MB) 4.计算机图形显示器和绘图设备表示颜色的方法各是什么颜色系统?它们之间的关系如何? 答:计算机图形显示器是用RGB方法表示颜色,而绘图设备是用CMY方法来表示颜色的。它们之间的关系是:两者都是面向硬件的颜色系统,前者是增性原色系统,后者是减性原色系统,后者是通过在黑色里加入一种什么颜色来定义一种颜色,而后者是通过指定从白色里减去一种什么颜色来定义一种颜色。 5.试列举出你所知道的图形学输入与输出设备。 6.试述CRT的基本工作原理。 7.阴极射线管由哪几个部分组成?它们的功能分别是什么? 8.什么叫刷新?刷新频率与荧光物质的持续发光时间的关系如何? 9.什么是像素?什么是CRT的分辨率? 10.与随机扫描系统相比,光栅扫描显示系统有哪些优点和缺点? 11.什么是光栅图形的扫描转换? 12.由于接受输入的取样方式和事件驱动方式各自的工作原理是什么? 13.裁剪的目的是什么?什么是内裁剪,什么是外裁剪? 14.封闭的图元有哪两种绘制方式? 15.改进扫描转换直线段的中点算法,使之能处理斜率为任意的直线段。 16.生成图元是指? 17.线宽控制常用的主要有哪些? 18.扫描转换多边形,常见算法有哪些? 19.4连通区域与8连通区域对边界的要求有何不同? 20.扫描转换多边形与区域填充的区别是什么? 21.什么是混淆与反混淆? 22.反混淆方法有哪些? 23.光栅图形系统中,混淆现象有哪写表现形式?产生混淆的原因是什么? 24.试列举发生在你身边的混淆现象。 25.平面几何投影分类 26.什么是透视投影,主灭点是由什么决定的,按主灭点的个数分为哪几类? 27.什么是三视图?

计算机图形学课程实 验 报 告 实验题目 班 级 姓 名 学 号 指导教师 日 期 西安理工大学理学院应用数学系 二零一二年春季学期 信息与计算科学专业基础课 Computer Graphics Report Of course experiment

实验说明 试验目的: 掌握TurboC 语言图形函数的使用和学会绘制一般图形。 试验地点: 教九楼401 数学系机房 实验要求(Direction ):1. 每个学生单独完成;2.开发语言为TurboC 或C++,也可使用其它 语言;3.请在自己的实验报告上写明姓名、学号、班级;4.每次交的实验报告内容包括:题目、试验目的和意义、程序制作步骤、主程序、运行结果图以及参考文件;5. 自己保留一份可执行程序,考试前统一检查和上交。 实验内容 实验题一 1.1实验题目 用如下图1所示,图中最大正n 边形的外接圆半径为R ,旋转该正n 边形,每次旋转θ角度,旋转后的的n 边形顶点落在前一个正六边形的边上,共旋转N 次,请上机编程绘制N+1个外接圆半径逐渐缩小且旋转的正n 边形。要求:(1) n 、R 、N 、θ要求可以人为自由控制输入;(2)N+1个正六边形的中心(即外接圆的圆心)在显示屏幕中心。 利用C 语言图形函数绘图 实验 1

1.2实验目的和意义 1. 了解如何利用C语言和图形函数进行绘图; 2. 熟悉并掌握C语言的图形模式控制函数,图形屏幕操作函数,以及基本图形函数; 3. 通过对Turbo C进行图形程序设计的基本方法的学习,能绘制出简单的图形; 4. 通过绘制N+1个正n边形,了解图形系统初始化、图形系统关闭和图形模式的控制,并熟练运用图形坐标的设置,包括定点、读取光标、读取x和y轴的最大值以及图形颜色的设置。 1.3程序制作步骤(包括算法思想、算法流程图等) 算法思想: 1.自动搜索显示器类型和显示模式,初始化图形系统,通过printf、scanf语句控制半径r、边数n、多边形的个数k、边的每次旋转角度d,的自由输入; 2.给定一内接圆半径r,由圆内接多边形的算法公式: x[i]=r*cos((i+1) *2.0*pi/n)+320.0 y[i]=240.0-r*sin(2.0*pi/n *(i+1)) 确定出多边形N的各个顶点坐标,然后利用划线函数line(),连接相邻两点,即形成一个正多边形。 3.根据边与角的关系,以及线段定比分点公式,可知旋转后的多边形的各个顶点的坐标。公式如下: x[i]=(x[i]+x[i+1]/(k+1)) y [i]=(y[i]+y[i+1]/(k+1)) k=360/(n*d) (n为多边形的边数,d为多边形旋转的度数) 然后与第二步相同,利用划线函数line(),连接形成又一个旋转过的正多边形,这样就形成了所要绘制的图形; 4.关闭图形系统。 1.4主程序 程序代码: /*----- 多边形的逐次旋转------*/ #include "stdio.h" #include "conio.h" #include "math.h"

计算机图形学实验 肖加清

实验一图形学实验基础 一、实验目的 (1)掌握VC++绘图的一般步骤; (2)掌握OpenGL软件包的安装方法; (3)掌握OpenGL绘图的一般步骤; (4)掌握OpenGL的主要功能与基本语法。 二、实验内容 1、VC++绘图实验 (1)实验内容:以下是绘制金刚石图案。已给出VC++参考程序,但里面有部分错误,请改正,实现以下图案。 N=3 N=4

N=5 N=10 N=30

N=50 (2)参考程序 //自定义的一个类 //此代码可以放在视图类的实现文件(.cpp) 里class CP2 { public: CP2(); virtual ~CP2(); CP2(double,double); double x; double y; }; CP2::CP2() { this->x=0.0; this->y=0.0; } CP2::~CP2() { } CP2::CP2(double x0,double y0) { this->x=x0; this->y=y0; }

//视图类的一个成员函数,这个成员函数可以放在OnDraw函数里调用。 //在视图类的头文件(.h)里定义此函数 void Diamond(); //在视图类的实现文件(.cpp)里实现此函数 void CTestView::Diamond() { CP2 *P; int N; double R; R=300; N=10; P=new CP2[N]; CClientDC dc(this); CRect Rect; GetClientRect(&Rect); double theta; theta=2*PI/N; for(int i=0;i #include #include #include //定义输出窗口的大小 #define WINDOW_HEIGHT 300

中国计算机图形学的发展 中国的计算机图形学发展最早可以追溯到二十世纪80年代末期,在清华大学、浙江大学等国家重点大学中的计算机研究所中开始了对计算机图形技术的研究,产生了像鹏群生教授(现任浙江大学国家计算机图形学技术研究室主任)这样的计算机图形技术专家,他们对中国在计算机图形技术算法方面作出了巨大的贡献。但是当时由于经济发展以及对外开放程度的原因,绝大多数的学校及个人都没有机会接触到计算机图形学,这个时期是中国计算机图形的萌芽阶段。 真正计算机图形学在中国开始发展的阶段大约是在1994年左右直到现在,随着经济水平的提高以及开放程度的日益拓展,一部分中国人已经开始拥有电脑。更重要的是国外优秀的电脑游戏以及好莱坞电影的进入,使得国人开始对计算机图形学有了一个感性的认识。而电脑游戏则更是激发了年轻一代的计算机从业人员投身于计算机图形学行业的热情,越来越多的人开始开发国内的电脑游戏市场,这是如今中国计算机图形学行业和电脑游戏密切相关的现状的历史渊源。 90年以前. 虽然美国早在1975年就开始举办第一届SIGRAPH大展,但是由于中国1976年才正式开始对外开放,所以在80年代以前国内的专家基本上还不知道有“CG”这个名词,再加上电脑本身都是稀罕物品,普通大众就更无从得知了。经过差不多10年的发展,中国的对外开放逐渐有了成果,一批批海外计算机方面的专家开始进入中国,为中国的计算机业的发展奠定了最基本的人才基础;海外专家在带来大量计算机知识的同时,也顺便“捎带”回来了国外在计算机图形学方面发展的一些动向和部分成果,也就是从那时开始,“CG”的概念开始在中国这片土地上播下了种子。清华大学、浙江大学等少数国内顶尖大学开始成立小型的研究小组,以研究计算机在图形图象方面的发展可行性。在那个磁盘操作系统刚刚诞生不久、字符化界面还是绝对主流的年代里,用计算机来“玩”图形图象绝对是一个“前卫”的事务,加上能够接收图形这样海量计算的计算机价格不菲,计算机图形学是一个彻头彻尾的“专家们的游戏”。综合起来看,90年以前影响中国计算机图形学发展最大的因素是国家政策、计算机发展水平和人们的认知程度 90年-98年.中国计算机图形学的种子经过长时间的孕育之后,也终于在这个时间段破土而出:中国计算机图形学专家在贝塞耳曲线(1968年法国雷诺汽车公司的设计工程师贝塞耳最先发明)、非均匀有理B样条曲线以及计算机真实感图形渲染算法方面都取得了一定的成绩,比如邵敏之教授和朱一宁教授分别在1988年和1990年成功采用辐射度算法在封闭空间中绘制出了真实感很强的图象,浙江大学CAD&CG国家重点实验室也开始开发出了中国自己的虚拟现实系统——CAVE,这套系统用一台高性能计算机(SGI Onyx2 Infinity Reality 4CPU、双图形加速流水线)同步产生同一场景相领视域内的四幅画面分别投影到大屏幕上,通过液晶眼镜产生立体视觉效果。这些成就都表明中国的计算机图形学发展已经有了一定的成果 98-现在.从98年到现在,中国计算机图形学在经过了前两个阶段的发展后,逐渐开始走入正轨。中国计算机图形学行业的分工以及产业结构日益专业化、标准化和商业化。计算机图形学方面,国内不断有新的动画算法和渲染算法理论发表在《计算机学报》等专业杂志、报刊中,中国也终于有论文在SIGRAPH中入选;民用方面,各种优秀计算机图形学作品层

#include #include #include void Initialize(void) { int GraphDriver; int GraphMode; int ErrorCode; GraphDriver=DETECT; initgraph (&GraphDriver,&GraphMode,""); ErrorCode=graphresult(); if (ErrorCode!=grOk) { printf("Graphics System Error:%s\n",grapherrormsg(ErrorCode)); exit(1); } } void Bresenham(int x1,int y1,int x2,int y2) { int x,x0,interchange; int y,y0,temp; int s1,s2,i; float e; int c=14; x=x1; y=y1; x0=abs(x2-x1); y0=abs(y2-y1); if ((x2-x1)>0) s1=1; else s1=-1; if ((y2-y1)>0) s2=1; else s2=-1; if (y0>x0) { temp=x0; x0=y0; y0=temp; interchange=1; } else interchange=0; e=2*(y0-x0); for (i=0;i<=x0;i++)

{ putpixel (x,y,c); while (e>=0) { if (interchange==1) x=x+s1; else y=y+s2; e=e-2*x0; } if(interchange==1) y=y+s2; else x=x+s1; e=e+2*y0; } } int main() { int x1,x2,y1,y2; Initialize(); scanf("%d,%d,%d,%d",&x1,&y1,&x2,&y2); Bresenham(x1,y1,x2,y2); return 0; }

第一章 1、试述计算机图形学研究的基本内容? 答:见课本P5-6页的1.1.4节。 2、计算机图形学、图形处理与模式识别本质区别是什么?请各举一例说明。 答:计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像,且所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科。计算机图形学研究的是从数据描述到图形生成的过程。例如计算机动画制作。 图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像。例如工业中的射线探伤。 模式识别是指计算机对图形信息进行识别和分析描述,是从图形(图像)到描述的表达过程。例如邮件分捡设备扫描信件上手写的邮政编码,并将编码用图像复原成数字。 3、计算机图形学与CAD、CAM技术关系如何? 答:见课本P4-5页的1.1.3节。 4、举3个例子说明计算机图形学的应用。 答:①事务管理中的交互绘图 应用图形学最多的领域之一是绘制事务管理中的各种图形。通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定。 ②地理信息系统 地理信息系统是建立在地理图形基础上的信息管理系统。利用计算机图形生成技术可以绘制地理的、地质的以及其它自然现象的高精度勘探、测量图形。 ③计算机动画 用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率。 5、计算机绘图有哪些特点? 答:见课本P8页的1.3.1节。 6、计算机生成图形的方法有哪些? 答:计算机生成图形的方法有两种:矢量法和描点法。 ①矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两点间的短矢量,从而得到一条近似的曲线。尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的。 ②描点法:把显示屏幕分成有限个可发亮的离散点,每个离散点叫做一个像素,屏幕上由像素点组成的阵列称为光栅,曲线的绘制过程就是将该曲线在光栅上经过的那些像素点串接起来,使它们发亮,所显示的每一曲线都是由一定大小的像素点组成的。当像素点具有多种颜色或多种灰度等级时,就可以显示彩色图形或具有不同灰度的图形。 7、当前计算机图形学研究的课题有哪些? 答:见课本P10-11页的1.4节。

计算机图形学模拟试卷 计算机图形学课程试卷(卷) 注意:1、本课程为必修(表明必修或选修),学时为 51 ,学分为 3 2、本试卷共 3 页;考试时间 120 分钟;出卷时间:年 12 月 3、姓名、学号等必须写在指定地方;考试时间:年 1 月 11 日 4、本考卷适用专业年级:任课教师: (以上内容为教师填写) 专业年级班级 学号姓名 一、名词解释(15分) 1.国际标准化组织(ISO)对计算机图形学的定义

2. 象素图 3. 正投影 4. 纹理 5. 位图 二.单项选择题(1.5×10=15分) ( )1、在TC 环境下编译绘图程序进行图形初始化时,要寻找文件的格式是?______。 A ).DOC B ).CPP C ).C D ).BGI ( )2、图形系统是由四部分组成,分别为 A).应用系统结构;图形应用软件;图形支撑软件;图形设备。 B).计算机;显示器;打印机;图形应用软件。 C).计算机;图形设备;图形支撑软件;图形应用软件。 D).计算机;图形软件;图形设备;应用数据结构。 ( )3、使用下列二维图形变换矩阵: T=???? ??????111020002 将产生变换的结果为______ 。 A )图形放大2倍; B )图形放大2倍,同时沿X 、Y 坐标轴方向各移动1个绘图单位; C )沿X 坐标轴方向各移动2个绘图单位; D )上述答案都不对。 ( )4、图形显示器的工作方式为 A ).文本方式 B ).图形方式 C ).点阵方式 D ).文本与图形方式 ( )5、透视投影中主灭点最多可以有几个? A) 3 B)2 C)1 D)0 ( )6、在用射线法进行点与多边形之间的包含性检测时,下述哪一个操作不正确? A) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数0次 B) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数2次 C) 当射线与多边形交于某顶点时且该点的两个邻边在射线的两侧时,计数1次 D) 当射线与多边形的某边重合时,计数1次 ( )7、下列有关平面几何投影的叙述语句中,正确的论述为

计算机科学与通信工程学院 实验报告 课程计算机图形学 实验题目二维图形变换 学生姓名 学号 专业班级 指导教师 日期

成绩评定表

二维图形变换 1. 实验内容 完成对北极星图案的缩放、平移、旋转、对称等二维变换。 提示:首先要建好图示的北极星图案的数据模型(顶点表、边表)。另外,可重复调用“清屏”和“暂停”等函数,使整个变换过程具有动态效果。 2. 实验环境 软硬件运行环境:Windows XP 开发工具:visual studio 2008 3. 问题分析

4. 算法设计 程序框架: //DiamondView.h class CDiamondView : public CView { …… public: //参数输入和提示对话框 void Polaris();//北极星 …… }; //DiamondView.cpp void CDiamondView::OnMenuDiamond() { IsCutting = FALSE; if(dlgDiamond.DoModal()==IDOK) DrawDiamond(dlgDiamond.m_nVertex,dlgDiamond.

m_nRadius,100);//调用绘制金刚石的函数 } //北极星 void CDiamondView::Polaris() {......} 5. 源代码 //北极星 void hzbjx(CDC* pDC,long x[18],long y[18]) { CPen newPen1,*oldPen; newPen1.CreatePen(PS_SOLID,2,RGB(255,0,0)); oldPen = pDC->SelectObject(&newPen1); POINT vertex1[11]={{x[1],y[1]},{x[2],y[2]},{x[3],y[3]},{x[4],y[4]},{x[5],y[5]},{x[3],y[3]},{x[1],y[1]}, {x[6],y[6]},{x[3],y[3]},{x[7],y[7]},{x[5],y[5]}}; pDC->Polyline(vertex1, 11); newPen1.DeleteObject(); newPen1.CreatePen(PS_SOLID, 2, RGB(0,255,0)); oldPen = pDC->SelectObject(&newPen1); POINT vertex2[5]={{x[6],y[6]},{x[8],y[8]},{x[9],y[9]},{x[3],y[3]},{x[8],y[8]}}; pDC->Polyline(vertex2, 5); POINT vertex3[5]={{x[4],y[4]},{x[10],y[10]},{x[11],y[11]},{x[3],y[3]},{x[10],y[10]}}; pDC->Polyline(vertex3, 5);

精编资料 了解图形学与图像处理的发展,应用以及当前国际国内研究的热点和重要成果;理解图形学与图像处理对图元以及图像的分析与理解的以及二维与三维形状重建等;... 图形,图像 计算机图形学与图像处理教案 学时:36,其中讲授26学时,上机10学时。 适用专业:信计专业与数学专业。 先修课程:高等数学、线性代数、数据结构、VC++或者C# 一、课程的性质、教育目标及任务: 计算机图形学与图像处理实际上是两门课程的一个综合。这是一门研究图形学与图像处理的基本理论、方法及其在智能化检测中应用的学科,是计算机科学与技术等电子信息类本科专业的专业课。 本课程侧重于对图形学的基本图元的基本生成,以及图像处理中对图像在空间域与频率域的基本处理算法的研究。并对图形学与图像处理基本理论和实际应用进行系统介绍。目的是使学生系统掌握图形学与图像处理的基本概念、原理和实现方法,学习图形学与图像处理分析的基本理论、典型方法和实用技术,具备解决智能化检测与控制中应用问题的初步能力,为在计算机视觉、模式识别等领域从事研究与开发打下扎实的基础。 二、教学内容基本要求: 1.了解图形学与图像处理的发展、应用以及当前国际国内研究的热点和重要成果; 2.理解图形学与图像处理对图元以及图像的分析与理解的以及二维与三维形状重建等; 3.掌握图形学与图像处理中最基本、最广泛应用的概念、原理、理论和算法以及基本技术和方法; 4.能够运用一门高级语言编写简单的图形学与图像处理软件,实现各种图形学与图像处理的算法。 三、主要教学内容:

学习图形学的基本概念,了解光栅显示系统的原理;掌握基本图元的生成算法:直线的生成算法、曲线的生成算法、多边形的生成算法;掌握区域填充、线段剪裁以及多边形的剪裁;掌握图元的几何变换、以及投影的基本理论。 了解图像的概念;图像数字化的基本原理:取样、量化、数字图像的表示;线性系统理论在图像变换,滤波中的应用:线性系统理论、离散图像变换、小波变换;图像编码压缩、增强,以及复原的基本方法:无失真压缩、有失真压缩、变换编码、压缩标准、图像滤波原理、复原滤波器、直方图运算、点运算;图像识别的基本原理和方法:图像分割、图像分析、图像分类; 四、学时安排 总课时72学时,图形学36学时,其中包括26个学时讲授,10个学时上机;图像处理36学时,其中包括26个学时讲授,10个学时上机; 五、参考书目: (1), Donald Hearn & M,Pauline Baker (2),< Computer Graphics with OpenGL, Third Edition> Donald Hearn & M,Pauline Baker (3),计算机图形学实用技术陈元琰,张晓竞,科学出版社 (4),计算机图形学倪明田,吴良芝北京大学出版社 (5) <>, Rafael C. Gonzalez & Richard E. Woods. Publishing House of Electronics Industry. (6) << Image Processing ,Analysis, and Machine Vision ( second Edition)>> ,Milan Sonka, V aclav Hlavac. Publishing House of People Post 第一讲图形学基本概念 重点: 了解图形学概念;掌握图形学中的几个概念:分辨率,光栅,扫描线,像素,帧缓冲器;了解图形学的基本用途;掌握图形学光栅扫描显示系统的工作原理; 难点: 光栅扫描显示系统的工作原理; 教学方法: 课堂讨论式教学方法,基于问题式以及启发式教学方法相结合。双语教学。 主要内容: 1,什么是计算机图形学? 2,计算机图形学的主要用途是什么? 3,计算机图形学中的一些基本概念: 什么是分辨率?什么是光栅?什么是光栅扫描系统的扫描线?什么是像 素?什么是帧缓冲器?什么是刷新率?

湖北汽车工业学院实验报告 班级学号姓名 课程名称完成日期 实验一熟悉Visual C++绘图应用程序的开发过程 一、实验目的 1、熟悉VC6.0开发环境; 2、掌握MFC编程; 3、掌握CDC图形程序库; 4、掌握VC6.0下的简单图形程序的开发过程。 二、实验性质 验证性 三、实验要求 1、认真阅读本次实验的目的,了解本次实验要求掌握的内容; 2、能够根据实验指导书的要求,完成相关的内容; 3、务必掌握绘图程序的开发流程,为今后复杂的图形程序开发做好准备。 四、实验内容 (一)生成绘图应用程序的框架 开发绘图应用程序的第一步是使用AppWizard(程序生成向导)来建立程序的基本框架。AppWizard为框架的建立提供了一系列对话框及多种选项,用户可以根据不同的选项生成自己所需要的应用程序框架。具体步骤如下: 1、从“文件”菜单选择“新建”菜单项,在“新建”对话框中选择“工程”选项卡,从项目类型中选择MFC AppWizard(.exe)。在“位置”文本框中,可直接输入目录名称,或者单击“…”按钮选择已有的目录。在“工程名称”文本框中输入项目的名称,如Draw,其他采用默认值,这时确定按钮变亮,如下图所示:

2、单击确定按钮,弹出“MFC应用程序向导步骤1”对话框,如图所示,选择单文档单选按钮和“中文[中国]”选项,表示要生成以中文为用户界面的单文档(SDI绘图程序)。 3、点击下一步,在随后出现的几个对话框中,都点击下一步,表示采用各项的默认设置,直到出现“MFC应用程序向导步骤6”对话框,如图所示。

4、“MFC应用程序向导步骤6”对话框中默认设置确定了类得名称及其所在文件的名称。用户可以改CdrawApp、CmainFrame和CdrawDoc的文件名称,但不可以改变它们的基类。 单击完成按钮,应用程序向导显示将要创建的文件清单,再单击确定,MFC应用程序向导就自动生成绘图程序的各项源文件了。 MFC应用程序向导设置完后,点击组建按钮,然后再点击执行按钮,就会出现MFC 应用程序向导生成的完整应用程序的基本框架。

实验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. 下面哪个不是国际标准化组织(ISO)批准的图形标准。() A.GKS B.PHIGS C.CGM D.DXF 2. 下面哪一项不属于计算机图形学的应用范围?(B) A. 计算机动画; B. 从遥感图像中识别道路等线划数据; C. QuickTime技术; D. 影视三维动画制作 3. 关于计算机图形标准化的论述,哪个是正确的(); A. CGM和CGI是面向图形设备的接口标准; B. GKS、IGES、STEP均是ISO标准; C. IGES和STEP是数据模型和文件格式的标准; D. PHIGS具有模块化的功能结构; 4. 与计算机图形学相关的学科有____。 A. 图象处理 B. 测量技术

C. 模式识别 D. 计算几何 E. 生命科学 F. 分子生物学 三、判断题: 计算机图形学和图像处理是两个近似互逆的学科。[]计算机图形学处理的最基本的图元是线段。[] 四、简答题: 图形包括哪两方面的要素,在计算机中如何表示它们? 阐述计算机图形学、数字图象处理和计算机视觉学科间的关系。 图形学作为一个学科得以确立的标志性事件是什么? 试列举出几种图形学的软件标准?工业界事实上的标准有那些? 举例说明计算机图形学有哪些应用范围,解决的问题是什么? 第二章 一、选择题: 1. 触摸屏是一种() A. 输入设备; B. 输出设备; C. 既是输入设备,又是输出设备; D. 两者都不是; 2. 空间球最多能提供()个自由度; A. 一个; B. 三个;

C. 五个; D. 六个; 3. 等离子显示器属于() A. 随机显示器; B. 光栅扫描显示器; C. 平板显示器; D. 液晶显示器; 4. 对于一个1024×1024存储分辩率的设备来说,当有8个位平面时,显示一帧图象所需要的内存为() A. 1M字节; B. 8M字节; C. 1M比特; D. 8M比特; 5. 分辨率为1024*1024的显示器,其位平面数为24,则帧缓存的字节数应为() A. 3MB; B. 2MB; C. 1MB; D. 512KB; 6. 下面对光栅扫描图形显示器描述正确的是:() A. 荧光粉涂层均匀离散分布; B. 是一种点画设备; C. 电子束从顶到底扫描;

《计算机图形学基础》课程教学大纲 一、课程概述 (一)基本说明 中文名称:计算机图形学基础课程代码:16JS062 总学时/学分:48/3 考核方式:考试 适用专业:计算机科学与技术 (二)课程属性 1.课程性质 本课程是计算机科学与技术专业选修课,主要介计算机图形学的经典核心体系:图形系统、二维图形生成、几何变换、二维与三维观察、三维对象(实体造型与曲线曲面)、真实感图形技术、交互技术及动画等。通过本课程的学习,有助于学生对计算机图形学原理的理解和图形编程技术的掌握。 2.课程与课程群的联系 本课程与《Java程序设计基础》、《C语言程序设计》、《线性代数》等基础课程有着密切的关系,通过本课程的学习,使学生掌握图形方面的基本知识。为了使学生能够顺利完成本课程的学习,在学习本课程之前,需对相关课程(群)有一定的了解和掌握。 前修课程:《Java程序设计基础》、《C语言程序设计》、《数据库原理及应用》等,这些课程对本课程学习起着基础铺垫作用。 二、教学设计 (一)课程设置的主要依据 本课程是一门理实融合、教学做一体的理论课程,着眼于满足计算机科学与技术专业对应用型人才需求,遵循“基础/应用”的导向原则,教学内容与教学组织紧紧围绕应用型的计算机科学与技术专业人才培养目标进行设计、选择和实施,以“必需、够用、适度超前”为度,突出打牢理论基础和实践能力培养。在教学过程中,注重创新精神、实践能力和职业道德的培养,倡导探究性学习(或研讨式、案例式、专题式、项目式等),引导学生主动参与教学过程,主动思考、勤于实践、知行合一,逐步培养学生分析解决计算机类项目开发过程中实际问题、沟通交流与团队协作能力。 (二)课程设计思路 以《Java程序设计基础》、《C语言程序设计》、《线性代数》等课程为基础,紧紧围绕计算机科学与技术专业应用型人才培养目标,准确把握本课程在计算机科学与技术课程群中的定位和作用,以能力为本位,强调打牢基本知识和基本理论基础,强化基本技能训练,充分利用信息化教学平台,打破以知识

#include #include #include #include #include #define rad 0.0174532925 #define NUMBER 24 float u[NUMBER]={60.,20.,20.,80.,80.,60.,60.,0.,0.,60.,80.,0.,0.,0.,0.,0.,20.,20.,0.,0.,0.,80.,0.,0.}, v[NUMBER]={20.,60.,60.,0.,0.,20.,20.,20.,20.,20.,0.,0.,20.,20.,60.,60.,60.,60.,60.,60.,0.,0.,0.,0.}, w[NUMBER]={30.,30.,0.,0.,90.,90.,30.,30.,90.,90.,90.,90.,90.,30.,30.,0.,0.,30.,30.,0.,0.,0.,0.,90.}; int ipen[NUMBER]={3,2,2,2,2,2,2,2,2,2,3,2,2,3,2,2,2,3,2,3,2,2,3,2}; int kind[NUMBER]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1}; void draw(float sf,float xc,float yc,float tranm[][4]); void axono2d(float sf,float ox,float oy,float bta,float afa,float x[],float y[],float z[],int kp[],int kl[],int mp); void plot(float x,float y,int ip,int lk); void initm(float unitm[][4]); void mult4x4(float ma[][4],float mb[][4],float mc[][4]); void transform(float x0,float y0,float z0,float *x,float *y,float *z,float tranm[][4]); void translation(float l,float m,float n,float tranm[][4]); void scaling(float sx,float sy,float sz,float tranm[][4]); void rotationx(float xc,float yc,float zc,float alta,float tranm[][4]); void rotationy(float xc,float yc,float zc,float beta,float tranm[][4]); void rotationz(float xc,float yc,float zc,float gama,float tranm[][4]); void projectx(float i,float m,float n,float tranm[][4]); void projecty(float i,float m,float n,float tranm[][4]); void projectz(float i,float m,float n,float tranm[][4]); void mirrxoy(float l,float m,float n,float tranm[][4]); void mirrxoz(float l,float m,float n,float tranm[][4]); void mirryoz(float l,float m,float n,float tranm[][4]); void shearing(float a,float b,float c,float d,float e,float f,float tranm[][4]); main() { int j,m=NUMBER; int gd=DETECT,gm; float tm[4][4]={0.}; initgraph(&gd,&gm,"d:\\tc"); settextstyle(3,0,2); outtextxy(170,4,"3D GRAPFICS TRANSFORMA TION"); setwritemode(1);

《计算机图形学》实验报告姓名:郭子玉 学号: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; }

相关主题
文本预览
相关文档 最新文档