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

更新时间:2023-11-24 02:33:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

第一章 概述

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. 在图形设备上如何输出一个点?为输出一条任意斜率的直线,一般受到哪些因素影响? 若图形设备是光栅图形显示器,光栅图形显示器可以看作是一个像素的矩阵,光栅图形显示器上的点是像素点的集合。

在光栅图形显示器上输出一条任意斜率的直线,主要受到以下因素的影响: (1)光栅图形显示器的分辨率; (2)线宽、线型;

(3)直线的扫描转换的算法。

2. 为什么说直线生成算法是二维图形生成技术的基础?

3. 对于Bresenham直线生成算法,如何利用对称性通过判别误差变量同时从直线两端向直线中心画直线?又如何消除可能产生的误差?

4. 在显示屏上产生具有三根针的时针图,并且使它成为一个真正的会走的时针。

5. 修正正文中给出的画圆Bresenham算法,使之能产生椭圆。假设椭圆中心在坐标原点,椭圆的长短轴分别是Ra和Rb。

以第一象限为例,取(0,Rb)为起点,按顺时针方向生成椭圆。 下一象素的取法只有三种可能的选择:

6. 将画圆的Bresenham算法扩大,使之能画一个实心圆。即圆内是一种不同于背景色的灰度。

7. 利用画圆(或画椭圆)命令写一个程序能产生馅饼图。输入此程序的数据是馅饼中每个扇型的百分比。每个部分的名称,馅饼图的名称。这些名称应显示在馅饼图外适当位置上。

8. 试说明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)后的点。 9.任意封闭多边形内影线填充算法及其软件实现

在各种设计图纸中常常用画有影线的区域来表示零件的剖切断面,设计任意封闭多边形区域的填充算法,并编写计算机程序。 提示:

(1)影线的计算

影线为直线,并且斜率k=tgα已知,因此直线方程可表示为:

y=kx+b

b为影线在y轴上的截距。不同位置的影线截距b不同,相邻两条平行影线截距差为⊿b。 设封闭多边形的顶点坐标为(xi,yi) 则最大截距和最小截距分别为:

bmax=max(yi-kxi) bmin=min(yi-kxi)

影线总数为 n=(bmax- bmin)/ ?b

(2)影线与轮廓线求交点

从第一条影线开始,顺次取一条影线, bmax 求出它与轮廓边的交点,方法是判断 该影线的截距是否落在轮廓边所对应 的截距区间内。具体算法步骤如下: 若影线的截距b没有落入当前这条轮廓边 两端点(pi,pi+1)所对应的截距(bi, bi+1) 范围之内,则说明影线与该轮廓边不相 交,则顺次取下一条边。否则,转下一 步求交运算。 交点坐标为

xy?yixi?1?b(xi?1?xi)??x?ii?1yi?1?yi?k(xi?1?xi) ??y?kx?b?bmin (3) 交点排序并绘制影线

将原始交点按x坐标递增顺序排序,然后按奇偶规则连线,绘出分段影线。 (4) 奇异点处理

当角点处的两条轮廓边位于影线的两侧时,应该算一个交点。

当角点处的两条轮廓边位于影线的同侧时,最好不计交点,或者算两个交点。

c a d b

(5) 面向程序实现的算法描述 影线填充算法的步骤如下:

? 根据填充区域的数据和绘制影线的角度和间距,计算绘制影线的范围和影线的数量; ? 计算影线与轮廓边的相交位置;

? 对已经求出的位于同一影线的交点进行排序,以确定影线的分段情况,用于连线绘图。

10. 仿照Windows的附件程序“画图”, 用C/C++语言(可以借助OpenGL)编制一个具有交互式绘制和编辑多种图形元素功能的程序“Mini-Painter”,实现以下主要功能: (1) 能够在图形绘制区绘制点、直线、圆(椭圆)、圆弧、多边形、Beizer曲线、B样条曲线、

封闭区域填充、文字、图形裁剪等图形元素。

(2) 具有友好的交互式输入(菜单、对话框等图形界面)和编辑(如各种图形变换、裁剪操作)

功能,要求支持鼠标绘图和打印功能。 (3) 提供调色板功能(支持查色表)。

(4) 能够对线型、线宽、颜色、字体、曲线参数和填充图案等进行设置。 (5) 能够以位图格式保存图形文件。

