搜档网
当前位置:搜档网 › 计算机图形学实验报告及代码

计算机图形学实验报告及代码

计算机图形学实验报告及代码

第 1 章概述

一、教学目标

通过本章的学习,使学生能够了解计算机图形学的基本概念、研究内容;当前的发展概况;本门课程的特点和应用。

二、教学要求

1.了解计算机图形学的概念和研究内容;

2.了解本门课程的发展概况。

三、教学内容提要

1. 计算机图形学的研究内容

2. 计算机图形学发展概况

3. 计算机图形学特点和应用

4. 计算机图形学当前研究的课题

5. 计算机图形生成和输出的流水线

四、教学重点、难点及解决方法

本章将主要围绕计算机图形学的基本概念进行介绍,介绍研究内容;当前的发展概况;本门课程的特点和应用等等。

五、课时安排

2学时

六、教学设备

多媒体

七、检测教学目标实现程度的具体措施和要求

通过课堂提问的方式来检测学生对基本概念的掌握程度。

八、教学内容

1.1 计算机图形学的研究内容

计算机图形学(Computer Graphics): 研究通过计算机将数据转换为图形,并在专用显示设备上显示的原理、方法和技术的学科。

计算机图形表现形式

(1).线条式(线框架图)

用线段来表现图形,容易反映客观实体的内部结构,如各类工程技术中结构图的表示,机械设计中零件结构图及电路设计中的电路原理图等。具有面模型、色彩、浓淡和明暗层次效应,适合表现客观实体的外形或外貌,如汽车、飞机、轮船等的外形设计以及各种艺术品造型设计等。

(2).真实感面模型图形

跑车靓照

计算机图形分类(空间)

(1).二维图形(2D):在平面坐标系中定义的图形

(2).三维图形(3D):在三维坐标系中定义的图形

计算机图形产生方法

(1).矢量法(短折线法)

任何形状的曲线都用许多首尾相连的短直线(矢量)逼近。

(2).描点法(像素点串接法)

每一曲线都是由一定大小的像素点组成

计算机绘图方式:

(1)交互式绘图

允许操作者以某种方式(对话方式或命令方式)来控制和操纵图形生成过程,使得图形可以边生成、边显示、边修改,直至符合要求为止。如AUTOCAD等

(2)被动式绘图

图形在生成过程中,操作者无法对图形进行操作和控制。如C语言绘图

图形的操作与处理方法(Picture Manipulation)

如图形的开窗、裁剪、平移、旋转、放大、缩小、投影等各种几何变换操作的方法及其

软件或硬件实现技术。

图形信息的存储,检索与交换技术:如图形信息的各种表示方法、组织形式、存取技术、图形数据库的管理、图形信息通信等。

人机交互及用户接口技术:如新型定位设备、选择设备的研究;

各种交互技术,如构造技术、命令技术、选择技术、响应技术等的研究,以及用户模型、命令语言、反馈方法、窗口系统等用户接口技术的研究。

1.2 计算机图形学发展概况

1962年美国麻省理工学院林肯实验室的Ivan E·Suthland,首先提出了“计算机图形学”(Computer Graphics)这一术语,引入了分层存储符号的数据结构,开发出了交互技术;可用键盘和光笔实现定位、选项和绘图。奠定了计算机图形学基础。

60年代中期美国、英国、法国的一些汽车、飞机制造业大公司对计算机图形学开展大规模研究。

60年代后期出现了存储管式显示器,可以进行简单交互。

1.3 计算机图形学特点和应用

特点:

1.计算机产生的图形有规律、光滑。它是按数学方法产生的,规矩整齐,有着像数学一样的严格性。

2.计算机产生的图形纯净美观、无噪声干扰。

3.通过计算机产生的图形不仅能描绘客观世界的各种对象,也能描绘纯粹是想像的主观世界中的各种对象。

4.交互式计算机图形显示可由用户控制,产生的图形可修改性强,且速度快、差错少。

应用领域:

1.计算机辅助设计(CAD)和计算机辅助制造(CAM)计算机图形学被用来进行土建工程、机械结构和产品的设计,包括设计飞机、汽车、船舶的外形和发电厂、化工厂等的布局,也能够对电子线路或电子器件进行设计。

2.事务管理中交互式绘图

绘制事务管理中的各种图形,如统计数据的二维及三维图形、直方图、线条图、表示百分比的扇形图等等,还可绘制工作进程图,库存和生产进程图以及大量的其他图形。所有这些都以简明的形式呈现出数据的模型和趋势以增加对复杂现象的理解并促进决策的制定。

3.地理信息系统(GIS)

地理信息系统是建立在地理图形基础上的信息管理系统,是图形技术、数据库技术以及管理信息的结合。

4.办公自动化和电子出版技术

图形显示技术在办公自动化和事务处理中的使用,有助于数据及其相互关系的有效表达,因而有利于人们进行正确的决策。利用交互式图形显示技术的支持可以进行资料、文稿、书刊、手册的编写、修改。制图、制表、分页、排版。

5.计算机辅助教学(CAI)

计算机辅助教学系统利用图形显示设备或电视终端,可以有声有色生动地演示物理、化学、生物、外语等教学内容,让学生(用户)使用人机交互手段,进行学习和研究,绘图或仿真操作,使整个教学过程直观形象,有利于加深理解所学知识。

6.过程控制

在过程控制中,常常将计算机与现实世界中的其他设备连成一个系统。计算机图形显示设备常用来显示系统中关键部位的状态,如炼油厂、发电厂的状态显示器可显示出由传感器送来的压力、温度、电压、电流等数据,从而使操作人员可对异常情况作出反应。

1.4 计算机图形学当前研究的课题

1.造型技术

研究的是如何在计算机中构造出二维、三维物件模型的基本方法和手段。

2.三维信息重建技术

研究一些算法,使得计算机图形系统能自动地将三视图转换成相应的立体图。

3.图形数据库

研究如何以基本的图形为数据项而建立起一个能快速查找各个图形的图形库。

4.动态绘图

在交互式绘图中,不仅可以在屏幕上对图形进行修改、删除、编

辑等,还可以进行动态分析。

5.CG、CAD、CAM三者一体化

计算机图形学(CG)、计算机辅助设计(CAD)和计算机辅助制造(CAM)有机结合在一起,形成所谓一体化软件。

6.应用软件开发环境的通用化和标准化

用户界面管理系统UIMS、窗口管理系统、网络文件格式等,并使之通用化和标准化。

7.虚拟现实环境的生成(Virtual Reality简称VR)

利用计算机生成一种模拟环境(如飞机驾驶舱、操作现场等),通过多种传感、设备使用户“投入”到该环境中,实现用户与该环境直接进行自然交互的技术。

8.科学计算可视化

通过对空间数据场构造中间几何图素或用图形绘制技术在屏幕上产生二维图像。

1.5 计算机图形学生成和输出的流水线

再谈矢量法和描点法

矢量法-向量图形-简单图形-计算机绘图命令-向量图

描点法-点阵图形-复杂图形-文件存储大小-位图

比较:几条自由曲线构成的图形和一幅有炫彩动物的卡通图形

(1) 点阵图形点的信息;

