王汝传计算机图形学教程第6章课后习题参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章 习题参考答案
1.请简述朗伯(Lambert )定律。
设物体表面在P 点法线为N ,从P 点指向光源的向量为L ,
两者夹角为θ,则点P 处漫反射光的强度为:
I d =I p k d cos θ
式中 : I d ——表面漫反射光的亮度; I p ——入射光的光亮度;
K d
θ——入射光线与法线间的夹角,0≤θ≤π/2。
并且,当物体表面垂直于入射光方向时(N 、L 方向一致)看上去最亮,而θ越来越大,接近90°时,则看上去越来越暗。
2.试写出实现哥罗德(Gouraud )明暗处理的算法伪代码。
deltaI = (i2 - i1) / (x2 - x1);
for (xx = x1; xx < x2; xx++)
{ int offset = row * + xx;
if (z < [offset])
{ [offset] = z;
[offset] = i1;
}
z += deltaZ; i1 += deltaI;
}
3. 在Phong 模型n
s p d p a a V R K I N L K I K I I )()(⋅+⋅+=中,三项分别表示何含义公式中的各个符号的含义指什么
三项分别代表环境光、漫反射光和镜面反射光。a I 为环境光的反射光强,p I 为理想漫反射光强,a K 为物体对环境光的反射系数,d K 为漫反射系数,s K 为镜面反射系数,n 为高光指数,L 为光线方向,N 为法线方向,V 为视线方向,R 为光线的反射方向。
4.试写出实现Phong (冯)明暗方法的伪代码。
for (xx = x1; xx < x2; xx++)
{ int offset = row * + xx;
if (z < [offset])
{ [offset] = z;
pt = (u,v);
float Ival = ;
[offset] = Ival;
}
u += deltaU;
z += deltaZ;
(deltaPt);
(deltaN);
}
5.请简述自身阴影的生成方法。
自身阴影生成过程如下:
(1)首先将视点置于光源位置,以光线照射方向作为观察方向,对在光照模型下的物体实施消隐算法,判别出在光照模型下的物体的“隐藏面”,并在数据文件中加以标识;
(2)然后按实际的视点位置和观察方向,对物体实施消隐算法,生成真正消隐后的立体图形;
(3)检索数据文件,核查消隐后生成的图形中,是否包含有在光照模型下的“隐藏面”。如有,则加以阴影符号标识这些面。
6.试写出光线跟踪算法的C语言描述。
/*TraceRay的三个参数分别是起点start,跟踪方向direction和已跟踪的深度depth,返回的是光线direction的颜色。*/
Color TraceRay(start,direction,depth)
Vector start,direction;
Int depth;
{
if (depth>MAX_DEPTH)
color=black;
else {
光线与物体求交,找出离start最近的交点;
if (无交点)
color=背景色;
else {
local_color=用局部光照模型计算出的交点处的光强;
计算反射方向;
Reflected_color=TraceRay(交点,反射方向,depth+1);
计算折射方向;
Transmitted_color=TraceRay(交点,折射方向,depth+1);
Color= local_color+Reflected_color*Kr+Transmitted_color*Kt;
}
}
return color;
}
7.请简述计算机图形学所涉及到的纹理概念。
在计算机图形学中物体的表面细节称为纹理,包括颜色纹理与几何纹理。颜色纹理主要是指光滑表面上附加花纹和图案,如墙面上的拼花图案、木质家具表面、塑料地板等。几何纹理主要指景物表面在微观上呈现出的起伏不平,例如混凝土墙面、柑橘表皮等。颜色纹理可用纹理映射(Texture Mapping)来描述,几何纹理可用一个扰动函数来描述。
8.写出从RGB颜色值到HSV值的转换算法。
RGB转化到HSV的算法:
max=max(R,G,B);
min=min(R,G,B);
if (R = max)
H = (G-B)/(max-min);
if (G = max)
H = 2 + (B-R)/(max-min);
if (B = max)
H = 4 + (R-G)/(max-min);
H = H * 60;
if (H < 0)
H = H + 360;
V=max(R,G,B);
S=(max-min)/max;
9.写出从HSV颜色值到RGB值的转换算法。
HSV转化到RGB的算法
if (s = 0)
R=G=B=v;
else
h /= 60;
i = int(h);
f =h – i;
a = v * ( 1 - s );
b = v * ( 1 - s * f );
c = v * ( 1 - s * (1 - f ) );
switch(i) {
case 0: R = v; G = c; B = a; break;
case 1: R = b; G = v; B = a; break;
case 2: R = a; G = v; B = c; break;