第三章 二维图形变换和显示

1. 在齐次坐标系中,写出下列变换矩阵: (a) 整个图象放大2倍;



(b) y向放大4倍和x向放大3倍;



(c) 图象上移10个单位和右移5个单位;



(d) 保持x=5和y=10 图形点固定,图象y向放大2倍和x向放大3倍; (1) 将坐标系平移到点(5,10)

T1 =

(2) 将图象y向放大2倍和x向放大3倍

S =

(3) 平移坐标系至(-5,-10)点

T2 =

T = T2 ·S·T1 =

(e) 图象绕坐标原点顺时针方向转π/2;

=

R =

在凸多边形外

(c) p1 =(1,12),p2 =(8,12); 在凸多边形外

(d) p1 =(13,1),p2 =(6,5)。 (8.275,3.7) 和 (6,5)

11.对旋转的直立矩形窗可以用Cyrus-Beck算法进行剪取,也可对图形先进行变换,使剪取窗成直立矩形再采用Sutherland-Cohen算法进行剪取,比较这两种方法,哪一种计算量少。在你的图形系统上实现Cyrus-Beck算法,并对一组线段进行剪取验证你前面的结论。

12 用矩形窗剪取具有N个顶点的凸多边形,剪取后的多边形最多有多少顶点?最少有多少顶点?若对凹多边形剪取,并只产生一个剪取后多边形,那么最多有多少顶点? (1) N + 4个顶点 (2) 最少3个顶点 (3) ???

13 试说明为什么Sutherland-Hodgmen算法只能用于凸的剪取区域?如何去除该算法产生的多余的边?

14 为何任意形状多边形之间进行剪取的Weiler-Atherton算法规定多边形内外边界顶点要采用不同的次序排列,主多边形和剪取多边形的外边界或内边界采取相同的次序排列? 15 写出在任意形状多边形之间进行剪取的Weiler-Atherton算法的伪码表示,在你的图形系统中实现Weiler-Atherton算法。并对各种形状和相互关系的剪取多边形和主多边形进行剪取操作以检查程序的完整性和正确性。

16 写出实现凸多边形剪取体对多边形进行剪取的一种算法的详细步骤。

17 写一个程序实现任意多边形之间剪取的Weiler-Atherton算法,对主多边形外边顶点是(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)进行剪取。求出进入与离开的交点,写出剪取后多边形顶点表。

第四章 三维几何变换

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角

=

(v) 将OP顺时针绕X轴旋转a角

=

sinα=

cosα =

cosβ = M =

sinβ = A

S T2 T1

2 (a) 写出通过点(0,0,0)和(1,2,3)的直线参量方程;



(b) 写出通过点(1,2,3),(-1,2,3)和(1,2,-3)的平面方程; y - 2 = 0;

(c) 写出通过点(1,2,3)而且垂直于矢量(4,2,3)的平面方程; 4x + 2y +3z -17 = 0;

(d) 写出由(a)描述的直线和(b)描述的平面的交点。

3 对于下列变换写出它们的齐次坐标变换矩阵

(a) 将x和y放大为原来的三倍,且图形点(0.5,0.2,-0.2)保持不动;

T1 =

S = T1 =

T = T2 S T1 =

(b) 绕过点(0,0,1)和点(-1,-1,-1)的直线旋转π/4; (i) 平移点(0,0,1)到原点

T1 =

(ii) 将直线绕X轴逆时针旋转α角度

T2 =cosα = 2

/5, sinα =

/5

(iii) 将直线绕Y轴顺时针旋转β角度

T3 = cosβ =

/6, sinβ =

/6

(iv) 将直线绕Z轴逆时针旋转p/4

T4 =

(v) 将直线绕Y轴逆时针旋转β角度

T5 =

(vi) 将直线绕X轴顺时针旋转α角度

T6 = (vii)

T7 =

M = T7T6T5T4T3T2T1

(c) 产生对原点对称的图形;



(d) 产生对z=3平面对称的图形。



4 在右手坐标系中从原点到P(x,y,z)的直线,用下面三种次序都可以将此直线旋转到正的z轴上。求出变换矩阵。这三个组合变换阵是否相同?

(a) 绕x轴旋转到x-z平面上,再绕y轴旋转到z轴上; (i) 绕x轴旋转到x-z平面

