用于图形应用的通用软件包称为计算机图形应用编程接口(CG API)。它提供可以在C++等高级编程语言中用来创建图形的函数库。
创建图形时最先要做的是描述场景的组成部分。图形的组成部分可以是树木、家具、墙壁等等。对于每一类场景,要描述每一个对象的结构及其在场景中的坐标位置。
图形软件包中用来描述各种图形元素的函数称为图形输出原语(graphic output primitive),或简称为图元(primitive)。描述对象几何要素的输出图元一般称为几何图元。点的定位和直线段是最简单的几何图元。
图形软件包中包含的其他几何图元有圆和其他二次曲线、二次去面、样条曲线和曲面及多边形填色区域。
多数图形系统还提供显示字符串的某些函数。
在选定的坐标系中制定一个图形的几何要素后,输出图元投影到与该输出设备显示区域队形的二维平面上,并扫描转换到帧缓存的整数像素位置。
3.1 坐标系统
为了描述系统,必须首先确定一个称为世界坐标系的合适的二维或三维笛卡尔坐标系。接着通过给出世界坐标系中的位置等几何描述来定义图形中的对象。这些坐标位置与该对象的颜色、坐标范围即对象坐标的x\y\z最小/最大值等其他信息一起存储在场景描述中。坐标范围也称为对象的包围盒。对于二维图形来说,坐标范围也称为对象的包围举行(bounding rectangle)。
通过将场景信息传送给观察函数、由观察函数识别可见面、将对象映射到视频显示器上来实现对象的显示。
扫描转换过程将颜色值等场景信息保存到帧缓存的相应位置,从而在输出设备上显示场景中的对象。
3.1.1 屏幕坐标
视频监视器上的位置使用与帧缓存中的像素位置相对应的整数屏幕坐标(screen coordinate)进行描述。像素的坐标值给出扫描行号(y值)和列号(扫描行的x值)。屏幕刷新等硬件处理一般从屏幕的左上角开始对像素进行编址。从屏幕最上面的0行到屏幕最下面的某整数值ymax行对扫描行进行编号,每一行中像素位置从左到右、从何0到xmax进行编号。但是使用软件命令可以按照任何设定屏幕位置的参考系统。
图元的扫描转换算法使用定义的坐标描述来确定要显示像素的位置。。例如给定一直线段的两个端点,其先是函数必须计算出两断电间位于线段上所有像素的位置。由于一个像素位置占有屏幕上的一个有限范围,因此实现算法必须考虑像素的有限大小。目前,我们假设每一整数屏幕位置代表像素区域的中心。
一旦确定了一个对象的像素位置,必须将合适的颜色存入帧缓存。为此我们使用一个底层函数:setPixel(x,y);
该函数将当前颜色设定值存入帧缓存的证书坐标位置(x,y)处,该位置相对于屏幕坐标远点而选定。有事我们也希望获得一个像素位置的当前帧缓存值。可以使用下列底层函数来获得。
getpixel(x,y,color);
在这一函数中,参数color得到一个存储在位置(x,y)的像素中的RGB组合对应的整数值。
对于二维图像来说,仅需在(x,y)位置指定颜色值;但是对于三维图形来说,还需要其他的屏幕坐标信息。这时,屏幕坐标按三维值来存储,第三维表示对象位置相对于观察位置的深度。在二维场景中,深度值为0。
3.1.2 绝对和相对坐标描述
目前为止,我们讨论的坐标均为绝对坐标(absolute coordinate)值。这表示指定的值是所在坐标系统中的实际位置。
有些图形软件允许使用相对坐标来描述位置。
3.2 OpenGL中制定二维世界坐标系统
我们可以利用 gluOrtho2D命令设定一个二维笛卡尔坐标系。该函数的变量指定显示图形x和y坐标范围的四个值。由于gluortho2D函数指定正交投影,因此我们也要确定坐标值放进了OpenGL投影矩阵中。此外,我们可以将世界坐标范围设定钱的投影矩阵定义为一个单位矩阵。这样可保证坐标值不会受以前的投影矩阵的影响。我们可以通过下列语句定义屏幕显示窗口的坐标系统。
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(xmin,xmax,ymin,ymax);
显示窗口将被指定为其左下角位于(xmin,ymin),右上角位于坐标(xmax,ymax)处。
3.3 OpenGL画点函数
要描述一个点的几何要素,我们只需要在世界坐标系中制定一个位置。然后该坐标位置和场景中已有的其它几何描述一起传递给观察函数。除非指定其它属性值,OpenGL图元按照默认的大小和颜色来显示。默认的颜色是白色,而默认的点的大小等于一个屏幕响度大小。
使用下面的OpenGL函数可以指定一个点位置的坐标值:
glVertex*();
这里的星花表示该函数要有后缀吗。这些后缀码用来指明空间尺寸、用作坐标值得数据类型和可能的向量形式坐标描述。glBegin函数的变量用来指定要显示的输出图元的类型,而glEnd函数没有变量。对于点的绘制,glBegin函数的变量时符号常量GL_POINTS。因此,一个点的位置的OpenGL描述形式是:
glbegin(GL_POINTS);
glvertex*();
glEnd();
尽管术语顶点(vertex)严格地代表一个多边形的“角”点、一个角两边的交点、椭圆和其株洲的交点或几何结构中其他类似的坐标位置,OpenGL中glVertex函数可用于描述任意一点的位置。这样,使用一个简单的函数来描述点、线段和多边形,而更多地使用多边形片来描述场景对象。
OpenGL中的坐标位置可以有二维、三维或四维。glvertex的后缀为2、3或4表示其坐标位置的维数。
四维描述意味着齐次坐标表示,其中齐次参数h(第四维坐标)是笛卡尔坐标值的比例因子。齐次坐标系表示对利用矩阵形式表达变换操作很有用。由于OpenGL将二维看做三维的特殊情况来处理,任意(x,y)坐标描述等同于h=1时的(x,y,0)。
我们需要支出在坐标的数值描述中使用什么样的数据结构。这由glVertex的第二个后缀来完成。用于制定数值数据类型的后缀是:i(整数)、s(短整数)、f(浮点数)、和d(双精度浮点数)。最后,
相关推荐
计算机图形学:Lecture 4 输出图元.ppt
北京大学计算机图形学 第二章 图元变换与投影
《计算机图形学》第二章教学课件主要涵盖了二维线画图元的生成,这是计算机图形学中的基础概念,涉及到将图元从参数表示形式转换为点阵表示形式,也就是扫描转换的过程。这一过程在计算机图形的显示中至关重要,因为...
计算机图形学课件:基本二维图元的生成算法 计算机图形学是计算机科学的一个分支,它研究如何使用计算机生成和操作图形图像。图形学课件中,基本二维图元的生成算法是计算机图形学的核心内容之一。本节课件主要介绍...
计算机图形学是计算机科学的一个分支,它研究如何使用计算机技术生成、处理、存储和显示图形信息。图形标准是图形学领域内用于规范各种图形软件和硬件系统之间交流和互操作性的规则和协议。本章将对图形标准进行详细...
在计算机图形学中,线画图元是最基础也是最常用的元素之一,它们构成了复杂图像的基础构建块。线画图元通常包括直线、曲线、点等,是构成二维图形的基本单位。在本计算机图形学作业中,我们将专注于线画图元的实现和...
1. **计算机图形学作业.doc、计算机图形学第三次作业.docx**: 这些文件很可能是课程的学生作业或习题,可能涉及到矩阵变换、几何建模、光照模型、渲染算法等方面的内容。通过完成这些作业,学生可以深入理解计算机...
首先,试卷可能会包含基础的计算机图形学概念,如图元(点、线、面)、坐标系统(世界坐标、屏幕坐标、裁剪坐标)、变换(平移、旋转、缩放)、投影(正交投影、透视投影)等。这些基本概念是理解图形绘制的基础,也...
1. **基础概念**:首先,我们需要理解计算机图形学的基本概念,如像素、顶点、图元(线段、多边形等)、颜色模型(RGB、CMYK等)以及坐标系统(笛卡尔坐标、极坐标等)。 2. **图形渲染**:渲染是计算机图形学的...
1. **基本图形绘制**:在计算机图形学中,绘制简单形状如圆和线条是入门的第一步。圆形的绘制通常基于极坐标系统,通过指定半径和中心点,利用数学公式如欧几里得几何来实现。线条曲线的绘制则可能涉及Bresenham算法...
计算机图形学演示程序是基于MFC(Microsoft Foundation Classes)框架和VC6.0(Visual C++ 6.0)开发的一个项目,旨在展示和实践计算机图形学的基本原理和算法。这个程序将理论与实践相结合,为学习者提供了一个直观...
计算机图形学是信息技术领域的一个重要分支,主要研究如何在计算机中表示、处理和显示图形。这个领域的知识广泛应用于游戏开发、电影特效、工程设计、虚拟现实、用户界面设计等多个方面。"计算机图形学实验 源代码" ...
在计算机图形学中,基本图元是构建复杂图形的基础元素,它们是点、线、多边形等基本形状。本程序的核心就是实现这些基本图元的生成,从而为更复杂的图形渲染提供基础。 首先,我们要理解点在计算机图形学中的作用。...
在本章“01计算机图形学-第二章基本图形的生成与计算”中,重点讲解了三个核心主题:直线的扫描转换、圆与椭圆的扫描转换,以及线画图元的属性控制。这些概念是理解和实现计算机图形的基础。 首先,我们来看直线的...
计算机图形学是一门涵盖广泛领域的学科,主要研究如何在计算机中表示、处理和显示图形信息。在这个“计算机图形学绘制金刚石实验”中,我们将会深入探讨如何利用编程技术来模拟真实世界的物体——金刚石的视觉表现。...
在“10434计算机图形学教案”中,我们可以预见到会涉及基础概念,如图形的数学表示(如向量、矩阵)、二维与三维坐标系统、图元绘制算法(如Bresenham算法)以及几何变换。此外,高级主题如光照模型、纹理映射、渲染...
二维填充图元的扫描线算法是计算机图形学中的基础内容,广泛应用于图形绘制、图像填充等场景。这篇程序示例旨在帮助学习者理解并实践这种算法。 扫描线算法是一种用于填充二维图形的常用方法,它通过将屏幕水平地...