计算机图形学结课论文

时间:2019-05-14 10:24:40下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《计算机图形学结课论文》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《计算机图形学结课论文》。

第一篇:计算机图形学结课论文

计算机图形学结课论文

——计算机图形学在虚拟现实领域的应用

姓 名:班 级:学 号:系 部:环境与市政工程系

xxxx

xx给水排水工程x班 xxxxx 前言摘要:随着计算机图形学的不断发展和进步,他的应用领域也越来越广泛和深入,本文先介绍什么是虚拟世界,再将其在虚拟世界领域的应用作全面的介绍和举例。时代在进步,科学在发展,若你还不知道计算机图形学在虚拟世界的应用价值,那么请认真阅读此文,本文将让你走进科学的暴风。

正文:

虚拟现实(virtual reality,VR)是一项崛起于二十世纪八十年代末九十年代初的高新技术、实用技术。它是利用计算机软硬件以及各种传感器构成三维信息的人工环境——虚拟环境,从而真实地模拟现实世界中可以实现的(甚至是不可实现的)物理上的、功能上的事物和环境。

作为一项综合技术,虚拟现实技术主要涉及到计算机技术、传感器技术和人工智能等领域。如前所述,虚拟现实的主要目的在于提供虚拟环境,并在虚拟环境中实现用户和环境的互动,从这个角度上说,虚拟现实主要有三个方面的含义:首先借助虚拟现实技术生成虚拟实体,虚拟实体主要是针对用户的生理感觉(视、听、触、嗅等)而言;其次,用户可以通过人的生理的自然技能同这个环境交互,人的生理的自然技能主要是头部、眼球的转动,身体四肢、躯干的运动等人体力学运动;最后虚拟现实技术主要利用传感器完成人和虚拟环境的交 互。

我们可以说,虚拟现实的基础是对环境的虚拟,而对环境的虚拟又主要基于计算机图形学运用。近年来计算机图形学的发展对虚拟现实技术极大的推动作用,也说明了计算机图形学在虚拟现实技术领域中的主要领导地位。

它主要具备四个重要特征:

一、多感知性:即虚拟现实能多维感知,不仅包括视觉,还包括听觉,触觉和嗅觉等;

二、存在感:即临场感,指用户感到存在于虚拟环境中的真实度;

三、四、交互性:指用户和环境的双向交流;

自主性:指虚拟环境中物体根据物理定律运动的程度。

虚拟现实的技术因素主要包括图形图像的处理、语音处理与音响、模式识别、人工智能、智能借口、传感器、实时分布系统和数据库技术等。典型的虚拟现实系统的基本组成主要包括:

一、效果产生器:完成人与虚拟环境交互的硬件接口装置;

二、实景仿真器:系统的核心部分,由计算机软件系统、软件开发工具等组成;

三、应用系统:面向具体问题的软件部分,描述仿真的具体内容;

四、集合构造系统:提供描述仿真对象的物理特性的信息。

在这几个基本组成中,计算机图形学理论作为基础理论无疑都发挥着巨大的作用。

在虚拟现实系统中,为了使人和计算机能够融洽的交互,让人 沉浸到虚拟环境中去,必须配备相应的硬件设备。

首先是跟踪系统,它的主要任务是实时检测出虚拟现实系统中的人体各部位的空间坐标和指向,并将这些数据反馈给控制系统,生产随视线变化的图像。跟踪系统主要包括:电磁跟踪系统、声学跟学跟踪系统和光踪系统。

其次是触觉系统,在用户与虚拟环境产生接触的环节,触觉系统产生沉浸效果,使用户可以感觉到虚拟物体的反作用力。

第三是音频系统,由语音与音响合成设备、识别设备和声源定位设备构成,通过听觉通道提供的辅助信息可以加强拥护对环境的感知。

再有就是图像生成和显示系统,它的主要作用是:计算生成真实感的图形;计算生成或取得有真实感的背景图像;将图形和背景统一安排在同一坐标系中。图像生成和显示系统是虚拟环境系统的重要组成部分,也凸显出计算机图形学在虚拟现实技术中的重要地位。

最后就是可视化显示设备,它集上述四种技术于一体,并结合了人类感知的生理特点。

从虚拟现实系统的组成可以看出,虚拟现实系统在本质上也是一类仿真系统,是一种与计算机图形学的理论与技术密切相关的仿真系统。一般意义上的仿真是指通过对给定模型进行计算,最后给出一系列的数据,这就是数字仿真;通过计算机图形学的理论和技术,为数字仿真过程及结果增加图形、图像和动画表现,使得仿真过程更加直观,结果更容易理解,并能验证仿真过程是否正确,这便是可视化仿真。虚拟现实是一种可以创建和体验虚拟世界的计算机系统,虚拟世界是全体虚拟环境或给定仿真对象的全体,而对对象的仿真主要是视觉上的刻画,这就给计算机图形学提供了广阔的应用平台。建立在计算机图形学理论和技术之上并通过其他途径完善的虚拟现实系统,与一般交互式仿真系统相比,具有更高的真实性和多维性。

由于计算机图形学理论的发展和进步,使得虚拟现实系统对对象的刻画更为深刻,从而推动了虚拟现实技术在教育、医疗、娱乐、科技、工业制造、建筑和商业等领域中的广泛应用。

近年来在城市规划,室内设计,文物保护,交通模拟,虚拟现实游戏,工业设计,远程教育等方面都取得了巨大的发展,虚拟无限相信,这是不可逆转的趋势,并且会运用更加广泛。1:城市规划

