长方体体的光照效果_计算机图形学课程设计西安科技大学
西安科技大学
计算机图形学课程设计
题目: 长方体体的光照效果
专业班级: 信计1102班
小组成员:陈维多1108060216
邹世林1108060224
左 力1108060225
李 优1108060229
日期: 2013年1月2日
目录
一 课程设计题目………………………………………………… 3
1.题目要求………………………………………………… 3
2.任务……………………………………………………… 3
二 任务分析算法介绍…………………………………………… 3
1.任务分析………………………………………………… 3
2.算法介绍………………………………………………… 4
三 总体设计……………………………………………………… 5
1.定义三维齐次向量结构体……………………………… 5
2.定义三维齐次坐标结构………………………………… 5
3.定义面的结构………………………………………… 6
4.定义点的结构………………………………………… 6
5.长方体顶点定义及初始化……………………………… 7
6. 面表…………………………………………………… 7
7.定义点光源、视线方向、光照方向…………………… 8
8.各面可见性计算和判断………………………………… 9
9.窗口-视区变换………………………………………… 11
10.路径填充……………………………………………… 12
四 流程图……………………………………………………… 13
五 源程序……………………………………………………… 14
六 程序运行效果图…………………………………………… 27
七 总结………………………………………………………… 28
参考文献………………………………………………………… 29
课程设计题目
长方体体的光照效果
1.题目要求
对长方体,建立一个点光源,采用环境光和点光源漫反射光的光照模型,应用FLAT明暗处理方法,显示平行投影后的长方体光照效果。
2.任务
本题目主要包括五个任务,
1)长方体表面模型的建立
2)长方体的可见面判断
3)可见面的背光性判断
4)可见面光照计算
5)可见面光照效果显示
附加:通过键盘上下左右按键对图形进行旋转
任务分析算法介绍
1.任务分析
任务1)中,定义三维齐次坐标结构和面的结构;定义顶点表和面表,对长方体绕X轴旋转和绕Y轴旋转。
任务2)中对每一个面计算其外法向量及可见性
任务3)中对每个可见面计算其光线向量,并判断其是否为背光面。
任务4)计算每个见光面的环境光和点光源的漫反射分量。
任务5)用该面的光强显示该可见面
附加: 人机交互
2.算法介绍
1)旋转变换
绕X轴旋转变换的坐标表示
绕Y轴旋转变换的坐标表示
2) 平行投影
在XOY平面投影后坐标
3) 环境光模型
物体没有受到光源的直射,但其表面仍有一定亮度,这是由于环境光的作用。
表示环境光反射强度
表示环境光反射率
表示环境光入射强度
4)漫反射光模型
漫反射光可认为是在点光源的照射下,光被物体表面吸收后,然后重新反射出来的光。
表示漫反射光强度
表示漫反射反射率
表示点光源入射强度大小
入射光与物体表面法矢量夹角
三、总体设计
1.定义三维齐次向量结构体
typedef struct Vector3D
{
float x;
float y;
float z;
int f; //f表示所在的平面的编号
}VECTOR;
2. 定义三维齐次坐标结构
typedef struct tagHOMOCOORD
{
float x;
float y;
float z;
float w;
}HOMOCOORD;
3.定义面的结构
typedef struct tagPLANE
{
int v0, v1, v2, v3;
VECTOR n; //外法向量
HOMOCOORD center; //中心点
float Id; //漫反射光强
int flag;//标识符
float kd; //漫反射率
float ka; //环境光反射率
float Ie; //环境光反射光强
float I; //光强
}PLANE;
4.定义点的结构
typedef struct tagMYPOINT
{
float x,y;
}MYPOINT;
5.长方体顶点定义及初始化
pts=new HOMOCOORD[ptn];
pts[0].x= 1;pts[0].y= 2; pts[0].z= 1; pt

被折叠的 条评论
为什么被折叠?