(2) 向量图形的尺寸变化;

九、作业

课后习题

十、本章小结

在本章中,对计算机图形学的基本概念和研究内容进行了概述,对发展概况和应用领域进行了说明。

第2章计算机图形系统

一、教学目标

通过对本章的学习,要求熟悉计算机图形系统的组成/各种图形显示器、图形输入/输出设备。

二、教学要求

1、了解计算机图形系统的组成;

2、了解计算机图形输入/输出设备的种类。

三、教学内容提要

1.计算机图形系统的组成

2.计算机图形显示器

3.计算机图形输入设备计算机图形输出设备

4.图形核心系统(GKS)简介

5. 通用图形软件简介

四、教学重点、难点及解决方法

重点是熟悉计算机图形系统的组成/各种图形显示器、图形输入/输出设备。

五、课时安排

4学时

六、教学设备

课堂教学

七、检测教学目标实现程度的具体措施和要求

通过课堂提问的方式来检测学生对基本概念的掌握程度。

八、教学内容

2.1 计算机图形系统的组成

一. 图形系统的结构

由硬件和软件两部分组成。

二.图形系统的基本功能及其硬件性能要求

计算机图形系统至少应具有以下五个方面基本功能:

1.计算功能

(1)形体设计和分析方法的程序库,描述形体的图形数据库。

(2)坐标的平移、旋转、投影、透视等几何变换程序库的数据库。

(3)曲线、曲面生成和图形相互关系的检测库。

2.存储功能

在计算机内存储器和外存储器中,应能存放各种形体的几何数据

及形体之间相互关系,可实现对有关数据的实时检索以及保存对图形的删除、增加、修改等信息。

3.输入功能

由图形输入设备将所设计的图形形体的几何参数(例如大小、位置等)和各种绘图命令输入到图形系统中。

4.输出功能

图形系统应有文字、图形、图像信息输出功能。在显示屏幕上显示设计过程当前的状态以及经过图形编辑后的结果。同时还能通过绘图仪、打印机等设备实现硬拷贝输出,以便长期保存。

5.对话功能

可通过显示器或其他人-机交互设备直接进行人-机通信,对计算结果和图形,利用定位、拾取等手段进行修改,同时对设计者或操作员执行的错误给予必要的提示和帮助。

为了实现以上功能,对图形系统的硬件性能要求是:

1.处理速度

图形系统的处理速度既与图形系统硬件有关,也与图形软件的图形处理算法有关。

2.存储容量

存储容量包括三部分:内存储容量、显存、外部存储容量和显示缓冲区容量。

3. 处理精度

处理精度主要是指图形采集输入质量和显示输出质量:这里主要指图形分辨率、图形色彩的显示等。而且很大一部分与所采用的图形处理软件有关。

三.图形系统分类及硬件工作平台要求

1.计算机图形系统的分类

根据其硬件配置和信息传递方式分为:

(1) 脱机绘图系统

将输入图形数据在主机内进行处理

将图形处理后的图形数据送入中间介质,用磁盘或磁带控制绘图

输出机输出图形

脱机绘图系统是将图形数据和图形输出分别进行处理,避免计算机处于等待状态,加快计算机的工作效率。

(2) 联机绘图系统

将输入图形数据在主机内进行处理

计算机将图形处理信息直接送给绘图机输出图形,不需要中间介质(磁盘或磁带)传递绘图信息,处理时间缩短了。但由于绘图机是机械速度,这样造成了计算机对绘图机等待,降低了计算机工作效率。

(3) 交互式绘图系统

绘图系统将处理结果输出到图形终端(图形显示器)或图形工作站。用户对所显示图形还可用定位、拾取和描绘等设备进行编辑和标注等。

2.计算机图形系统的硬件工作平台

目前,计算机图形系统的硬件平台有如下几种:

(1).微型计算机(简称微机)

随着微型计算机性能进一步提高,用微型计算机实现三维形体的设计及显示能力在不断提高。

(2).工作站

实际上是一类超级微型计算机,该系统主要用于工程设计,为研究、开发提供一整套软硬件工作环境支持。工作站是具有高速的科学计算、丰富的图形处理、灵活的窗口及网络管理功能的交互式计算机系统。美国的SUN、SGI、HP、DEC、IBM等公司均生产此类产品。

(3).中、小型计算机

一般在特定的部门、单位和应用领域中采用此类环境。它是大型信息系统建立的重要环境,这种环境中信息和数据的处理量是很大的,要求机器有极高的处理速度和极大的存储容量。

(4).大型机

以大型计算机为基础,具有容量庞大的存储器和极强的计算功能,大量的显示终端及高精度、大幅面的硬拷贝设备。还往往拥有自行开发的、功能齐全的应用软件系统。例如,美国第三大汽车公司

(CHRYSLER汽车公司)就拥有庞大的计算机系统来进行计算机辅助设计、实体造型、结构分析、运动模拟、工程和科学计算、项目管理、生产过程控制等。

(5).计算机网络

计算机网络是指将上述四类计算机平台,或者其中某一类通过某种互联技术彼此连接,按照某种通信协议进行数据传输、数据共享、数据处理的多机工作环境。

它的特点是多种计算机相连,可以充分发挥各个机器的性能和特点,以达到很高的性能价格比。

网络图形系统要考虑的关键问题是网络服务器的性能,图形数据的通信、传输、共享以及图形资源的利用问题。

2.2 计算机图形显示器

1. CRT单色显示原理

电子枪

灯丝加热阴极,阴极表面向外发射自由电子,控制栅控制自由电子是否向荧光屏发出,电子流在到达屏幕的途中,被加速、聚焦成很窄的电子束,由偏转系统产生电子束的偏转电场(或磁场),使电子束左右、上下偏转,在指定时刻在屏幕指定位置上产生亮点。

余辉时间:电子束离开光点后光点保持的时间。

屏幕刷新:荧光亮度随着时间按指数衰减,整个画面必须在每一秒钟内重复显示许多次,人们才能看到一个稳定而不闪烁的图形,因此必须重复地使荧光质发光,即驱使电子束迅速回到同一点。

要保持一幅画面的稳定性,若余辉时间越短,则所需的屏幕输刷新率越高。影响刷新率的最主要因素是显示器的带宽。

荧光粉的质量直接影响到CRT成像效果。

电视

(刷新率低,与其电路相关)

由于影片播放时画面经常切换,一般采用短余辉的荧光粉。若采用长余辉的荧光粉,则会使上一帧图像余辉保留时间过长而出现拖尾和花屏(马赛克)现象

电脑

(刷新率高)

由于电脑画面一般较为稳定,同一帧画面停留时间较长,所以采用与电视相比较长余辉的荧光粉。如果一帧电脑画面停留时间很长,那么需要保证一定的刷新频率才能使该画面不闪烁不变暗

什么是灰度?

灰度就是亮度,简单说就是色彩的深浅程度,在黑白两色中,灰度体现于黑与白的中间状态,也就是灰色。

纯黑(用0表示),纯白(用15表示)

假设总共有16种灰度也就是16种亮度

随箭头越来越亮

