[中南大学]计算机图形学习题及答案
1 计算机图形学作业答案 第一章 序论 第二章 图形系统 1. 什么是图像的分辨率 解答在水平和垂直方向上每单位长度(如英寸)所包含的像素点的数目。 2. 计算在 240 像素/英寸下 640480 图像的大小。 解答 (640/240)480/240或者(8/3)2 英寸。 3. 计算有 512512 像素的 22 英寸图像的分辨率。 解答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) 计算 dxdx=x2-x1。 (2) 计算 dydy=y2-y1。 (3) 计算 mm=dy/dx。 (4) 计算 b b=y1-mx1 (5) 设置左下方的端点坐标为(x,y) ,同时将 xend设为 x 的最大值。如果 dx 0,那么 x=x1、y=y1 和 xend=x2。 (6) 测试整条线是否已经画完,如果 x xend就停止。 (7) 在当前的(x,y)坐标画一个点。 (8) 增加 xx=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 其中 plota,b表示以给定的参数为中心画一个小块。 (4) 计算下一个像素的位置。如果 d 0,那么 d=d+4x+6 和 x=x+1。如 果 d≥0,那么 d=d+4(x-y)+10、x=x1 和 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