T1 =

(ii) 再绕y轴旋转到z轴

T2 =

M = T2 T1 =

(b) 绕y轴旋转到y-z平面上,再绕x轴旋转到z轴上; (i) 绕y轴旋转到y-z平面上

T1 =

(ii) 再绕x轴旋转到z轴上

T2 =

(c) 绕z轴旋转到x-z平面上,再绕y轴旋转到z轴上。 (i) 绕z轴旋转到x-z平面上

T1 =

(ii) 再绕y轴旋转到z轴上

T2 =

cosα =a /

cosβ =

, sinβ = c; sinα = b /

5 设M是三维坐标变换,若已知空间四点的变换关系A·M=A',B·M=B',C·M=C'和D·M=D',如何求出该变换M?若M-1是M的逆变换阵,而N是三种基本几何变换阵的一种,是否能不用对M·N直接求逆阵而求得[M·N]-1 联立,求解方程组。

第五章 三维图形显示

1 证明在经过三维基本几何变换和透视投影变换后直线仍是直线。

2 若要求沿z轴长度为1的线段在x-y平面上产生长度为L, 并且与x轴夹角为α的图形,则斜平行投影的方向是什么? 

3 对应拍照中常用的操作,如左右摇动镜头,上下摇动镜头,变焦(改变镜头的焦距)和改变拍照距离等,如何设置图形系统中的视见参数以达到相同效果?

4 如为进行隐线和隐面消除操作,我们引入三维屏坐标系。空间点在该坐标系中的xs和ys坐标值分别等于它在观察坐标系中投影平面上的x和y值,并保留z坐标的相对关系。为使平面经过转换后仍为平面,即Axe+Bye+Cze+D = 0→A'xs+B'ys+C'zs+D=0,求出对透视投影进行zs变换的函数形式

5 写出对给定视见参数计算从用户坐标系变换到规范化观察坐标系的组合变换矩阵的程序。若不进行剪取操作还可再组合投影变换矩阵,从而使你的图形系统具有三维图形功能。 (a) 画出一个立方体的一点,二点和三点透视图;

(b) 利用前面练习题中的类似方法使图形绕任意直线作连续旋转,例如对一个顶点在(0,0,0)相对的另一顶点在(1,1,1)的正立方体使它对连接这两个顶点的直线作连续旋转,并产生平行投影图;

(c) 输入必要的顶点坐标显示一个三维房子的线框图,检验系统的三维功能。输入不同的视见参数,观察产生的透视图;

(d) 对函数y=f(x,z),例如y=sin(x)·sin(z),计算离散x和z值上的函数值,并连接这些采样点构成网状图,试从不同角度产生这个函数的投影图。

6 在三维空间中给出一条直线从p1(6,10,3)到p2(-3,-5,2),并给出由下述平面定义的观察四棱锥:(在投影中心(0,0,0)) z=x, z=-x, z=y和z=-y 投影平面在z=1处。

(a) 在用户空间先剪取后再投影到投影平面上,产生直线图形的端点坐标是什么? (b) 先对直线进行投影然后用窗xmin=-1, xmax=1, ymin=-1,和ymax=1进行剪取,直线图形的端点坐标是什么?

(c) 若线段的一个端点位于投影中心后面,即z < 0,用上述两种方法产生的图形有什么不同?

7 扩大二维的Sutherland-Cohen裁剪算法至三维图形。在三维图形软件中实现裁剪功能,输入一个三维图形和不同的视见参数,观察显示图形的变换和裁剪功能。

8 设投影中心的位置是(0,0,0),在z=10平面的剪取窗为中心在(0,0,10)边长为6的正六边形,求视见体各面的向内法矢量。 

第六章 三维物体的表示与造型

1. 当用四个共享一个公共角点的孔斯曲面片来拼成曲面时,如果每对曲面都有一公共边是c1连续的,问这四个孔斯曲面片的信息矩阵之间存在何种约束? 2. 构作一条三次贝齐尔曲线,让它来逼进椭圆在第一象限中的部分。 设定椭圆的长短轴分别为a,b,a>b>0; 已知 P0(0,b), P1(a,b),P2(a,0)

对其进行升阶,根据升阶公式计算可得: Q0(0,b),Q1(2a/3,b),Q2(a,2b/3),Q3(a,0)

