王汝传计算机图形学教程第6章课后习题参考答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档