




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 double PI=3.1415926;double alpha=PI/10;double beta=2*PI/5;for(int i=0;iPolygon(s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租赁房屋合同范本续租
- 室内水泥漆合同范本
- 宾馆培训会议合同范本
- 6的乘法口诀(教学设计)-2024-2025学年人教版数学二年级上册
- 8 冀中的地道战(教学设计)-2024-2025学年统编版语文五年级上册
- 9 我心中的“110”(教学设计)统编版道德与法治三年级上册
- 2025年顺酐酸酐衍生物项目发展计划
- 1《神州谣》教学设计-2023-2024学年语文二年级下册统编版
- 托管班合作协议书
- 门禁改造合同范本
- 披萨制作流程
- 厦门2025年福建厦门市公安文职人员服务中心招聘17人笔试历年参考题库附带答案详解
- 2025年高三历史教学工作计划
- 《职业性肌肉骨骼疾患的工效学预防指南 》
- 不同产地筠连红茶风味化学成分差异分析
- DB50 577-2015 汽车整车制造表面涂装大气污染物排放标准
- 生态安全课件
- 大学英语(西安欧亚学院)知到智慧树章节测试课后答案2024年秋西安欧亚学院
- 【化学】高中化学手写笔记
- 胆管恶性肿瘤护理查房课件
- 电烤箱的使用方法ppt
评论
0/150
提交评论