令Qi, i=0,1,2,3为控制顶点,生成三次Bezier曲线。

Q(t) =

0≤t≤1

=

3. 说明当四个相邻顶点在什么条件下时可以使所生成的三次B样条曲线段恰为直线段。 说明当用Vi 、Vi+1 、Vi+2 、Vi+3 和Vi+4这五个点为控制点,并令Vi+2为三重顶点,(重复出现三次),这时所生成的四段三次B样条曲线中,必以Vi+2为尖点的原因。

4. 请运用三重顶点的方法,使得以V0={0,0},V1={3,9},V2={6,3},V3={9,6}这四点为控制点的三次B样条曲线能通过V0和V3。

5. 确定通过Q0={-1,0}, Q1={0,1},Q2={1,0},这三个型值点的平面上三次B样条曲线。 6. 写用三次B样条曲线来逼近单位圆周在第一象限中的部分(注意,在充分利用B样条曲线的性质后,可以对这个问题的控制点加上正确的限制,从而使得它们比较容易确定) 7 提出一个将象素阵列转换成四叉树的方案。并考虑将这个方案具体实现,作为比较或者参考,可以在实现之前先阅读参考文献:[C. Shaffer and H. Samet:\Construction Algorithm\Vol.37(1987)pp402-419]。

8 编写一个C语言程序,要求:在屏幕上交互地输入n 个控制点(n>k, k=4),用累加弦长的方法计算出k阶非均匀B样条曲线的节点矢量,用DeBoor算法生成/显示该B样条曲线。 9 写出将非均匀B样条曲线转化为一系列首尾相连的Bezier曲线的C语言程序。

10 已知n+1个型值点(即:曲线上的点)P0, P1, …, Pn,以及曲线两端点处的导数P0′和Pn′,试编写一个C语言程序,计算出通过这些型值点的4阶均匀B样条曲线的全部控制点。这条曲线就称为4阶均匀B样条插值曲线。

11. B样条曲线曲面生成与显示算法的软件实现 提示:

1.生成、显示平面的B样条曲线:

