《计算机图形学》1-4章习题解答

更新时间:2023-09-03 20:19:01 阅读量: 教育文库 文档下载

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

《计算机图形学》1-4章习题解答

习题1

1.计算机图形学的研究内容是什么?

答:几何模型构造,图形生成,图形操作与处理,图形信息的存储、检索与交换,人机交互及用户接口,动画,图形输出设备与输出技术,图形标准与图形软件包的研究等。

2.计算机图形学与图像处理有何联系?有何区别?

答:计算机图形学与图像处理都是用计算机来处理图形和图像,结合紧密且相互渗透,但其属于两个不同的技术领域。计算机图形学是通过算法和程序在显示设备上构造图形,是从数据到图像的处理过程;而图像处理是对景物或图像的分析技术,是从图像到图像的处理过程。

3.简述计算机图形学的发展过程。 答:略。(参考:教材P3)

4.简述你所理解的计算机图形学的应用领域。 答:略。(参考:教材P4~P5)

习题2

1.什么是图像的分辨率?

答:在水平和垂直方向上每单位长度所包含的像素点的数目。

2.在CMY坐标系里找出与RGB坐标系的颜色(0.2,1,0.5)相同的坐标。

答:1-0.2=0.8,1-1=0, 1-0.5=0.5 坐标为(0.8, 0, 0.5)

3.在RGB坐标系里找出与CMY坐标系的颜色(0.15,0.75,0)相同的坐标。

答:1-0.15=0.85, 1-0.75=0.25, 1-0=1 坐标为(0.85, 0.25, 1)

4.如果使用每种基色占2比特的直接编码方式表示RGB颜色的值,每一像素有多少种可能的颜色?

答:2 2 2 64

5.如果使用每种基色占10比特的直接编码方式表示RGB颜色的值,每一像素有多少种可能的颜色?

答:2 2 2

10

10

10

222

1024

3

1073741824

6.如果每个像素的红色和蓝色都用5比特表示,绿色用6比特表示,一共用16比特表示,总共可以表示多少种颜色?

答:25 25 26 65536

7.解释水平回扫、垂直回扫的概念。

答:水平回扫:电子束从CRT屏幕右边缘回到屏幕左边缘的动作。

垂直回扫:电子束到达每次刷新周期末尾,从CRT屏幕右下角回到屏幕左上角的动作。

8.为什么很多彩色打印机使用黑色颜料?

答:彩色颜料(青、品红、黄)相对来说较贵,并且在技术上很难通过多种颜色产生高质量的黑色。

9.简述随机扫描显示器和光栅扫描显示器的简单工作原理和各自的特点。

答:随机扫描显示器的工作原理:要显示的图形定义是一组画线命令,存放在刷新缓存中,由显示控制器控制电子束的偏移,周期性地按画线命令依次画出其组成线条,从而在屏幕上产生图形。

特点:其显示的图形质量好,刷新缓存中的内容可局部或动态修改,分辨率和对比度高,并且图形不会产生锯齿状线条。

光栅扫描显示器的工作原理:将CRT屏幕分成由像素构成的光栅网格,其中像素的灰度和颜色信息保存在帧缓存中。电子束在水平和垂直偏转磁场的作用下从左向右,从上向下扫描荧光屏,产生一幅幅光栅,并由显示内容来控制所扫描的像素点是否发亮,从而形成具有多种彩色及多种明暗度的图像。

特点:图形显示上会有走样,但是其成本低,能够显示的图像色彩丰富,并且图形的显示速度与图形的复杂程度无关,易于修改图形,可以显示二维或三维实体图形和真实感图像。

习题3

1.请用伪代码程序描述使用DDA算法扫描转换一条斜率介于45º和-45º(即|m|>1)之间的直线所需的步骤。

答:假设线段的两个端点为 x1,y1 和 x2,y2 ,并且y1 y2 int x1,x2.y1,y2,x,y=y1;

float xf=x1,m=(x2-x1)/(y2-y1); while(y<=y2) {

x=floor(xf+0.5); setPixel(x,y); xf=xf+m; y++; }