那么在彩色变换中同样有灰度的概念,例如R、G、B三种原色,每种原色都有一个灰度值。若一种原色有16种灰度,那么该原色要占4位,256种灰度,那么该原色要占8位R、G、B三种原色若各有4位,则总共可显示的彩色数目为212种,也即是16×16×16种两点提示:

(1)彩色图片的色彩变换也叫灰度变换或者色阶变换,R、G、B 三种原色按任何比例增强再混合。

(2)在ACDSee或PhotoShop等图片工具栏中选择灰度一项,实际上就是将彩色图像转换为只有黑白两色的灰度图像,但和黑白图像还是不同。

一幅(彩色)图片中,由于各部分的颜色细节不同因而导致各部分的灰度等级不同,这种现象我们称之为“多级灰度”。

多级灰度

提高加速电压后,电子束速度增加,穿透绿色荧光层,显示绿色。电子束速度较低时,轰击荧光屏的能量只能使表层红色荧光粉受激励,产生红色亮点

通过改变电子束电压,就可调节电子束穿透荧光粉层的厚度,从而改变红绿两种发光亮度的比例,合成不同的颜色,因此,可显示红、橙、黄、绿四种颜色。

(2).荫罩式彩色CRT

显示的色彩要比穿透式彩色CRT宽广得多。在荧光屏内壁上分别由红(R)、绿(G)、蓝(B)三种颜色的荧光粉涂成百万个荧光粉点,按RGB顺序分行交替排列成三角形状且相距很近

它们发出三种色彩时分辨不清三种原色,而形成一种颜色

荫罩的金属板,板上按三角形状钻有40~50万小圆孔。前罩式CRT管内按三角形排列安装三个电子枪,发射三条电子束,它们由一个共同偏转系统控制

三条电子束聚焦于荫罩板上的小孔中且相距很近。荫罩的作用是使三条电子束分离开来,分别轰击到三种颜色的荧光点上,调节各个电子枪的电流强度,就可改变相应颜色荧光点的亮度,即合成色中所占比例,达到改变成色的色彩

图形显示系统的类型

根据其电子束轰击屏幕的方式和组成结构可分为三种:随机扫描式显示系统、存储管式显示系统和光栅扫描式显示系统。

技术指标:

分辨率的高低:现在一般在1024×1024以上

显示图形的颜色的种数:现在一般为真彩色32位

1.随机扫描式显示系统

要显示的图形由计算机处理成为显示器的显示指令(或称显示文件)。图形控制器取出缓冲存储器或固定存储器中的显示指令,依次执行。由管头控制电路使电子束以按所要的亮度偏转到指定位置,从而得到图形。利用电子束在荧光屏上扫描的轨迹画图。显示指令中的亮度、位移量等数字信息经过线产生器的处理转换为控制电子束产生偏转和明暗的物理量,也就是电流和电压。固定存储器中则存放各种常用字符、数字等的显示指令,显示指令经接口电路送到显示器的缓冲存储器。为了获得稳定的画面,必须不断地重复扫描显示文件(即刷新),速度通常为每秒重复扫描25~50次,即每秒25~50帧左右优点:

能实时地进行数字-视频转换,实现动态显示,易于修改,交互

性好

扫描速度快,线条质量高,图形清晰,图线光滑。

缺点:

不能产生多级灰度的真实感显示,图形的复杂程度受显示器扫描速度的限制

价格贵,目前很少使用。

2.存储管式显示系统

利用显示管本身来存储信息技术(随机扫描器使用了一个独立的存储器来存储图形信息)优点:

图形保持时间长,比较稳定。

电路结构简单,成本低。

缺点:

显示画面速度慢,不适宜动态修改,交互性差。

图形复杂度受到限制。

3.光栅扫描式显示系统

随机扫描式显示器、存储管式显示器:

画线设备,在屏幕上显示一条直线是从屏幕上

一个可编地址点直接画到另一个可编地址点。

光栅扫描式显示器:

画点设备,可以看作是一个点阵单元发生器,

并可控制每个点阵单元亮度,可以生成多种灰度和

颜色,色彩连续变化具有真实感的图形。

(1)光栅扫描式显示系统组成

把计算机送来的图形(如画线、画多边形、画填充区域或写字符等)基本画图命令扫描转换成为相应的点阵,即位图(bitmap) 点阵的每一点与屏幕像素一一对应,点阵中每个元素就是像素值,通常用1~12位二进制数值来表示灰度或色彩。

位映射(bit mapping)技术:由若干位数据来对应屏幕上一点的光栅图形显示技术将屏幕显示图形的映像(Image),即位图放入显示存储器中。所以显示存储器又叫位存储器,通常称之为帧缓冲器

(Frame Buffer)。为了使CRT屏幕上的图形能持续地进行显示,显示存储器的内容需要不断地读出并送到监视器,使得画面能以一定的频率刷新。显示存储器的分页处理:显示存储器中同时存放多幅画面,这时存储区划分成若干页,每一页存放一幅位图。物理屏幕当前正在显示的页称为可见页(Visual Page)。主机每次只能向一个页进行读写操作,这个页就称作活动页(Active Page)。

存储器的页面可以比屏幕位图大得多,这样屏幕只能显示画面的一部分,通过上下左右移屏功能,用户可以看到显示存储器中的整个画面。

(1)光栅扫描式显示器组成

用来定义像素的颜色。又称为调色板。

彩色表的目的是为了不使显示存储器容量增大,而能显示更多的颜色,例如:显示器要控制三种原色,即R(红)、G(绿)、B(蓝),为了使三种原色按不同的比例合成各种颜色,每种颜色要有不同的灰度,如果每个像素各个原色要16种灰度,于是每个原色要占4位,则每个像素要12位,于是显示存储器容量就要很大,彩色表可解决此问题。

采用彩色表时,显示存储器的像素值不再是直接送到监视器中的颜色值,而仅是颜色的一个索引(Color Index),即彩色表的地址,用八位表示一个像素值,如编号69(01000101)为

彩色表对应地址

从彩色表对应地址项中读出R、G、B三种颜色分量(即颜色号的定义值)然后送监视器

例如:彩色表的字长为12bit(R、G、B各4bit),这意味着最多可定义212=4096种不同颜色

彩色表结构

为什么说彩色表的使用节省了存储容量?

彩色表的地址数目是由像素值的位长来决定的,也就是彩色素的多少,也即是一屏能显示颜色数目的多少,例如像素值有8位,那么彩色表的地址=彩色素数目=一屏能显示的颜色数=256

像素值的位长与彩色表的字长(也即是R/G/B三种原色的总位长)

无关,例如像素值的位长为8,R/G/B三种原色各有16(256)种灰度,那么彩色表的字长为12(24),该显示系统所能显示的颜色总数为4096(16777216)种,但是每屏最多能显示的颜色数目只有28=256种。

CRT 控制器

使电子束不断地自上而下、自左面右进行屏幕扫描,形成光栅(Raster),产生水平和垂直步信号送往CRT。

2.3 计算机图形输入/输出设备

一. 键盘

二. 鼠标

一.机械式鼠标器

二.光电式鼠标器

三.光机式鼠标器

一种检测装置

