计算机图形学课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
■
1
计算机图形学
课程设计报告
设计课题: 专业班级: 学号: 学生姓名: 指导教师: 设计时间:
中南林业科技大学涉外学院理工系
课程设计题目:细脚怪 已知技术参数和设计要求: 所需仪器设备:
成果验收形式:课程设计报告(纸质) 程序运行效果图
参考文献:
2018年12月06日
注:本表下发学生一份,指导教师一份,栏目不够时请另附页。 课程设计任务书装订于设计计算说明书(或论文)封面之后,目录页之前。
教研室主任:
时间 安排
指导教师:廖宁 计算机图形学
课程设计任务书 姓 名: 尹志刚
专业: 计算机科学 与技术 班级: 16级3班 指导教师:
廖宁 职称:
目录
•设计目的 ......
*
■ •
设计要求 ......
1. 构建基础类
2. 构建直线类
3. 构建变换类
4. 构建填充类
5. 构建光照类
•
开发环境 ......
四.详细设计
五.源程序
、亠六.程序运行效果图
七.总结
培养对图形建模、变换、投影、消隐、光照原理的理解和应用。
培养图形类的编程能力。
培养计算机图形学应用软件开发的能力。
深入研究计算机图形学的生成原理,设计算法实现具体的类。
1.构建基础类
实现CP2类绘制二维点;实现CP3类绘制三维点;实现CRGB
类处理RGB颜色;实现CVector类处理矢量。
2.构建直线类
实现CLine类绘制任意斜率的直线、实现CALine类绘制任意
斜率的反走样直线、实现CCLine类绘制任意斜率的颜色渐变直线、
实现CACLine类绘制任意斜率的反走样颜色渐变直线。
3.构建变换类
实现CTransForm完成二维和三维图形变换。
4.构建填充类
实现CFill类使用有效边表算法填充多边形、实现CZBuffer 类进行深度缓冲消隐,并使用Gouraud和P ho ng明暗处理填充图形
面片。
培养对图形建模、变换、投影、消隐、光照原理的理解和应用。
5.构建光照类
实现 CLight 类设置点光源、实现 CMaterial 类设置物体材质、
实现 CLighting 类对物体实施光照。
开发环境
Viusal C++ 的 MFC 匡架。
详细设计
利用函数 Ellipse 画出人物的脸,并用给脸填充颜色。再 利用 Ara 画出人物的嘴巴。 CRect 确定人物的眼睛,给眼 睛填充颜
色。利用画笔画出人物的鼻子。
添加 ddaline ( )成员函数,编写自定义的成员函数 ddaline
()程序,编写OnDraw ()函数,画出人物的脚和脚趾。
3. 添加星星 star ()成员函数,编写自定义的成员函数 star
)程序,确定五角星的位置、大小和颜色。
4. 添加五环 circle ()成员函数,并利用 colorcircle ()
函数给五环上色。
5. 添加旗子 flayA () 、 flayB () 成员函数,确定旗杆的位置,
用四点坐标设置旗子的范围,将星星和五环置于旗子中。
1.
2.
源程序
=ceil(r*cos(i*beta+alpha))+x;
stars[i].y=ceil(r*sin(i*beta+alpha))+y;
CPoint starx[5]={
stars[0], stars[2], stars[4], stars[1], stars[3], };
pDC->Polygon(starx,5);
void CYzgView::colorCircle(CDC *pDC, CPen*pen, int x, int y, int r)
CPen *old;
old=pDC->SelectObject(pen);
circle(pDC,x,y,r,FALSE);
pDC->SelectObject(old);
}
void CYzgView::circle(CDC *pDC, int x, int y, int r, BOOLfill)
if (fill==TRUE) {
CBrush newBrush,*oldBrush;
(RGB(0X33,0X33,0X33));
oldBrush=pDC->SelectObject(&newBrush);
pDC->Ellipse(CRect(x-r,y-r,x+r,y+r));
pDC->SelectObject(oldBrush);
}else{
pDC->Ellipse(CRect(x-r,y-r,x+r,y+r));
void CYzgView::graph(CDC *pDC, int x, int y)
flagA(pDC,x+360,y+42);
flagB(pDC,x+40,y+44);
}
程序运行效果图
总结
通过课程设计项目的设计、开发、测试、总结和验收各阶段,
深入理解计算机图形学课程中的理论和算法,学习计算机图形学相关类的编程技巧,初步掌握游戏开发的前期技能。