分享
分销 收藏 举报 申诉 / 20
播放页_导航下方通栏广告

类型计算机图形学专业课程设计方案报告.doc

  • 上传人:精***
  • 文档编号:2684888
  • 上传时间:2024-06-04
  • 格式:DOC
  • 页数:20
  • 大小:404.04KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    计算机 图形学 专业课程 设计方案 报告
    资源描述:
    计算机图形学 课程设计报告 设计课题: 专业班级: 学 号: 学生姓名: 指引教师: 设计时间: .12.06 中南林业科技大学涉外学院理工系 计算机图形学 课程设计任务书 姓 名: 尹志刚 专 业: 计算机科学与技术 班 级: 16级 3班 指引教师: 廖宁 职 称: 课程设计题目:细脚怪 已知技术参数和设计规定: 所需仪器设备: 成果验收形式:课程设计报告(纸质) 程序运营效果图 参照文献: 时间 安排 指引教师: 廖宁 教研室主任: 12月06 日 注:本表下发学生一份,指引教师一份,栏目不够时请另附页。 课程设计任务书装订于设计计算阐明书(或论文)封面之后,目录页之前。 目 录 一. 设计目…………………………………………………………… 二. 设计规定…………………………………………………………… 1. 构建基本类 …………………………………………………… 2. 构建直线类 …………………………………………………… 3. 构建变换类 …………………………………………………… 4. 构建填充类 …………………………………………………… 5. 构建光照类 …………………………………………………… 三. 开发环境………………………………………………………… 四. 详细设计 五. 源程序 六. 程序运营效果图 七. 总结 设计目 § 培养对图形建模、变换、投影、消隐、光照原理理解和应用。 § 培养图形类编程能力。 § 培养计算机图形学应用软件开发能力。 设计规定 进一步研究计算机图形学生成原理,设计算法实现详细类。 1.构建基本类 实现CP2类绘制二维点;实现CP3类绘制三维点;实现CRGB类解决RGB颜色;实现CVector类解决矢量。 2.构建直线类 实现CLine类绘制任意斜率直线、实现CALine类绘制任意斜率反走样直线、实现CCLine类绘制任意斜率颜色渐变直线、实现CACLine类绘制任意斜率反走样颜色渐变直线。 3.构建变换类 实现CTransForm完毕二维和三维图形变换。 4.构建填充类 实现CFill类使用有效边表算法填充多边形、实现CZBuffer类进行深度缓冲消隐,并使用Gouraud和Phong明暗解决填充图形面片。 5.构建光照类 实现CLight类设立点光源、实现CMaterial类设立物体材质、实现CLighting类对物体实行光照。 开发环境 Viusal C++ 6.0MFC框架。 详细设计 1. 运用函数Ellipse画出人物脸,并用给脸填充颜色。再运用Ara画出人物嘴巴。CRect拟定人物眼睛,给眼睛填充颜色。运用画笔画出人物鼻子。 2. 添加ddaline()成员函数,编写自定义成员函数ddaline()程序,编写OnDraw()函数,画出人物脚和脚趾。 3. 添加星星star()成员函数,编写自定义成员函数star()程序,拟定五角星位置、大小和颜色。 4. 添加五环circle()成员函数,并运用colorcircle()函数给五环上色。 5. 添加旗子flayA()、flayB()成员函数,拟定旗杆位置,用四点坐标设立旗子范畴,将星星和五环置于旗子中。 源程序 // Yzg6989View.cpp :implementation of the CYzg6989View class // #include "stdafx.h" #include "Yzg6989.h" #include "math.h" #include "Yzg6989Doc.h" #include "Yzg6989View.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CYzg6989View IMPLEMENT_DYNCREATE(CYzg6989View,CView) BEGIN_MESSAGE_MAP(CYzg6989View,CView) //{{AFX_MSG_MAP(CYzg6989View) // 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 commands ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CYzg6989View construction/destruction CYzg6989View::CYzg6989View() { // TODO:add construction code here } CYzg6989View::~CYzg6989View() { } BOOL CYzg6989View::PreCreateWindow(CREATESTRUCT& cs) { // TODO:Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CYzg6989View drawing void CYzg6989View::OnDraw(CDC* pDC) { CYzg6989Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO:add draw code for native data here AfxGetMainWnd()->SetWindowText("6989 尹志刚"); graph(pDC,0,0); 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); pDC->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; 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,460,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)); } ///////////////////////////////////////////////////////////////////////////// // CYzg6989View printing BOOL CYzg6989View::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CYzg6989View::OnBeginPrinting(CDC* /*pDC*/,CPrintInfo* /*pInfo*/) { // TODO:add extra initialization before printing } void CYzg6989View::OnEndPrinting(CDC* /*pDC*/,CPrintInfo* /*pInfo*/) { // TODO:add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CYzg6989View diagnostics #ifdef _DEBUG void CYzg6989View::AssertValid() const { CView::AssertValid(); } void CYzg6989View::Dump(CDumpContext& dc) const { CView::Dump(dc); } CYzg6989Doc* CYzg6989View::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CYzg6989Doc))); return (CYzg6989Doc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CYzg6989View message handlers void CYzg6989View::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=1;i<=length;i++) { pDC->SetPixel((int)x,(int)y,color); x=x+dx; y=y+dy; } } void CYzg6989View::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->Rectangle(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 CYzg6989View::flagB(CDC *pDC,int x,int y) { CBrush woodBrash(RGB(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); CPen p1(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)), 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 CYzg6989View::star(CDC *pDC,int x,int y,int r) { CPoint stars[5]; const double PI=3.1415926; double alpha=PI/10; double beta=2*PI/5; for(int i=0;i<5;i++) { stars[i].x=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 CYzg6989View::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 CYzg6989View::circle(CDC *pDC,int x,int y,int 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); }else{ pDC->Ellipse(CRect(x-r,y-r,x+r,y+r)); } } void CYzg6989View::graph(CDC *pDC,int x,int y) { flagA(pDC,x+360,y+42); flagB(pDC,x+40,y+44); } 程序运营效果图 总结 通过课程设计项目设计、开发、测试、总结和验收各阶段,进一步理解计算机图形学课程中理论和算法,学习计算机图形学有关类编程技巧,初步掌握游戏开发前期技能。
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:计算机图形学专业课程设计方案报告.doc
    链接地址:https://www.zixin.com.cn/doc/2684888.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork