计算机图形学 第四章习题

合集下载

计算机图形学习题集科大

计算机图形学习题集科大

计算机图形学习题集青岛科技大学计算机图形学复习大纲第一章概述一、填空题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(方向一步,即时,走 试推导逐点比较法在第Ⅱ象限生成直线的计算式。

《计算机图形学》练习试题及参考答案大全

《计算机图形学》练习试题及参考答案大全

《计算机图形学》练习试题及参考答案(后面有答案)一、名词解释:(每个4分)1.计算机图形学2.图象处理3.模式识别4.计算几何5.凸多边形6.种子填充算法7.窗口8.视区9.光顺性10.拟合11.多项式插值12.小挠度曲线13.图形变换14.齐次坐标系15.凸包16.轮廓线17.等值线18.图形的翼边表示19.ER模型20.图形消隐21.本影22.半影23.用户坐标系24.规范化设备坐标系25.构造26.约束技术27.光线跟踪28、走样29、CRT(Cathode Ray Tube)30、隔行(interlaced)扫描31、输入模式32、取样方式(sample mode)33、区域34、边界表示法35、复合变换36、二维复合平移37.二维复合比例38.二维复合旋转39.视区(Viewport)40、投影变换41、平面几何投影42. 参数图43. 像素图44.人机界面45.地理信息系统46.虚拟现实47.几何造型技术48.扫描转换49. 插值曲线50.逼近曲线51. 用户接口52. 交互技术53. 交互式图形系统的基本交互任务54. 定位任务55. 选择任务56. 拾取任务57 .选择技术58. 菜单技术59. 文字输入任务60. 数值输入任务61.动画62.帧63.场64. 消隐65.物体空间的消隐算法66. 漫反射光67. 环境光68. 镜面反射光二、选择题(每题2分)1、计算机图形学与计算几何之间的关系是( )。

A)学术上的同义词B)计算机图形学以计算几何为理论基础C)计算几何是计算机图形学的前身D).两门毫不相干的学科2、计算机图形学与计算机图象学的关系是( )。

A)计算机图形学是基础,计算机图象学是其发展B)不同的学科,研究对象和数学基础都不同,但它们之间也有可转换部分C)同一学科在不同场合的不同称呼而已D)完全不同的学科,两者毫不相干3、触摸屏是( )设备。

A)输入B)输出C)输入输出D)既不是输入也不是输出4.计算机绘图设备一般使用什么颜色模型?( )A)RGB;B)CMY;C)HSV ;D)HLS5. 计算机图形显示器一般使用什么颜色模型?( )A)RGB;B)CMY;C)HSV ;D)HLS6.分辨率为1024×1024的显示器各需要多少字节位平面数为24的帧缓存?( ) A)512KB;B)1MB;C)2MB ;D)3MB7.哪一个不是国际标准化组织(ISO)批准的图形标准?( )A)GKS;B)PHIGS;C)CGM ;D)DXF8.下述绕坐标原点逆时针方向旋转a角的坐标变换矩阵中哪一项是错误的? ( )| A B || C D |A) cos a;B) sin a;C) sin a;D) cos a9、在多边形的逐边裁剪法中,对于某条多边形的边(方向为从端点S到端点P)与某条裁剪线(窗口的某一边)的比较结果共有以下四种情况,分别需输出一些顶点.请问哪种情况下输出的顶点是错误的? ( )A)S和P均在可见的一侧,则输出S和P.B)S和P均在不可见的一侧,则输出0个顶点.C)S在可见一侧,P在不可见一侧,则输出线段SP与裁剪线的交点.D)S在不可见的一侧,P在可见的一侧,则输出线段SP与裁剪线的交点和P.10、在物体的定义中对边的哪条限制不存在? ( )A) 边的长度可度量且是有限的B) 一条边有且只有两个相邻的面C) 一条边有且只有两个端点D) 如果一条边是曲线,那么在两个端点之间不允许曲线自相交11.下述哪一条边不是非均匀有理B样条(NURBS)的优点? ( )A) NURBS比均匀B样条能表示更多的曲面B) 对于间距不等的数据点,用NURBS拟合的曲线比用均匀B样条拟合的曲线更光滑C) NURBS提供的权控制方法比用控制点更能有效的控制曲线的形状D) 使用NURBS可以提高对曲面的显示效率12.下列关于图的存储表示的叙述中,哪一个是不正确的?A) 无向图的相邻矩阵是对称矩阵B) 对于带权的图,其相邻矩阵中值为1的元素,其值可以用边的权来权替C) 用邻接表法存储包括n个结点的图需要保存一个顺序存储的结点表和n个链接存储的边表D) 用邻接表法存储包括n条边的图需要保存一个顺序存储的结点表和n个链接存储的边表13*.在面片的数量非常大的情况下哪一个消隐算法速度最快? ( )A) 深度缓存算法(Z-Buffer)B) 扫描线消隐算法C) 深度排序算法(画家算法)D) 不知道14*.下面关于深度缓存消隐算法(Z-Buffer)的论断哪一条不正确? ( )A) 深度缓存算法并不需要开辟一个与图像大小相等的深度缓存数组B) 深度缓存算法不能用于处理对透明物体的消隐C) 深度缓存算法能并行实现D) 深度缓存算法中没有对多边形进行排序15.在用射线法进行点与多边形之间的包含性检测时,下述哪一个操作不正确? ( )A) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数0次B) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数2次C) 当射线与多边形交于某顶点时且该点的两个邻边在射线的两侧时,计数1次D) 当射线与多边形的某边重合时,计数1次16*、扫描消隐算法在何处利用了连贯性(相关性Coherence)?(1)计算扫描线与边的交点;(2)计算多边形在其边界上的深度;(3)计算多边形视窗任意点处的深度值;(4)检测点与多边形之间的包含性。

