计算机图形学课程设计报告

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

}

程序运行效果图

总结

通过课程设计项目的设计、开发、测试、总结和验收各阶段,

深入理解计算机图形学课程中的理论和算法,学习计算机图形学相关类的编程技巧,初步掌握游戏开发的前期技能。

相关文档
最新文档