功能一般有两种:拾取和跟踪使用时要有相应的软件配合。

数字化仪

数字化仪时常用来摘取放在它上面的工程图上的大量点,经数字化后存储起来,以此作为图形输入一种手段。

工作原理:数字化仪平板实际上就是一个XY直角坐标系,它上面的任何一点都对应于一个坐标值(x,y),当游标器移动到平板上某一位置时,按一下游标器上的开关,便可获得这一位置的坐标值,并自动地把这个坐标值(x,y)送到计算机内。

只要将画有此曲线的图纸贴在数字化仪的平板上,并移动游标器到各个点A i(i=1,2,……,每次按下游标器上的开关,便把这些点的坐标(x i,y i)自动地送到计算机内

图形输入板则更多用于交互设计,使用时大多划出一个台板图形区,其余部分放置菜单,称为菜单区。

图形区

菜单区

台板图形区与显示屏之间存在着一种映射关系

图形输入板的使用方式有三种:

(1)图形变成数字化信息。

(2)拾取台板菜单区中的菜单项,即取出拾取点的坐标,算出该菜单项的代码并转入相应程序运行。

(3)选择输出坐标数据的方式,共有四种方式。第一种为点方式,即先拾取一个点,接着输出该点的坐标;第二种称连续方式,即随着定位工具的移动,连续输出点的坐标;第三种称开关连续方式,即当定位工具移动且同时按下开关时才能连续输出点的坐标;第四种称增量方式,这时拾取点的坐标以相对于上次拾取点的增量坐标形式输出。以上四种方式可通过选择图形输入板上的有关按钮来决定。

图形扫描仪

直接把图形(工程图纸)和图像(如照片、广告画)扫描输入到计算机中,以像素信息进行存储表示的设备。

按所支持的颜色分:

单色扫描仪和彩色扫描仪

按所采用的固态器件分:

电荷耦合器件(CCD)扫描仪、MOS电路扫描仪和紧贴型扫描仪等;

按扫描宽度和操作方式分:

大型扫描仪、台式扫描仪和手动式扫描仪.

图形扫描基本过程(CCD扫描仪)

扫描光源通过待扫描材料

再经一组镜面反射到CCD

由CCD转换产生图像数据,然后,传输给计算机主机

经过适当的软件处理,以图像数据文件的形式存储或使用。

分辨率:在原稿的单位长度(英寸)上取样的点数,单位是dpi (dot per inch)一般在300dpi-1000dpi

扫描仪的性能指标

支持颜色、灰度等级:目前有4位、8位和22位面颜色、灰度等级的扫描仪。

扫描图形分辨率越高,所需的

储空间就越大。

扫描仪支持的颜色、灰度层次越多,图像的数字化表示就越准确,但同时意味着表示一个像素的位数增加了,因而也增加了存储空间。

显示器、绘图仪、打印机

一. 绘图仪

把由计算机生成的图形输出到图纸(或其它介质)上的硬拷贝设备。

笔绘式

喷墨式

静电式

矢量型设备,绘图笔相对纸作随机移动。

在笔式绘图机上,一个电脉冲通过驱动电机与传动机构使画笔移动的距离称为步距(或称脉冲当量)

步距减小,画出的图就越精细。

1.笔式绘图仪

(1).平台式绘图机

图纸静止不动

导轨做X方向运动

笔架做Y方向运动

机械传动

(2).滚筒式绘图机

绘图纸卷在滚筒上,笔和纸都是运动的。

(3).平面电机式绘图机

采用平面电机驱动,可以取消导轨、横梁及传动机构。

(4).小型绘图机

结构简单

原理大致与平台式绘图机相同

笔式绘图机的主要技术指标

绘图速度

步距

绘图精度

功能

包括绘图幅面大小(A0,A1,A3……等),画笔数量,以及其他辅助功能(如插补功能、由线拟合功能等)

二、喷墨式绘图仪

喷墨装置多数情况是安装在类似打印机的机头上,纸则绕在滚筒上并使之快速旋转,喷墨头则在滚筒上缓慢运动,并且把青色、品红、黄色,有时是黑色墨喷到纸上。

三、静电绘图仪

绘图分两步:

(1)用静电构造一个不可见潜影

(2)喷上调色剂着色处理进行显影

针点式打印机

激光打印机

细针与色带作为打印装置

利用静电作用

利用喷射墨计作为打印装置

2.4 图形核心系统(GKS)简介

Graphics Kernel System,一种已经被ISO接受的国际图形标准

1. GKS的功能

提供了各种物理的图形输入、输出设备(图形显示器、绘图机。图形输入板等)和应用软件之间的接口。提供了与各种高级语言的接口。

2. GKS的基本概念

1.工作站

由一个操作员操纵使用的一组图形输入/输出设备是一个逻辑上的概念

一个工作站允许有多个输入设备,但只能有一个输出设备。典型的工作站由一个键盘、一个鼠标器和一台图形显示器组成。分为输出

型、输入型、输入/输出型(交互式工作站)、元文件输出工作站、元文件输入工作站和图段存储器工作站六种类型。

2.坐标与坐标变换

GKS有三种不同的坐标系

供应用程序使用的实际世界坐标系统(World Coordinate System,简称WC)

各工作站物理设备使用的设备坐标系(Device Coordinate System,简称DC)

GKS内部使用的规范设备坐标系(Normalized Device Coordinate;简称NDC)

三个坐标系都是二维坐标系

3.GKS图形输出原语

GKS可以输出一些最基本的几何元素如线段、标记、填充封闭区域、文字、符号等。通常二维物体的形状及其相应的画面都可以由这些基本的图形元素来构成。应用程序是通过调用GKS的输出图元功能子程序的方式输出图元的。

GKS的六种图形输出原语(见书P41)

GKS不仅使用必要的坐标数据来规定上述各种图元的位置、大小及形状、而且可以通过各种属性来指出其外貌,从而使应用程序能很方便地生成符合实际使用要求的多姿多彩的图形。

输出图元属性(见书P42)

4. GKS图形输入设备

六种不同的逻辑输入设备:

定位设备

笔画设备

拣取设备

选择设备

数值输入设备

字符串输入设备

2.5 通用图形软件简介

一、通用图形软件的分类

图形软件的内容非常丰富,它包括二维图形的生成、图形变换、几何交切、裁剪,平面图形的布尔运算,三维图形的生成、变换、隐藏线的消除,三维剪裁,立体造型等。

图形程序包:如PLOT-10、CALCOMP等绘制软件

基本图形资源软件:如GKS及PHIGS标准的软件包,还有SGI公司研发的图形标准库OpenGL。

以及二维、三维交互图形软件,几何造型软件,动画技术软件等CADAM(Computer-graphics Augmented Design And Manufacture,计算机图形增广设计和制

造)

CA TIA(Computer-graphics Aided Three-demensional Interactive Application,计算机辅助三维交互应用)

CAEDS(Compute Aided Engineering Design Systems,计算机辅助工程设计系统)

GKS(Graphics Kernel System,图形核心系统)

CBDS2(Circuit Board Design System 2,电路板设计系统2)PADL(Pat and Assembly Descriptiion Language,零件和部件描述语言)

九、作业

课后习题

十、本章小结

在本章中,介绍了计算机图形系统的组成,各种图形显示器的种类以及输入输出设备等。

第3章 c语言图形程序设计基础

一、教学目标

通过对本章的学习,要求熟悉c语言图形程序设计的基础知识:屏幕颜色的设置、图形颜色设置、线的特性设定和填充。

二、教学要求

1、掌握c语言的图形颜色设置;

2、了解线的特性设定和填充。

三、教学内容提要

3.1 屏幕设置

3.2 图形颜色设置

3.3 线的特性设定和填充

3.4 图形模式下文本处理

3.5 图形存取处理

3.6 常用画图函数简介

3.7 绘图程序实例

3.8 c++语言环境下绘图

四、教学重点、难点及解决方法

重点是了解c语言图形程序设计的基础,包括图形颜色设置,线的特性设定和填充,图形模式下文本处理等。

五、课时安排

8学时

六、教学设备

课堂教学

七、检测教学目标实现程度的具体措施和要求

通过课堂提问的方式来检测学生对基本概念的掌握程度。

八、教学内容

3.1 屏幕设置

一、屏幕显示方式与坐标系

1. 文本方式与字符坐标系

在屏幕上只能显示字符的方式称为文本方式。在文本方式下,屏幕上可以显示的最小单位是字符。为了能在指定位置显示每个字符,C 语言提供了字符坐标系。

左上角为坐标原点(1,1)

水平方向(x轴)分为若干列

垂直方向(y轴)分为若干行

第三章 C语言图形程序设计基础

计算机图形学实验报告

计算机图形学 实验报告 学号: 姓名: 班级:计算机 2班 指导老师:何太军 2010.6.19

实验一、Windows 图形程序设计基础 1、实验目的 1)学习理解Win32 应用程序设计的基本知识(SDK 编程); 2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。 4)学习MFC 类库的概念与结构; 5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框); 6)学习使用MFC 的图形编程。 2、实验内容 1)使用WindowsAPI 编写一个简单的Win32 程序,调用绘图API 函数绘制若干图形。(可选任务) 2 )使用MFC AppWizard 建立一个SDI 程序,窗口内显示"Hello,This is my first SDI Application"。(必选任务) 3)利用MFC AppWizard(exe)建立一个SDI 程序,在文档视口内绘制基本图形(直线、圆、椭圆、矩形、多边形、曲线、圆弧、椭圆弧、填充、文字等),练习图形属性的编程(修改线型、线宽、颜色、填充样式、文字样式等)。定义图形数据结构Point\Line\Circle 等保存一些简单图形数据(在文档类中),并在视图类OnDraw 中绘制。 3、实验过程