《计算机图形学》1-4章习题解答

《计算机图形学》1-4章习题解答
特点:其显示的图形质量好,刷新缓存中的内容可局部或动态修改,分辨率和对比度高,并且图形不会产生锯齿状线条。
光栅扫描显示器的工作原理:将CRT屏幕分成由像素构成的光栅网格,其中像素的灰度和颜色信息保存在帧缓存中。电子束在水平和垂直偏转磁场的作用下从左向右,从上向下扫描荧光屏,产生一幅幅光栅,并由显示内容来控制所扫描的像素点是否发亮,从而形成具有多种彩色及多种明暗度的图像。
相当于:
9.将梁友栋-Barsky线段裁剪算法推广到三维,写出对下述三维观察体所要满足的不等式:
(a)平行规范化观察体;
(b)透视规范化观察体。
答:设 和 是线段的两个端点。线段的参数方程是:
平行规范化观察体是由平面 组成的单位立方体;
透视规范化观察体是由平面 组成的被截断的部分棱锥。
(a)对于平行规范化观察体,内部点满足:
垂直回扫:电子束到达每次刷新周期末尾,从CRT屏幕右下角回到屏幕左上角的动作。
8.为什么很多彩色打印机使用黑色颜料?
答:彩色颜料(青、品红、黄)相对来说较贵,并且在技术上很难通过多种颜色产生高质量的黑色。
9.简述随机扫描显示器和光栅扫描显示器的简单工作原理和各自的特点。
答:随机扫描显示器的工作原理:要显示的图形定义是一组画线命令,存放在刷新缓存中,由显示控制器控制电子束的偏移,周期性地按画线命令依次画出其组成线条,从而在屏幕上产生图形。
(a)绕原点;
(b)绕点P(-1,-1)。
答:三角形矩阵 ,设旋转之后的三角形矩阵为S’
逆时针旋转矩阵
平移矩阵 反平移矩阵
(a) ,得
(b) ,得

2.将三角形A(0,0),B(1,1),C(5,2)放大两倍,保持C(5,2)不变。
答:

《计算机图形学》练习试题及参考答案(四)

《计算机图形学》练习试题及参考答案(四)

《计算机图形学》练习试题及参考答案15、平面上给定三个顶点Qi (i=0,1,2),试构造一条插值这三个顶点的二次Bezier 曲线。

要求简述基本原理并画出示意图。

解:由曲线端点性质,知可以取Bezier 曲线的两端点P 0=Q 0,P 2=Q 2,下面构造P 1 点: 因为P(t)= P 0(1-t)2+ 2P 1(1-t)t+ P 2t 2,令l1=|Q 0Q 1|,l2=|Q 1Q 2|,,则可以取t1=l1/(l1+l2),有: P (t1)=Q 1从而可以求得:2221212012112()2l l Q l Q l Q P l l +--=这样就可以以P 0P 1P 2这特征多边形画出二次Bezier 曲线。

