《计算机图形学基础》第2课后习题答案 电子工业出社.docx
计算机图形学基础第2课后习题答案 电子工业出社思路岛教育网整理提供 第一章 绪论 概念:计算机图形学、图形、图像、点阵法、参数法、 图形的几何要素、非几何要素、数字图像处理; 计算机图形学和计算机视觉的概念及三者之间的关系; 计算机图形系统的功能、计算机图形系统的总体结构。 第二章 图形设备 图形输入设备:有哪些。 图形显示设备:CRT的结构、原理和工作方式。 彩色CRT:结构、原理。 随机扫描和光栅扫描的图形显示器的结构和工作原理。 图形显示子系统:分辨率、像素与帧缓存、颜色查找表等基本概念,分辨率的计算 第三章 交互式技术 什么是输入模式的问题,有哪几种输入模式。 第四章 图形的表示与数据结构 自学,建议至少阅读一遍 第五章 基本图形生成算法 概念:点阵字符和矢量字符; 直线和圆的扫描转换算法; 多边形的扫描转换:有效边表算法; 区域填充:48连通的边界泛填充算法; 思路岛决定出路 思路岛教育网整理提供 内外测试:奇偶规则,非零环绕数规则; 反走样:反走样和走样的概念,过取样和区域取样。 5.1.2 中点 Bresenham 算法 斜率 K 误差项 d 理想点 Q 取下一个点 <0 <1 >=0 <0 >1 >=0 <0 <-1 >=0 <0 >-1 >=0 在中点上 取上点 d-2y 在中点右 取右点 在中点下 取下点 d-2x d+2x-2y 在中点左 取左点 在中点左 取左点 d-2x d-2x+2y 在中点下 取下点 在中点右 取右点 d-2y d-2x+2y 在中点上 取上点 d 更新 d+2x-2y 5.1.2 改进 Bresenham 算法 斜率 K 改进误差项 e 理想点 Q 取下一个点 e 更新 <0 <1 >=0 <0 >1 >=0 <0 <-1 >=0 <0 >-1 >=0 习题解答 思路岛决定出路 在中点上 取上点 在中点下 取下点 在中点右 取右点 在中点左 取左点 在中点左 取左点 在中点右 取右点 在中点下 取下点 在中点上 取上点 e-2x e+2y e-2y e+2x e-2y e+2x e-2x e+2y 思路岛教育网整理提供 习题5 5.3 试用中点Bresenham算法画直线段的原理推导斜率为负且大于1的直线段绘制过程 。 解: k<=-1 |y|/|x|>=1 y为最大位移方向 故有 构造判别式: 推导d各种情况的方法(设理想直线与y=yi+1的交点为Q): 所以有: yQ-kxQ-b=0 且 yM=yQ d=f(xM-kxM-b-(yQ-kxQ-b)=k(xQ-xM) 所以,当k<0, d>0时,M点在Q点右侧,取左点 Pl(xi-1,yi+1)。 d<0时,M点在Q点左侧,取右点 Pr(xi,yi+1)。 d=0时,M点与Q点重合,约定取右点 Pr(xi,yi+1) 。 所以有 递推公式的推导: d2=f(xi-1.5,yi+2) 当d>0时, d2=yi+2-k(xi-1.5)-b 增量为1+k =d1+1+k 思路岛决定出路 思路岛教育网整理提供 当d<0时, d2=yi+2-k(xi-0.5)-b 增量为1 =d1+1 当d=0时, 5.7 利用中点 Bresenham 画圆算法的原理, 推导第一象限y0到yx圆弧段的扫描转换算法 。 y坐标 圆心角 误差项 d 理想点 Q 取下一个点 d 更新 <0 >=0 <0 >=0 在中点右 取右点 d+2y+3 y=0 0°<=<=45° y=x y=x 45°<=<=90° y=1 在中点左 取左点 d-2(y-x)+5 在中点上 取上点 d+2x+3 在中点下 取下点 d-2(x-y)+5 解:在x=y到y=0的圆弧中,点比在圆弧上,算法从该点开始。 最大位移方向为y,由点开始,y渐增,x渐减,每次y方向加1,x方向减1或减0。 思路岛决定出路 思路岛教育网整理提供 设P点坐标,下一个候选点为右点Pr和左点Pl, 取Pl和Pr的中点M,设理想圆与y=yi+1的交点Q, 构造判别式: d=f(xM,yM)=(x-0.5)+(yi+1)+R 当d<0时,M在Q点左方,取右点Pr 当d>0时,M在Q点右方,取左点Pl 当d=0时,M与Q点重合,约定取左点Pl 222所以有: 推导判别式: d>=0时,取左点Pl,下一点为和 d<0时,取右点Pr,下一点为和 d0=f(R-0.,1)=R-R+0.25+1-R 5.11 如图559所示多边形,若采用扫描转换算法进行填充, 试写出该多边形的边表ET和当扫描线Y4时的有效边表AET。 思路岛决定出路 22=1.25-R思路岛教育网整理提供 解: 1)边表ET表 x|ymin ymax 1/k next 2)y4时的有效边表AET x ymax 1/k next 注意:水平线不用计算。 5.22 构造两个例子,一个是4连通图,其边界是8连通的, 另一个是8连通图,其边界是4连通的。 解: 4-连通区域 8连通区域 思路岛决定出路 思路岛教育网整理提供 第六章 二维变换及二维观察 概念:齐次坐标,窗口,视区,二维观察流程, 字符裁减的三种策略,外部裁减 计算:二维几何变换 直线裁减:区域编码法和梁友栋算法 多边形裁减:逐边裁减法和双边裁减法 6.1.3 二维变换矩阵(P147) 3阶二维变换矩阵 a b p c d q l m s 6.2.3 旋转变换(P149) 子矩阵功能 abcd 比例旋转 pq 投影变换 lm 平移变换 s 整体比例 思路岛决定出路 思路岛教育网整理提供 逆时针变换矩阵 cos sin 0 -sin cos 0 0 0 1 6.2.5 相对任一参考点的二维几何变换(P155) 例如:相对(xf,yf)点的旋转变换 平移到 坐标原点 1 0 0 0 1 0 -xf -yf 1 习题6 顺时针变换矩阵 cos -sin 0 sin cos 0 0 0 1 旋转角度 cos sin 0 -sin cos 0 0 0 1 反平移回 原来位置 1 0 0 0 1 0 xf yf 1 6.7 求四边形 ABCD 绕 P(5,4)旋转45度的变换矩阵和端点坐标, 画出变换后的图形。(P147 P148 P155) 解:变换的过程包括: 1)平移:将点P(5,4)平移至原点(0,0), 2)旋转:图形绕原点旋转45度, 3)反平移:将P点移回原处(5,4), 4)变换矩阵:平移旋转反平移 思路岛决定出路 思路岛教育网整理提供 5)变换过程:四边形 ABCD 的规范化齐次坐标(x,y,1) * 3阶二维变换矩阵 由旋转后四边形 ABCD 的规范化齐次坐标(x',y',1)可写出顶点坐标: A'(6.4,1.2) B'(7.1,4.7) C'(4.3,8.5) D'(2.2,1.2) 6.15 用梁友栋算法裁减线段AB,B点的坐标改为(-2,-1) 解:以A为起点,B(-2,-1)为终点 所以有x1=3,y1=3,x2=-2,y2=-1,wxl=0,wxr=2,wyb=0,wyt=2 构造直线参数方程: x=x1+u(x2-x1) 0 y A(3,3) x1 x x2 3 C(7 /4,2) 2 思路岛决定出路 思路岛教育网整理提供 D( 0,3/ 5) 1 -2 -1 B(-2,-1) 0 -1 1 2 3 x x=x1+u(x2-x1) (0<=u<=1) y=y1+u(y2-y1) 把 x1=3,y1=3,x2=-2,y2=-1 代入得 x=3-5u y=3-4u 计算各个p和q值有: p1=x1-x2=5 q1=x1-wxl=3 p2=x2-x1=-5 q2=wxr-x1=-1 p3=y1-y2=4 q3=y1-wyb=3 p4=y2-y1=-4 q4=wyt-y1=-1 根据,uk=qk/pk 算出 pk<0时:u2=1/5 u4=1/4 pk>0时:u1=3/5 u3=3/4 umax=MAX(0,u2,u4)=MAX(0,1/5,1/4)=1/4 umin=MIN(u1,u3,1)=MIN(3/5,3/4,1)=3/5 由于 umax<umin ,故此直线AB有一部分在裁减窗口内, pk<0时,将 umax=1/4 代入直线参数方程 x=x1+u(x2-x1) x=3+1/4*(-5)=3-5/4=7/4 y=y1+u(y2-y1) 思路岛决定出路 思路岛教育网整理提供 y=3+1/4*(-4)=2 求出直线在窗口内部分的端点C(7/4,2) pk>0时,将 umin=3/5 代入直线参数方程 x=x1+u(x2-x1) x=3+3/5*(-5)=0 y=y1+u(y2-y1) y=3+3/5*(-4)=3/5 求出直线在窗口内部分的端点D(0,3/5)。 所以,直线在窗口内部分的端点为C(7/4,2),D(0,3/5)。 第七章 三维变换及三维观察 概念:几何变换、投影变换、透视投影、平行投影、灭点 平面几何投影的分类以及分类原则 计算:三维几何变换、三视图 7.2 三维几何变换 4阶三维变换矩阵 a b c p d e f q g h i r l m n s 整体比例变换 s>1 时,整体缩小,如 2 表示2:1缩小。 s<1 时,整体放大,如 1/2 表示1:2放大。 子矩阵功能 abcdefghi 比例旋转 pqr 透视投影 lmn 平移变换 s 整体比例 思路岛决定出路 思路岛教育网整理提供 7.3.1 正投影 1.主视图 V 4阶三维变换矩阵 y 轴方向投影 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 2.俯视图 H 4阶三维变换矩阵 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 -z0 1 z 轴方向投影 1 0 0 0 0 1 0 0 1 0 0 0 0 cos(-90°) sin(-90°) 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 -z0 1 绕 x 轴旋转-90度 z 轴方向平移-1 0 0 0 0 -sin(-90°) cos(-90°)0 0 0 0 0 1 0 0 0 1 思路岛决定出路 思路岛教育网整理提供 3.侧视图 W 4阶三维变换矩阵 0 0 0 0 -1 0 0 0 0 0 1 0 -x0 0 0 1 x 轴方向投影 0 0 0 0 0 1 0 0 0 0 1 0 绕 z 轴旋转90度 0 cos90° sin90° 0 0 -sin90° cos90° 0 0 0 1 0 x 轴方向平移-1 1 0 0 0 0 1 0 0 0 0 1 0 -x0 0 0 1 0 0 0 1 0 0 0 1 习题7 7.5 求空间四面体关于点 P(2,-2,2)整体放大2倍的变换矩阵, 画出变换后的图形。 解:关于点 P(2,-2,2)整体放大两倍, 变换矩阵:点 P(2,-2,2)平移至原点-比例变换放大两倍-反平移回点 P(2,-2,2)。 变换过程:空间四面体 ABCD 的规范化齐次坐标(x,y,z,1) * 4阶三维比例变换矩阵 思路岛决定出路 思路岛教育网整理提供 空间四面体 ABCD 的齐次坐标(x',y',z',1/2)转换成规范化齐次坐标 顶点 x y z 1 A 2,2,-2,1 B C 2,6,-2,1 -2,6,-2,1 D 2,6, 2,1 由比例变换后规范化齐次坐标(x',y',z',1)可写出顶点坐标: A'(2,2,-2) B'(2,6,-2) C'(-2,6,-2) D'(2,6,2) 7.7 求空间四面体 ABCD 三视图的变换矩阵,并作出三视图。(P180) 解: 1)主视图V(P191) 空间四面体 ABCD 的规范化齐次坐标矩阵 * Y轴方向投影矩阵 2)俯视图H(P191) Z轴方向投影矩阵 * 绕X轴旋转-90度矩阵 * Z轴方向平移-1矩阵 思路岛决定出路 思路岛教育网整理提供 空间四面体 ABCD 的规范化齐次坐标矩阵 * 投影变换矩阵 3)侧视图W(P192) X轴方向投影矩阵 * 绕Z轴旋转90度矩阵 * X轴方向平移-1矩阵 空间四面体 ABCD 的规范化齐次坐标矩阵 * 投影变换矩阵 4)画图注意:三个图画在同一坐标系中,点与点的连接关系以及直线的可见性问题。 试题分析 计算机图形学考试试题 一、填空 2.帧缓存:(1024*768*8/8)/1024=768kB 颜色位面数:24 思路岛决定出路 思路岛教育网整理提供 总颜色数:(28)3=224=(24)*(220)=16MB 二、名词解释 三、简答与计算 3.边标志算法 解:打标记:x1,x2,x3,x4 填充:x1与x2,x3与x4扫描线区间的像素点。 5.正则集合运算 解:通常意义下的集合求交运算:C=AB 有一条弧立边 正则集合运算:C=A*B 无弧立边 四、计算作图题 1.中点 Bresenham 算法 斜率 K 误差项 d 理想点 Q 取下一个点 <0 <1 >=0 在中点下 取下点 d-2y 在中点上 取上点 d 更新 d+2x-2y 解:直线斜率:k=(6-1)/(9-1)=5/8 0<k<1 计算初值:x=9-1=8 y=6-1=5 d=x-2y=8-2*5=-2 取上点:2x-2y=2*8-2*5=6 d+2x-2y=-2+6=4 取下点:2y=2*5=10 d-2y=4-10=-6 x y 误差项 d 取下一个点 1 1 2 2 3 2 4 3 5 3 <0 >0 <0 =0 <0 取上点 取下点 取上点 取下点 取上点 d 更新 d+2x-2y=4 d-2y=-6 d+2x-2y=0 d-2y=-10 d+2x-2y=-4 思路岛决定出路 思路岛教育网整理提供 6 4 7 5 8 5 9 6 <0 >0 <0 取上点 取下点 取上点 d+2x-2y=2 d-2y=-8 d+2x-2y=-2 2.改进的有效边表算法 解:1)边表 ET:交点x x|ymin ymax 1/k next x坐标 1 CB边 CA边 2 6 5 -4/3 6 9 -2/7 / 3 4 BA边 5 2 9 -1/2 / 6 7 8 9 2)y=4的有效边表 AET:交点x x ymax 1/k next y=4 | 与CB边相交 3.3 5 -4/3 | 与CA边相交 思路岛决定出路 思路岛教育网整理提供 5.4 9 -1/2 / 3)y=4时的填充交点对:(3.3,4) (5.4,4) 3.求三角形绕B点(2,5)旋转 的变换矩阵。 求三角形绕B点顺时针旋转90度后各端点坐标。 解:1)三角形绕B点(2,5)旋转 的变换矩阵 T=Tt * TR * Tt 平移到 坐标原点 1 0 0 0 1 0 -2 -5 1 反平移回 原来位置 1 0 0 0 1 0 2 5 1 -1旋转角度 cos sin 0 -sin cos 0 0 0 1 2)三角形绕B点顺时针旋转90度的变换矩阵,=-90° T=Tt * TR * Tt 平移到 坐标原点 1 0 0 0 1 0 -2 -5 1 反平移回 原来位置 1 0 0 0 1 0 2 5 1 -1旋转角度 cos90° -sin90° 0 sin90° cos90° 0 0 0 1 变换过程:三角形 ABC 的规范化齐次坐标(x,y,1) * 3阶二维变换矩阵 P=P * T 得到三角形 ABC 变换后的规范化齐次坐标(x',y',1) 顶点 x y 1 A 4.6 2 1 思路岛决定出路 思路岛教育网整理提供 B C 2 5 1 0 -1 1 可以写出顶点坐标:A'(4.6,2) B'(2,5) C'(0,-1) 4.用编码裁剪算法裁剪线段P1(0,2)P2(3,3)。要求写出: 1)窗口边界划分的9个区间的编码原则; 2)线段端点的编码; 3)裁剪的主要步骤; 4)裁剪的输出结果。 解:线段P1(0,2)P2(3,3)的编码裁剪 y 1001 4 3 0001 P1(0,2) 2 S 1 0101 0 1 2 1)窗口边界划分的9个区间的编码原则; 0100 3 4 0110 x 0000 0010 1000 P2(3,3) 1010 编码 D3 D2 D1 D0 窗口外 上边top 下边bottom 右边right 左边left y>wyt 条件 wyt=4 取值 D3=1 wyb=1 D2=1 wxr=4 D1=1 wxl=1 D0=1 y<wyb x>wxr x<wxl 思路岛决定出路 思路岛教育网整理提供 2)线段端点的编码; P1 code1=0001, P2 code2=0000 3)裁剪的主要步骤; 输入 P1(0,2), P2(3,3), wyt=4, wyb=1, wxr=4, wxl=1; P1 code1=0001, P2 code2=0000; code1|code20 不能简取;code1&code2=0 不能简弃; 求线段 P1(0,2)P2(3,3)和 窗口左界wxl=1 的交点, 把 wxl=1 代入直线方程求出 y=kx+b=(1/3)*x+2=2.3 交点坐标S(1,2.3)替换端点坐标P1(0,2),使P1坐标为(1,2.3); 去掉P1S线段,输出线段P1P2。 4)裁剪的输出结果:P1(1,2.3)P2(3,3)。 5.用改进 Bresenham 算法画直线段的原理, 推导斜率 K>1 的直线段的扫描转换算法。 斜率 K 改进误差项 e 理想点 Q 取下一个点 e 更新 <0 >1 >=0 解: k>1 y为最大位移方向 故有 yi+1= yi+1 xi+1 (d>0.5 取右点Pr) xi+1= xi (d<=0.5 取左点Pl) 误差项 d 的初值为0 d=d+1/k 当 x 方向走一步 d-1 令 e=d-0.5 思路岛决定出路 在中点右 取右点 在中点左 取左点 e-2y e+2x 思路岛教育网整理提供 yi+1= yi+1 xi+1 (e>0 取右点Pr) xi+1= xi (e<=0 取左点Pl) 改进误差项 e 的初值为 e=d-0.5=0-0.5=-0.5; 避免计算小数和除法,改进误差项 e 用2ey。 算法步骤: 1)输入:Po(xo,yo) P1(x1,y1); 2)计算初值:x,y, e=2ey=2*(-0.5)y=-y, x=xo, y=yo。 3)画点:P(x,y) 4)改进误差项 e 更新: 斜率 K 改进误差项 e 理想点 Q 取下一个点 e 更新 <0 >1 >=0 在中点左 取左点 e+2x 在中点右 取右点 e-2y 思路岛决定出路