1)使用MFC AppWizard(exe)建立一个SDI 程序,选择单文档; 2)在View类的OnDraw()函数中添加图形绘制代码,说出字符串“Hello,This is my first SDI Application”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制; 3)在类视图中添加图形数据point_pp,pp_circle的类,保存简单图形数据,通过在OnDraw()函数中调用,实现线、圆的绘制。 4、实验结果 正确地在指定位置显示了"Hello,This is my first SDI Application"字符串,成功绘制了圆,椭圆,方形,多边形以及曲线圆弧、椭圆弧,同时按指定属性改绘了圆、方形和直线。成功地完成了实验。 结果截图: 5、实验体会 通过实验一,了解了如用使用基本的SDI编程函数绘制简单的图

计算机图形学实验报告三

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

//glEnable(GL_SCISSOR_TEST); //glScissor(0.0f,0.0f,500,300); glutWireTeapot(0.4); glFlush(); } //窗口调整子程序 void myReshape(int w, int h) { glViewport(500, -300, (GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho(-1, 1, -(float)h / w, (float)h / w, -1, 1); else glOrtho(-(float)w / h, (float)w / h, -1, 1, -1, 0.5); } 2,使用opengl函数写一个图形程序,要求分别使用三个光源从一个茶壶的前右上方(偏红色),正左侧(偏绿色)和前左下方(偏蓝色)对于其进行照射,完成程序并观察效果。 }

//绘图子程序 void display(void) { glColor3f(1.0, 1.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); //glMatrixMode(GL_MODELVIEW); //glLoadIdentity(); //设置光源的属性1 GLfloat LightAmbient1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; //环境光参数 ( 新增 ) GLfloat LightDiffuse1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; // 漫射光参数 ( 新增 ) GLfloat Lightspecular1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; // 镜面反射 GLfloat LightPosition1[] = { 500.0f, 500.0f, 500.0f, 1.0f }; // 光源位置 ( 新增 ) glLightfv(GL_LIGHT0, GL_POSITION, LightPosition1); glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient1); // 设置环境光 glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse1); // 设置漫射光 glLightfv(GL_LIGHT0, GL_SPECULAR, Lightspecular1);//设置镜面反射光 //设置光源的属性2 GLfloat LightAmbient2[] = { 0.0f, 1.0f, 0.0f, 1.0f }; //环境光参数 ( 新增 )

南昌大学- -计算机图形学实验报告

南昌大学实验报告 计算机图形学实验 学生姓名: 学号: 6100 专业班级:计科112班 教学老师:徐老师

目录 一、实验一直线和圆 (1) 二、实验二填充算法 (5) 三、实验三裁剪算法 (7) 四、实验四曲线的绘制(Bezier) (11) 五、实验五曲线的绘制(B样条) (14)

南昌大学实验报告一学生姓名:学号:6100 专业班级:计科112 班 实验类型:□验证■综合□设计□创新实验日期:实验成绩:一.实验名称 直线和圆 二.实验目的 1、掌握中点画圆算法 2、熟悉曲线的整数加减来计算沿圆周的像素位置 三.实验内容 1、使用中点画圆算法,熟悉算法的内容和原理。 2、通过改变参数值设定背景色和圆的大小 四.实验结果 如图2-1.画直线算法

如图2-2.中点画圆算法 五.程序源码: //Line.cpp #include void init(void) { glClearColor(1.0,1.0,1.0,0.0) ; glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150. 0); } void lineSegment(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,0.0,0.0); glBegin(GL_LINES); glVertex2i(180,15); glVertex2i(10,145); glEnd(); glFlush(); } void main(int argc,char**argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SING LE|GLUT_RGB); glutInitWindowPosition(50,100 ); glutInitWindowSize(400,300); glutCreateWindow("Line"); init(); glutDisplayFunc(lineSegment); glutMainLoop(); } `#include void init(void) { glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150.

计算机图形学实验报告

计算机图形学 实验报告 实验一:二维线画图元的生成 实验目的:掌握直线段的生成算法,并用C/WIN-TC/VC++实现算法,包括中点法生成直线,微分数值法生成直线段等。 实验内容:用不同的方法生成斜率不同的直线段,比较各种方法的效果。 Bresenham 算法的思想 Bresenham 画法与中点法相似,都是通过每列象素中确定与理想直线最近的像素来进行直线的扫描的转换的。通过各行、各列的象素中心构造一组虚拟网格线的交点,然后确定该列象素中与此交点最近的像素。该算法的巧妙之处在于可以采用增量计算,使得对于每一列,只需要检查一个误差项的符号,就可以确定该列的所有对象。 1.1方法一:直线的中点算法 算法的主要思想: 讨论斜率k ∈[1,+∞)上的直线段的中点算法。 对直线01p p ,左下方的端点为0p (x0,y0),右上方的端点为1p (x1,y1)。直线段的方程为: y m x B =+ ?y y x B x y y x x B x ?= +??=?+?? (,)0F x y xy yx xB ?=?-?-?= 现在假定已求得像素(,,i r i x y ),则如图得