16、给定顶点P 0P 1P 2P 3P 4P 5P 6构成的控制多边形,绘出三次B 样条曲线的形状示意图。

要求:简要说明作图过程,保留作图辅助线,作出(或文字说明)曲线上各特征点的切线矢量。

P0 P2Q 0Q 2画出以P0P1P2 P3决定的地0段3次样条曲线:M1为P0P2的中点,A点位于P1M1的1/3处,A点的切矢平行于P0P2,且等于P0P2的1/2,A点的二阶导数矢量为中线矢量P1M1的两倍;M2为P2P3的中点,B点位于P2M2的1/3处,A点的切矢平行于P1P3,且等于P1P3的1/2,B点的二阶导数矢量为中线矢量P2M2的两倍;正确标出A、B两点、指出A、B点的切矢、指出A、B点的二阶导数矢量以同样的方法画出其它样条曲线。

16、如图,取正方形四个顶点P0,P1,P2,P3作为特征多边形顶点,采用二次B样条曲线绘出光滑封闭曲线的形状示意图。

采用三次B样条曲线绘出光滑封闭曲线的形状示意图。

要求:简要说明作图过程,保留作图辅助线,作出(或文字说明)曲线上各特征点的切线矢量。

1)作图简述:先画由P 0P 1P 2三点所决定的一段曲线。

取P 0P 1中点,该点的切矢方向及大小都与P 0P 1向量相同。

《计算机图形学》习题与解答

《计算机图形学》习题与解答

《计算机图形学》习题与解答第一章概述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. 在图形设备上如何输出一个点?为输出一条任意斜率的直线,一般受到哪些因素影响?若图形设备是光栅图形显示器,光栅图形显示器可以看作是一个像素的矩阵,光栅图形显示器上的点是像素点的集合。

计算机图形学(第三版)孙家广课后习题答案

计算机图形学(第三版)孙家广课后习题答案
计算机图形ห้องสมุดไป่ตู้口(CGI)
基本图形转换规范(IGES)
产品数据转换规范(STEP)等
2、CGI标准的主要功能是什么?试用CGI中的图形输出功能绘制一副机械零件图。
CGI的目的是提供控制图形硬件的一种与设备无关的方法,它可以看成是图形设备驱动
程序的一种标准。CGI在用户程序和虚拟设备之间,以一种独立于设备的方式提供图形信息
模型,迅速地修改图形模型的数据;并能够绘制显示修改后的图形模型。
GL是工作站或UNIX上广泛应用的一个工业标准图形程序库,和PHIGS同样是提供用户
与程序图形系统接口。包括基本图素、坐标变换、设置属性和显示方式、输入/输出处理、
真实图形显示。
相同点:
三个都是提供用户与输入输出设备之间的图形系统接口的标准图形程序库。
下面。就像饭馆的菜单一样,程序菜单显示选择列表。为了使屏幕整齐,会隐藏这些菜单,
只有在标题栏下的菜单栏中单击菜单标题之后才会显示菜单。例如,单击“画图”菜单栏中
的“图像”可显示“图像”菜单:
3、列出你所用过的图形输入、显示及输出设备的名称、型号、生产厂商、出厂时间及其主
要优缺点。

4、比较个人计算机与工作站的图形功能
{
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)

计算机图形学习题解答(清华)

计算机图形学习题解答(清华)

b3 = (0,6) ,将 t=1/3 和 2/3 带入方程得 (3,0) = (0,3) = 8 4 2 1 b0 + b1 + b2 + b3 27 9 9 27 解得 b = ( 4,− 5 ), b = ( − 5 ,4) 。 1 2 1 2 4 8 2 2 b0 + b1 + b2 + b3 27 9 9 27
对上式左边乘以 (t + (1 − t )) ,得到:
∑C
i= 0
n
i n
i * i n +1− i Pi t i (1 − t ) n +1−i + t i +1 (1 − t ) n− i ) = ∑ C n +1 Pi t (1 − t )
比较等式两边 t i (1 − t ) n+1− i 项的系数,得到:
1 1 2 2 T − P = 3P1 ' t (1 − t ) − 3P1t (1 − t ) , t = ,因此 2 2
1 T − P + 3P1t (1 − t ) 2 1 2 P1 ' = ,t = 。 2 3t (1 − t ) 2
二、 (1) 推导 Beizer 曲线的升阶公式。
三、已知一条 Bezie r 曲线的控制顶点依次为(30, 0), (60, 10), (80, 30), (90, 60), (90, 90) 。 求 t=1/4 处的值, 并写出相应的 de Casteljau 三角形。 解:值为(75, 34.375)
(30,0) (60,10) (80,30) (90,60) (90,90) (37.5,2.5) (65,15) (82.5,37.5) (90,67.5) (44.375,5.625) (69.375,20.625) (84.375,45) (50.625,9.375) (73.125,26.71875) (56.25,13.7109375)