在城市规划中经常会用到VR技术,用VR技术不仅能十分直观的表现虚拟的城市环境,而且能很好的模拟各种天气情况下的城市,而且可以一目了然的了解排水系统,供电系统,道路交通,沟渠湖泊等等。而且能模拟飓风、火灾、水灾、地震等自然灾害的突发情况。对于政府在城市规划的工作中起到了举足轻重的作用。2:室内设计

在室内设计应用方面,用VR技术不仅能十分完美的表现室内的环境,而且能在三维的室内空间中自由行走。目前业内常用VR技术做室内360度全景展示和室内漫游,受到一致好评,而且不仅能在室内漫游,还能用VR技术做预装修系统,可以实现即时动态的对墙壁的颜色进 行更换或贴上不同材质的墙纸,还可以更换地面的颜色或贴上不同的木地板、瓷砖等,更能移动家具的摆放位置、更换不同的装饰物。这一切都在VR虚拟现实技术下将被完美的表现。3:文物保护

VR技术在文物保护方面也是应用相当广泛的,埃及的金字塔就做过网上的体验中心,运用了全景虚拟技术和三维虚拟技术,而且IBM目前正在运用VR虚拟现实技术对北京故宫进行整个故宫的数字虚拟。届时大家也许可以在网上直接看到数字三维化的故宫。4:交通

无论是在空中、陆地还是海洋河流的交通规划模拟方面,VR虚拟技术都有其得天独厚的优势,不仅仅能用三维GIS技术将各种交通路线表现得十分到位,更能动态模拟各种自然灾害情况。5:房地产

近几年在房地产的表现和推广应用方面,VR虚拟现实技术被得到越来越多的应用,更有逐步取代效果图和三维动画之势。用VR虚拟技术不仅可以十分完美的表现整个小区的环境,设施。还能表现不存在但即将建成的绿化带,喷泉,休息区,运动场等等。不仅如此,用户还能在整个小区中任意漫游、仔细欣赏小区的每一处风景。大大刺激了浏览者的感受。6:游戏

对于游戏的开发,目前VR技术比较适合开发:角色扮演类、动作类、冒险解迷类、竞速赛车类的游戏,其先进的图像引擎丝毫不亚于目前 的主流游戏引擎的图像表现效果,而且整合配套的动力学和AI系统更给游戏的开发提供了便利。7:军事

VR技术就是诞生于军事应用,在军事应用方面很多,包括:模拟战场,模拟操作,模拟驾驶,模拟装配等等。都需要通过VR技术来实现。而且在相关军事工作汇报中也会有VR技术的支持。8:家电

家电产品的展示、展览、发布上。运用VR技术不仅可以完美表现产品的外观,更能将其功能表现的淋漓尽致。而且家电行业产品种类繁多、数量庞大。市场需求量十分大,无论是使用全景虚拟还是视频虚拟还是三维虚拟技术都能在家电行业大有作为。9:地理

VR技术在地里应用上,主要是运用三维GIS地理信息系统来表现直观的三维地形地貌,对于地理工作者提供便利,对于相关工程建设提供可靠的参考数据。10:教育

VR技术在教育领域,主要是发挥其互动性和生动的表现效果,用于立体几何、物理化学等相关课件的模拟制作。而且在相关专业的培训机构,VR虚拟现实技术能够提供学员更多的辅助,比如虚拟驾驶、各种交通规则的模拟。特种器械模拟操作、模拟装备等等。11:工业

VR技术在工业应用上,主要运用于工业园模拟、机床模拟操作、设 备管理、虚拟装配、工控仿真。由于VR技术本身的特性所以从事以上的相关工作模拟十分方便、快捷而真实准确。12:视频

VR技术在工视频应用上,已经相当广泛了,在各大电视台中均有虚拟演播室,而且有的电视台还运用了虚拟主持人。这种虚拟技术的运用无论是CCTV还是各个地方卫视都有应用。

关键词:虚拟现实环境

多感知性

三维GIS地理信息系统

虚拟装配

第二篇:计算机图形学论文

工欲善其事,必先利其器

——浅析计算机图形学及其作用 本学期学校开设了计算机图形学,一开始不知计算机图形学为何物的我不是很理解为什么要有这门课,但是经过一学期的洗礼过后,我对计算机图形学有了一定的理解。我知道了计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看,图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。对于我们将来从事景观设计的人来说,为了使自己的方案获得更多人的欣赏,必须创建图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。所以计算机图形学与另一门学科计算机辅助几何设计有着密切的关系。事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时,真实感图形计算的结果是以数字图象的方式提供的,计算机图形学也就和图像处理有着密切的关系。

谈到图形和图像时,现如今图形与图像两个概念间的区别越来越模糊,但还是有区别的:图像纯指计算机内以位图形式存在的灰度信息,而图形含有几何属性,或者说更强调场景的几何表示,是由场景的几何模型和景物的物理属性共同组成的。

计算机图形学的研究内容非常广泛,如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、非真实感绘制,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。

自1963年,伊凡·苏泽兰(Ivan Sutherland)在麻省理工学院发表了名为《画板》的博士论文,标志着计算机图形学的正式诞生起,至今已有四十多年的历史。此前的计算机主要是符号处理系统,自从有了计算机图形学,计算机可以部分地表现人的右脑功能了,所以计算机图形学的建立具有重要的意义。通过课堂上的学习以及网上的介绍,我发现近年来,计算机图形学在如下几方面有了长足的进展:

