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

上传人:无*** 文档编号:199044937 上传时间:2023-04-10 格式:DOC 页数:21 大小:403.50KB
收藏 版权申诉 举报 下载
计算机图形学课程设计报告_第1页
第1页 / 共21页
计算机图形学课程设计报告_第2页
第2页 / 共21页
计算机图形学课程设计报告_第3页
第3页 / 共21页
资源描述:

《计算机图形学课程设计报告》由会员分享,可在线阅读,更多相关《计算机图形学课程设计报告(21页珍藏版)》请在装配图网上搜索。

1、 计算机图形学课程设计报告 设计课题: 专业班级: 学 号: 学生姓名: 指导教师: 设计时间: 2018.12.06 中南林业科技大学涉外学院理工系 计算机图形学 课程设计任务书姓 名:尹志刚专 业:计算机科学与技术班 级:16级 3班指导教师:廖宁职 称:课程设计题目:细脚怪已知技术参数和设计要求:所需仪器设备:成果验收形式:课程设计报告(纸质) 程序运行效果图参考文献:时间安排指导教师: 廖宁 教研室主任: 2018年12月06 日注:本表下发学生一份,指导教师一份,栏目不够时请另附页。课程设计任务书装订于设计计算说明书(或论文)封面之后,目录页之前。目 录一 设计目的二 设计要求1.

2、构建基础类 2. 构建直线类 3. 构建变换类 4. 构建填充类 5. 构建光照类 三 开发环境四 详细设计五 源程序六 程序运行效果图七 总结 设计目的 培养对图形建模、变换、投影、消隐、光照原理的理解和应用。 培养图形类的编程能力。 培养计算机图形学应用软件开发的能力。设计要求 深入研究计算机图形学的生成原理,设计算法实现具体的类。1.构建基础类 实现CP2类绘制二维点;实现CP3类绘制三维点;实现CRGB类处理RGB颜色;实现CVector类处理矢量。2.构建直线类 实现CLine类绘制任意斜率的直线、实现CALine类绘制任意斜率的反走样直线、实现CCLine类绘制任意斜率的颜色渐变直

3、线、实现CACLine类绘制任意斜率的反走样颜色渐变直线。3.构建变换类 实现CTransForm完成二维和三维图形变换。4.构建填充类 实现CFill类使用有效边表算法填充多边形、实现CZBuffer类进行深度缓冲消隐,并使用Gouraud和Phong明暗处理填充图形面片。5.构建光照类 实现CLight类设置点光源、实现CMaterial类设置物体材质、实现CLighting类对物体实施光照。开发环境 Viusal C+ 6.0的MFC框架。详细设计1. 利用函数Ellipse画出人物的脸,并用给脸填充颜色。再利用Ara画出人物的嘴巴。CRect确定人物的眼睛,给眼睛填充颜色。利用画笔画出

4、人物的鼻子。2. 添加ddaline()成员函数,编写自定义的成员函数ddaline()程序,编写OnDraw()函数,画出人物的脚和脚趾。3. 添加星星star()成员函数,编写自定义的成员函数star()程序,确定五角星的位置、大小和颜色。4. 添加五环circle()成员函数,并利用colorcircle()函数给五环上色。5. 添加旗子flayA()、flayB()成员函数,确定旗杆的位置,用四点坐标设置旗子的范围,将星星和五环置于旗子中。源程序 / Yzg20166989View.cpp : implementation of the CYzg20166989View class/#

5、include stdafx.h#include Yzg20166989.h#include math.h#include Yzg20166989Doc.h#include Yzg20166989View.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CYzg20166989ViewIMPLEMENT_DYNCREATE(CYzg20166989View, CView)BEGIN_MESSAGE_MAP(CYzg20166989View, CView)/AFX_

6、MSG_MAP(CYzg20166989View)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see in these blocks of generated code!/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_

7、FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP()/ CYzg20166989View construction/destructionCYzg20166989View:CYzg20166989View()/ TODO: add construction code hereCYzg20166989View:CYzg20166989View()BOOL CYzg20166989View:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or s

8、tyles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CYzg20166989View drawingvoid CYzg20166989View:OnDraw(CDC* pDC)CYzg20166989Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here AfxGetMainWnd()-SetWindowText(20166989 尹志刚);graph(pDC,0,0);