(1)用鼠标器或光标输入控制顶点,在屏幕上用图形符号标记显示。点数不预先给定,至退出输入为止。设已输入n+1个顶点di(i=0,1,2,?,n;0

(3)可选择4种曲线类型。当n不等于k的整数倍而错选分段Beizer类型时,能自动退出途择,并给出正确提示。

(4)确定节点矢量,均匀、准均匀与分段Beizer类型的节点矢量按设定,由程序自动确定定。非均匀类型可选里森费尔德(Riesenfeld)方法与哈特利一贾德(Hartly-Judd)方法确定。均取规范曲线定义域u∈[0,1],用在参数u轴上的分布显示出节点矢量中相异节点与重复度。要求节点矢量采用相异节点数组与重复复度数组两个数组存储。不再开设单一的节点矢量数组。

(5)选取合适的参数步长,用德布尔算法计算曲线上对立定义域内一系列参数值的一系列点,依次用小直线段连接,显示出所定义的一条光滑的B样条曲线。

(6)修改:可以对任一顶点的位置、曲线次数、曲线类型进行修改,重新计算,用不同线色显示修改后的控制多边形、节点矢量及所定义的B样条曲线。能拖动顶点对曲线实现动态修改。

2. 生成、显示B样条曲面:

(1)用与曲线的同样方式或用文件输入曲面的控制网格顶点dij(i=0,1,2,?,m; j=0,1,2,?,n;0

(2)选择两个参数u,v的次数k与l(0

(3)沿每个参数方向,可选四种类型。当某参数方向顶点数与次数不符合一定关系而错选分段Beizer类型时,能自动退出选择,并给出正确提示。

(4)确定两个参数方向的节点矢量U与V,均匀、准均匀与分段Beizer类型按设定,由程序自动确定。非均匀类型可选里森费尔德方法与哈特利一贾德方法进行,然后取其算术平均值确定。曲面定义域地为规范的单位正方形u∈[0,1] v∈[0,1]。在两参数轴上分别显示两节点矢量中相异节点与重复度。

(5)选取两个参数的合适步长,将德布尔算法推广到曲面,计算并显示曲面上每个参数方向对应于定义域内节点线、半节点线的光滑的等参数线。 (6)控制网格可消去也可恢复显示。

(7)修改:可以对任一网格顶点的位置、曲面两个参数的次数、曲面沿每个参数方向的类型进行修改,重新计算,用不同线色显示修改后的控制网格、节点矢量及所定义的B样条曲面。能对第四视图进行旋转变换。

(8)将曲面定义数据、控制顶点与节点矢量存人数据文件。需要时可读出重新显示。因此,不仅顶点可由文件输入,如果存在老的文件,在由文件输入控制顶点同时,也可从文件读人节点矢量。在以后的次数与节点矢量的选择中均应包括选择老的次数与老的节点矢量(如存在的话)这样的选择项。从节点矢量的显示中可以知道老的节点矢量的情况,老的次数隐含在老的节点矢量中。倘若u向顶点下标为i=0,1,…,m, u 向节点矢量中相异节点数为 num,节点重复度为ri(i=l,2,?,num),则u参数的次数k为 k?(?r)-m-2

ii?1num类似地,可决定v参数的次数l。

第七章 消隐显示

1. 如何将扫描转换的方法用于产生用斜影线填充的多边形图形?

2. 编写程序实现深度缓冲扫描线方法,要求程序能输出与每条扫描线相应的当前激活的多边形表(APL),当前激活的边表(AEL),并能逐条输出结果。 3. 编写程序实现基本的Warnock算法。

第八章 真实感图形算法

1. 假定视点及单一点光源均位于z轴正无穷远处。分别采用Gouraund和Phong的明暗处理方法,以及Phong明暗处理快速方法,显示正20面体。

2. 假设在完成习题1所要求的显示前,视点与点光源已分离,前者位于(1,1,1,0),后者位于(-1,1,1,0)。另外,该正20面体已位于z=0平面上。试按习题1的要求并且加上阴影显示该场景。

3. 如图所示,场景中的显示对象为三个与x-z平面垂直的不透明的平面构成,交线已经在图上画出。这三个平面的方程分别为: 平面1是:x+z-12.5=0 (4≤x≤6) 平面2是:x-z-2=0 (4≤x≤6) 平面3是:x-3z+9=0 (1≤x≤3)



另外,每一平面的光照特性为

平面1:ka1=0.15,kd1=0.15,ks1=0.8,kt1=0.5,kμ1=1.1 平面2: ka1=0.15,kd1=0.15,ks1=0.8,kt1=0.5,kμ1=(1.1)-1 平面3: ka1=0.15,kd1=0.15,ks1=0.8,kt1=0,kμ1=(1.1)-1

4. 以你的教室为场景,并在面对讲台的墙中间再添加一面镜子,其大小为墙的1/9。用光线跟踪算法绘制该场景的真实感图形。

《计算机图形学》模拟试题之一

1 推导以直线ax+by+c=0为对称轴的二维对称变换矩阵。

2 已知投影面为xoy坐标平面,投影中心在z轴的正向、z=d的位置上,求透视投影变换矩阵。

3 写出Bezier曲面离散生成/显示的算法。

4 试比较画家算法、深度缓存和扫描线算法的优、缺点。

5 Whitted模型中如何定义及计算反射、折射方向的?

6 Hall模型模拟哪些透射现象?试导出它的计算公式。

7 分别写出用冯氏(Phong)明暗处理方法和高若德(Gouraud)明暗处理方法显示一个单位立方体和圆柱体的真实感图形的算法,并对这两种算法进行比较。

《计算机图形学》模拟试题之二

1 给定方向(α,β,γ),试推导沿这方向放大S倍的变换矩阵。

2 写出直线反走样的三个算法。

3 给出把三次有理B样条曲线转化为三次有理Bezier曲线的算法。

4 深度缓存算法和光线跟踪算法各有什麽特点?如何提高光线跟踪算法的速度?

5 反射映射一般用于什麽场合?写出反射映射的三种算法,并分析它们的特点。

6 有一个长×宽×高=1400×1000×3000的房间,其中的两面墙的正中间各有一面镜子,镜子的大小分别为所在墙的1/9。墙和天花板的颜色均为灰白色,地面上的纹理为蓝黑相间的100×100正方形方格。写出该场景的光线跟踪算法和C语言程序(程序中要有少量必要的注释或功能性说明)。

本文来源:https://www.bwwdw.com/article/8f9t.html

Top