在智能CAD方面,就目前流行的大多数CAD软件来看,主要功能是支持产品的后续阶段一一工程图的绘制和输出,产品设计功能相对薄弱,利用AutoCAD 最常用的功能还是交互式绘图,如果要想进行产品设计,最基本的是要其中的AutoLisp语言编写程序,有时还要用其他高级语言协助编写,很不方便。而新一代的智能CAD 系统可以实现从概念设计到结构设计的全过程。

在计算机美术与设计方面,自1952年.美国的Ben·Larose用模拟计算机做了预示着电脑美术的开始得具有历史性意义的波型图《电子抽象画》开始,以微机和工作站为平台的个人计算机图形系统逐渐走向成熟,大批商业性美术设计软件如雨后春笋般纷纷面市; 以苹果公司的MAC 机和图形化系统软件为代表的桌面创意系统被广泛接受,CAD成为美术设计领域的重要组成部分。而计算机设计学包括三个方面:即环境设计(建筑、汽车)、视觉传达设计(包装)、产品设计。CAD对艺术的介入,分三个应用层次:(1)计算机图形作为系统设计手段的一种强化和替代; 效果是这个层次的核心(高精度、高速度、高存储)。(2)计算机图形作为新的表现形式和新的形象资源。

(3)计算机图形作为一种设计方法和观念。

同时,计算机图形学、计算机绘画、计算机音乐、计算机辅助设计、电影技术、电视技术、计算机软件和硬件技术等众多学科的最新成果都对计算机动画技术的研究和发展起着十分重要的推动作用。计算机动画的一个重要应用就是制作电影特技 可以说电影特技的发展和计算机动画的发展是相互促进的。比如广受欢迎的终结者系列中便大量运用了电脑特技,而在影片《阿凡达 》中几乎成为了电影特效的天下,电影特技的运用丰富了人们的视觉效果,是电影卖座的重要保证。我国的计算机动画技术起步较晚。1990年的第11届亚洲运动会上,首次采用了计算机三维动画技术来制作有关的电视节目片头。从那时起,计算机动画技术在国内影视制作方面得到了讯速的发展,继而以3D Studio 为代表的三维动画微机软什和以Photoshop等为代表的微机二维平面设计软件的普及,对我国计算机动画技术的应用起到了推波助谰的作用。计算机动画的应用领域十分宽广 除了用来制作影视作品外,在科学研究、视觉模拟、电子游戏、工业设计、教学训练、写真仿真、过程控制、平面绘画、建筑设计等许多方面都有重要应用。

科学计算的可视化是发达国家八十年代后期提出并发展起来的一门新兴技术,它将科学计算过程中及计算结果的数据转换为几何图形及图象信息在屏幕上显示出来并进行交互处理,成为发现和理解科学计算过程中各种现象的有力工具。它涉及到下列相互独立的几个领域:计算机图形学、图象处理、计算机视觉、计算机辅助设计及交互技术等。科学计算可视按其实现的功能来分,可以分为三个档次:(1)结果数据的后处理;(2)结果数据的实时跟踪处理及显示;(3)结果数据的实时显示及交互处理。

“虚拟现实”(Virtual Reality)一词是由美国喷气推动实验室(VPL)的创始人拉尼尔(Baron Lanier)首先提出的 在克鲁格(Algren Krueger)70年

代中早期实验里.被称为 人工现实”(Artificial reality);而在吉布森(William Gibson)l984 年出版的科幻小说Necromancer里,又被称为“可控空间”(Cyberspace)。虚拟现实是美国国家航空和航天局及军事部门为模拟而开发的一门高新技术 它利用计算机图形产生器,位置跟踪器,多功能传感器和控制器等有效地模拟实际场景和情形,从而能够使观察者产生一种真实的身临其境的感觉。虚拟环境由硬件和软件组成,硬件部分主要包括:传感器(Sensors)、印象器(Effecter)和连接侍感器与印象器产生模拟物理环境的特殊硬件。利用虚拟现实技术产生虚拟现实环境的软件需完成以下三个功能:建立作用器(Actors)以及物体的外形和动力学模型:建立物体之间以及周围环境之间接照牛顿运动定律所决定的相互作用;描述周围环境的内容特性。

在工程设计方面,计算机图形学的作用主要表现在(1)建筑设计,包括方案设计、三维造型、建筑渲染图设计、平面布景、建筑

构造设计、小区规划、日照分析、室内装潢等各类CAD应用软件。

(2)结构设计,包括有限元分析、结构平面设计、框/排架结构计算和分析、高层结构分析、地基及基础设计、钢结构设计与加工等。

(3)设备设计,包括水、电、暖各种设备及管道设计。

(4)城市规划、城市交通设计,如城市道路、高架、轻轨、地铁等市政工程设

计。

(5)市政管线设计,如自来水、污水排放、煤气、电力、暖气、通信(包括电

话、有线电视、数据通信等)各类市政管道线路设计。

(6)交通工程设计,如公路、桥梁、铁路、航空、机场、港口、码头等。

(7)水利工程设计,如大坝、水渠、河海工程等。

(8)其他工程设计和管理,如房地产开发及物业管理、工程概预算、施工过程

控制与管理、旅游景点设计与布置、智能大厦设计等。

