1 / 10
文档名称:

计算机图形学实验报告.doc

格式:doc   大小:146KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机图形学实验报告.doc

上传人:mh900965 2017/12/19 文件大小:146 KB

下载得到文件列表

计算机图形学实验报告.doc

相关文档

文档介绍

文档介绍:









设计名称正四面体
学号 092055103
学生张彬
目录
1项目描述·····················3
2任务配置····················3
3效果图······················3
4原理························
4
5算法························5
6源代码······················5
7 总结······················10
项目描述
本项目使用计算机图形学的知识,在屏幕是绘制一个四个面涂上不同颜色的正四面体,并且正四面体绕着其中一个顶点转动。
任务配置
本程序使用Visual C++ ,建立一个基于单文档的的项目。
效果图
原理
本程序的原理为先确定原始的正四面体的4个顶点,然后对其进行3维变换,再对其进行***变化,然后将3维坐标转换为2维坐标,再判断每个面是否可见对其进行动态消影。再将其画到屏幕上。程序使用了双缓冲,并且使用定时器对坐标进行改变。
算法
对坐标进行3维转换的坐标为先绕x转,再绕y转,最后绕z转,(这3个矩阵可以参考计算机图形学基础教程110面)将3个矩阵相乘可得
ZH[0][0]=cos(b)*cos(c);
ZH[0][1]=cos(b)*sin(c);
ZH[0][2]=-sin(b);
ZH[1][0]=cos(c)*sin(a)*sin(b)-cos(a)*sin(c);
ZH[1][1]=sin(c)*sin(a)*sin(b)+cos(c)*cos(a);
ZH[1][2]=sin(a)*cos(b);
ZH[2][0]=cos(a)*sin(b)*cos(c)+sin(a)*sin(c);
ZH[2][1]=cos(a)*sin(b)*sin(c)-cos(c)*sin(a);
ZH[2][2]=cos(a)*cos(b);
,对其进行***变换时乘以矩阵(这个矩阵可以参考计算机图形学基础教程123面),将θ,φ都设置为45度,矩阵如下
TZ[0][0]=-sqrt(2)/2;TZ[0][1]=-;TZ[0][2]=-;TZ[0][3]=0;
TZ[1][0]=sqrt(2)/2;TZ[1][1]=-;TZ[1][2]=-;TZ[1][3]=0;
TZ[2][0]=0;TZ[2][1]=sqrt(2)/2;TZ[2][2]=-sqrt(2)/2;TZ[2][3]=0;
TZ[3][0]=0;TZ[3][1]=0;TZ[3][2]=700;TZ[3][3]=1;
将3维坐标转换为2维坐标时,使用公式 x=x1/z1*d,y=y1/z1*d;
对其进行动态消隐时,则在平面上取两个向量做差乘,获得其法向量,然后与视向量做数量级,并对其结果判断,大于0则画出该面,否则不画出该面。
另外在框架类里对界面做了改动,去掉了工具栏和状态栏,并且改变了应用程序图标。
源代码

CForYuView::CForYuView()
{ SHU=TRUE;
yu[0]=TRUE;yu[1]=TRUE