计算机图形学数据图形化论文内容摘要:

为 x轴,垂直方向为 y轴: (0,0) 799 599 800*600 坐标 如图 这样图形模式就可以在屏幕上显示字符,在图形模式下,屏幕上每个象素的显示位置 都可以 用点坐标来描述。 这里有一个一个简单的图形 程序 include “ ” // 图形函数库 include “ ” //标准输入输出函数库 include “ ” //控制台输入输出 main() { int gdriver,gmode。 detectgraph(amp。 gdriver,amp。 gmode)。 if(gdriver0) exit(1)。 initgraph(amp。 gdriver,amp。 gmode,C:\\TURBOC2)。 初始化图形系统 bar3d(100,200,300,400,10,1)。 getch()。 closegraph()。 } 这段程序有什么作用呢。 那就是初始化图形系统,从磁盘装入一个图形驱动程序并设置图形显示模式,这样就可以进行接下来的数据图形化工作了。 举个便于分析的例子 —— 抛物线的绘制 Y X 抛物线 标准方程: Y=X2/4p 曲线以 F(0,p)为焦点 ,曲线以 Y轴为对称轴,其 X的取值范围是任意的。 由此,可将上式离散化 其中: i=m,(m1),?? 0, 1,?? m。 dx:曲线沿 x方向的等距离。 y 定义抛物线的高 ,长和区域 (如图 ) X的定义域为整个定义域 实际上 X的取值范围 受 图形区域大小限制 设图形区域:长 X=L,高: Y=H 原点 (0,0) Y=X2/(4p) 曲线 1的 X 的取值范围 x1=x=x2 x1 =L/2, x2=L/2 曲线 2 x 的范围 X1=X=X2 X1=sqrt(H/2 *4p) X2=sqrt(H/2*4p) Y=X2/(4p) X=sqr(2p*H) (1)将 [x1,x2] 进行 n等分 (n 为偶数 ) (2)每等分的大小为 dx dx=|x2x1|/n m=n/2 ( 3)已知离散点的中点是 (0,0) 则 离散点依次是 m, (m1), ? ,0,1,2,? (m1),m For(i= m。 i=m。 i++) x=i*dx y=(i*dx)*(i*dx)/(4*p) 数学坐标 ( i*dx, (i*dx)*(i*dx)/(4*p)) 坐标转换 (Xc,Yc)(如图 ) 原点 (0,0) X’ , +Y’ , +X+Y, +(x,y) 坐标转换 流程图 这样抛物线就能绘制出来了。 通过这个例子说明在没有 相关工具和技术的辅助下 C语言 只适用于 简单的数据图形化且耗时多工作量大。 基于 OpenGL 的三维图形生成技术 提到数据图形化就不得不提到三维图形生成技术了。 那么怎么把数据变为立体图形呢。 我们可以通过一些算法把数据转化成曲线和直线,由曲线和直线构成二维图形,然后用二维图形,即图片、屏幕、纸张等的形式来表示三维图形。 在研究三维图形的过程中人们开发了各种图形工具库(软件包,即一系列函数的集合) , OpenGL 三维图形编程无疑是其中最优秀的,已经成为了 相当流行的高性能图形处理标。 OpenGL 提供了各种图元的绘制函数,以及一些复杂三维物体(球、锥、多面体、茶壶)、 曲线曲面(贝塞输入图形原点坐标 (Xc,Yc),宽度: L,高度 H,p,等分数: n X=sqr(2p*H) XL/2 N Y X=L/2 dx=2x/n, m=n/2 For(i=m。 i=m。 i++) x=i*dx y=x*x/(4*p) i=mY N Y Lio(Xc+x,Ycy) Moveto(Xc+x,Ycy) 计算坐标 尔、 NURBS)的绘制函数 OpenGL 提供四种基本变换:平移、旋转、按比例缩放、镜像。 OpenGL 提供两种投影变换:平行投影(正射 投影)、透视投影。 OpenGL提供了两种颜色模式: RGBA 模式,颜色索引模式。 总的来说就是 OpenGL 为简化我们数据图形化的操作提供了一些现成的资源。 在 OpenGL 中进行的图形操作直至在计算机屏幕上渲染绘制出三维图形景观的基本步骤如下: 1. 根据基本图形单元建立景物模型,得到景物模型的数学描述( OpenGL 中把点、线、多边形、图像和位图都作为基本图形单元); 2. 把景物模型 放在三维空间中的合适的位置,并且设置视点 (Viewpoint)以观察所感兴趣的景观; 3. 计算模型中所有物体的色彩,同时确定光照条件、纹理粘贴方式等; 4. 把景物模型的数学描述及其色彩信息转换至计算机屏幕上的像素,这个过程也就是光栅化 (rasterization)。 在这些步骤的执行过程中, OpenGL 可能执行其他的一些操作,例如自动消隐处理等。 另外,景物光栅化之后被送入帧缓冲器之前还可以根据需要对象素数据进行操作。 . 1 三角形的绘制 在 OpenGL 中,面是由多边形构成的。 三角形可能是最简单的多 边形,它有三条边。 可以使用 GL_TRIANGLES 模式通过把三个顶点连接到一起而绘出三角形。 下面的代码绘制了一个三角形: glBegin(GL_TRIANGLES); glVertex2f(, ); glVertex2f(, ); glVertex2f(, ); glEnd(); 注意,这里三角形将被用当前选定的颜色填充,如果尚未指定绘图的颜色,结果将是不确定的。 使用 GL_TRIANGLE_STRIP( 如图 ) 模式可以绘制几个相连的三角形,系统根据前三个顶 点绘制第一个多边形,以后每指定一个顶点,就与构成上一个三角形的后两个顶点绘制新的一个三角形。 使用 GL_TRIANGLE_FAN 模式 (如图 ) 可以绘制一组相连的三角形,这些三角形绕着一个中心点成扇形排列。 第一个顶点构成扇形的中心,用前三个顶点绘制出最初的三角形之后,随后的所有顶点都和扇形中心以及紧跟在它前面的顶点构成下一个三角形,此时是以顺时针方向穿过顶点。 这两种模式的推进如图。 V 0V 1V 2V 3V 4V 5 0V1V234 模式 GL_TRIANGLE_FAN 模式 . 2 绕法 在绘制三角形的过程中,三个顶点将三角形封闭的过程是有序的,即三角形的构成路径具有方向性,我们把指定顶点时顺序和方向的组合称为“绕法”。 比如上面的例子中画出的三角形的绕法就是顺时针的,若把后两个顶点的位置互换,就得到了逆时针绕法。 绕法是任何多边形图元的一个重要特性。 一般默认情况下, OpenGL 认为逆时针绕法的多边形是正对着的,这一特 性对于希望给多边形的正面和背面赋予不同的物理特性十分有用。 如果要反转 OpenGL 的默认行为,可以调用函数: glFrontFace(GL_CW); CL_CW 告诉 OpenGL 应该把顺时针缠绕的多边形为正对着的。 为了改回把逆时针绕法视为正面,可以使用 CL_CCW。 . 3 明暗处理 在绘制 多边形 时, 我们常常 要 指定 绘制 的 颜色 ,而 在 OpenGL 中,颜色实际上是对各个顶点而不是对各个多边形指定的。 多边形的轮廓或者内部用单一的颜色或许多不同的颜色来填充 的 处理方式称为明暗处理。 在 OpenGL 中,用单一颜色处 理的称为平面明暗处理 ( Flat Shading) ,用许多不同颜色处理的称为光滑明暗处理 ( Smooth Shading) ,也称为 Gourand 明暗处理 ( Gourand Shading)。 设置明暗处理模式的函数为: void glShadeModel(GLenum mode)。 其中参数 mode 的取值为 GL_FLAT 或 GL_SMOOTH,分别表示平面明暗处理和光滑明暗处理。 应用。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。