9、CRect rect(200,120,430,350); CRect rect1(250,195,275,220); CRect rect2(355,195,380,220);CBrush nBrush(RGB(0,255,255),*pOldnBrush;pOldnBrush=pDC-SelectObject(&nBrush); pDC-Ellipse(200,120,430,350);pDC-SelectObject(pOldnBrush); CBrush Brush(RGB(0,0,0),*pOldBrush; pOldBrush=pDC-SelectObject(&Brush); pD

10、C-RoundRect(rect1,CPoint(200,200); pDC-RoundRect(rect2,CPoint(200,200); pDC-SelectObject(pOldBrush);CBrush mBrush(RGB(255,255,0),*pOldmBrush;pOldmBrush=pDC-SelectObject(&mBrush); pDC-Arc(250,275,380,355,295,285,335,285);pDC-SelectObject(pOldmBrush); CPoint p1(305,295),p2(325,295); CPen Pen,*pOldPen;

11、 Pen.CreatePen(PS_SOLID,3,RGB(0,0,0); pOldPen=pDC-SelectObject(&Pen); pDC-MoveTo(p1); pDC-LineTo(p2); pDC-SelectObject(pOldPen); pDC-SetTextColor(RGB(0,0,255); pDC-TextOut(225,20,同一个世界,同一个梦想);ddaline(pDC,225,305,225,450,RGB(255,0,0);ddaline(pDC,405,305,405,450,RGB(255,0,0);ddaline(pDC,225,450,225,46

12、0,RGB(0,0,0); ddaline(pDC,225,450,215,460,RGB(0,0,0);ddaline(pDC,225,450,235,460,RGB(0,0,0);ddaline(pDC,405,450,405,460,RGB(0,0,0);ddaline(pDC,405,450,395,460,RGB(0,0,0);ddaline(pDC,405,450,415,460,RGB(0,0,0); / CYzg20166989View printingBOOL CYzg20166989View:OnPreparePrinting(CPrintInfo* pInfo)/ def

13、ault preparationreturn DoPreparePrinting(pInfo);void CYzg20166989View:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CYzg20166989View:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CYzg20166989View diagn

14、ostics#ifdef _DEBUGvoid CYzg20166989View:AssertValid() constCView:AssertValid();void CYzg20166989View:Dump(CDumpContext& dc) constCView:Dump(dc);CYzg20166989Doc* CYzg20166989View:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CYzg20166989Doc);return (CYzg2016698

15、9Doc*)m_pDocument;#endif /_DEBUG/ CYzg20166989View message handlersvoid CYzg20166989View:ddaline(CDC *pDC, int x0, int y0, int x1, int y1, COLORREF color)int length,i;double x,y,dx,dy;length=abs(x1-x0);if(abs(y1-y0)length)length=abs(y1-y0);dx=(x1-x0)/length;dy=(y1-y0)/length;x=x0+0.5;y=y0+0.5;for(i=

16、1;iSetPixel(int)x,(int)y,color);x=x+dx;y=y+dy;void CYzg20166989View:flagA(CDC *pDC, int x, int y)CBrush redBrush(RGB(0xFF,0,0),yellowBransh(RGB(0xFF,0xff,0),woodBrash(RGB(180,180,180),*oldBrush;oldBrush=pDC-SelectObject(&redBrush);pDC-Rectangle(x+20,y+0,x+140,y+70);pDC-SelectObject(&woodBrash);pDC-R

17、ectangle(x+15,y+0,x+20,y+100);pDC-SelectObject(&yellowBransh);pDC-SetPolyFillMode(WINDING);star(pDC,x+40,y+20,10);star(pDC,x+60,y+13,6);star(pDC,x+62,y+30,6);star(pDC,x+55,y+43,6);star(pDC,x+40,y+48,6);pDC-SelectObject(oldBrush);void CYzg20166989View:flagB(CDC *pDC, int x, int y)CBrush woodBrash(RGB

18、(180,180,180),*oldBrush;pDC-Rectangle(x+85,y+0,x+205,y+70);oldBrush=pDC-SelectObject(&woodBrash);pDC-Rectangle(x+205,y+0,x+210,y+100);pDC-SelectObject(oldBrush);CPenp1(PS_SOLID,2,RGB(0x09,0x51,0xA0),p2(PS_SOLID,2,RGB(0x05,0x05,0x05),p3(PS_SOLID,2,RGB(0xFE,0x01,0x00),p4(PS_SOLID,2,RGB(0xFC,0xFD,0x04)

19、,p5(PS_SOLID,2,RGB(0x30,0xA0,0x2D);colorCircle(pDC,&p1,x+60+65,y+30,10);colorCircle(pDC,&p2,x+82+65,y+30,10);colorCircle(pDC,&p3,x+104+65,y+30,10);colorCircle(pDC,&p4,x+70+65,y+46,10);colorCircle(pDC,&p5,x+92+65,y+46,10);void CYzg20166989View:star(CDC *pDC, int x, int y, int r)CPoint stars5;const do

20、uble PI=3.1415926;double alpha=PI/10;double beta=2*PI/5;for(int i=0;iPolygon(starx,5);void CYzg20166989View: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 CYzg20166989View:circle(CDC *pDC, int x, int y, int

21、r, BOOL fill)if (fill=TRUE) CBrush newBrush,*oldBrush;newBrush.CreateSolidBrush(RGB(0X33,0X33,0X33);oldBrush=pDC-SelectObject(&newBrush);pDC-Ellipse(CRect(x-r,y-r,x+r,y+r);pDC-SelectObject(oldBrush);elsepDC-Ellipse(CRect(x-r,y-r,x+r,y+r);void CYzg20166989View:graph(CDC *pDC, int x, int y)flagA(pDC,x+360,y+42);flagB(pDC,x+40,y+44);程序运行效果图 总结通过课程设计项目的设计、开发、测试、总结和验收各阶段,深入理解计算机图形学课程中的理论和算法,学习计算机图形学相关类的编程技巧,初步掌握游戏开发的前期技能。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!