那么如何学好计算机图形学呢? 除了计算机图形学的基础知识以外,我们还需要相关知识,懂得越多,才能学的越好。

英语,如果要学好计算机图形学的话,我认为需要阅读大量的英文书籍和资料,毕竟国外相关研究更加深入,好的英文功底有助于紧跟国际潮流。

数学,计算机图形学里面经常会遇到数学方面的知识,比如高等数学中的数值分析,微分几何,拓扑,差值概论以及微分方程等。

物理,如果要进行基于物理的建模,一些物理理论是要学习的。如力学,光学,有限元„„

编程语言,C语言或C++是计算机图形学中通用的语言。

数据结构,当需要用数据结构来描述图形形象时,除了通用的链表、树等数据结构外,图形学还有自己特殊的数据结构。

所以说,一门学科可能会和许多学科发生穿插,不能希望只通过一本教科书就能学好一门学科,一定要在掌握教科书内容的基础上与其他学科融会贯通才能获得更大的收获。这就是我学习计算机图形学的心得,可能不够成熟,希望在以后的进一步学习中获得更多的经验,为自己未来的职业生涯打下坚实的基础。

第三篇:《计算机图形学》实验报告

吉林大学

计算机科学与技术学院

《计算机图形学》实验报告

班级: 211923班

学号: 21190928

姓名: 林星宇

2021-2022学年第1学期

实验项目1

边标志算法的实现

实验性质

□演示性实验 验证性实验

□操作性实验 综合性实验

实验地点

计算机楼B212

机器编号

一、实现的功能

编写应用程序,采用鼠标输入顶点的方法确定待填充多边形(多边形最后一点双击);实现边标志算法完成对该多边形的填充,要求 完成使用自己学号的后四位数字对多边形内部进行填充。

二、采用的图形学算法及实现

(算法的实现函数是什么(函数名,参数,返回值,函数功能等)以及采用了哪些数据结构(数组,链表等))

要求使用边标志算法的原理和实 现方法,所以使用了EdgeMarkFill函数,即边标志算法:

void CMFCDrawTestView::EdgeMarkFill(CDC* pDC, CArray* plist, COLORREF color)

pDC为设备环境变量指针,plist为多边形点表,color为传入的RGB()值。

int zima[16][32]为学号后4位二维数组。

X1,x2,y1,y2分别为多边形上的最小最小大,y值

三、采用的交互方式及实现

(采用了哪些交互方式来完成绘制,这些交互方式应用到了哪些系统消息,是如何实现的)

边填充的实现:编写应用程序,采用鼠标输入顶点的方法确定待填充多边形(多边形最后一点双击);实现边标志算法完成对该多边形的填充,要求 完成使用自己学号的后四位数字对多边形内部进行填充。

易知,在画完多边形后,即双击左键(OnLButtonUp)后,使用EdgeMarkFill函数。

Type=2时,在OnLButtonUp中,调用EdgeMarkFill(pDC,&(obj->points), RGB(r, 0, 0));

四、实验结果

(程序的运行结果)

应用程序运行后,标志算法完成对该多边形的填充的图形结果如下:

”“

五、遇到的问题及解决办法

问题1:(在实现过程中遇到了什么样的问题,及采用了何种解决办法)

在获取下x1,x2,y1,y2时,因为Dos界面x、y大小颠倒的原因,获取时出现了问题。

首先,通过for(int i = 1;i < plist->GetSize();i++){

CPoint p = plist->GetAt(i);

if(x1 > p.x)x1 = p.x;

if(x2 < p.x)x2 = p.x;

if(y1 > p.y)y1 = p.y;

if(y2 < p.y)y2 = p.y;

}

获取x1,x2,y1,y2.在遍历多边形过程中:

int count = plist->GetSize();

