欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    计算机图形学课程设计ZBuffer隐面算法的实现.docx

    • 资源ID:7223339       资源大小:60.08KB        全文页数:15页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机图形学课程设计ZBuffer隐面算法的实现.docx

    1、计算机图形学课程设计ZBuffer隐面算法的实现枣 庄 学 院信息科学与工程学院课程设计任务书 题 目: Z-Buffer隐面算法的实现 姓 名: 秦云 学 号: 201012110128 专业班级: 计算机科学与技术、2010级本1班 课 程: 计算机图形学 指导教师: 燕孝飞 职称: 讲 师 完成时间: 2012年 12 月-2013年 1 月枣庄学院信息科学与工程学院制2012年12 月30日课程设计任务书及成绩评定课程设计的任务和具体要求本次课程设计共分为2个部分。第一部分,通过本学期计算机图形学的学习,对计算机图形学的历史、发展、研究方向、以及涉及的知识原理进行概括性论述;第二部分,

    2、选取一个研究点,通过所学的计算机图形学知识来设计一个系统,该系统可以体现计算机图形学的思想和原理即可。指导教师签字: _ 日期: 指导教师评语成绩:_ 指导教师签字: 日期: 课程设计所需软件、硬件等 硬件环境:Iterl(R) Core(TM)2 Duo CPU,主频2.31GHz;内存3G; 硬盘320G以上;1024768显示分辨率 软件环境: Visual C+ 6.0课程设计进度计划起至日期工作内容备注2012.12.4-2012.12.152012.12.16-2012.12.302012.12.31-2013.1.5选取课题系统设计撰写报告参考文献、资料索引序号文献、资料名称编著

    3、者出版单位1孙家广.计算机辅助几何造型技术.北京:中国铁道出版社, 2007.86-1322唐泽圣等.三维数据场可视化.北京:清华大学出版社, 2005.106-1583吴建华.人机交互和多通道用户界面M.北京:科学出版社,2009,123-145目 录第1章 引言 1第2章 计算机图形学的发展历史 22.1 智能CAD 22.2计算机美术与设计 22.2.1 计算机美术的发展 22.3计算机动画艺术 32.3.1历史的回顾 32.4科学计算可视化 42.5虚拟现实 4第3章 计算机图形学的研究方向 6第4章 Z-Buffer隐面算法的相关原理 74.1 Z-Buffer隐面算法简介 74.2

    4、 Z-Buffer隐面算法程序 7第5章 系统设计的相关代码 85.1坐标设置函数的相应代码 85.2旋转角度函数相应代码 85.3多边形填充 9第6章 系统的运行效果 126.1运行主界面 126.2不同方向键的运行效果 13第7章 总结 16第1章 引言计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。为此,必须建立图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。所以计算机图形学与另一门学科计算机辅助设计有着密切的关系。事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时,真实感图形

    5、计算的结果是以数字图像的方式提供的,计算机图形学也就和图像处理有着密切的关系。真实感图形绘制过程中,由于投影变换失去了深度信息,往往导致图形的二义性。要消除这类二义性,就必须在绘制时消除被遮挡的不可见的线或面,习惯上称之为消除隐藏线和隐藏面,或简称为消隐,经过消隐得到的投影图称为物体的真实图形。计算机图形学狭义上是一种研究基于物理定律、经验方法以及认知原理,使用各种数学算法处理二维或三维图形数据,生成可视数据表现的科学。它是计算机科学的一个分支领域与应用方向,主要关注数字合成与操作视觉的图形内容。广义上来看,计算机图形学不仅包含了从三维图形建模、绘制到动画的过程,同时也包括了对二维矢量图形 以

    6、及图像视频融合处理的研究。 计算机图形学经过将近40年的发展,已进入了较为成熟的发展期。目前,其主要应用领域包括计算机辅助设计与加工,影视动漫,军事仿真,医学图像处理,气象、地质、财经和电磁等的科学可视化等。由于计算机图形学在这些领域的成功运用,特别是在迅猛发展的动漫产业中,带来了可观的经济效益。动漫产业是目前各国优先发展的绿色产业,具有高科技、高投入与高产出等特点。据统计,截至2009年3月,美国动画梦工厂所拍摄的三维动画片怪物史莱克II在预算为1.5亿美元的情况下,获得了超过9.2亿的全球累计票房。而我国在2008年度共制作完成的国产电视动画片249部,计131042分钟,与2007年度相

    7、比增加了近28%。另一方面,由于这些领域应用的推动,也给计算机图形学的发展提供了新的发展机遇与挑战。第2章 计算机图形学的发展历史2.1 智能CADCAD 的发展也显现出智能化的趋势,就目前流行的大多数CAD软件来看,主要功能是支持产品的后续阶段一一工程图的绘制和输出,产品设计功能相对薄弱,利用AutoCAD最常用的功能还是交互式绘图,如果要想进行产品设计,最基本的是要其中的AutoLis语言编写程序,有时还要用其他高级语言协助编写,很不方便。而新一代的智能CAD系统可以实现从概念设计到结构设计的全过程。例如,德国西门子公司开发的Sigraph Design软件可以实现如下功能:从一开始就可以

    8、用计算机设计草图,不必耗时费力的输入精确的坐标点,能随心所欲的修改,一旦结构确定,给出正确的尺寸即得到满意的图纸;这个软件中具有关系数据结构,当你改变图纸的局部,相关部分自动变化,在一个视图上的修改,其他视图自动修改,甚至改变一个零件图,相关的其它零件图以及装配图的相关部分自动修改:在各个专业领域中,有一些常用件和标准件,因此,希望有一个参数化图库。而Sigraph不用编程只需画一遍图就能建成自己的图库;Sigraph还可以实现产品设计的动态模拟用于观察设计的装置在实际运行中是否合理等等。智能CAD的另一个领域是工程图纸的自动输入与智能识别,随着CAD技术的迅速推广应用,各个工厂、设计院都需将

    9、成千上万张长期积累下来的设计图纸快速而准确输入计算机,作为新产品开发的技术资料。多年来,CAD 中普遍采用的图形输入方法是图形数字化仪交互输入和鼠标加键盘的交互输入方法很难适应工程界大量图纸输入的迫切需要。因此, 基于光电扫描仪的图纸自动输入方法已成为国内外CAD工作者的努力探索的新课题。但由于工程图的智能识别涉及到计算机的硬件、计算机图形学、模式识别及人工智能等高新技术内容,使得研究工作的难点较大。工程图的自动输入与智能识别是两个密不可分的过程,用扫描仪将手绘图纸输入到计算机后,形成的是点阵图象。2.2计算机美术与设计2.2.1 计算机美术的发展 1952年美国的Ben Laposke用模拟

    10、计算机做的波型图电子抽象画预示着电脑美术的开始(比计算机图形学的正式确立还要早)。计算机美术的发展可分为三个阶段: (1)早期探索阶段(1952 1968年)主创人员大部分为科学家和工程师,作品以平面几何图形为主。1963年美国计算机与自动化杂志开始举办年度“计算机美术比赛”。 代表作品:1960年Wiuiam Ferrter为波音公司制作的人体工程学实验动态模拟模拟飞行员在飞机中各种情况;1963年Kenneth Know Iton的打印机作品裸体。1967年日本GTG小组的回到方块。 (2)中期应用阶段(1968年1983年)以1968年伦敦第一次世界计算机美术大展一“控制论珍宝 (Cyb

    11、ernehic Serendipity1为标志,进入世界性研究与应用阶段;计算机与计算机图形技术逐步成熟, 一些大学开始设置相关课题, 出现了一些CAD应用系统和成果, 三维造型系统产生并逐渐完善。代表作品:1983年美国IBM 研究所Richerd Voss设计出分形山。(3)应用与普及阶段(1984年现在)以微机和工作站为平台的个人计算机图形系统逐渐走向成熟, 大批商业性美术(设计)软件面市; 以苹果公司的MAC 机和图形化系统软件为代表的桌面创意系统被广泛接受,CAD成为美术设计领域的重要组成部分。代表作品:1990年Jefrey Shaw的交互图形作品“易读的城市f The legib

    12、le city”。2.3计算机动画艺术2.3.1历史的回顾 计算机动画技术的发展是和许多其它学科的发展密切相关的。计算机图形学、计算机绘画、计算机音乐、计算机辅助设计、电影技术、电视技术、计算机软件和硬件技术等众多学科的最新成果都对计算机动画技术的研究和发展起着十分重要的推动作用50年代到60年代之间,大部分的计算机绘画艺术作品都是在打印机和绘图仪上产生的。一直到60年代后期,才出现利用计算机显示点阵的特性,通过精心地设计图案来进行计算机艺术创造的活动。 70年代开始计算机艺术走向繁荣和成熟 1973 年,在东京索尼公司举办了“首届国际计算机艺术展览会”80年代至今,计算机艺术的发展速度远远超

    13、出了人们的想象 在代表计算机图形研究最高水平的历届SIGGRAPH年会上,精彩的计算机艺术作品层出不穷。另外,在此期间的奥斯卡奖的获奖名单中,采用计算机特技制作电影频频上榜,大有舍我其谁的感觉。在中国,首届计算机艺术研讨会和作品展示活动于1995年在北京举行。它总结了近年来计算机艺术在中国的发展,对未来的工作起到了重要的推动作用。 2.3.2在电影特技中的应用计算机动画的一个重要应用就是制作电影特技 可以说电影特技的发展和计算机动画的发展是相互促进的。1987年由著名的计算机动画专家塔尔曼夫妇领导的MIRA 实验室制作了一部七分钟的计算机动画片相会在蒙特利尔 再现了国际影星玛丽莲梦露的风采。1

    14、988年,美国电影谁陷害了兔子罗杰 (Who Framed Roger Rabbit?)中二维动画人物和真实演员的完美结合,令人瞠目结舌、叹为观止 其中用了不少计算机动画处理。1991年美国电影终结者II:世界末日展现了奇妙的计算机技术。此外,还有侏罗纪公园(Jurassic Park)、狮子王、玩具总动员(Toy Story)等。2.4科学计算可视化科学计算的可视化是发达国家八十年代后期提出并发展起来的一门新兴技术,它将科学计算过程中及计算结果的数据转换为几何图形及图象信息在屏幕上显示出来并进行交互处理,成为发现和理解科学计算过程中各种现象的有力工具。 1987年2月英国国家科学基金会在华盛

    15、顿召开了有关科学计算可视化的首次会议。会议一致认为“将图形和图象技术应用于科学计算是一个全新的领域” 科学家们不仅需要分析由计算机得出的计算数据,而且需要了解在计算机过程中数据的变化。会议将这一技术定名为“科学计算可视化(Visualization in Scientific Computing)”。科学计算可视化将图形生成技术图象理解技术结合在一起, 它即可理解送入计算机的图象数据也可以从复杂的多维数据中产生图形。它涉及到下列相互独立的几个领域:计算机图形学、图象处理、计算机视觉、计算机辅助设计及交互技术等。科学计算可视按其实现的功能来分,可以分为三个档次:(1)结果数据的后处理;(2)结果

    16、数据的实时跟踪处理及显示;(3)结果数据的实时显示及交互处理。2.5虚拟现实“虚拟现实”(Virtual Reality)- 词是由美国喷气推动实验室(VPL)的创始人拉尼尔(Jaron Lanier)首先提出的 在克鲁格(Myren Kruege)70年代中早期实验里被称为 人工现实”(Artificial reality);而在吉布森(William Gibson)l984 年出版的科幻小说Neuremanccr里,又被称为“可控空间”(Cyberspaee)。虚拟现实, 也育人称之为虚拟环境(Virtual Environment)是美国国家航空和航天局及军事部门为模拟而开发的一门高新技

    17、术 它利用计算机图形产生器,位置跟踪器,多功能传感器和控制器等有效地模拟实际场景和情形,从而能够使观察者产生一种真实的身临其境的感觉虚拟环境由硬件和软件组成,硬件部分主要包括:传感器(Sensors)、印象器(Efeeter)和连接侍感器与印象器 产生模拟物理环境的特殊硬件。利用虚拟现实技术产生虚拟现实环境的软件需完成以下三个功能:建立作用器(Actors)以及物体的外形和动力学模型:建立物体之间以及周围环境之间接照牛顿运动定律所决定的相互作用;描述周围环境的内容特性 。虚拟现实技术主要研究用计算机模拟(构造)三维图形空间,并使用户能够自然地与该空间进行交互。它涉及很多科学的知识,对三维图形处

    18、理技术的要求特别高。简单的虚拟现实系统早在70年代便被应用于军事领域,训练驾驶员。80年代后随着计算机软硬件技术的提高,它也得到重视并迅速发展。目前它已在航空航天、医学、教育、艺术、建筑等领域得到初步的应用。例如,1997年7月,美国航天局的旅居者号火星车着陆距地球约1.9亿公里的火星。这辆在火星表面缓慢爬行的小车中并没有驾驶员,它是由地球上的工程师通过虚拟现实系统操纵的。第3章 计算机图形学的研究方向计算机图形学经过将近40年的发展,已进入了较为成熟的发展期。目前,其主要应用领域包括计算机辅助设计与加工,影视动漫,军事仿真,医学图像处理,气象、地质、财经和电磁等的科学可视化等。由于计算机图形

    19、学在这些领域的成功运用,特别是在迅猛发展的动漫产业中,带来了可观的经济效益。动漫产业是目前各国优先发展的绿色产业,具有高科技、高投入与高产出等特点。 从计算机图形学目前学科发展来看,有以下几个发展趋势: (1)与图形硬件的发展紧密结合,突破实时高真实感、高分辨率渲染的技术难点。(2) 研究和谐自然的三维模型建模方法。(3) 利用日益增长的计算性能,实现具有高度物理真实的动态仿真。(4) 研究多种高精度数据获取与处理技术,增强图形技术的表现。(5) 计算机图形学与图像视频处理技术的结合。(6) 从追求绝对的真实感向追求与强调图形的表意性转变第4章 Z-Buffer隐面算法的相关原理4.1 Z-B

    20、uffer隐面算法简介 在这个算法里,不仅需要有帧缓存来存放每个像素的颜色值,还需要有一个深度缓存来存放每一个像素的深度值。Z缓冲器中每个单元的值是对应像素点所反映对象的z坐标值,初值取z的极小值;帧缓冲器每个单元的初值可放对应背景颜色的值。图形消隐的过程就是给帧缓冲器和Z缓冲器中相应过程填值得过程。在把显示对象的每个面上每一点的属性(颜色或灰度)值填入帧缓冲器相应单元前,要把这点的z坐标值和Z缓冲器中相应单元的值进行比较,只有前者大于后者时才改变帧缓冲器的该单元的值,同时Z缓冲器中相应单元的值也要改成这点的z坐标值。如果这点的z坐标值小于Z缓冲器中的值,则说明对应像素已经显示了对象上一个点的

    21、属性,改点要比考虑的点更接近观察点。对显示对象的每个面上的每个点都进行上述处理后,便可得到消隐了隐藏面的图。4.2 Z-Buffer隐面算法程序 Z-Buffer() 帧缓存全置为背景色; 深度缓存全置为最小Z值; for(每一个多边形) 扫描转换该多边形; for(该多边形所覆盖的每个像素(x,y) 计算该多边形在该像素的深度值Z(x,y) ; if (Z(x,y)大于Z缓存在(x,y)的值) 把Z(x,y)存入Z缓存中的(x,y); 把多边形在(x,y)处的颜色值存入帧缓存的(x,y)处; Z-Buffer算法在像素级上以近物取代远物,形体在屏幕上的出现顺序是无关紧要的,这种取代算法有利于

    22、硬件实现。第5章 系统设计的相关代码5.1坐标设置函数的相应代码该函数代码如下:void CTestView:ZBuffer( CRect Rect; GetClientRect(&Rect); CClientDC dc(this); dc.SetMapMode(MM_ANISOTROPIC);/自定义坐标系 dc.SetWindowExt(Rect.Width(),Rect.Height(); dc.SetViewportExt(Rect.right,-Rect.bottom);/x轴垂直向右,y轴垂直向上 dc.SetViewportOrg(Rect.right/2,Rect.bottom

    23、/2);/屏幕中心为圆心 CDC MemDC; MemDC.CreateCompatibleDC(GetDC(); MemDC.SetMapMode(MM_ANISOTROPIC); MemDC.SetWindowExt(Rect.Width(),Rect.Height(); MemDC.SetViewportExt(Rect.right,-Rect.bottom); MemDC.SetViewportOrg(Rect.right/2,Rect.bottom/2); CBitmap Bitmap,*OldBitmap; Bitmap.LoadBitmap(IDB_BITMAP2); OldBi

    24、tmap=MemDC.SelectObject(&Bitmap); MemDC.BitBlt(-Rect.right/2,-Rect.bottom/2,Rect.Width(),Rect.Height(),&Picture,-Rect.right/2,-Rect.bottom/2,SRCCOPY); m_Paint(&MemDC); dc.BitBlt(-Rect.right/2,-Rect.bottom/2,Rect.right,Rect.bottom,&MemDC,-Rect.right/2,-Rect.bottom/2,SRCCOPY); MemDC.SelectObject(OldBi

    25、tmap);5.2旋转角度函数相应代码该函数代码如下:void CTestView:Angle()/将Boxx方向旋转m_AngleX度,y方向旋转m_AngleY度 for(int i=0;inext)/访问所有桶结点 for(CurrentE=CurrentB-p;CurrentE!=NULL;CurrentE=CurrentE-next)/访问桶中排序前的边结点 Edge *TEdge=new Edge; TEdge-x=CurrentE-x; TEdge-yMax=CurrentE-yMax; TEdge-k=CurrentE-k; TEdge-next=NULL; AddAet(TE

    26、dge);/将该边插入临时Aet表 AetOrder();/使得Aet表按照x递增的顺序存放 T1=HeadE;/根据ymax抛弃扫描完的边结点 if(T1=NULL) return; while(CurrentB-ScanLine=T1-yMax)/放弃该结点,Aet表指针后移 T1=T1-next; HeadE=T1; if(HeadE=NULL) return; if(T1-next!=NULL) T2=T1; T1=T2-next; while(T1!=NULL) if(CurrentB-ScanLine=T1-yMax)/跳过一个结点 T2-next=T1-next; T1-next=NULL; T1=T2-next; else T2=T1; T1=T2-next; BOOL In=false;/设置一个BOOL变量In,初始值为假 double xb,xe;/扫描线的起点和终点 for(T1=HeadE;T1!=NULL;T1=T1-next)/填充扫描线和多边形相交的区间 if(In=false) xb=T1-x; CurDeep=-(xb*A+CurrentB-ScanLine*B+D)/C;/z=-(Ax+By-D)/C In=true;/每访问一个结点,把In值取反一次 else/如果In值为真,则填充从当前结


    注意事项

    本文(计算机图形学课程设计ZBuffer隐面算法的实现.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开