[中南大学]计算机图形学习题及答案
1 计算机图形学作业答案 第一章 序论 第二章 图形系统 1. 什么是图像的分辨率? 解答:在水平和垂直方向上每单位长度(如英寸)所包含的像素点的数目。 2. 计算在 240 像素/英寸下 640×480 图像的大小。 解答: (640/240)×(480/240)或者(8/3)×2 英寸。 3. 计算有 512×512 像素的 2×2 英寸图像的分辨率。 解答:512/2 或 256 像素/英寸。 第三章 二维图形生成技术 1. 一条直线的两个端点是(0,0)和(6,18) ,计算 x 从 0 变到 6 时 y 所对应的值, 并画出结果。 解答:由于直线的方程没有给出,所以必须找到直线的方程。下面是寻找直线方程(y =mx+b)的过程。首先寻找斜率: m = ⊿y/⊿x = (y2-y1)/(x2-x1) = (18-0)/(6-0) = 3 接着 b 在 y 轴的截距可以代入方程 y=3x+b 求出 0=3(0)+b。因此 b=0,所以直 线方程为 y=3x。 2. 使用斜截式方程画斜率介于 0°和 45°之间的直线的步骤是什么? 解答: (1) 计算 dx:dx=x2-x1。 (2) 计算 dy:dy=y2-y1。 (3) 计算 m:m=dy/dx。 (4) 计算 b: b=y1-m×x1 (5) 设置左下方的端点坐标为(x,y) ,同时将 xend设为 x 的最大值。如果 dx 0,那么 x=x1、y=y1 和 xend=x2。 (6) 测试整条线是否已经画完,如果 x xend就停止。 (7) 在当前的(x,y)坐标画一个点。 (8) 增加 x:x=x+1。 (9) 根据方程 y=mx+b 计算下一个 y 值。 (10) 转到步骤(6) 。 3. 请用伪代码程序描述使用斜截式方程画一条斜率介于 45°和-45°(即|m|1)之 间的直线所需的步骤。 2 解答: 假设线段的两个端点为(x1,y1)和(x2,y2) ,且 y1y2 int x = x1, y = y1; float xf, m = (y2-y1)/(x2-x1), b = y1 - mx1; setPixel( x, y ); /*画一个像素点*/ while( y y2 ) { y++; xf = ( y-b)/m; x = Floor( xf +0.5 ); setPixel( x, y ); } 4. 请用伪代码程序描述使用 DDA 算法扫描转换一条斜率介于-45°和 45°(即|m| ≤1)之间的直线所需的步骤。 解答: 假设线段的两个端点(x1, y1)和(x2,y2) ,且 x1x2 int x = x1, y; float yf = y1, m = ( y2 – y1) / ( x2-x1); while( x = x2 ) { y = Floor( yf + 0.5 ); setPixel( x, y ); x++; yf = yf + m; } 5. 使用 Bresenham 算法画斜率介于 0°和 45°之间的直线所需的步骤。 解答: (1) 计算初始值: dx = x2-x1 Inc2 = 2(dy-dx) dy = y2-y1 d = Inc1 - dx Inc1 = 2dy (2) 设置左下方的端点坐标为(x,y) ,同时将 xend设为 x 的最大值。如果 dx 0, 那么 x=x1、y=y1 和 xend=x2。 (3) 在当前的(x,y)坐标画一个点。 (4) 判断整条线段是否已经画完,如果 x=xend就停止。 (5) 计算下一像素的位置。如果 dy 就停止。 (3) 以中心(h,k)为对称点,对当前的(x,y)坐标画 8 个圆上的点: plot( x + h, y + k ) plot( -x + h, -y + k ) plot( y+ h, x +k ) plot( -y + h, -x + k ) plot( -y + h, x + k ) plot( y + h, -x + k ) plot( -x + h, y + k ) plot( x + h, -y + k ) 其中 plot(a,b)表示以给定的参数为中心画一个小块。 (4) 计算下一个像素的位置。如果 d 0,那么 d=d+4x+6 和 x=x+1。如 果 d≥0,那么 d=d+4(x-y)+10、x=x+1 和 y=y-1。 (5) 转到步骤(2) 。 8. 给定数据点 P0(0,0) ,P1(1,2)P2(2,1)P3(3,-1)P4(4,10)P5(5,5) , 用三次 B 样条插值法插值这些数据点,求出曲线,并找出定义三次 B 样条的节点集 t0,……,t9。 解答: m=3, n=5,选择节点集可以有两种方案: (1) 选择: )( 1 03210 xtttt , )(6 9876n xtttt 其余的节点按以下方式选择: 1,,0, . 1 1 mni m xx tmii mi 故: 2 3 321 t , 3 3 432 t (2) 三次样条的另一种方案是: 1 3210 tttt , 6 9876 tttt 其余节点按以下方式选择: 24 ii xt ,I=0,……,n-4 故: t4=2, t5=3 4 两种方法选择节点集,其根据是数据点沿 x 轴为等间距。 第四章 图形的裁剪及几何变换 1. 写出实现下述映射的规范化变换,将左下角在(1,1) ,右上角在(3,5)的窗口 映射到(a)规范化设备的全屏幕视区; (b)左下角在(0,0) ,右上角在 2 1 , 2 1 的 视区。 解答: (a) 窗 口 参 数 是 5, 1, 3, 1 maxminmaxmin wywywxwx 。 视 区 参 数 是 1, 0, 1, 0 maxminmaxmin vyvyvxvx 。那么 4 1 , 2 1 yx ss 且 100 4 1 4 1 0 2 1 0 2 1 N (b) 窗口参数同(a) 。视区参数是 2 1 , 0, 2 1 , 0 minmaxmaxmin wyvyvxvx 。那 么 8 1 , 4 1 yx ss 且 100 8 1 8 1 0 4 1 0 4 1 N 2. 设 R 是左下角 L(-3,1) ,右上角为 R(2,6)的矩形窗口。请写出图中的线段 端点的区域编码。 【图 5.6 P90】 解答: 点(x,y)的区域编码根据下面的模式设置。 比特 1=sign(y-ymax)=sign(y-6) 比特 3=sign(x-xmax)=sign(x-2) 比特 2=sign(ymin-y)=sign(1-y) 比特 4=sign(xmin-x)=sign(-3-x) 此处: )0( , 0 )0( , 1 )( a a asign 因此: A