2.请指出用Bresenham算法扫描转换从像素点(1,1)到(8,5)的线段时的像素位置。

答:(1,1), (2,2), (3,2), (4,3), (5,3), (6,4), (7,4), (8,5)

3.当使用8路对称方法从0°到45°或90°到45°的8分圆中生成整个圆时,有些像素被设置或画了两次,这种现象有时称为重击。请说明如何判断重击发生?如何能彻底避免重击?

答:在初始坐标为(r,0)或(0, r)时的位置,因为(0,r)=(-0,r), (0,-r)=(-0,-r),(r,0)=(r,-0), (-r,0)=(-r,-0);

另外,如果最后生成的像素在对角线上,坐标为(mr,mr),其中m约为1/(-mr,mr), (mr,-mr), (-mr,-mr)都会发生重击。

在写像素之前检查每个像素点,如果某个点已经写了像素点,则不再写第二次,这样可以避免重击。

4.扫描转换的三个主要的缺点是什么?

答:阶梯现象、斜线的不等光亮度和细节失真问题。

5.设R是左下角为L(-3,1),右上角为R(2,6)的矩形窗口。请写出下列各线段端点的区域编码。

AB:A(-4,2),B(-1,7) CD:C(-1,5),D(3,8) EF:E(-2,3),F(1,2)

GH:G(1,-2),H(3,3) I J:I(-4,7),J(-2,10)

答:编码方法如教材图3-42所示,因此: A(0001)B(1000)、C(0000)D(1010)、E(0000)F(0000)、G(0100)H(0010)、I(1001) J(1000)

6.写出待裁剪线段P1P2(从P1(x1,y1)到P2 (x2,y2))与: (a)垂直线x=a (b)水平线y=b 的交点。

x x1 t(x2 x1)

答:线段的参数方程为

y y1 t(y2 y1)

0 t 1

2,则在(mr,mr),

xc a

a x1(a)将x=a代入该方程,得交点为

yc y1 x x

1 2 b y1

xc x1 y y(b)将y=b代入该方程,得交点为

1 2

y b c

(y2 y1)

(x2 x1)

7.给出5题中的线段分类。

答:直接保留:EF

直接舍弃:IJ

需求交点:AB 、CD、 GH

8.设R是左下角为L(1,2),右上角为R(9,8)的矩形窗口,用梁友栋-Barsky算法裁剪下列各线段。

AB:A(11,6),B(11,10) CD:C(3,7),D(3,10) EF:E(2,3),F(8,4) GH:G(6,6),H(8,9) I J:I(-1,7),J(11,1) 答:AB线段完全在右边界之右;

CD线段经裁剪后的两个端点是(3,7)和(3,8); EF线段完全在裁剪窗口内;

GH线段经裁剪后的两个端点是(6,6)和(26/3,8); IJ线段经裁剪后的两个端点是(1,6)和(9,2)。

习题4

1.将三角形A(0,0),B(1,1),C(5,2)逆时针旋转45: (a)绕原点; (b)绕点P(-1,-1)。 0

答:三角形矩阵S 1

5

012

1

1,设旋转之后的三角形矩阵为S’ 1

2

0 2

0 2

2 1 0

220

0 1 0

º

cos45 0

逆时针旋转矩阵R sin45

0

sin45cos450

00

22

1

平移矩阵P1 0

1

011

0 1

0 反平移矩阵P2 0

1 1

'

'

'

01 1

32

0

0 1

2,72

2),

(a)S' S R,得A (0,0),B (0,2),C ((b)S S P1 R P2,得

A (-1,

'

'

2 1),B ( 1,22 1),C (

''

32

2 1,

92

2-1)。

2.将三角形A(0,0),B(1,1),C(5,2)放大两倍,保持C(5,2)不变。 答:

0 '

S S P1 R P2 1

5

012

1 1

1 0 1 5

01 2

0 2

0 0 1 0

020

0 1

0 0 1 5

012

0 5

0 3 1 5

202

1

1 1

