计算机图形学基础教程习题课1(第二版)(孙家广-胡事民编著)
- 格式:doc
- 大小:99.50 KB
- 文档页数:6
计算机图形学习题集青岛科技大学计算机图形学复习大纲第一章概述一、填空题1.计算机图形学研究怎样用生成、处理和显示的学科。
2.矢量图是由数学方式描述的只记录生成图形算法和图形特征的数据文件。
位图是由像素描述的全部像素信息组成的数据文件。
二、选择题1.下列不属于计算机图形学的应用的是()A、计算机辅助绘图及设计B、事务管理中的交互式绘图C、科学计算可视化D、人工智能第二章基本图形生成一、填空题2.绘制直线时的终点判别,规定离X轴近的终点,以ˍXˍ来计长,而离Y轴近的终点,以ˍˍYˍ来计长。
3.绘制圆弧时的终点判别,规定离X轴近的终点,以ˍˍˍˍˍˍˍˍˍˍ来计长,而离Y轴近的终点,以ˍˍˍˍˍˍˍˍˍˍ来计长。
4.生成直线常用的算法主要有、、。
5.圆弧的Bresenham点生成算法,通常把圆分成____________________个部分,如果f i=(x i+1)2+y i2-R2,g i=(x i+1)2+(y i-1) 2-R2,e=∣f i∣-∣g i∣,当点(X i,Y i)的e i≥0 则下一点为D,其坐标为(X i+1,____________________),若e i<0则下一点为H,其坐标为(X i+1,____________________)。
6.6.直线DDA 算法,当斜率m<=1时,x 方向的增量△x 和y 方向的增量△y 分别是____。
A. ±m 和±1B. ±1和±1/mC. ±1和±mD. ±1/m 和±1三、 计算推理题1、 用Bresenham 算法生成椭圆 一 时,若: 在第一象限上半部分误差项递推公式为:下半部分的递推公式为:当时,说明从椭圆的上半部分转入下半部分。
请写出画出整个椭圆的算法步骤。
5、已知逐点比较法在第Ⅰ象限生成直线的计算式为:⎪⎩⎪⎨⎧-==+=≥++A i i i i i i i Y F F Y Y X X X F 1110)1(方向一步,即时,走 ⎪⎩⎪⎨⎧+=+==<++A i i i i i i i X F F Y Y X X Y F 1110)1(方向一步,即时,走 试推导逐点比较法在第Ⅱ象限生成直线的计算式。
计算机图形学基础教程孔令德课后答案【篇一:大学计算机图形学课程设】息科学与工程学院课程设计任务书题目:小组成员:巴春华、焦国栋成员学号:专业班级:计算机科学与技术、2009级本2班课程:计算机图形学指导教师:燕孝飞职称:讲师完成时间: 2011年12 月----2011年 12 月枣庄学院信息科学与工程学院制2011年12 月20日课程设计任务书及成绩评定12【篇二:计算机动画】第一篇《计算机图形学》小结《计算机图形学》第一章:从计算机的辅助设计,艺术,和虚拟现实技术等方面介绍了计算机图形学的应用领域;接下了解了有关计算机图形学的概念和发展情况和图新显示器的发展和阴极射线管光栅扫描显示等的工作原理;最后介绍了图形学的最新技术。
第二章:介绍了面向对象程序设计,visual c++下的编程,主要基于mfc的编程,更重要的是绘制图形的方法。
第三章:图形的扫描与转换:主要分两部分,一是:直线,圆,和椭圆的扫描和转换中的一些重要而经典的算法。
二是:反走样技术,尤其,直线距离加权反走样的算法。
第四章:主要介绍了多边形填充,有多边形的的概述到有效边表填充,边缘填充,最后区域填充的原理和算法第五章:二维变换和裁剪:主要介绍了裁剪的方法:cohen sutherland算法是最著名的算法,除此之外还有重点分割裁剪算法,梁友栋——barsky算法。
第二篇计算机动画2.1计算机动画的概念:计算机动画是指采用图形与图像的处理技术,借助于编程或动画制作软件生成一系列的景物画面,其中当前帧是前一帧的部分修改。
计算机动画是采用连续播放静止图像的方法产生下图1-1几幅图片就是用计算机动画(a)(b)(c)(d)图2-1 计算机动画示例2.2 计算机动画的发展:计算机动画的发展大致分为三阶段:第一阶段:初出茅庐阶段:20世纪60年代初。
第一部计算机动画片诞生,之后大约20年,二维动画是计算机动画研究的重心,同时,二维动画也被应用于教学演示和辅助传统的动画片制作。
第一章1、试述计算机图形学研究的基本内容?答:见课本P5-6页的1.1.4节。
2、计算机图形学、图形处理与模式识别本质区别是什么?请各举一例说明。
答:计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像,且所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科。
计算机图形学研究的是从数据描述到图形生成的过程。
例如计算机动画制作。
图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像。
例如工业中的射线探伤。
模式识别是指计算机对图形信息进行识别和分析描述,是从图形(图像)到描述的表达过程。
例如邮件分捡设备扫描信件上手写的邮政编码,并将编码用图像复原成数字。
3、计算机图形学与CAD、CAM技术关系如何?答:见课本P4-5页的1.1.3节。
4、举3个例子说明计算机图形学的应用。
答:①事务管理中的交互绘图应用图形学最多的领域之一是绘制事务管理中的各种图形。
通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定。
②地理信息系统地理信息系统是建立在地理图形基础上的信息管理系统。
利用计算机图形生成技术可以绘制地理的、地质的以及其它自然现象的高精度勘探、测量图形。
③计算机动画用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率。
5、计算机绘图有哪些特点?答:见课本P8页的1.3.1节。
6、计算机生成图形的方法有哪些?答:计算机生成图形的方法有两种:矢量法和描点法。
①矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两点间的短矢量,从而得到一条近似的曲线。
尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的。
②描点法:把显示屏幕分成有限个可发亮的离散点,每个离散点叫做一个像素,屏幕上由像素点组成的阵列称为光栅,曲线的绘制过程就是将该曲线在光栅上经过的那些像素点串接起来,使它们发亮,所显示的每一曲线都是由一定大小的像素点组成的。
《计算机图形学》习题与解答第一章概述1. 试描述你所熟悉的计算机图形系统的硬软件环境。
计算机图形系统是计算机硬件、图形输入输出设备、计算机系统软件和图形软件的集合。
例如:计算机硬件采用PC、操作系统采用windows2000,图形输入设备有键盘、鼠标、光笔、触摸屏等,图形输出设备有CRT、LCD等,安装3D MAX图形软件。
2. 计算机图形系统与一般的计算机系统最主要的差别是什么?3. 图形硬件设备主要包括哪些?请按类别举出典型的物理设备?图形输入设备:鼠标、光笔、触摸屏和坐标数字化仪,以及图形扫描仪等。
图形显示设备:CRT、液晶显示器(LCD)等。
图形绘制设备:打印机、绘图仪等。
图形处理器:GPU(图形处理单元)、图形加速卡等等。
4. 为什么要制定图形软件标准?可分为哪两类?为了提高计算机图形软件、计算机图形的应用软件以及相关软件的编程人员在不同计算机和图形设备之间的可移植性。
图形软件标准通常是指图形系统及其相关应用系统中各界面之间进行数据传送和通信的接口标准,另外还有供图形应用程序调用的子程序功能及其格式标准。
5. 请列举出当前已成为国际标准的几种图形软件标准,并简述其主要功能。
(1)CGI(Computer Graphics Interface),它所提供的主要功能集包括控制功能集、独立于设备的图形对象输出功能集、图段功能集、输入和应答功能集以及产生、修改、检索和显示以像素数据形式存储的光栅功能集。
(2)GKS(Graphcis Kernel System),提供了应用程序和图形输入输出设备之间的接口,包括一系列交互和非交互式图形设备的全部图形处理功能。
主要功能如下:控制功能、输入输出功能、变换功能、图段功能、询问功能等。
6. 试列举计算机图形学的三个应用实例。
(1)CAD/CAM(2)VISC(3)VR.第二章光栅图形学1. 在图形设备上如何输出一个点?为输出一条任意斜率的直线,一般受到哪些因素影响?若图形设备是光栅图形显示器,光栅图形显示器可以看作是一个像素的矩阵,光栅图形显示器上的点是像素点的集合。
1.列举计算机图形学的主要研究内容。
计算机中图形的表示方法、图形的计算、图形的处理和图形的显示。
图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。
2.常用的图形输出设备是什么?显示器(CRT、LCD、等离子)、打印机、绘图仪等。
2.常用的图形输入设备是什么?键盘、鼠标、跟踪球、空间球、数据手套、光笔、触摸屏、扫描仪等。
3.列出3种图形软件工具。
AutoCAD、SolidWorks、UG、ProEngineer、CorelDraw、Photoshop、PaintShop、Visio、3DMAX、MAYA、Alias、Softimage等。
错误:CAD4.写出|k|>1的直线Bresenham画线算法。
dddd设直线方程为:y=kx+b,即x=(y-b)/k,有x i+1=x i+(y i+1-y i)/k=x i+1/k,其中k=dy/dx。
因为直线的起始点在象素中心,所以误差项d的初值d0=0。
y下标每增加1,d的值相应递增1/k,即d=d+1/k。
一旦d≥1,就把它减去1,这样保证d 在0、1之间。
●当d≥0.5时,最接近于当前象素的右上方象素(x i+1,y i+1),x方向加1,d减去1;●而当d<0.5时,更接近于上方象素(x i,y i+1)。
为方便计算,令e=d-0.5,e的初值为-0.5,增量为1/k。
●当e≥0时,取当前象素(x i,y i)的右上方象素(x i+1,y i+1),e减小1;●而当e<0时,更接近于上方象素(x i,y i+1)。
void Bresenhamline (int x0,int y0,int x1, int y1,int color){ int x, y, dx, dy;float k, e;dx = x1-x0, dy = y1-y0, k=dy/dx;e=-0.5, x=x0, y=y0;for (i=0; i≤dy; i++){ drawpixel (x, y, color);y=y+1,e=e+1/k;if (e≥0){ x++, e=e-1;}}}4.写出|k|>1的直线中点画线算法。
第一章:P561、列出在你过去学习工作中用过与计算机图形学有关的程序c语言:#include <graphics.h>main(){int graphdriver = VGA, graphmode=VGAHI;initgraph(&graphdriver,&graphmode,””);setbkcolor(BLUE);setcolor(WHITE);setfillstyle(1,LIGHTRED);bar3d(100,200,400,350,100,1);floodfill(450,300,WHITE);floodfill(250,450,WHITE);setcolor(LIGHTGREEN);rectangle(450,400,500,450);floodfill(470,420,LIGHTGREEN);getch();closegraph();}JA V A语言:例1、画点Import java.io.*;Class point{int ax;int ay;int bx;int by;public point(int ax, int ay, int bx, int by){float k ; //计算斜率float b;k=(by-ay)/(bx-ax);b=ay-ax*k;system.out.println(“直线的方程为:y=”+k+”x”+”+”+b);}}例2、画矩形class DrawPanel extends Jpanel{public void paint(Graphics g){super.paint(g);Graphics2D g2= (Graphics 2D);Double leftx=200;Double topy=200;Double width=300;Double height=250;Rectangle2D rect= new Rectangle2D.double(leftx,topy,width,height);G2.draw(rect);}}2、列出你所用过的窗口系统中与观感有关的元素的功能,如图标、滚动棒、菜单等使用滚动条当文档、网页或图片超出窗口大小时,会出现滚动条,可用于查看当前处于视图之外的信息。
华中科技大学计算机图形学课后习题指导一、第五章5.3 试用中点Bresenham算法画直线段的原理推导斜率为负且大于1的直线段绘制过程(要求写清原理、误差函数、递推公式及最终画图过程)。
分析:这是典型的算法推导题,推导时需要首先确定最大位移方向,然后根据最大位移方向确定候选点,并利用候选点的中点构造判别式;根据判别式确定选择候选点的条件,然后确定判别式的递推公式以及初值。
解:5.7 利用中点Bresenham画圆算法的原理推导第一象限x=y到y=0圆弧段的扫描转换算法(要求写清原理、误差函数、递推公式及最终画图过程)。
分析:这是典型的算法推导题,推导时需要首先确定最大位移方向,然后根据最大位移方向确定候选点,并利用候选点的中点构造判别式;根据判别式确定选择候选点的条件,然后确定判别式的递推公式以及初值。
圆算法应该注意的是算法是从理想圆与坐标轴交点开始的。
解:在x=y到y=0的圆弧中,(R, 0)点比在圆弧上,算法从该点开始。
最大位移方向为y,由(R, 0)点开始,y渐增,x渐减,每次y方向加1,x方向减1或减0。
(注意算法的起始点)设P点坐标(xi, yi),下一个候选点为Pr(xi, yi+1)和Pl(xi-1, yi+1),取Pl和Pr的中点M(xi-0.5, yi+1),设理想圆与y=yi+1的交点Q,构造判别式:d=F(xM, yM)=(x-0.5)2+(y+1)2-R2当d<0时,M在Q点左方,取Pr(xi,yi+1);当d>0时,M在Q点右方,取Pl(xi-1,yi+1);当d=0时,M与Q点重合,约定取Pl(xi-1, yi+1)。
5.11 如图所示多边形,若采用扫描转换算法(ET边表算法)进行填充,试写出该多边形的ET表和当扫描线Y=4时的有效边表(AET表,活性边表)。
分析:改进的有效边表算法是用软件方法实现扫描转换效率较高的算法,它利用了边表来构造有效边表。
需要注意的有以下几点:(1)构造边表时,水平边不需要构造,算法能够获取到水平边的两个端点,配对填充后水平边被填充,因此水平边的数据不参与计算。
第一章1、试述计算机图形学研究的基本内容?答:见课本P5-6页的1.1.4节。
2、计算机图形学、图形处理与模式识别本质区别是什么?请各举一例说明。
答:计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像,且所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科。
计算机图形学研究的是从数据描述到图形生成的过程。
例如计算机动画制作。
图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像。
例如工业中的射线探伤。
模式识别是指计算机对图形信息进行识别和分析描述,是从图形(图像)到描述的表达过程。
例如邮件分捡设备扫描信件上手写的邮政编码,并将编码用图像复原成数字。
3、计算机图形学与CAD、CAM技术关系如何?答:见课本P4-5页的1.1.3节。
4、举3个例子说明计算机图形学的应用。
答:①事务管理中的交互绘图应用图形学最多的领域之一是绘制事务管理中的各种图形。
通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定。
②地理信息系统地理信息系统是建立在地理图形基础上的信息管理系统。
利用计算机图形生成技术可以绘制地理的、地质的以及其它自然现象的高精度勘探、测量图形。
③计算机动画用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率。
5、计算机绘图有哪些特点?答:见课本P8页的1.3.1节。
6、计算机生成图形的方法有哪些?答:计算机生成图形的方法有两种:矢量法和描点法。
①矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两点间的短矢量,从而得到一条近似的曲线。
尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的。
②描点法:把显示屏幕分成有限个可发亮的离散点,每个离散点叫做一个像素,屏幕上由像素点组成的阵列称为光栅,曲线的绘制过程就是将该曲线在光栅上经过的那些像素点串接起来,使它们发亮,所显示的每一曲线都是由一定大小的像素点组成的。
1.列举计算机图形学的主要研究内容。
计算机中图形的表示方法、图形的计算、图形的处理和图形的显示。
图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。
2.常用的图形输出设备是什么?
显示器(CRT、LCD、等离子)、打印机、绘图仪等。
2.常用的图形输入设备是什么?
键盘、鼠标、跟踪球、空间球、数据手套、光笔、触摸屏、扫描仪等。
3.列出3种图形软件工具。
AutoCAD、SolidWorks、UG、ProEngineer、CorelDraw、Photoshop、PaintShop、Visio、3DMAX、MAYA、Alias、Softimage等。
错误:CAD
4.写出|k|>1的直线Bresenham画线算法。
d
d
d
d
设直线方程为:y=kx+b,即x=(y-b)/k,有x i+1=x i+(y i+1-y i)/k=x i+1/k,其中k=dy/dx。
因为直线的起始点在象素中心,所以误差项d的初值d0=0。
y下标每增加1,d的值相应递增1/k,即d=d+1/k。
一旦d≥1,就把它减去1,这样保证d在0、1之间。
●当d≥0.5时,最接近于当前象素的右上方象素(xi+1,y i+1),x方向加1,d减
去1;
●而当d<0.5时,更接近于上方象素(x i,yi+1)。
为方便计算,令e=d-0.5,e的初值为-0.5,增量为1/k。
●当e≥0时,取当前象素(x i,y i)的右上方象素(xi+1,y i+1),e减小1;
●而当e<0时,更接近于上方象素(xi,yi+1)。
voidBresenhamline (int x0,int y0,intx1, inty1,int color) { int x,y,dx,dy;
float k,e;
dx= x1-x0, dy = y1-y0,k=dy/dx;
e=-0.5, x=x0, y=y0;
for (i=0; i≤dy; i++)
{drawpixel(x, y,color);
y=y+1,e=e+1/k;
if (e≥0)
{ x++, e=e-1;}
}
}
4.写出|k|>1的直线中点画线算法。
构造判别式:d=F(M)=F(xp+0.5,y p+1)=a(x p+0.5)+b(yp+1)+c
●当d<0,M在Q点左侧,取右上方P2为下一个象素;
●当d>0,M在Q点右侧,取上方P1为下一个象素;
●当d=0,选P1或P2均可,约定取P1为下一个象素;
增量计算:
●若d 0,取正上方象素P1(x p, y p+1),要判下一个象素位置,应计算
d1= F(M1)=F(xp+0.5, y p+2)=a(x p+0.5)+b(yp+2)+c=d+b
增量为b。
●若d<0,取右上方象素P2 (xp+1, y p+1)。
要判断再下一象素,则要计算
d2= F(M2)=F(x p+1.5,y p+2)=a(xp+1.5)+b(y p+2)+c=d+a+b
增量为a+b。
●d的初值d0=F(x0+0.5,y0+1)=F(x0, y0)+0.5a+b=0.5a+b 用2d代替d的算法:
void Midpoint Line (int x0,int y0,int x1, int y1,int color)
{ int a,b,d1, d2, d, x, y;
a=y0-y1, b=x1-x0, d=a+2*b;
d1=2*b,d2=2*(a+b);
x=x0, y=y0;
drawpixel(x,y, color);
while (y<y1)
{ if (d<0){x++,y++,d+=d2; }
else{y++,d+=d1;}
drawpixel (x, y,color);
} /* while*/
}/* midPointLine*/
5.写出下图中多边形的边表(新边表)。
5.写出下图中多边形的边表(新边表)。
6. 写出以原点为球心,半径为2的球体的旋转生成算法。
算法一:以点为基本图元 for(j =0;j<72;j++)
{ﻩ 绕Y轴逆时针旋转5度,⎥⎥⎥
⎥⎥⎥⎦⎤
⎢⎢⎢⎢⎢⎢⎣⎡-=1000
036cos 036sin
0010
036sin
036cos π
π
π
πy R ;ﻩ
//画出半圆
画点(0,2,0); for(i=0;i<36;i++)
{
将当前点绕Z轴逆时针旋转5度,⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣
⎡-=100001000036cos 36sin
0036
sin
36cos π
π
π
πz R ;
ﻩ 画变换后的点⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡⋅⋅=⎥⎥⎥⎥
⎦
⎤⎢⎢⎢⎢⎣⎡'''10201z
y R R z y x ;}} 算法二:以圆弧为基本图元 fo r(j=0;j <72;j ++)
{ 绕Y 轴逆时针旋转5度,⎥⎥⎥
⎥⎥⎥⎦⎤
⎢⎢⎢⎢⎢⎢⎣⎡-=1000
036cos 036sin
0010
036sin
036cos π
π
π
πy R ;
画半圆;}。