计算机图形学
(ISBN:978-7-5084-2898-7) 银红霞 杜四春 蔡立军 等编著
中国水利水电出版社
习题 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
2
2
2
64
5.如果使用每种基色占 10 比特的直接编码方式表示 RGB 颜色的值,每一像素有多少 种可能的颜色? 答:2
10
2
10
2
10
1024
3
1073741
824
6.如果每个像素的红色和蓝色都用 5 比特表示,绿色用 6 比特表示,一共用 16 比特表 示,总共可以表示多少种颜色?答:
2
5
2
5
2
6
65536
7.解释水平回扫、垂直回扫的概念。 答:水平回扫:电子束从 CRT 屏幕右边缘回到屏幕左边缘的动作。 垂直回扫:电子束到达每次刷新周期末尾,从 CRT 屏幕右下角回到屏幕左上角的动作。 8.为什么很多彩色打印机使用黑色颜料? 答:彩色颜料(青、品红、黄)相对来说较贵,并且在技术上很难通过多种颜色产生高 质量的黑色。 9.简述随机扫描显示器和光栅扫描显示器的简单工作原理和各自的特点。 答:随机扫描显示器的工作原理:要显示的图形定义是一组画线命令,存放在刷新缓存 中,由显示控制器控制电子束的偏移,周期性地按画线命令依次画出其组成线条,从而在屏 幕上产生图形。 特点:其显示的图形质量好,刷新缓存中的内容可局部或动态修改,分辨率和对比度高, 并且图形不会产生锯齿状线条。 光栅扫描显示器的工作原理:将 CRT 屏幕分成由像素构成的光栅网格,其中像素的灰 度和颜色信息保存在帧缓存中。电子束在水平和垂直偏转磁场的作用下从左向右,从上向下 扫描荧光屏,产生一幅幅光栅,并由显示内容来控制所扫描的像素点是否发亮,从而形成具 有多种彩色及多种明暗度的图像。 特点:图形显示上会有走样,但是其成本低,能够显示的图像色彩丰富,并且图形的显 示速度与图形的复杂程度无关,易于修改图形,可以显示二维或三维实体图形和真实感图像。习题 3
1.请用伪代码程序描述使用 DDA 算法扫描转换一条斜率介于 45º和-45º(即|m|>1)之 间的直线所需的步骤。 答:假设线段的两个端点为
x
1, y
1
和
x
2, y
2
,并且y
1y
2 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
/
2
,则在(mr,mr), (-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 的交点。 答:线段的参数方程为0
1
)
(
)
(
1 2 1 1 2 1
t
y
y
t
y
y
x
x
t
x
x
(a)将 x=a 代入该方程,得交点为
)
(
2 1 1 2 1 1y
y
x
x
x
a
y
y
a
x
c c (b)将 y=b 代入该方程,得交点为
b
y
x
x
y
y
y
b
x
x
c c(
2 1)
1 2 1 1 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)。 答:三角形矩阵
1
2
5
1
1
1
1
0
0
S
,设旋转之后的三角形矩阵为 S’ 逆时针旋转矩阵
1
0
0
0
2
2
2
2
0
2
2
2
2
1
0
0
0
45
cos
45
sin
0
45
sin
45
cos
0 0 0 0R
平移矩阵
1
1
1
0
1
0
0
0
1
1P
反平移矩阵
1
1
1
0
1
0
0
0
1
2P
(a)S' SR,得,
,
2
)
,
2
7
,
2
2
3
(
)
2
,
0
(
)
0
,
0
(
' ' '
B
C
A
(b) ' 1 2P
R
P
S
S
,得 ) 1 -2 2 9 , 1 2 2 3 ( ) 1 2 2 , 1 ( ) 1 2 , 1 -( ' ' ' B C A , , 。2.将三角形 A(0,0),B(1,1),C(5,2)放大两倍,保持 C(5,2)不变。 答:
1
2
5
1
0
3
1
2
5
1
2
5
0
1
0
0
0
1
1
0
0
0
2
0
0
0
2
1
2
5
0
1
0
0
0
1
1
2
5
1
1
1
1
0
0
2 1 'P
R
P
S
S
得: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
4
/
1
4
/
1
0
2
/
1
0
0
0
2
/
1
M
然后要进行平移变换将中心点从 P 移到 P’(-1,-1),此时水平和垂直方向的平移量均 为-3/2,变换矩阵为 N;
1
2
/
3
2
/
3
0
1
0
0
0
1
N
则有变换矩阵:
1
4
/
5
4
/
5
0
2
/
1
0
0
0
2
/
1
N
M
T
5.假设有一条从 P1到 P2的直线上的任意一点 P,证明对任何组合变换,变换后的点 P 都在 P1到 P2之间。 答:设P
1'(
x
1',
y
1')
是P
1(
x
1,
y
1)
的变换,P
2'(
x
2',
y
2')
是P
2(
x
2,
y
2)
的变换。又设组合变换表示为:
1
0
0
f
c
e
b
d
a
则有:x
ax
by
c
y
'
dx
1
ey
1
f
1 1 1 ' 1 (1) 和x
2'
ax
2
by
2
c
y
2'
dx
2
ey
2
f
(2) 对P
1 到P
2 直线上的任意点P
(
x
,
y
)
,要证明P
'(
x
',
y
')
在 ' 1P
和 ' 2P
连接的直线上,其中 'P
是P
的变换,且x
'
ax
by
c
,
y
'
dx
ey
f
, (3) 即要证明: ' ' 2 ' ' 2 ' 1 ' 2 ' 1 ' 2x
x
y
y
x
x
y
y
, (4) 将公式(1)、(2)、(3)代入公式(4),经整理得:x
x
y
y
b
a
x
x
y
y
e
d
x
x
y
y
b
a
x
x
y
y
e
d
2 2 2 2 1 2 1 2 1 2 1 2 因为(
x
,
y
)
满足:x
x
y
y
x
x
y
y
2 2 1 2 1 2 , 由此得到, 'P
在 ' 1P
和 ' 2P
连接的直线上。 6.二次旋转变换定义为先绕 x 轴旋转再绕 y 轴旋转的变换: (a)写出这个变换的矩阵; (b)旋转的先后顺序对结果有影响吗? 答:设三维图形绕 x 轴逆时针旋转
x角度,绕 y 轴逆时针旋转
y角度,变换矩阵为:
1
0
0
0
0
cos
cos
sin
sin
cos
0
cos
sin
cos
sin
sin
0
sin
0
cos
1
0
0
0
0
cos
0
sin
0
0
1
0
0
sin
0
cos
1
0
0
0
0
cos
sin
0
0
sin
cos
0
0
0
0
1
y x x y x y x x y x y y y y y y x x x xT
7.写出关于某个给定平面对称的镜面反射变换。(注:用一个法向量 N 和P
0(
x
0,
y
0,
z
0)
参考点确定一个参考平面。) 答: (1)将
P
0平移到原点,变换矩阵为T
1; (2)使法线向量 N 平行于 xy 平面的法线向量 K,变换矩阵为T
2; (3)进行关于 xy 平面的镜面反射变换,变换矩阵为T
3; (4)进行步骤(2)和(1)的逆变换,变换矩阵为T
4和T
5。 设向量N
n
1I
n
2J
n
3K
,则有N
n
12
n
22
n
32,
n
22
n
32 ,所以变化矩 阵为:
1
0
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
0
0
0
1
0
1
0
0
0
0
1
0
0
0
0
1
0 0 0 3 2 1 2 3 3 1 2 1 3 2 3 1 2 3 2 1 1 0 0 0 5 4 3 2 1z
y
x
N
n
N
n
N
n
n
n
N
n
n
N
n
n
N
N
n
n
N
n
n
N
n
n
N
n
n
N
n
N
z
y
x
T
T
T
T
T
T
8.如何确定一个点 P 在观察点的内部还是外部? 答:一个平面将空间分成两部分。平面的一般方程是:0
)
(
)
(
)
(
0 2 0 3 0 1x
x
n
y
y
n
z
z
n
对于任意点P
(
x
,
y
,
z
)
,若定义一个标量函数f
(P
)
,有:)
(
)
(
)
(
)
,
,
(
)
(
P
f
x
y
z
n
1x
x
0n
2y
y
0n
3z
z
0f
如果sign
f
(
P
)
sign
f
(
Q
)
,则说明 P 点和 Q 点在同一边(相对平面而言)。令 F N L R B Tf
f
f
f
f
f
,
,
,
,
,
分别表示顶平面、底平面、右平面、左平面、前平面、后平面。 另外,L 和 R 分别是窗口的左下角点和右上角点,且P 和
bP
f分别是后裁剪平面和前裁 剪平面的参考点。如果下面都成立,则 P 点在观察体内: 对于平面
f
T来说,P 和 L 在同一边; 对于平面f
B来说,P 和 R 在同一边; 对于平面f
R来说,P 和 L 在同一边; 对于平面f
L来说,P 和 R 在同一边; 对于平面f
N来说,P 和p
b在同一边; 对于平面f
F来说,P 和p
f 在同一边。 相当于:)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
f F F R R b N N B B L L T TP
f
sign
P
f
sign
L
f
sign
P
f
sign
P
f
sign
P
f
sign
R
f
sign
P
f
sign
R
f
sign
P
f
sign
L
f
sign
P
f
sign
9.将梁友栋-Barsky 线段裁剪算法推广到三维,写出对下述三维观察体所要满足的不等 式: (a)平行规范化观察体; (b)透视规范化观察体。 答:设P
1(
x
1,
y
1,
z
1)
和P
2(
x
2,
y
2,
z
2)
是线段的两个端点。线段的参数方程是:
z
u
z
z
u
y
u
y
y
x
u
x
x
1 1 11
0
平行规范化观察体是由平面x
0,
x
1,
y
0,
y
1,
z
0
和
z
1
组成的单位立方 体; 透视规范化观察体是由平面x
z,
x
-z,
y
z,
y
-z,
z
z
(前)和
fz
(后)
1
组成的 被截断的部分棱锥。 (a)对于平行规范化观察体,内部点满足:1
,
0
max max maxmin min min max 1 min max 1 min max 1 min
z
y
x
z
y
x
z
z
u
z
z
y
y
u
y
y
x
x
u
x
x
其中,
六个不等式为:6
,
5
,
4
,
3
,
2
,
1
q
k
up
k k其中: 1 1 max 6 6 1 min 1 5 5 1 1 max 4 4 1 min 1 3 3 1 1 max 2 2 1 min 1 1 1
1
,
,
,
1
,
,
,
1
,
,
,
z
z
z
q
z
p
z
z
z
q
z
p
y
y
y
q
y
p
y
y
y
q
y
p
x
x
x
q
x
p
x
x
x
q
x
p
(b)对于透视规范化观察体,内部点满足:1
1
1 1 1 1 1 1 1
z
u
z
z
z
u
z
y
u
y
z
u
z
z
u
z
x
u
x
z
u
z
z
z
z
y
z
z
x
z
f f即:
六个不等式为:6
,
5
,
4
,
3
,
2
,
1
q
k
up
k k 其中: 1 6 6 1 5 5 1 1 4 4 1 1 3 3 1 1 2 2 1 1 1 11
,
,
,
,
,
,
,
,
,
z
q
z
p
z
z
q
z
p
y
z
q
z
y
p
z
y
q
z
y
p
x
z
q
z
x
p
z
x
q
z
x
p
f
10.写出平面和线段的交点坐标。 答:假设平面通过点P
0(
x
0,
y
0,
z
0)
,且有法线向量N
n
1I
n
2J
n
3K
,P
1(
x
1,
y
1,
z
1)
和P
2(
x
2,
y
2,
z
2)
是线段的两个端点。 平面的一般方程是:0
)
(
)
(
)
(
0 2 0 3 0 1x
x
n
y
y
n
z
z
n
直线的参数方程是:
t
z
z
z
z
t
y
y
y
y
t
x
x
x
x
)
(
)
(
)
(
1 2 1 1 2 1 1 2 1 将直线方程代入平面方程,求解 t,得到交点处的参数值t
I:)
(
)
(
)
(
)
(
)
(
)
(
1 2 3 1 2 2 1 2 1 0 1 3 0 1 2 0 1 1z
z
n
y
y
n
x
x
n
z
z
n
y
y
n
x
x
n
t
I
用向量符号重写为: 2 1 1 0
P
P
N
P
P
N
t
I
由直线的参数方程可以求出交点I
(
x
I,
y
I,
z
I)
:
I I I I I It
z
z
z
z
t
y
y
y
y
t
x
x
x
x
)
(
)
(
)
(
1 2 1 1 2 1 1 2 1 如果0
t
I
1
,则交点在P
1到P
2的线段上;否则,交点在线段的延长线上。 11.编写一段程序,实现对物体的平行投影。 答:略。 12.编写一段程序,实现对物体的透视投影。 答:略。习题 5
1.何谓曲线的插值、逼近和拟合? 答:如果曲线顺序通过每一个控制点,称为对这些控制点进行插值; 如果曲线在某种意义下最接近每一个控制点,称为对这些控制点进行逼近; 插值和逼近统称为拟合。 2.用参数表示法来描述自由曲线或曲面有什么优点?为什么通常都用三次参数方程来 表示自由曲线? 答:用参数表示法来描述自由曲线或曲面,其优越性主要体现在曲线的边界容易确定、 点动成线、具有几何不变性、参数方程的形式与坐标系的选取无关、易于变换、易于处理斜 率为无穷大的情形和具有直观的几何意义等方面。 由于参数方程次数太低会导致控制曲线的灵活性降低,曲线不连续;而次数太高则会导 致计算复杂,存储开销增大。因此,为了在计算速度和灵活性之间寻找一个合理的折衷方案, 多采用三次参数方程来表示自由曲线。3.请给出 Hermite 形式曲线的曲线段 i 与曲线段 i-1 及曲线段 i+1 实现 C1连续的条件。
答:参见教材第 133 页。 4.Bezier 曲线具有哪些特性?
答:Bezier 曲线的端点性质:曲线的起/终点与控制多边形的起/终点重合,曲线在起/ 终点与控制多边形相切,且切线方向与控制多边形的第一条边和最后一条边的走向一致。
5.Bernstein 基函数具有哪些特性? 答:正性、端点性质、权性、对称性、递推性等。 6.试自行推导三次 Bezier 曲线的 Bernstein 基函数。 答:推导过程(略),推导结果为:
)
(
)
1
(
3
)
(
)
1
(
3
)
(
)
1
(
)
(
3 3 , 3 2 3 , 2 2 3 , 1 3 3 , 0t
t
B
t
t
t
B
t
t
t
B
t
t
B
7.上机编程实现绘制一条二次 Bezier 曲线。 答:略。 8.B 样条曲线具有哪些特性? 答:B 样条曲线具有端点特性、连续性、凸包性、局部性、扩展性等。具体参见教材第 152-154 页。 9.B 样条曲线与 Bezier 曲线之间如何互相转化? 答:在实际应用中可以对 B 样条曲线和 Bezier 曲线互相进行转换。对于同一段曲线而 言,既可用 n 次的 Bezier 曲线来表示,也可用 n 次的 B 样条曲线段来表示。通常给出一种 控制多边形的顶点(如 Bezier 曲线的控制多边形顶点)就可求出另一种控制多边形的顶点 (如 B 样条曲线的控制多边形顶点)。具体转换方法参见教材第 158-159 页。 10.如何定义 Coons 曲面? 答:参见教材第 160-161 页。 11.上机编程实现绘制一条双三次 Bezier 曲面。 答:略。习题 6
1.平面立体的拓扑关系有哪几种? 答:平面立体的拓扑关系分为九种,参见教材第 176 页图 6-1 所示。 2.经常用来描述形体的模型有哪几种?它们各有何特点? 答:在几何造型系统中,经常用来描述形体的模型有三种,它们是:线框模型、表面模 型和实体模型。各自特点参见教材第 177-178 页。 3.试简述形体的几种常用表示方法。 答:常用的实体模型表示方法有分解表示、构造表示和边界表示三大类。具体参见教材 第 178-180 页。习题 7
1.已知点 P1(1,2,0)、P2(3,6,20)和观察点 P3(2,4,6),试判断从 C(0,0,-10)观察时,哪个点 遮挡了其他点。 答:连接观察点 C 和点P
1的直线是:t
z
t
y
t
x
t
z
z
z
z
t
y
y
y
y
t
x
x
x
x
10
10
,
2
,
)
(
,
)
(
,
)
(
1 0 0 1 0 0 1 0 0
即:
将点P
2的坐标值带入上述方程,得 x=3 时 t=3,在 t=3 时 x=3, y=6, z=20,所以P
2在过 点 C 和点P
1的投影线上。 以 C 为基准,C、P
1、P
2分别在这条线的 t=0,1,3 位置上。可知,P
1遮挡住P
2。 接着判断P
3是否在这条线上。x=2 时 t=2,y=4,z=10,所以P
3不在这条投影线上,既没有 遮挡P
1、P
2,也没有被P
1、P
2遮挡。 2.为什么需要隐藏面消隐算法? 答:因为需要用隐藏面消隐算法来判断哪些物体和表面遮挡了放在它们后面的物体和表 面,从而产生更逼真的图像。 3. Z 缓冲器算法是怎样判断哪个面应消隐的? 答:Z 缓冲器算法设计了两个缓冲区(数组),一个是帧缓冲区 FB,用于存贮各像素点 的颜色和亮度值,另一个是深度缓冲区 ZB,用于存贮对应于该像素点的 z 座标值(深度值), ZB 中所有单元的初始值置为最小值。在判断像素(x,y)上的哪个平面更靠近观察者时, 就可以简单地比较 ZB 中的深度值和当前平面的深度值。如果当前平面的值比 ZB 中的值大 (即距观察点更近),则用新值替换原 ZB 中的值,像素的颜色值也变成新平面的颜色值。 4.如何用边界连贯性减少计算量? 答:基于这样的假设:如果一个边或线与给定的扫描线相交,它很可能也与下一条扫描 线相交。因而,如果要求出扫描线与一条边相交的像素点,不需要求出每条扫描线和边的交 点,只需确定一个相交的像素点,再用边的斜率求出其他的像素点。 5.区域连贯性是如何减少计算量的? 答:基于这样的假设:足够小的一块像素区域很可能在单个的多边形内。如区域分割算 法,区域连贯性在判断给定屏幕区域(即像素区域)中的所有可能可见的多边形时,计算量 减少了。6.如何判断空间连贯性? 答:通过确定物体的范围判断空间连贯性。由确定物体所在的最小和最大 x、y、z 坐标 值,给出物体的矩形范围(包围盒)。范围是由平面包围的长方体区域。 7.画家算法的基本概念是什么? 答:画家算法把各个面(多边形)按深度排序,然后从最远的多边形开始,把每个多边 形绘制(即扫描转换)到屏幕上。 8.实现画家算法所遇到的困难是什么? 答:主要是多边形的“深度”问题,当两个多边形具有同样的深度,应先绘制哪一个; 或者当多边形与 xy 平面是斜交关系时,如何绘制。 9.如果多边形 P 和 Q 有同样的深度值,哪个多边形优先级高,即先画哪个多边形? 答: 第一步,确定 P 和 Q 的多边形的范围。
多边形的 z 范围是平面 z=zmin和 z=zmax之间的区域,zmin是所有多边形顶点的 z 坐标的
最小值,zmax是最大值。与此类似,定义多边形的 x 和 y 范围。x、y 和 z 范围的交集称为多 边形的范围或包围盒。 第二步,定义六种测试方法。 测试 0:P 和 Q 的 z 范围没有相互重叠,且 Q 的 zQmax小于 P 的 zPmin。 测试 1:P 和 Q 的 y 范围没有相互重叠。 测试 2:P 和 Q 的 x 范围没有相互重叠。 测试 3:P 的所有顶点在包含 Q 的平面上,且离观察点最远。 测试 4:Q 的所有顶点在包含 P 的平面上,且离观察点最近。 测试 5:P 和 Q 在观察平面上的投影没有相互重叠。判断多边形是否相互重叠的方法是: 用一个多边形的每条边与另一个多边形的每条边比较,判断是否有相交。 第三步,顺序执行以上测试,判断 P 是否遮挡了 Q。 顺序执行测试 0,1,2,3,4,5,如果任何测试都为 True,则认为多边形 P 没有遮挡 Q,故先 画多边形 P。 如果所有测试都不为 True,则交换 P 和 Q,重新执行测试 0,1,2,3,4,5。如果其中有一个 测试为 True,则 Q 没有遮挡 P,先画 Q。 如果仍为所有测试都不为 True,则以包含多边形 P 的平面为分割面,将多边形 Q 分割 为两个多边形 Q1和 Q2。 10.区域分割算法的基本概念是什么? 答:首先,如果多边形的投影覆盖了显示屏幕的给定区域,那么从给定区域内可以看见 那个多边形;其次,对于覆盖了给定屏幕区域的所有多边形,在区域内可见的某个多边形一 定是最前面的一个多边形;再次,如果不能判断给定区域内的哪个多边形可见(是否在其他 多边形前面),则分割该区域为更小的子区域,直到可以判断多边形可见性为止(或分割到 一个像素为止)。
习题 8
1.当光源距离多面体比较远时,在每个多边形表面上的漫反射(由 Phong 公式确定的) 变化很小。为什么? 答:一个多边形表面上的所有点有相同的法向量 N。当光源相对较远时,从一个表面点 到另一个表面点的 L(见教材图 8-1)变化很小。(如果光源非常远,如太阳,则 L 变成了 一个恒定的向量)。从而N
L
在每个多边形表面内变换很小,称为 Phong 公式中确定漫反 射的项。 2.假设点 P1在扫描线 y1上且亮度为 I1,点 P2在扫描线 y2上且亮度为 I2。给出 y 方向 上的递推公式,该公式可以用线性插值计算 P1和 P2之间所有扫描线的亮度值 I’。 答:以P
1为开始点,则从一条扫描线到下一条扫描线的亮度变化值为: 2 1 2 1y
y
I
I
I
所以有:
1 2 1 ' ' 1 ' 1,...,
3
,
2
,
,
y
y
k
I
I
I
I
I
k k 3.在第 2 题中,如果在第 5 条线上的点 P1 有 RGB 颜色(1,0.5,0),在第 15 条线上 的点 P2 有 RGB 颜色(0.2,0.5,0.6)。那么在第 8 条线上的点是什么颜色? 答:由于:
08
.
0
)
15
5
/(
)
6
.
0
0
(
08
.
0
)
15
5
/(
)
5
.
0
5
.
0
(
08
.
0
)
15
5
/(
)
2
.
0
1
(
B
G
R
可知第 8 条线上点的颜色为:)
18
.
0
,
5
.
0
,
76
.
0
(
]
06
.
0
3
0
,
0
3
5
.
0
),
08
.
0
(
3
1
[
4.当用逻辑运算 AND 混合物体原来的颜色和纹理图的颜色时,如果原来的颜色是白 色,品红色的纹理区没有什么变化,但是如果原来的颜色是黄色,则品红色的纹理区将会变 成红色的纹理区。为什么? 答:各种品红色颜色可以用 RGB 颜色向量描述为(m,0,m)。 白色(1,1,1)AND(m,0,m),结果是(m,0,m)。 黄色(1,1,0)AND(m,0,m),结果是(m,0,0),所以表现为红色。 5.在一个几乎什么都看不见的黑暗房子里,为什么任何东西看起来都是灰色的或黑色 的? 答:因为人眼的视网膜锥状细胞对颜色敏感,但对低亮度光不敏感。另外,人眼的视网 膜杆状细胞对低亮度光敏感,但对颜色却是色盲。6.试说明如何将隐藏面消隐和投影集成到光线跟踪算法中的。 答:每个主光线作为一个投影面把表面上的点 P 映射到观察平面上的点 P’。如果所有 主光线从观察点 C 发出,则得到透视投影的效果。如果所有主光线互相平行,则得到平行 投影的效果。此外,如果一个主光线与几个物体表面相交,则只选择最靠近观察平面的表面, 且对应的像素点显示该表面的颜色,而所有其他表面被视为隐藏面并被删除(即不显示)。 7.试描述一个包围盒技术不适用的场景。说明为什么? 答:许多球体分散于场景中。 首先,不存在更简单的包围盒用于相交测试。此外,任何包围几个球体的包围盒都将占 据场景中一个相对较大的部分,这使得光线与包围盒相交的概率相对较高,从而需对封闭球 体再次测试(假设在第一次测试时包围盒帮助避开了某些物体)。