计算机图形学基础课后部分习题答案

计算机图形学基础课后部分习题答案

计算机图形学基础第一章1.名词解释:图形:从客观世界物体中抽象出来的带有颜色信息及形状信息的图和形。

图像:点阵法:是用具有灰度或颜色信息的点阵来表示的一种方法。

参数法:是以计算机中所记录图形的形状参数与属性参数来表示图像的一种方法。

2.图形包括那两方面的要素,在计算机中如何表示他们?构成图形的要素可以分为两类:一类是刻画形状的点、线、面、体等几何要素;另一类是反映物体本身固有属性,如表面属性或材质的明暗、灰度、色彩等非几何要素。

3.什么叫计算机图形学?分析计算机图形学,数字图像处理和计算机视觉学科间的关系。

计算机图形学是研究怎样利用计算机来显示、生成和处理图形的原理、方法和技术的一门学科。

【关系图在课本第一页】4,有关计算机图形学的软件标准有哪些?计算机图形核心系统(GKS)及其语言联编、计算机图形元文件(CGM),计算机图形接口(CGI),基本图形转换规范(IGES)、产品数据转换(STEP)6.试发挥你的想象力,举例说明计算机图形学有哪些应用范围,解决的问题是什么?【具体参照课本第5页】第二章1.名词解释LCD: 就是Liquid Crystal Display,它是利用液晶的光电效应,通过施加电压改变液晶的光学特性,从而造成对入射光的调剂,使通过液晶的透射光或反射光受所加电压的控制,达到显示的目的。

LED: 即Liquid-Emitting Diode, 采用二极管激发的光来显示图像。

随机扫描:采用随机定位的方式控制电子束运动光栅扫描:示器显示图形时,电子束依照固定的扫描线和规定的扫描顺序进行扫描。

电子束先从荧光屏左上角开始,向右扫一条水平线,然后迅速地回扫到左边偏下一点的位置,再扫第二条水平线,照此固定的路径及顺序扫下去,直到最后一条水平线,即完成了整个屏幕的扫描。

刷新:刷新是经过一段时间后,信息可能丢失,需要重写,为了使信息储存更长的时间,必须不断的刷新每个储存单元中储存的信息,也就是将各储存单元中的数据读出之后,再写回到元单元中,对各储存单元中的电容器进行充电.刷新频率:刷新率是指电子束对屏幕上的图像重复扫描的次数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、将中点画线算法推广以便能画出任意斜率的直线MidPointLine(x0,y0,x1,y1,color){int a,b,delta1,delta2,d,x,y;a = y0 – y1;b = x1 – x0;d = 2*a+b;delta1 = 2 * a;delta2 = 2 * (a+b);x = x0;y = y0;if (a<b)drawpixel(x, y, color);elsedrawpixel(y,x,color);while (x<x1){If (d<0){x++;y++;d+ = delta2;}Else{X++;D+=delta1;}drawpixel (x,y,color);}ElseWhile (x>x1){If (d<0){x--;y++;d-=delta3;}Else{x--;d-=delta1;}drawpixel (x,y,color);}}2、采用整数Bresenham算法,为一台计算机编制直线扫描转换程序。

从键盘敲入两端点坐标,就能在显示器屏幕上画出对应的直线。