,,11(,]22 i i r i r x x x ∈- + 由于直线的斜率k ∈[1,+∞),故m=1/k ∈(0,1],则 1,,13(,]22i i r i r x x x +∈-+ 在直线1i y y =+上,区间,,13 (,]22i r i r x x -+内存在两个像素NE 和E 。根据取整原则,当 11(,)i i x y ++在中点M 11 (,)2 i i x y ++右方时,取像素NE ,否则取像素E ,即 ,11,,1()()01()()0 i r i i r i r i x E F M x x x NE F M x +++? ?≤=? +?>?i i 点当(,y +1)在左方时点当(,y +1)在右方时 若取2()i d F M =,则上式变为 ,1,,()01(0 i r i i r i r i x E d x x NE d +? ≤=? +>?点当点)当 计算i d 的递推公式如下: ,1 1,12[(2)()]012 2(,2)0 122[(2)(1)] 2 i i r i i i i i i i r x y y x xB d d F x y d x y y x xB ++? ?+-?+-??≤?=++=? >??+-?++-??? =202() i i i i d x d d x y d +?≤?? +?-?>? 算法的初始条件为: 00,00,0(,)(0,0)1 2(,1)22 r r x y x y d F x y x y =? ? ?=++=?-??? 相应的程序示例: 建立成员函数: void MidPointLine4(CDC*pDC,int x0,int y0,int x1,int y1,int color) { /*假定x01*/ int dx,dy,incrE,incrNE,d,x,y; dx=x1-x0; dy=y1-y0; d=2*dx-dy; incrE=2*dx; incrNE=2*(dx-dy); x=x0;y=y0; pDC->SetPixel(x,y,color); while (x

计算机图形学实验报告及代码

计算机图形学实验报告及代码 第 1 章概述 一、教学目标 通过本章的学习,使学生能够了解计算机图形学的基本概念、研究内容;当前的发展概况;本门课程的特点和应用。 二、教学要求 1.了解计算机图形学的概念和研究内容; 2.了解本门课程的发展概况。 三、教学内容提要 1. 计算机图形学的研究内容 2. 计算机图形学发展概况 3. 计算机图形学特点和应用 4. 计算机图形学当前研究的课题 5. 计算机图形生成和输出的流水线 四、教学重点、难点及解决方法 本章将主要围绕计算机图形学的基本概念进行介绍,介绍研究内容;当前的发展概况;本门课程的特点和应用等等。 五、课时安排 2学时 六、教学设备 多媒体 七、检测教学目标实现程度的具体措施和要求 通过课堂提问的方式来检测学生对基本概念的掌握程度。 八、教学内容 1.1 计算机图形学的研究内容 计算机图形学(Computer Graphics): 研究通过计算机将数据转换为图形,并在专用显示设备上显示的原理、方法和技术的学科。 计算机图形表现形式 (1).线条式(线框架图)

用线段来表现图形,容易反映客观实体的内部结构,如各类工程技术中结构图的表示,机械设计中零件结构图及电路设计中的电路原理图等。具有面模型、色彩、浓淡和明暗层次效应,适合表现客观实体的外形或外貌,如汽车、飞机、轮船等的外形设计以及各种艺术品造型设计等。 (2).真实感面模型图形 跑车靓照 计算机图形分类(空间) (1).二维图形(2D):在平面坐标系中定义的图形 (2).三维图形(3D):在三维坐标系中定义的图形 计算机图形产生方法 (1).矢量法(短折线法) 任何形状的曲线都用许多首尾相连的短直线(矢量)逼近。 (2).描点法(像素点串接法) 每一曲线都是由一定大小的像素点组成 计算机绘图方式: (1)交互式绘图 允许操作者以某种方式(对话方式或命令方式)来控制和操纵图形生成过程,使得图形可以边生成、边显示、边修改,直至符合要求为止。如AUTOCAD等 (2)被动式绘图 图形在生成过程中,操作者无法对图形进行操作和控制。如C语言绘图 图形的操作与处理方法(Picture Manipulation) 如图形的开窗、裁剪、平移、旋转、放大、缩小、投影等各种几何变换操作的方法及其 软件或硬件实现技术。 图形信息的存储,检索与交换技术:如图形信息的各种表示方法、组织形式、存取技术、图形数据库的管理、图形信息通信等。 人机交互及用户接口技术:如新型定位设备、选择设备的研究;

《计算机图形学》课内实验报告(实验一)

目录 一、实验题目 (1) 二、实验目的 (1) 三、实验内容 (1) 四、实验结果 (1) 五、实验体会或遇到问题 (2)

一、实验题目 VC++结合OpenGL的程序设计方法 二、实验目的 1.认识VC++6.0下MFC的基本实现方法; 2.掌握OpenGL的安装,使用与基本操作。 三、实验内容 1. 安装并使用VC++6.0 安装VC++6.0后并启动VC++6.0,然后新建工程,并重命名,生成可执行文件或MFC完成就可编写代码。 2. OpenGL的安装 OpenGL开放图形库,是一个三维计算机图形和模型库,是美国SGI公司为图形工作站开发的一种功能强大的三维图形开发包,在高级图形动画设计中表现十分突出,其安装要以VC++6.0或Java等编程语言为基础,在VC库文件中添加OpenGL专用库gl.lib,glut.lib,glaux.lib等,在头文件中添加gl.h, glut.h, glaux.h,并在系统目录(system32目录)下添加glut.dll,到glut32.dll, opengl32.dll等。这样外部环境已完成,在编写程序时再连结相应的库就可以正常使用VC++6.0结合OpenGL编写图形程序。 3.通过演示程序了解OpenGL的强大功能,同时了解编程方法。 四、实验结果 1、建立一个工程(工程名称:first program)并及一个文件(文件名:hello world.cpp)。

编写一个输出“hello world”的程序,编译运行。 生成可执行文件 2、(1) 将glut.h等所有头文件加入VC的相应文件夹中,即放入如下文件夹: C:\Program Files\Microsoft Visual Studio\VC98\Include\GL 将glut.dll等dll文件放到C:\WINDOWS\system32 将opengl32.lib等文件放到VC的的相应文件夹中,即放入如下文件夹:C:\Program Files\Microsoft Visual Studio\VC98\Lib 建立Win32的Console工程,在工程的设置中连接所有可能用到的静态库:opengl32.lib, glu32.lib; glaux.lib; glut32.lib; glut.lib。 实验源代码: // HighLevelShaders.c // OpenGL SuperBible, Chapter 21 // Demonstrates high-level shaders // Program by Benjamin Lipchak

计算机图形学实验报告(一).doc

实验一OpenGL开发环境及扫描转换算法 1、实验目的与要求 1.通过实验掌握OpenGL中编程环境的设置,了解相关函数用途及设置步骤; 2.通过实验掌握基本图形元素的生成,给出相关代码和运行结果; 3.用WINDOWS GDI函数编写生成直线或区域填充的程序(选DDA或Bresenham直线算法,活 性边表算法填充多边形),演示算法过程。 4.画矩形,调用一个函数画一个矩形。画椭圆,调用一个函数画一个椭圆。画Bezier 曲线。 2、实验方案 请描述为达到实验的需要完成哪些方面的实验,列举出实验的基本要点和重点。 在工程WinAPIEX加入void createLine(HDC tmpDC)和void Polyline (tmpDC) 在void createLine(HDC tmpDC)用DDA直线算法或Bresenham直线算法生成直线 在void Polyline (tmpDC)添加活泩边表填充算法,生成填充四边形和八边形 加入Rectangle(tmpDC,x0,y0,x1,y1);加入Ellipse (tmpDC, x0,y0,a,b) ;加入PolyBezier(tmpDC,arr_vertex,4) ; 3、实验结果和数据处理 1)生成直线的DDA直线算法 在createLine(tmpDC)中加入以下代码int x0,y0,x1,y1,color; //自定义直线的起点(x0,y0)和终点(x1,y1),及颜色color float dx,dy,x,y; int length,i; x0=50; y0=160; x1=900; y1=200;//此处修改了 color=1000; color=1; if(abs(x1-x0)>=abs(y1-y0)) length=abs(x1-x0); else length=abs(y1-y0); dx=(x1-x0)/(float)length; dy=(y1-y0)/(float)length; i=1; x=(float)x0; y=(float)y0; while(i<=length) { SetPixel(tmpDC,int(x+0.5),int(y+0. 5),color); x+=dx; y+=dy; i++; } 2)区域填充的程序 在void Polyline (tmpDC) 添加活性边表填充 void Polyline (HDC tmpDC) //多边形边数. { const int POINTNUM=4;//或者是八边形8 /******定义结构体用于活性边表AET

计算机图形学实验报告实验2裁剪算法实验

一、实验目的: 直线段的裁剪:编码裁剪算法,中点分割裁剪算法。 二、实验内容: //BasicGraph.cpp //请将下列裁剪程序补充完整,并用注释说明是何种裁剪算法 void Encode (int x,int y,int *code,int XL,int XR,int YB,int YT) { //请将此程序补充完整 int c=0; if(xXR) c=c|RIGHT; if(yYT) c=c|TOP; (*code)=c; } //编码裁剪算法: void C_S_Line(POINT &p1,POINT &p2,int XL,int XR,int YB,int YT) { //请将此程序补充完整 int x1,x2,y1,y2,x,y,code1,code2,code; x1=p1.x; x2=p2.x; y1=p1.y; y2=p2.y; Encode(x1,y1,&code1,XL,XR,YB,YT); Encode(x2,y2,&code2,XL,XR,YB,YT); while(code1!=0||code2!=0) { if((code1&code2)!=0) return; code=code1; if(code1==0) code=code2; if((LEFT&code)!=0) {x=XL;y=y1+(y2-y1)*(XL-x1)/(x2-x1);} else if((RIGHT&code)!=0) {x=XR;y=y1+(y2-y1)*(XR-x1)/(x2-x1);} if((BOTTOM&code)!=0) {y=YB;x=x1+(x2-x1)*(YB-y1)/(y2-y1);} else if((TOP&code)!=0) {y=YT;x=x1+(x2-x1)*(YT-y1)/(y2-y1);} if(code==code1) {x1=x;y1=y;Encode(x,y,&code1,XL,XR,YB,YT);} else {x2=x;y2=y;Encode(x,y,&code2,XL,XR,YB,YT);} }

计算机图形学报告

沈阳航空航天大学 计算机图形学实验报告 班级:34140102学号:20130 姓名:成绩: 指导教师: 实验一:OpenGL绘制球体线框图 1.实验目的: 本实验要求熟悉OpenGL基本图元函数的使用。 通过使用OpenGL及GLUT库在Visual C++环境下编写图形绘制程序掌握图形绘制的一般框架,从而为进一步做综合性的图形绘制实验奠定基础 2.实验要求: 编写一个程序,在窗口中显示一个旋转的球体线框,利用光标键可启动图形旋转切换视点。 3.实验过程: 先配置环境,把相关文件放到相应的文件夹 C:\Program Files\Microsoft Visual Studio\VC98\Include\GL C:\WINDOWS\system32 C:\Program Files\Microsoft Visual Studio\VC98\Lib 建一个新工程,比照pdf敲代码 再通过VC++进行编译

4.实验结果: 程序运行后,弹出窗口,使用光标键可使球体旋转。 代码:include #include #include #include #include void init(); void CALLBACK reshapae(GLsizei w,GLsizei h); void CALLBACK display(); GLfloat s, h; //回调函数,绘制窗口时调用 void CALLBACK display() { //清空窗口设置背景为白色 glClearColor(1, 1, 1, 1); glClear(GL_COLOR_BUFFER_BIT);

计算机图形学实验报告

计算机图形学实验报告 引言 计算机图形学是计算机科学中一个重要的研究领域,它涉及了计算机图像的生成、处理和显示等方面的技术。本次实验旨在通过实际操作学习计算机图形学的相关知识,并利用图形学算法实现一些有趣的效果。 实验目的 1. 了解计算机图形学的基本概念和发展历程; 2. 掌握图形学中的基本几何变换,如平移、旋转和缩放等; 3. 实现一些常见的图形学算法,如光照模型、三角形剪裁和绘制等。 实验准备 在开始实验之前,我们需要准备一些实验所需的工具和环境。首先,确保计算机上安装了图形学相关的软件,如OpenGL或

DirectX等。其次,为了编写和运行图形学程序,我们需要掌握基 本的编程技巧,如C++或Python语言,并了解相关的图形库和API。 实验过程 1. 实现平移、旋转和缩放 首先,我们需要掌握图形学中的基本几何变换,如平移、旋转 和缩放。通过矩阵运算,我们可以很方便地实现这些变换。例如,对于一个二维点P(x, y),我们可以通过以下公式实现平移: P' = T * P 其中,P'是平移后的点,T是平移矩阵。类似地,我们可以用 旋转矩阵和缩放矩阵来实现旋转和缩放效果。 2. 实现光照模型

光照模型是指在计算机图形学中模拟现实光照效果的一种方法。它可以提供更真实的视觉效果,让计算机生成的图像更加逼真。 其中,常用的光照模型有环境光照、漫反射光照和镜面光照等。 通过计算每个像素的光照强度,我们可以实现阴影效果和光源反 射等功能。 3. 实现三角形剪裁 三角形剪裁是计算机图形学中一种常用的几何算法,用于确定 哪些像素需要绘制,哪些像素需要剔除。通过对三角形的边界和 视口进行比较,我们可以快速计算出剪裁后的三角形顶点,以提 高图形渲染的效率。 4. 实现图形绘制 图形绘制是计算机图形学中的核心内容,它包括了点、线和面 的绘制等。通过设定顶点坐标和属性(如颜色、纹理等),我们 可以使用算法绘制出各种形状的图像。其中,常用的绘制算法有Bresenham算法和扫描线算法等。

计算机图形学二维弹球实验报告范文

计算机图形学二维弹球实验报告范文 实验一、二维弹球游戏设计一、实验目的与基本要求: (1)掌握在VS2022或以上版本环境下如何配置OpenGL环境的方法;(2)熟悉OpenGL应用程序基本架构; (3)培养良好的编程习惯和风格,学习撰写实验报告;(4)学习交 互式游戏设计; (5)通过小球移动、反弹、击中等功能实现学习二维几何的基本运算;(6)菜单的使用。 二、实验设备(环境)及要求 1.操作系统:Window某P或Window7 2.编程环境:MicrooftViualStudio2022,OpenGL库函数 3.界面框架:Win32,MFC,QT选择其中一种 三、实验内容与步骤 实验分为以下几个步骤: 1.绘制游戏界面和基础物体(小球、挡板) 2.实现小球的发射及方向 的控制 3.实现小球与墙壁和挡板、挡板与墙壁的碰撞算法 4.实现键盘控制 的挡板移动 5.菜单游戏介绍及难度等级的选择附加功能: 1.砖块的绘制和与小球的碰撞 2.砖块的消失

3.文字标识的游戏的输赢 4.增加了小球的生命数以及血量条 5.增加了背景图案的变化和背景颜色的切换 四、实现过程说明及成果展示: 1.绘制游戏界面和基础物体(小球、挡板) 游戏界面的绘制使用画面单位的长和宽与画面比例相乘得到小球的绘制和挡板的绘制函数为 运用了 2.实现小球的发射和方向控制 小球的初始方向设置为向量(1,1)的方向,其某轴和y轴的方向分别用数组分开存储: ballDir[0]表示某轴,ballDir[1]表示y轴 3.实现小球与墙壁和挡板、挡板与墙壁的碰撞算法 小球与墙壁的碰撞和挡板相似,以挡板为例: 小球的坐标处设置为球心坐标,故其与挡板的碰撞位置判断时需要加上小球的半径当小球与挡板的上部碰撞时: 小球位置应在挡板的左右横坐标之间,当 小球球心位置+小球半径<挡板上沿并且 小球位置>挡板下沿(保证球不会穿过挡板)时,小球的则不能继续穿过挡板,

计算机图形学实验报告

实验报告 一、实验目的 1、掌握有序边表算法填充多边形区域; 2、理解多边形填充算法的意义; 3、增强C语言编程能力。 二、算法原理介绍 根据多边形内部点的连续性知:一条扫描线与多边形的交点中,入点和出点之间所有点都是多边形的内部点。所以,对所有的扫描线填充入点到出点之间所有的点就可填充多边形。 判断扫描线上的点是否在多边形之内,对于一条扫描线,多边形的扫描转换过程可以分为四个步骤: (1)求交:计算扫描线与多边形各边的交点; (2)排序:把所有交点按x值递增顺序排序; (3)配对:第一个与第二个,第三个与第四个等等;每对交点代表扫描线与多边形的一个相交区间; (4)着色:把相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。 p1,p3,p4,p5属于局部极值点,要把他们两次存入交点表中。如扫描线y=7上的交点中,有交点(2,7,13),按常规方法填充不正确,而要把顶点(7,7)两次存入交点表中(2,7,7,13)。p2,p6为非极值点,则不用如上处理。

为了提高效率,在处理一条扫描线时,仅对与它相交的多边形的边进行求交运算。把与当前扫描线相交的边称为活性边,并把它们按与扫描线交点x坐标递增的顺序存放在一个链表中,称此链表为活性边表(AET)。 对每一条扫描线都建立一个与它相交的多边形的活性边表(AET)。每个AET的一个节点代表一条活性边,它包含三项内容 1.x -当前扫描线与这条边交点的x坐标; 2.Δx -该边与当前扫描线交点到下一条扫描线交点的x增量; 3.ymax -该边最高顶点相交的扫描线号。 每条扫描线的活性边表中的活性边节点按照各活性边与扫描线交点的x值递增排序连接在一起。 当扫描线y移动到下一条扫描线y = y+1时,活性边表需要更新,即删去不与新扫 描线相交的多边形边,同时增加与新扫描线相交的多边形边,并根据增量法重新计算扫描线与各边的交点x。 当多边形新边表ET构成后,按下列步骤进行: ①对每一条扫描线i,初始化ET表的表头指针ET[i]; ②将ymax = i的边放入ET[i]中; ③使y =多边形最低的扫描线号; ④初始化活性边表AET为空; ⑤循环,直到AET和ET为空。 ●将新边表ET中对应y值的新边节点插入到AET表。 ●遍历AET表,将两两配对的交点之间填充给定颜色值。 ●遍历AET表,将 ymax= y的边节点从AET表中删除,并将ymax> y的各 边节点的x值递增Δx;并重新排序。 ●y增加1。 三、程序源代码 #include "graphics.h" #define WINDOW_HEIGHT 480 #define NULL 0 #include "alloc.h" #include "stdio.h" #include "dos.h" #include "conio.h"

计算机图形学matlab实验报告

姓名:_刘奔__________ 学号: 20124223 学院: 理学院 专业班级: 地理信息系统一班 论文标题: 计算机图形学实验报告 2014年6月25日

Matlab绘图实验 一、实验目的: 1、掌握MATLAB的基本绘图函数。 2、掌握绘图函数的用法、简单图形标注、简单颜色设定。 二、实验要求: 独立进行实验,完成实验报告。 三、实验内容: 1、MATLAB简介:MATLAB语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的。 2、MATLAB的绘图功能: (1)二维绘图: A、plot——最基本的二维图形指令:1. 单窗口单 曲线绘图;2. 单窗口多曲线绘图;3. 单窗口多曲线分图绘图;4. 多窗口绘图;5.可任意设置颜色与线型;6.图形加注功能;7.fplot——绘制函数

图函数;8.ezplot ——符号函数的简易绘图函数 B 、fill ——基本二维绘图函数:绘制二维多边形并填充颜色 (2) 三维绘图: A 、三维线图:plot3——基本的三维图形指令 B 、三维网格图:mesh ——三维网线绘图函数 C 、三维表面图:surf ——三维曲面绘图函数,与网格图看起来一样 四、作业: 1、(1)在同一幅图上的(-pi ,pi )区间,用0.5的间隔绘制sinx 的红色曲线,用0.1的间隔绘制sin(x+0.5)的绿色曲线,用0.01的间隔绘制sin(x+1)的蓝色曲线。 (2)给图的x 和y 轴添加标注。 2、在[-2*pi,pi]区间以0.1的间隔绘制5cos(x.^2+1)的曲线。 3、编辑M 文件,实现函数4xexp (-(x.^2+y.^2))的各种图形,包括三维线性图、网眼图、曲面图,并对他们分别加图题和标注坐标轴 4、编辑M 文件,实现函数 22() (,)(cos6cos6) x y f x y e x y -+=+

相关主题