得:A' ( 5, 2),B' ( 3,0),C' (5,2)。

3.将类似菱形的多边形A(-1,0),B(0,-2),C(1,0),D(0,2)进行如下的反射变换: (a)相对于水平线y=2; (b)相对于垂直线x=2; (c)相对于直线y=x+2。 答:

(a) A' ( 1,4),B' (0,6),C' (1,4),D' (0,2) (b) A' (5,0),B' (4, 2),C' (3,0),D' (4,2) (c) A' ( 2,1),B' ( 4,2),C' ( 2,3),D' (0,2)

4.请写出一个图例变换,将正方形A(0,0),B(1,0),C(1,1),D(0,1)一半大小的复本放到主图形的坐标系中,且正方形的中心在(-1,-1)点。 答:原正方形的中心在P(1/2,1/2),首先进行关于P点的缩放变换,变换矩阵为M; 1/2

M 0

1/4

01/21/4

0

0 1

然后要进行平移变换将中心点从P移到P’(-1,-1),此时水平和垂直方向的平移量均为-3/2,

变换矩阵为N; 1 N 0

3/2

01 3/2

0

0 1

则有变换矩阵: 1/2

T M N 0

5/4

01/2 5/4

0

0 1

5.假设有一条从P1到P2的直线上的任意一点P,证明对任何组合变换,变换后的点P都在P1到P2之间。

答:设P1(x1,y1)是P1(x1,y1)的变换,P2(x2,y2)是P2(x2,y2)的变换。又设组合变换表

'

'

'

'

'

'

a

示为:b

c

def

0

0 1

'

y1 dx1 ey1 f (1)

则有:x1' ax1 by1 c

'

和 x2 ax2 by2 c

y2 dx2 ey2 f (2)

'

'

对P1到P2直线上的任意点P(x,y),要证明P'(x',y')在P1'和P2'连接的直线上,其中P是P的变换,且x ax by c,y dx ey f, (3)

y2 y1x x

'

2

'1

'

'

''

即要证明:

y2 yx x

'2