for(int i = 0;i < count;i++){

CPoint p1 = plist->GetAt(i);

CPoint p2 = plist->GetAt((i + 1)% count);

if(p1.y == p2.y)

continue;

if(p1.y > p2.y)

{

CPoint p;p = p1;p1 = p2;p2 = p;

}

xs = p1.x;

dxs =(p2.x-p1.x)/(double)(p2.y-p1.y);

//dys = abs(p2.y-p1.y)/(p2.y-p1.y);

for(ys = p1.y;ys!= p2.y;ys += 1)

{

Ixs = int(xs + 0.5);

MARK[ys][Ixs] =!MARK[ys][Ixs];

xs = xs + dxs;

}

黄线处即为处理x1,x2,y1,y2的大小。

问题2:通过数组zima[][]来确定多边形区域填充学号后4位时,zima[y ][x ]未%其字长,即zima[y % 16][x % 32]。后改为:

for(y = y1;y <= y2;y++)

{

bool inside = false;

for(x = x1;x <= x2;x++)

{

if(MARK[y][x])

inside =!inside;

if(inside)

{

if(zima[y % 16][x % 32])

pDC->SetPixel(x, y, RGB(255, 0, 0));

}

}

}

实验项目2

立方体的比例、平移、旋转变换及投影显示

实验性质

□演示性实验 验证性实验

□操作性实验 综合性实验

实验地点

计算机楼B212

机器编号

一、实现的功能

建立立方体的数据模型;编写应用程序,利用菜单和键盘结合的方式完成对立方体的移动、比例和旋转变换,并显示透视或斜二测投影结果。要求应用程序具有如下功能:

1、通过菜单选择的方式,选择对三维空间中的立方体作斜二测投 影或透视投影;

2、通过键盘按键或鼠标移动的方式,完成对三维空间中的立方体 进行平移变换(上下左右前后),比例变换(放大或缩小)以及 旋转变换(绕 x,y,z 轴),并同时显示变换后的投影结果

3、创建对话框,通过对话框设置透视投影时候的投影中心,以及旋转变换时候的旋转轴(可以设置成分别绕 x 轴,y 轴,z 轴进 行旋转)

二、采用的图形学算法及实现

(算法的实现函数是什么(函数名,参数,返回值,函数功能等)以及采用了哪些数据结构(数组,链表等))

题目要求实现立方体的移动、比例和旋转变换,并显示透视或斜二测投影结果。

对要求1:在菜单选TY项中选择斜二测投影(斜二=1)或透视投影(透视=1)。然后在OnDraw中调用Draw_Cubic(CDC* pDC)画出立方体。

对要求2:在OnKeyDown中调用函数,即在键盘上按“S”使立方体变小,“B”使立方体变大,“←”“→”“↑”“↓”使立方体左右上下移动。

对要求3:在菜单XYZ中选择旋转的x,y,z轴,即x=1或y=1或z=1,然后在OnKeyDown中调用函数,即按键盘上的“T”或“P”.

三、采用的交互方式及实现

(采用了哪些交互方式来完成绘制,这些交互方式应用到了哪些系统消息,是如何实现的)

由题目要求1,易知需要一个函数Draw_Cubic(CDC* pDC)画出立方体的斜二测投影或透视投影并且建立一个菜单栏TY(投影)。即在菜单选TY项中选择斜二测投影(斜二=1)或透视投影(透视=1)。然后在OnDraw中调用Draw_Cubic(CDC* pDC)画出立方体。

由题目要求2:易知直接在OnKeyDown函数上添加使立方体变大变小,前后左右平移的功能。即即在键盘上按“S”使立方体变小,“B”使立方体变大,“←”“→”“↑”“↓”使立方体左右上下移动。

由题目要求3:建立一个菜单XYZ决定旋转的轴。

四、实验结果

(程序的运行结果)

斜二测投影:

”“

斜二测投影平移到左上角:

”“

斜二测投影平移到右下角:

”“

斜二测投影变大:

”“

斜二测投影变小:

”“

斜二测投影变为透视投影:

”“

斜二测投影绕z轴旋转:

”“

”“

”“

五、遇到的问题及解决办法

(在实现过程中遇到了什么样的问题,及采用了何种解决办法)

问题1:一开始建立立方体时,没有建立边表,导致投影困难。

后来建立了点表和对应的边表。

问题2:一开始Draw_Cubic中x1, y1,z1, x2, y2,z2定义为了int型。

实验项目3

用矩形窗口对多边形进行裁剪

实验性质

□演示性实验 验证性实验

□操作性实验 综合性实验

实验地点

计算机楼B212

机器编号

一、实现的功能

编写应用程序实现多边形裁剪。要求首先采用鼠标确定裁剪区域(矩形区域),然 后用鼠标输入待裁剪的多边形(可分别使用鼠标左键和右键来确定裁剪区域和待裁剪 的多边形)。多边形绘制完毕后进行裁剪,以不同颜色显示被裁剪对象位于窗口内(此 部分应保证多边形的完整性)及外部的部分。

二、采用的图形学算法及实现

(算法的实现函数是什么(函数名,参数,返回值,函数功能等)以及采用了哪些数据结构(数组,链表等))

因为要编写应用程序实现多边形裁剪。要求首先采用鼠标确定裁剪区域(矩形区域),然 后用鼠标输入待裁剪的多边形(可分别使用鼠标左键和右键来确定裁剪区域和待裁剪 的多边形)。所以要使用多边形裁剪算法,即Cut_Top(),Cut_Bottom(),Cut_Left(),Cut_Right()四个函数。

Cut()函数为用绿色显示被裁剪对象位于窗口内部分。

存在int type的变量;

当type=1时,在OnLButtonUp中画出矩形框。

当type=2时,画出多边形,在左键双击后,在OnLButtonDblClk中调用如下函数:Cut_Top();Cut_Right();Cut_Bottom();Cut_Left();Cut();

裁剪多边形在,并标出在矩形内部的部分。

三、采用的交互方式及实现

(采用了哪些交互方式来完成绘制,这些交互方式应用到了哪些系统消息,是如何实现的)

编写应用程序实现多边形裁剪。要求首先采用鼠标确定裁剪区域(矩形区域),然 后用鼠标输入待裁剪的多边形(可分别使用鼠标左键和右键来确定裁剪区域和待裁剪 的多边形)。多边形绘制完毕后进行裁剪,以不同颜色显示被裁剪对象位于窗口内(此 部分应保证多边形的完整性)及外部的部分。

根据以上绘制方法,可知需要处理WM_OnLButtonDblClk(左键双击)及WM_LButtonUp(左键抬起)消息,为了绘制橡皮线,还需处理调用WM_MouseMove(鼠标移动)消息。

因为可以用鼠标画出矩形和多边形,所以这么规定,当type=1时画矩形,即:

DDALine(pDC,lx,by,lx,ty,RGB(r, g, b));

DDALine(pDC, lx, by, rx, by, RGB(r, g, b));

DDALine(pDC, rx, by, rx, ty, RGB(r, g, b));

DDALine(pDC, lx, ty, rx, ty, RGB(r, g, b));

当type=2时画多边形,而后裁剪,即:

for(int i = 0;i < pointList.GetSize();i++)

{

p1 = pointList.GetAt(i);

p2 = pointList.GetAt((i+1)% count);

DDALine(pDC, p1.x, p1.y, p2.x, p2.y, RGB(0,255,0));

}

四、实验结果

(程序的运行结果)

裁剪结果如下图所示,黑色为裁剪窗口,红色为多边形被裁剪的部分,绿色为多边形裁剪后的部分:

”“

五、遇到的问题及解决办法

(在实现过程中遇到了什么样的问题,及采用了何种解决办法)

问题1:我在裁剪使一开始对多边形做上下左右裁剪时,这四个步骤是分别对原图形裁剪,而不是对图形接连进行裁剪。后来在裁剪函数上先除去之前图形,然后把已裁剪多边形重新构建。如下:

pointList.RemoveAll();

for(int i = 0;i < m;i++)

pointList.Add(CP[i]);

问题2:在多边形被矩形裁剪的部分显现不同颜色花费了挺多时间,后来我直接让裁剪的部分颜色被覆盖就可以了。如下:

for(int i = 0;i < pointList.GetSize();i++)

{

p1 = pointList.GetAt(i);

p2 = pointList.GetAt((i+1)% count);

DDALine(pDC, p1.x, p1.y, p2.x, p2.y, RGB(0,255,0));

}

第四篇:计算机图形学学习心得

《计算机图形学》学习报告

 东西方建筑中的理性

尽管东方“木构”的暂时性文化和西方“石砌”的永久性文化氛围造成了建筑形式风格的差异,但是它们都兼有理性和感性美。从柱式的英文“order”一词,到中国古建筑等级制的基数开间,无不透露着匠人的理性思考;从古埃及绘画中为了将人的特征最大限度表现而作的头部侧面身体正面的绘画,到文艺复兴达芬奇创造的透视画法,一步步将人们引向更为理性的世界。

西方古典主义者强调构图中的主从关系,突出轴线、讲求配称;倡导理性,主张建筑的真实,反对表现感情和情绪。随之而来的比例、节奏、韵律、秩序美,是建筑区别于雕塑和绘画两大艺术的特点。

维特鲁威提出的建筑三原则:坚固、适用、美观,时时刻刻提醒着我们建筑是要被建造起来的,它是我们的“避难所”,需要理性的结构、缜密的分析和思考。时代在进步,建筑理论从勒杜克的结构理性主义发展到现在的解构主义,再也不是建筑形式适应结构的时代了,而是两者互为促进。

我们对建筑的理解不再是像路易斯康那样再去问砖想做什么,等待它做拱卷的回答。我们向大自然学习,卡拉特拉瓦创造了许多带有理性美的仿生建筑。当我们想进一步拓宽我们的思维时,我们还能向谁求助?计算机图形学为我们打开了理性思考的一扇窗。

 计算机图形学对理性建筑的贡献

半个多世纪以来,计算机技术得到了飞速的发展。它的进步不仅仅使世界变得更平,信息交流更便捷,在此平台上开发的各种绘图软件更是将建筑师从传统的手工渲染画图中解放出来,也解放了结构师的工作量。用了30年的时间,计算机的速度从K(103)到T(1012),而从T到Z(1021),我们只用了10年时间。发展的速度是越来越快,我们设计方法和速度都得到了革新。这是这样一个数字化信息化的时代,才有弗兰克盖里建筑的夸张和扎哈哈迪德设计的新奇。

原来我们随手绘出的自由曲线,现在计算机都能帮我们算出是否有建造的可能,以及建筑性能也能在建造前得到分析。在创意上,计算机也能将我们模糊的概念无限发展,给它一个规则,它可能还你一个超乎想象的造型,在理性规则中生成感性而自由的建筑。

知其然,还应知其所以然,看着电视机的变薄,图像更加逼真,这变化的一切都建立在计算机图形学的架构下,了解了基础原理,才能更高效地做高质量的建筑设计。

 计算机图形学的理论知识

1.相关概念

计算机图形学是主要研究通过计算机处理用集合数据和数学模型所描述的图形的原理、算法和系统。包括图形的输入、存储、运算、转换、传送和输出。数字化技术是泛指在某特定领域利用包括硬件、软件在内的计算机与电子技术以及数学或数字模型等描述的问题进行求解、模拟或分析活动的一切应用技术。

建筑数字化技术研究应用包括建筑的数字化设计和反映建筑的数字化特征在内的数字技术。而建筑数字化技术的核心几何学科就是计算机图形学。2.反映建筑数字化特征的典型图形技术

建筑的动态特征——图形显示:如奥地利格拉茨美术馆的925盏灯形成的外墙面显示屏 建筑的互动特征——图形显示:如杜瑟赫姆市的随情感变化而色彩变化的建筑物

建筑的数字特征——几何运算:如柏林Max Reinhardt大楼模型及“莫比乌斯环”变换 建筑的虚实特征——交互式图形:如法国国立图书馆(实体与网络图书馆)

设计手段和设计媒体的数字化特征——交互式图形:如纽约韩国基督教长老会教堂 而建筑性能如声环境、热环境、光环境、风环境模拟的可视化分析中都用到了图形学。3.虚拟现实技术(VR)

虚拟现实技术是计算机生成的给人多种感官刺激的虚拟世界(环境),是一种高级的人机交互系统。

虚拟现实技术的三个基本特征:沉浸感、交互性、想象力 它具有多学科的综合性,正如建筑学是一门综合的艺术,虚拟现实技术包括图像处理、图形学、计算几何、多传感器、网络、多媒体和仿真技术等。

正如课堂上老师放映的《碟中谍4》,逼真的爆炸场景,以及从皮克斯动画开始的动物毛发到最近火热的《少年派》逼真的老虎与人共存画面,虚拟现实技术的进步影响到了我们生活的方方面面,触到了我们原来想都不敢想的世界。

而VR技术在建筑行业中,有以下作用:(1)指导设计:让建筑师通过浏览观察和了解空间关系,特别是对空间大小、方向、形状和建筑元素行为的理解。(2)建筑表现与环境仿真(3)仿真施工:检查和修改施工细节、合理性和有效性

4.虚拟现实的基础与关键技术:建模与描绘

基于几何和图形学的建模和描绘技术

直接几何建模

3D扫描建模

投影视图建模

基于图像的场景描绘技术(IBR)

图像投影变形技术 光场重建技术

混合式IBR技术

IBR技术图形的绘制独立于场景的复杂性,仅仅与所要生成画面的分辨率有关。

第五篇:计算机图形学实验

实验三 MFC画直线

最近自己在学习如何在VC 6.0 开发环境下的使用MFC AppWizard(exe)来绘画一条直线,虽然比较简单,通过这样的练习可以帮助你熟悉MFC的开发环境以及其中的消息传递机制,希望对于像我一样初入MFC图形绘制学习的人有帮

第一步:构建MFC窗体

打开Visual C++ 6.0编译器 新建→工程→MFC AppWizard(exe),工程名以DrawLine为例,然后确定。为了方便,在MFC应用程序向导—步骤1当中选择“单文档”,其余所有的步骤都为默认值,直接“完成”。这样一个简单的MFC窗体就构建好了,自己不妨Compile—Build—BuildExecute一下。

第二步:编辑菜单项

选择ResourceView视窗展开Menu文件夹,左键双击IDR_DRAWLITYPE,右边就会出现菜单图形编辑界面,为了简化,我们只在添加帮助→DrawLine功能选择项。双击空白会弹出“菜单项目 属性”对话框。ID:ID_DRAW_LINE;标明:

DrawLine(&D),其它的为缺省。

第三步:建立消息命令

如果此时运行该程序,你会发现帮助—DrawLine的功能选项是灰色的,原因就在于我们还没有添加该功能的消息命令相应函数。通过“查看—Message Maps—Project:DrawLine—Class name:CDrawLineView—Object IDs:ID_DRAW_LINE—选定COMMAND—Add Function„”,其它为默认,最后确定完成。现在如果再重新运行该程序的话,会发现原来的灰色已经消除了。

第四步:添加鼠标消息响应

打开ClassView视窗,右键选定CDrawLineView,选择Add Windows Messsage Handler会弹出对话框,完成CDrawLineView类的WM_LBUTTONDOWN、WM_MOUSEMOVE、WM_LBUTTONUP三个Windows消息事件的新建。

第五步:添加响应代码

首先,在ClassView视窗中双击CDrawLineView会定位到“DrawLineView.h : interface of the CDrawLineView class”的文件,添加CDrawLineView类的成员:protected: int m_Drag;POINT m_pPrev;POINT m_pOrigin;三个成员变量。视窗中展开CDrawLineView类,双击定位OnLBUTTONDOWN()函数。在该函数消息响应

处添加如下代码:

//建立好绘图的设备环境

CClientDC dc(this);OnPrepareDC(&dc);

dc.DPtoLP(&point);

//获取起始点坐标 m_pPrev=point;m_pOrigin=point;

m_Drag=1;

然后,定位于OnMouseMove(),添加如下代码(其中关键用到了橡皮筋技术):

//建立好绘图的设备环境

CClientDC dc(this);

OnPrepareDC(&dc);dc.DPtoLP(&point);

dc.SetROP2(R2_NOT);//橡皮筋绘图技术

//判断是否BUTTONDOWN

if(m_Drag)

{

dc.MoveTo(m_pOrigin);dc.LineTo(m_pPrev);dc.MoveTo(m_pOrigin);dc.LineTo(point);

}

m_pPrev=point;

最后,在OnLBUTTONDOWN()添加代码: m_Drag=0;

程序运行效果图

实验4 实现圆的生成算法

一、实验目的

1.熟悉CDC图形程序库; 2.掌握中点画圆生成算法; 3.掌握Bresenham画圆算法。

二、实验内容

利用VisualC++6.0设计一个简易画圆绘图板,验证圆生成算法。

三、实验指导

1.生成绘图应用程序的框架,如下图所示。具体实现见第二次实验,过程不再详细说明。

2.在应用程序中增加菜单

完成相关菜单的设计,具体的效果如下图所示,并设置好相关菜单消息的映射,具体的实现在前面的实验中介绍过,再此不在详细说明。

3.在绘图函数中添加代码

通过以上步骤,得到了与菜单对应的消息映射,就可以在函数中添加代码绘制图形了。(1)利用中点画圆算法实现圆的生成(算法原理见教材)。void CDraw_CirView::OnMid(){ // TODO: Add your command handler code here CDC*pDC=GetDC();//得到绘图类指针

RedrawWindow();//重绘窗口

int x,y,x0=200,y0=200,r=100;//圆的圆心为(x0,y0),半径为r float d;x=0;y=r;d=1.25-r;

pDC->SetPixel(x+x0,y+y0,RGB(255,0,0));pDC->SetPixel(y+x0,x+y0,RGB(255,0,0));pDC->SetPixel(y+x0,-x+y0,RGB(255,0,0));pDC->SetPixel(x+x0,-y+y0,RGB(255,0,0));pDC->SetPixel(-x+x0,-y+y0,RGB(255,0,0));pDC->SetPixel(-y+x0,-x+y0,RGB(255,0,0));pDC->SetPixel(-y+x0,x+y0,RGB(255,0,0));pDC->SetPixel(-x+x0,y+y0,RGB(255,0,0));while(x<=y){

if(d<0)

{

d=d+2*x+3;

x++;

}

else

{

d=d+2*(x-y)+5;

x++;

y--;}

pDC->SetPixel(x+x0,y+y0,RGB(255,0,0));

pDC->SetPixel(y+x0,x+y0,RGB(255,0,0));

pDC->SetPixel(y+x0,-x+y0,RGB(255,0,0));

pDC->SetPixel(x+x0,-y+y0,RGB(255,0,0));

pDC->SetPixel(-x+x0,-y+y0,RGB(255,0,0));

pDC->SetPixel(-y+x0,-x+y0,RGB(255,0,0));

pDC->SetPixel(-y+x0,x+y0,RGB(255,0,0));

pDC->SetPixel(-x+x0,y+y0,RGB(255,0,0));} } 由以上代码绘出的图形如下:

(2)利用Bresenham算法生成圆(算法原理见教材)。void CDraw_CirView::OnBre(){ // TODO: Add your command handler code here CDC*pDC=GetDC();//得到绘图类指针

//RedrawWindow();//重绘窗口

int x,y,x0=200,y0=200,r=50;//圆的圆心为(x0,y0),半径为r int delta,delta1,delta2,direction;x=0;y=r;delta=2*(1-r);while(y>=0){

pDC->SetPixel(x+x0,y+y0,RGB(0,0,255));

pDC->SetPixel(x+x0,-y+y0,RGB(0,0,255));

pDC->SetPixel(-x+x0,y+y0,RGB(0,0,255));

pDC->SetPixel(-x+x0,-y+y0,RGB(0,0,255));

if(delta<0)

{

delta1=2*(delta+y)-1;

if(delta<=0)direction=1;

else direction=2;

}

else if(delta>0)

{

delta2=2*(delta-x)-1;

if(delta2<=0)direction=2;

else direction=3;

}

else direction=2;

switch(direction)

{

case 1:x++;

delta+=2*x+1;

break;

case 2:x++;y--;

delta+=2*(x-y+1);

break;

case 3:y--;

delta+=(-2*y+1);

break;

} } }

