计算机图形学报告
计算机图形学大作业报告
课程名称: 计算机图形学 姓 名:
学 号:
组 员:
任课教师:
成 绩:
1 引言
1.1 编写目的
本学期计算机图形学课程期末大作业主要的开发项目就是基于MFC的基本图形的绘制、填充、变换,以及直线的裁剪。实现语言VC++,编辑、调试环境VC++6.0。此次大作业的完成是对计算机图形学基础知识的检验和测试,在撰写报告的过程中我能够更深刻地了解计算机图形学算法的思想,通过这份文档来记录我们在开发此软件的过程中遇到的问题以及改善的方法。现在对整个开发过程加以认识、记录和总结,留下经验,汲取教训。为以后的其他工作留下经验资料,为以后遇到相同的问题和从事类似项目奠定坚实的基础。
1.2 任务分工
xx:实现直线,圆,扫描线填充的算法。 xx:椭圆,裁剪。
xx:四连通种子填充,变换算法。
2 程序框架
2.1 程序模块
本系统是一个基于MFC开发的实现能够进行人机交互的基本图形的绘制、填充、变换,以及直线的裁剪的系统。本系统中的功能模块主要分为以下几种: 基本图形绘制模块:实现直线、矩形、圆、椭圆的绘制及填充功能。
基本图形变换模块:实现直线、正三角形、矩形的平移、比例、旋转变换功能。 基本图形裁剪模块:实现直线的裁剪功能。
程序框架如图2-1所示。
图2-1 程序框架图
2.2 程序功能接口
接口名称:void CMyView::seed (int x,int y, int oldcolor,int newcolor) 功能说明:实现四连通种子填充。 参数说明:x,y:种子坐标;
oldcolor:背景颜色; newcolor:线的颜色。
接口名称:void CMyView::OnPy() 功能说明:实现平移。
接口名称:void CMyView::OnXz() 功能说明:实现旋转。
接口名称:void CMyView::OnSf() 功能说明:实现缩放。
3 主要算法描述
四连通的种子填充算法:
种子填充算法的基本思想是给定区域G一种子点(x,y),首先判断该点是否是区域内的一点,如果是,则将该点周围的四个点作为新的种子点进行同样的处理,通过这种扩散完成对整个区域的填充。 算法实现:可以利用递归的思想实现算法;如下:
void CMyView::seed (int x,int y, int oldcolor,int newcolor)//四连通种子填充算 {
CDC* pDC=GetDC();
int color,c1,c2,c3,c4; color=pDC->GetPixel(x,y); if (color==oldcolor)
{
pDC->SetPixel(x,y,newcolor);
c1=pDC->GetPixel(x, y+1); c2=pDC->GetPixel(x, y-1); c3=pDC->GetPixel(x+1, y); c4=pDC->GetPixel(x-1, y); if(c1!=newcolor)
seed (x, y+1,oldcolor, newcolor);
if(c2!=newcolor)
seed (x, y-1,oldcolor, newcolor)
if(c3!=newcolor)
seed (x+1, y,oldcolor, newcolor); if(c4!=newcolor)
seed (x-1, y,oldcolor, newcolor);
}
ReleaseDC (pDC);
}
我们采用一个矩阵类(Matrix)来保存矩阵和实现矩阵的操作,类如下:
class Matrix //二维变换矩阵类 { public: Matrix (int , int);
Matrix (int, int, bool); Matrix (float, float); Matrix (float);
int getx () { return int( matrix[0][0] ); } //得到x坐标 int gety () { return int( matrix[1][0] ); } //得到y坐标
virtual ~Matrix();
Matrix operator * ( Matrix& ); //重载"*"操作符
private: };
其中Matrix(int ,int )用来构造二维矩阵坐标;Matrix(int ,int ,bool )用来构造二维平移矩阵;Matrix(float,float)构造二维放缩矩阵;Matrix(float)构造二维旋转矩阵;Matrix operator *(Matrix&)用于矩阵之间的运算; 平移算法:
思想:先用Matrix(int x,int y)来保存关键点的坐标矩阵,用Matrix(int,int,bool)来保存平移矩阵,然后通过两个矩阵相乘进行平移变换,代码如下: void CMyView::OnPy() { }
// TODO: Add your command handler code here flag=11; OnClear();
Matrix a(200,180),b(5,5,true);
int i,r1=100,r2=70,white=RGB(255,255,255); midellispse(a.getx(),a.gety(),r1,r2,COLOR); for(i=0;i<50;i++){ } }
::Sleep(100-i*2);
midellispse(a.getx(),a.gety(),r1,r2,white); a=b*a;
midellispse(a.getx(),a.gety(),r1,r2,COLOR); int m,n; //维数 double matrix[3][3];
放缩算法:
算法思想:先用Matrix(int x,int y)来保存关键点的坐标矩阵,用Matrix(float,float)来保存放缩矩阵,然后通过两个矩阵相乘进行放缩变换; 旋转算法:
算法思想:算法思想:先用Matrix(int x,int y)来保存关键点的坐标矩阵,用Matrix(float)来保存旋转矩阵,然后通过两个矩阵相乘进行旋转变换;
3
}
创新技术
3.1 双缓冲技术
在图像绘制的过程中,过于频繁地刷新,屏幕势必会出现闪烁的现象,CPU时问占用率相当高,绘图的效率极低,甚至会导致程序崩溃。双缓冲技术指的就是在绘图时除了在屏幕上有图形进行显示外,在内存中也有图形在绘制。把要显示的图形先在内存中绘制好,然后再一次性的将内存中的图形按照一个图形按照一个点一个点地覆盖到屏幕上去(这个过程非常快,因为是非常规整的内存拷贝)。这样在内存中绘图时,随便用什么反差大的背景色进行清除都不会闪,因为并不是在屏幕上直接操作。当贴到屏幕上时,因为内存中最终的图形与屏幕显示图形差别很小,这样看起来就不会闪了。
4 运行情况
4.1 基本图形绘制模块
四连通种子填充绘制如下图所示:
平移绘制如下图所示:
放缩绘制如下图所示:
旋转绘制如下图所示:
5 总结
本学期计算机图形学课程期末大作业主要的开发项目就是基于MFC的基本图形的绘制、填充、变换,以及直线的裁剪。在大作业的完成过程中,我们遇到了很多困难。例如怎样更好地实现人机交互,怎样在绘图的过程中避免闪烁,经过同组同学的讨论和合作,在大作业中我们引入了双缓冲技术来有效地解决了问题。同时,对计算机图形学的算法思想有了更深刻的体会。由于时间有限,在大作业中仍存在一些不足。
参考文献:
[1] 张彩明,杨兴强,李学庆等. 计算机图形学[M].北京:科学出版社,2008.71-74.
…… 此处隐藏:1482字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教学研究]2012西拉科学校团少队工作总结
- [教学研究]建筑工程公司档案管理制度
- [教学研究]小学数学人教版六年级上册圆的周长和面
- [教学研究]ERP电子行业解决方案
- [教学研究]钢支撑租赁合同范本
- [教学研究]预应力自动张拉系统用户手册Rev1.0
- [教学研究]MOOC课程:金瓶梅人物写真(每章节课后
- [教学研究]追加被执行人申请书(适用追加夫妻关系)
- [教学研究]2014年驾考科目一考试最新题库766
- [教学研究]2013-2014学年度九年级物理第15章《电
- [教学研究]新版中日交流标准日本语初级下26课-客
- [教学研究]小导管注浆施工作业指导书
- [教学研究]一般财务人员能力及人岗匹配评估表
- [教学研究]打1.2.页 小学一年级暑假口算100以内加
- [教学研究]学习贯彻《中国共产党党和国家机关基层
- [教学研究]2012年呼和浩特市中考试卷_35412
- [教学研究]最简易的电线电缆购销合同范本
- [教学研究]如何开展安全标准化建设
- [教学研究]工作分析与人岗匹配
- [教学研究]2016-2017学年高中历史第七单元现代中
- 山东省义务教育必修地方课程小学三年级
- 台湾宜兰大学互联网交换技术课程 01_In
- 思想品德:第一课《我知我家》课件(人
- SAR合成孔径雷达图像点目标仿真报告(附
- 利辛县“十三五”规划研究报告
- 2015-2020年中国手机APP行业市场发展趋
- 广告策略、创意表现、媒体方案
- 企业如何申请专利的的几点思考
- 《中国教育简史》网上作业
- 高中历史第二单元西方人文精神的起源及
- 年终晚会必备_精彩的主持稿_精心整理_
- 信息工程专业自荐书
- 2019高考历史人教版一轮练习:第十二单
- JAVA俱乐部管理系统软件需求规格说明书
- 2016-2021年中国小型板料折弯机行业市
- (人教新课标)六上_比的基本性质课件PPT
- 辽宁省公务员考试网申论备考技巧:名言
- 神经阻滞麻醉知情同意书
- 施工企业信息填报、审核和发布的相关事
- 初一(七年级)英语完形填空100篇




