1、第一章 绪论 1、 计算机图形学、图形处理与模式识别本质区别是什么?请各举一例说明。 解:计算机图形学是研究根据给定的描述,用计算机生成相应的图形、图像所生成的图形、图像可以显示屏幕上、硬拷贝输出或作为数据集存在计算机中的学科。计算机图形学研究的是从数据描述到图形生成的过程。例如计算机动画。 图形处理是利用计算机对原来存在物体的映像进行分析处理,然后再现图像。例如工业中射线探伤。 模式识别是指计算机对图形信息进行识别和分析描述,是从图形(图像)到描述的表达过程。例如邮件分捡设备扫描信件上手写的邮政编码,并将编 码用图像复原成数字。 2、 举 3 个例子说明计算机图形学的应用。 解: 事务管理中
2、的交互绘图 应用图形学最多的领域之一是绘制事务管理中的各种图形。通过从简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解,并促使决策的制定。 地理信息系统 地理信息系统是建立在地理图形基础上的信息管理系统。利用计算机图形生成技术可以绘制地理的、地质的以及其他自然现象的高精度勘探、测量图形。 计算机动画 用图形学的方法产生动画片,其形象逼真、生动,轻而易举地解决了人工绘图时难以解决的问题,大大提高了工作效率。 3、 计算机生成图 形的方法有哪些? 解:计算机生成图形的方法有两种:矢量法和描点法。 矢量法:在显示屏上先给定一系列坐标点,然后控制电子束在屏幕上按一定的顺序扫描,逐个“点亮”临近两
3、点间的短失线,从而得到一条近似的曲线。尽管显示器产生的只是一些短直线的线段,但当直线段很短时,连成的曲线看起来还是光滑的。 ( 2)描点法 4.什么叫虚拟现实技术和可视化? 解:虚拟现实技术: 利用计算机生成一种模拟环境,通过多种传感器和设备使用户“投入”到该环境中 ,实现用户和该环境直接进行交互的技术。例如模拟飞机驾驶舱。 可视化 技术: 通过对空间数据场构造中间几何因素,或用图形绘制技术在屏幕上产生二维图象。例如分子模型构造。 5.对于分辨绿为 1024*1024 的光栅系统,若每一像素咏 8 位和 12 位二进制来表示存储信息,各需多大光栅存储容量?每一屏幕最多能显示多少颜色?若 R,
4、G, B 灰度都占 8 位,其显示颜色的总数是多少? 解 : 1) 每一像素用 8 位二进制来表示存储信息,所需容量为 1024*1024*1=220 ( byte) =1MB 彩色素: 28 =256( 项 ) 2) 若每一像素用 12 位二进制表示存储信息,所需容量为: 1024*1024*1.5=1.5*220 (byte)=1.5MB 彩色素 :212 =4096( 项 ) 3) 颜色总数 : 28 *28 *28 =224 (种) 6.对于 19 英寸显示器,若 X 和 Y 两方向的分辨率相 等,即 -1024*1024,那么每个像素点的直径是多少? 解: 21024 4.25*19
5、=0.33( mm)或2102419=0.013(英寸) 第二章 光栅图形学 1. 在图形设备上如何输出一个点?为输出一条任意斜率的直线,一般受到哪些因素影响? 若图形设备是光栅图形显示器,光栅图形显示器可以看作是一个像素的矩阵,光栅图形显示器上的点是像素点的集合。 在光栅图形显示器上输出一条任意斜率的直线,主要受到以下因素的影响: ( 1)光栅图形显示 器的分辨率; ( 2)线宽、线型; ( 3)直线的扫描转换的算法。 2. 为什么说直线生成算法是二维图形生成技术的基础? 3. 对于 Bresenham 直线生成算法,如何利用对称性通过判别误差变量同时从直线两端向直线中心画直线 ?又如何消除
6、可能产生的误差? 4. 在显示屏上产生具有三根针的时针图,并且使它成为一个真正的会走的时针。 5. 修正正文中给出的画圆 Bresenham 算法,使之能产生椭圆。假设椭圆中心在坐标原点,椭圆的长短轴分别是 Ra和 Rb。 以第一象限为例,取( 0, Rb)为起点,按顺 时针方向生成椭圆。 下一象素的取法只有三种可能的选择: 6. 将画圆的 Bresenham 算法扩大,使之能画一个实心圆。即圆内是一种不同于背景色的灰度。 7. 利用画圆(或画椭圆)命令写一个程序能产生馅饼图。输入此程序的数据是馅饼中每个扇型的百分比。每个部分的名称,馅饼图的名称。这些名称应显示在馅饼图外适当位置上。 8. 试
7、说明 Bresenham 直线算法对于下列两种情况仍能用判别变量 p 的符号正确地选择下一点的坐标值的理由。 设当前被选点是 (x,y),而实际直线在 x+1 处的交点不是落在 y 和 y+1 之间,而是: (a) 落在 y 和 y-1 之间,例如从( 0, 0)到( 7, 2)的直线在点( 2, 1)后的点; (b) 落在 y+1 和 y+2 之间。例如从 (0, 0)到( 7, 5)的直线在点( 2, 1)后的点。 第三章 图形变换 与裁剪 (1)_ 二维图形变换 1. 在齐次坐标系中,写出下列变换矩阵: ( a) 整个图象放大 2倍; Answer: ( b) y向放大 4倍和 x 向放
8、大 3倍; Answer: ( c) 图象上移 10 个单位和右移 5 个单位; Answer: ( d) 保持 x=5 和 y=10 图形点固定,图象 y 向放大 2 倍和 x向放大 3 倍; Answer:分三步 (1) 将坐标系平移到点( 5, 10) T1 = (2) 将图象 y向放大 2倍和 x 向放大 3倍 S = (3) 平移坐标系至( -5, -10)点 T2= T = T2 ST1 = = ( e) 图象绕坐标原点顺时针方向转 /2; Answer:R = ( f) 图象绕点 x=2 和 y=5 反时针方向转 /4 。 Answer:分三步 (1) 将坐标系平移到点( 2,
9、5); T1 = (2) 将图象绕原点反时针方向转 /4 ; R = (3) 将坐标系平移到点( -2, -5); T2 = T = T2 RT1 = = 2. 由比例、平移和旋转变换构成的复合变换,仅在某些情况下交换次序不影响总的变换效果,它们是哪几种两个变换的组合。 Answer: ( 1) 两个连续的平移变换; ( 2) 两个连续的比例变换; ( 3) 两个连续的旋转变换; ( 4) 比例系数相等的比例变换和旋转变换。 3. 写出由部分图形产生满足下列条件的另一部分图形的变换矩阵: ( a) 对 y轴对称; ( b) 对 x轴对称; ( c) 对坐标原点对称; ( d) 对直线 y=x
10、成轴对称; ( e) 对直线 y= x 成轴对称 ; ( f) 对图 E3 所示方向进行比例系数为 S1 和 S2 的图形; ( 1) 将图形绕原点逆时针方向旋转 角; R1 = ( 2) 在 x方向上的比例系数为 S1,y 方向的比例系数为 S2; S = ( 3) 将图形绕原点顺时针方向旋转 角。 R2 = M = R2 R1 = = ( a) 对直线 y=mx+b 对称的图形。 (1) 当 m = 0 时; T1 = T2 = T3 = M = T3T2T1 = = (2) 当 m 0,b = 0 时,以第一象限为例; T1 = T2 = T3 = M = T3 T2 T1 = = 因为
11、, tan = m , cos2 = (1 -m2) (1+m 2), sin2 = 2m / (1+m 2) (3) 当 m 0,b 0 时,以第一象限为例。 T1 = T2 = T3 = T4 = T5 = M = T5T4T3T2T1 = 4. 对直线 L: ax+by+c=0,用齐次坐标方式可以写出矩阵乘法形式 pl=0, 即 ( a) 证明空间一点 与直线 L的距离等于 ( b) 求出与直线平行且经过点 (x1,y1)的另一直线方程系数 a、 b和 c和系数 a、 b 和 c的关系式; a = a; b = b; c = -a x1- by1 ( c) 求出与直线垂直并且经过点 (x
12、2,y2)的另一直线方程系数 a、 b和 c和系数 a、 b和 c的关系式 a = -b; b = a; c = -b x2- ay2; 5. 程序中用 Set-Window(xmin , xmax , ymin , ymax)和 Set-Viewport(xmin , xmax, ymin , ymax) 来设定二维视见变换。 ( a) Set-Window( 10, 100, 10, 150)和 Set-Viewport(0, 0.25, 0, 0.25) ,则在齐次坐标系中的视见变换矩阵是什么? ( b) 显示与( a)同样的图形,但显示图形在 x向为 (a)的 1.5倍, y 向为 (
13、a)的 2倍,且视见区右下角位置不变。请写出 Set-Window和 Set-Viewport 中的参数值; ( c) 从 (a)中显示图形中选出右一半图形使它放大显示在 (a)中规定的视见区上,请写出 Set-Window 和Set-Viewport 中的参数值。 6. 若已知某一正方形显示器的坐标范围是以 dxmin , dxmax , dymin 和 dymax规定的矩形区,且 (dymax - dymin ) = 3/4 * (dxmax - dxmin),为保证图形不失真并充分利用显示区,请写出自用户坐标至该显示器坐标的视见变换阵。 7. 若窗口函数在定义为平行于用户坐标轴的 直立矩
14、形后,还允许此窗口再绕左下角旋转 角,写出由旋转后窗口到直立矩形视见区的变换矩阵。 假设窗口左下角坐标为( xw1,yw1),右上角坐标为( xw2,yw2) ( 1) 平移直立矩形视见区的左下角顶点到坐标原点; T1 = ( 2) 将此窗口再绕左下角逆时针旋转 角。 R = M-1 = RT1 M = = 8. 二维图形绕原点的旋转公式是 x x cos - y sin 和 y x sin + y cos 。为快速产生连续旋转图形,考虑到每次旋转 (弧度)很小,因此可用公式 x x - y 和 y x + y 来代替,或用 x x - y sin 和 y x sin + y 来更好地代替。用
15、程序实现精确和近似计算的图形旋转,并比较之。注意,近似计算将引入误差。按每次旋转角的大小,可在总旋转角达 /2, ,3/2 和 等一些特殊位置上用精确计算。 9.下面是依次序给出的多边形顶点坐标,请指出哪 些是凸多边形?你是如何判断的? 对凸多边形求出向内法矢量。 (a) ( 2, 3),( 7, 2),( 10, 6),( 8, 11),( 3, 8); 凸多边形;内法向量依次为( -1,-5) , ( 4,-3) , ( 5,2) , ( -3,5) , ( -5,1) (b) ( 1, 4),( 4, 1),( 8, 3),( 8, 8),( 5, 5); (c) ( 4, 4),( 5
16、, 1),( 7, 4),( 5, 8),( 2, 4); (d) ( 3, 8),( 7, 10),( 8, 6),( 9, 2),( 3, 2)。 (b) (c) (d) 均不是凸 多边形。 10.对上题中的一个凸多边形求出下列线段经剪取后的端点坐标。 (a) p1 =( 3, 4), p2 =( 7, 7); 在凸多边形内 (b) p1 =( 1, 4), p2 =( 3, 14); 在凸多边形外 (c) p1 =( 1, 12), p2 =( 8, 12); 在凸多边形外 (d) p1 =( 13, 1), p2 =( 6, 5)。 (8.275,3.7) 和 (6,5) 11.对旋转
17、的直立矩形窗可以用 Cyrus-Beck 算法进行剪取,也可对图形先进行变换,使剪取窗成直立矩形再采用 Sutherland-Cohen 算法进行剪取,比较这两种方法,哪一种计算量少。在你的图形系统上实现Cyrus-Beck 算法,并对一组线段进行剪取验证你前面的结论。 12 用矩形窗剪取具有 N个顶点的凸多边形,剪取后的多边形最多有多少顶点?最少有多少顶点?若对凹多边形剪取,并只产生一个剪取后多边形,那么最多有多少顶点 ? ( 1) N + 4 个顶点 ( 2) 最少 3个顶点 ( 3) ? 13 试说明为什么 Sutherland-Hodgmen 算法只能用于凸的剪取区域?如何去除该算法产
18、生的多余的边? 14 为 何任意形状多边形之间进行剪取的 Weiler-Atherton 算法规定多边形内外边界顶点要采用不同的次序排列,主多边形和剪取多边形的外边界或内边界采取相同的次序排列? 15 写出在任意形状多边形之间进行剪取的 Weiler-Atherton 算法的伪码表示,在你的图形系统中实现Weiler-Atherton 算法。并对各种形状和相互关系的剪取多边形和主多边形进行剪取操作以检查程序的完整性和正确性。 16 写出实现凸多边形剪取体对多边形进行剪取的一种算法的详细步骤。 17 写一个程序实现任意多边形之间剪取的 Weiler-Atherton 算法,对主多边形外边顶点是(
19、 0,0) ,( 20,0) ,( 20,-20) ,( 0,-20)内部孔边界顶点是( 7,-13) ,( 13,-13) ,( 13,-7) ,( 7,-7) 和窗多边形的外部边界是( -10,-10) ,( -10,10) ,( 10,10) ,( 10,-10)和内部孔是( -5,-5)( 5,2.5) ,( 5,5) ,( 2.5,5)进行剪取。求出进入与离开的交点,写出剪取后多边形顶点表。 第 三 章 图形变换 与裁剪 (2)_三维几何变换 1 在三维空间中,如果要求沿方向 A,B,C产生放大到 S 倍 的图形,推导出变换矩阵。 A、 B 和 C 分别表示直线在 x,y 和 z 轴方向的余弦。 (i) 将 OP逆时针绕 X轴旋转 a角,使得 OP落在 XOZ 面上; T1 = (ii) 将 OP顺时针绕 Y轴旋转 b角 , 使得 OP“与 Z轴重合; T2 = (iii) 在 Z 轴上放大 S = (iv) 将 OP“逆时针绕 Y轴旋转 b角