'''

, (4)

将公式(1)、(2)、(3)代入公式(4),经整理得:

d ea b

y2 y1x2 x1y2 y1x2 x1

a bd e

y2 yx2 xy2 yx2 x

因为(x,y)满足:

y2 y1x2 x1

y2 yx2 x

由此得到,P'在P1'和P2'连接的直线上。

6.二次旋转变换定义为先绕x轴旋转再绕y轴旋转的变换: (a)写出这个变换的矩阵;

(b)旋转的先后顺序对结果有影响吗?

答:设三维图形绕x轴逆时针旋转 x角度,绕y轴逆时针旋转 y角度,变换矩阵为:

1 0T

0 0

0cos x sin x

0sin xcos x

00cos xsin x

0 cos y 00

0 sin y 1 0

sin y

sin xcos ycos xcos y

0100

sin y

0cos y

00 0 0 1

0 0 0 1

cos y

sin xsin y

cos xsin y

0

7.写出关于某个给定平面对称的镜面反射变换。(注:用一个法向量N和P0(x0,y0,z0)参

考点确定一个参考平面。) 答:

(1)将P0平移到原点,变换矩阵为T1;

(2)使法线向量N平行于xy平面的法线向量K,变换矩阵为T2; (3)进行关于xy平面的镜面反射变换,变换矩阵为T3; (4)进行步骤(2)和(1)的逆变换,变换矩阵为T4和T5。 设向量N n1I n2J n3K,则有N 为:

0 N n1n20

N0

n1n31

N 0 0

0n3

n1Nn2Nn3N0

0 0 0 1

n1 n2 n3,

2

2

2

n2 n3,所以变化矩阵

22

1

0

T T1 T2 T3 T4 T5

0 x0

010 y0

001 z0

n2

1 0 0 0

0100

00 10

0 0 0 1

N0n1N0

n1n2 n1n3

N

n3

N

n2

n2N0

n3N0

1

0 0 00

x0 1

010y0

001z0

0

0 0 1

8.如何确定一个点P在观察点的内部还是外部? 答:一个平面将空间分成两部分。平面的一般方程是:

n1(x x0) n2(y y0) n3(z z0) 0

对于任意点P(x,y,z),若定义一个标量函数f(P),有:

f(P) f(x,y,z) n1(x x0) n2(y y0) n3(z z0)

如果signf(P) signf(Q),则说明P点和Q点在同一边(相对平面而言)。令

fT,fB,fR,fL,fN,fF分别表示顶平面、底平面、右平面、左平面、前平面、后平面。

另外,L和R分别是窗口的左下角点和右上角点,且Pb和Pf分别是后裁剪平面和前裁剪平面的参考点。

如果下面都成立,则P点在观察体内: 对于平面fT来说,P和L在同一边; 对于平面fB来说,P和R在同一边; 对于平面fR来说,P和L在同一边; 对于平面fL来说,P和R在同一边; 对于平面fN来说,P和pb在同一边; 对于平面fF来说,P和pf在同一边。 相当于:

signfT(P) signfT(L)signfB(P) signfB(R)signfR(P) signfR(L)

signfL(P) signfL(R)signfN(P) signfN(Pb) signfF(P) signfF(Pf)

9.将梁友栋-Barsky线段裁剪算法推广到三维,写出对下述三维观察体所要满足的不等式: (a)平行规范化观察体; (b)透视规范化观察体。

答:设P1(x1,y1,z1)和P2(x2,y2,z2)是线段的两个端点。线段的参数方程是:

x x1 u x y y u y

1

z z u z

1

0 u 1

平行规范化观察体是由平面x 0,x 1,y 0,y 1,z 0和z 1组成的单位立方体; 透视规范化观察体是由平面x z,x -z,y z,y -z,z z(前)和组成的被截z (后)1f断的部分棱锥。

(a)对于平行规范化观察体,内部点满足: xmin x1 u x xmaxymin y1 u y ymaxzmin z1 u z zmax

其中,xmin ymin zmin 0,

xmax ymax zmax 1

六个不等式为:

upk qk

k 1,2,3,4,5,6

其中:

p1 x,p3 y,p5 z,

q1 x1 xmin x1,q3 y1 ymin y1,q5 z1 zmin z1,

p2 x,p4 y,p6 z,

q2 xmax x1 1 x1q4 ymax y1 1 y1q6 zmax z1 1 z1

(b)对于透视规范化观察体,内部点满足:

z x z z y zzf z 1即:

z1 u z x1 u x z1 u z z1 u z y1 u y z1 u zzf z1 u z 1

六个不等式为:

upk qk

k 1,2,3,4,5,6

其中: p1 x z,p3 y z,p5 z,

q1 x1 z1,q3 y1 z1,q5 z1 zf,

p2 x z,p4 y z,p6 z,

q2 z1 x1q4 z1 y1q6 1 z1

10.写出平面和线段的交点坐标。

答:假设平面通过点P0(x0,y0,z0),且有法线向量N n1I n2J n3K,P1(x1,y1,z1)和P2(x2,y2,z2)是线段的两个端点。

平面的一般方程是:

n1(x x0) n2(y y0) n3(z z0) 0

直线的参数方程是:

x x1 (x2 x1)t y y (y y)t

121

z z (z z)t

121

将直线方程代入平面方程,求解t,得到交点处的参数值tI:

tI

n1(x1 x0) n2(y1 y0) n3(z1 z0)n1(x2 x1) n2(y2 y1) n3(z2 z1)

用向量符号重写为:

tI

N P0P1N P1P2

由直线的参数方程可以求出交点I(xI,yI,zI):

xI x1 (x2 x1)tI y y (y y)t

121I I

z z (z z)t

121I I

如果0 tI 1,则交点在P1到P2的线段上;否则,交点在线段的延长线上。

11.编写一段程序,实现对物体的平行投影。 答:略。

12.编写一段程序,实现对物体的透视投影。 答:略。

本文来源:https://www.bwwdw.com/article/5xpi.html

Top