V oid DrawLine(int color){int x0,y0,x1,y1,color, I;scanf( “%d, %d, %d, %d”, &x0, &y0, &x1, &y1);dx=x1 – x0;dy=y1 – y0;e = -dx;x = x0;y = y0;for ( i=0; i<=dx; i++){drawpixel (x, y, color);x=x+1;e=e+2*dy;if (e>=0){y = y + 1;e = e – 2 * dy;}}}4、试编写按逆时针方向生成第一个8分圆的中点算法讨论如何从(R/√2 ,R/√2 )到(R,0)顺时针地确定最佳逼近于该圆弧的像素序列假定x 坐标为xp的像素中与该圆弧最近者已确定,为P(xp,yp)那么,下一个像素只能是正下方的P1(Xp, Yp-1)或右下方的P2(Xp+1, Yp-1)两者之一,如图所示:构造函数:F(x, y) = x2+y2-R2对于圆上的点,F(x, y) = 0;对于圆内的点,F(x, y) < 0;对于圆外的点,F(x, y) > 0;假设M是P1和P2的中点,即M=(Xp+0.5, Yp-1)当F(M)<0时,M在圆内,说明P1离圆弧更近,应取P1作为下一像素当F(M)>0时,M在圆外,说明P2离圆弧更近,应取P2作为下一像素当F(M)=0时,M在圆上,在P1和P2之中随便取一个,取P2作为下一像素构造判别式d = F(M) = F(Xp+0.5, Yp-1) = (Xp+0.5)^2 + (Yp-1)^2 – R^2当d <0时,取P1作为下一像素而且再下一个像素的判别式为d1 = F(Xp+0.5, Yp-2) = (Xp+0.5)^2 + (Yp-2)^2 – R^2= d –2Yp +3所以,沿正下方,d的增量为–2Yp +3当d >=0时,取P2作为下一像素而且再下一个像素的判别式为d2 = F(Xp+1.5, Yp-2)= (Xp+1.5)^2 + (Yp-2)^2 – R^2= d + 2Xp –2Yp +5= d + 2(Xp – Yp) + 5所以,沿右下方,d的增量为2(Xp –Yp) + 5由于我们这里讨论的是按顺时针方向生成第一个8分圆,因此,第一像素是(R/√2 ,R/√2 )判别式的初值为d0= F (R/√2 +0.5,R/√2 –1)= 1.25 - R/√2= 1.25 – R/1.414MidpointCircle(r,color)Int r, color;{float x,y;float d;x=r/1.414;y=r/1.414;d=1.25 –r/1.414;drawpixel(x, y, color);while (y>0){if (d<0){d+=3-2*y;y--;}else{d+=5+2*(x-y);x++;y--;}drawpixel(x,y,color);}}5、假设圆的圆心不在原点,试编写算法对整个圆进行扫描转换(1)用bresenham画圆法,设圆心坐标为(a,b)bresenham_circle(r,color)int r,color;{int x,y,delta,delta1,delta2,direction;x=a;y=b+r;delta=2*(1-r);while (y>=0){drawpixel(x,y,color);if (delta<0){delta1=2*(delta+y-b)-1;if (delta1<=0)direction=1;elsedirection=2;}else if (delta>0){delta2=2*(delta-x+a)-1;if (delta2<=0)direction=2;elsedirection=3;}elsedirection=2;switch (direction){case 1:x++;delta+=2*(x-a)+1;break;case 2:x++;y++;delta+=2*(x-a-y+b+1);break;case 3:y--;delta+=-2*(y-b)+1;break;}}}(2) 采用中点画圆算法#include <stdio.h>#include <conio.h>#include <graphics.h>void MidPointCircle(xc, yc, r, color){int x =xc, y = yc – r;int deltax = 3, deltay = 2 – r – r, d = 1 – r;putpixel(xc, yc, color);while ((yc-y)>( x-xc)){if (d<0){d+ = deltax;deltax+=2;x++;}else{d+ = (deltax + deltay);deltax +=2;deltay +=2;x++;y++;}putpixel(x,y,color);putpixel(xc+yc-y,yc+xc-x,color);putpixel(xc+yc-y,yc+xc-x,color);putpixel(x, yc+yc-y,color);putpixel(xc+xc-x,yc+yc-y,color);putpixel(xc-yc+y,yc-xc+x,color);putpixel(xc-yc+y,yc+xc-x,color);putpixel(xc+xc-x,y,color);}void main(){int gdriver=DETECT, gmode,xc,yc,r;initgraph(&gdriver, &gmode, “”);printf(“Please enter the xc:”);scanf(“%d”, &xc);print f(“Please enter the yc:”);scanf(“%d”, &yc);printf(“Please enter the R:”);scanf(“%d”, &r);cleardevice();MidpointCircle(xc,yc, r,RED);getch();closegraph();}6、试编写可以对一段任意圆弧进行扫描转换的算法将360度的区域分成8个部分编写可以对一段任意圆弧进行扫描转换的算法的关键在于,对这段圆弧的起点和终点分别判定是否在同一区域如果起点和终点在同一区域,调用中点画圆算法,但要根据实际情况对参数进行修正;如果起点和终点不在同一区域,则要根据实际情况对圆弧段进行分割,分割的原则是将每一段的起点和终点放在同一区域,然后分别调用中点画圆算法画圆弧,同样在画的过程中,要根据实际情况对参数进行修正及算法进行修正;设圆弧的起点为(x1,y1),终点为(x2,y2),半径为r将整个圆弧分为两段,弧AC和弧CB,分别进行扫描转换,转换过程中利用中点画圆方法进行,代码如下:midpoint(x1,y1,x2,y2,r,color,k){int x,y;float d;x=x1;y=y1;d=(x1+1)^2+(y1-0.5)^2-r^2;putpixel(x,y,color);while (x<=x2){if (d<0){d+=2*x+3;x++;}else{d+=2*(x-y)+5;x++;y=y+k;}}putpixel(x,y,color);main(){scanf(“%d”,&n);//分割的圆弧数for (i=1;i<=n;i++){scanf(“%d,%d,%d,%d,%d”,&x1,&y1,&x2,&y2,,&k); //要求x1<x2midpoint(x1,y1,x2,y2,r,color,k);}}7、设计一个多边形区域填充算法,使其边界象素具有一个值,而内部的象素具有另一个值。