由以上代码绘出的图形如下:

(3)以上是本次实验的基本部分,利用中点画圆和Bresenham画圆算法实现的基本图形的绘制。能不能利用该算法,完成一些复杂图形的生成,比如利用基本的画圆算法绘制一个奥运五环。甚至根据画圆算法,实现二次曲线的生成,如椭圆的生成等等。请同学们认真考虑,完成这部分的内容,上机调试。

四、思考

1.如何实现圆心为任意位置的圆的绘制; 2.两种画圆算法的比较。

下载计算机图形学结课论文word格式文档
下载计算机图形学结课论文.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    计算机图形学学习体会

    计算题图形学课程学习体会 计算机图形学是研究用计算机生成、处理和显示图形的一门学科。他的重要性体现在人们越来越强烈的需要和谐的人机交互环境,UI已经成为软件的重要组......

    计算机图形学实验报告

    实 验 报 告 一、 实验目的 1、掌握有序边表算法填充多边形区域; 2、理解多边形填充算法的意义; 3、增强C语言编程能力。 二、 算法原理介绍 根据多边形内部点的连续性知:一条......

    计算机图形学实验报告

    0908141020 试验092 尤洋 实验1-1: 通过循环画线,实现了画四边形的功能 实验1-2: 通过循环设置顶点坐标,循环画线,实现了画7个顶点的金刚石 实验1-3: 通过填充实现了画三彩多边形......

    计算机图形学心得体会

    计算机图形学心得体会 姓名: 学号: 201203284 班级: 计科11202 序号: 31 院系: 计算机科学学院 通过一个学期的学习,经过老师细心的讲解,我对图形学这门课有了基础的认识,从......

    计算机图形学论文.马云峰

    计算机图形学发展与前景论文 姓名:专业班级:学号:教师:马云峰软件12K1 121909020116 姜丽梅计算机图形学应用与发展 计算机图形学是一种使用数学算法将二维或三维图形转化为计算......

    对于计算机图形学感想

    计算机图形学 1045532136 朱啸林 我们班是计算机科学与技术,刚开始知道要上图形学的时候我还是一头雾水,觉得没什么联系,经过老师的点拨和自己的领悟,我明白了其中的道理。计算......

    计算机图形学中英文关键词

    Computer graphics 计算机图形学 Two-dimensional 二维 Three-dimensional 三维 geometric transformation 几何变换 composite transformations 复合变换 Two-dimensional......

    计算机图形学的简单认识

    计算机图形学的简单认识 090600304229计科0942卿文玲第一周,我们上了一节计算机图形学。记得刚开始领到书的时候,翻看里面的内容,发现好多数学公式,心想:“完了,这不就是变相数学......