解:利用边标志算法进行修改,具体算法如下:1、对多边形的每条边进行直线的扫描转换,对多边形的边界所经过的像素打上标志2,其余为0;2、填充:对每条与多边形相交的扫描线,按照从左到右顺序,逐个访问该扫描线上的像素;若像素标志为0时,不变,继续扫描;若像素标志为2时,用前景色着色,继续扫描,但其后标志为0的像素值改为1,并着色color2, 直到遇到标志为2的像素,即第奇数次扫描到标志为2的点,则其后直到标志为2的点赋值为1,着色color2; 第偶数次扫描到标志为2的点,则其后标志为2或标志为0的点,不着色;3、如此进行,直到扫描完毕采用递归形式的种子填充算法fillPolygon(int x, int y, int fill_color, int boundary_color){int c;c = getpixel(x,y);if ((c== boundary_color)||(c==fillcolor)) //判断是否为边界值return;else{putpixel(x, y, fillcolor);fillPolygon(x+1, y, fill_color,boundary_color);fillPolygon(x-1, y, fill_color,boundary_color);fillPolygon(x, y+1, fill_color,boundary_color);fillPolygon(x, y-1, fill_color,boundary_color);}}10、试设计一个生成具有宽度的直线条的算法,使得在直线条连接处不出现图示的缺口对于第一种方案:可以把整个线条分成两个部分,对于左半部分:先计算出线条的四个顶点,a,b,c,d再用直线段把相邻角点连接起来,最后调用多边形填充算法把所得的四边形进行填色同样,对于右半部分,依法处理对于第二种方案:可以把整个线条分成三个部分,对于左半部分:先计算出线条的四个顶点,a, b, c, d再用直线段把相邻角点连接起来,最后调用多边形填充算法把所得的四边形进行填色对于中间部分:先计算出线条的四个顶点,c, d,e,f再用半径为某个值如R圆弧分别把c, e和d, f连接起来,最后调用区域填充算法把所得的圆环段c, e, d, f进行填色同样,对于右半部分,依法处理先计算出线条的四个顶点,e, f, g, h再用直线段把相邻角点连接起来,最后调用多边形填充算法把所得的四边形进行填色标出下图中采用扫描线种子填充算法形成的种子点的位置及序号①为初始种子点*为边界点1、在直线的Bresenham算法中,将坐标系分域时直线的坐标值的变化率大于等于坐标值的变化率,则选择坐标轴作为主轴,逼近这条直线的其绘点的变化规律应是:坐标每推算一次都发生步进,而另一坐标轴是否步进,应根据该直线附近两个选择点中哪点距理想直线近来确定。

相关文档
最新文档