1 / 36

第 9 章

第 9 章. 三维空间中的分形. 9.1 OpenGL 简介 9.2 三维空间中的 Sierpinski 地毯. 9.3 Sierpinski 金字塔 9.4 三维空间中 Sierpinski 海绵. OpenGL 简介. 9.1. OpenGL ,即开放性图形库( Open Graphics Library ),是一个三维的计算机图形和模型库。 OpenGL 包含 120 个图形函数,在微机环境下共有 5 种函数,即基本(或核心)函数、实用函数、辅助函数、 Windows 专用函数和 Win32 API 函数。. OpenGL 的基本功能. 1 . 绘制物体

doria
Download Presentation

第 9 章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 9章 三维空间中的分形 9.1 OpenGL简介 9.2三维空间中的Sierpinski地毯 9.3 Sierpinski金字塔 9.4三维空间中Sierpinski海绵 参考书:《分形算法与程序设计》

  2. OpenGL简介 9.1 OpenGL,即开放性图形库(Open Graphics Library),是一个三维的计算机图形和模型库。OpenGL包含120个图形函数,在微机环境下共有5种函数,即基本(或核心)函数、实用函数、辅助函数、Windows专用函数和Win32 API函数。 参考书:《分形算法与程序设计》

  3. OpenGL的基本功能 1. 绘制物体 OpenGL提供了丰富的基本图元绘制命令,从而可以方便地绘制物体,包括规则的和不规则的。 参考书:《分形算法与程序设计》

  4. OpenGL的基本功能 2.变换 OpenGL提供了一系列基本的变换,如取景变换、模型变换、投影变换及视口变换。 参考书:《分形算法与程序设计》

  5. OpenGL的基本功能 3.光照处理 包括发射光、环境光、散射光和镜面反射光。 参考书:《分形算法与程序设计》

  6. OpenGL的基本功能 4.着色 OpenGL提供了两种物体着色模式,一种是RGBA颜色模式,另一种是颜色索引(Color Index)模式。 参考书:《分形算法与程序设计》

  7. OpenGL的基本功能 5.反走样 在OpenGL绘制图形过程中,由于使用的是位图,所以绘制出的图像的边缘会出现锯齿形状,称为走样。为了消除这种缺陷,OpenGL提供了点、线、多边形的反走样技术。 参考书:《分形算法与程序设计》

  8. OpenGL的基本功能 6.融合 为了使三维图形更加具有真实感,经常需要处理半透明或透明的物体图像,这就需要用到融合技术。 参考书:《分形算法与程序设计》

  9. OpenGL的基本功能 7.雾化 正如自然界中存在烟雾一样,OpenGL提供了“fog”的基本操作来达到对场景进行雾化的效果。 参考书:《分形算法与程序设计》

  10. OpenGL的基本功能 8.位图和图像 在图形绘制过程中,位图和图像是非常重要的一个方面。OpenGL提供了系列函数来实现位图和图像的操作。 参考书:《分形算法与程序设计》

  11. OpenGL的基本功能 9.纹理映射 在计算机图形学中,把包含颜色、alpha值、亮度等数据的矩形数组称为纹理。而纹理映射可以理解为将纹理粘贴在所绘制的三维模型表面,以使三维图形显得更生动。 参考书:《分形算法与程序设计》

  12. OpenGL的运行环境 10.动画 出色的动画效果是OpenGL的一大特色,OpenGL提供了双缓存区技术来实现动画绘制。 参考书:《分形算法与程序设计》

  13. OpenGL的基本函数 1.顶点坐标 OpenGL采用有序排列的顶点集合来构造几何图元,而不是将线段、多边形组合起来构造几何图元。 如: glVertex2s(2,5); //整数定义的二维坐标 glVertex3f(2,5,7);//浮点定义的三维坐标 参考书:《分形算法与程序设计》

  14. OpenGL的基本函数 2.顶点关系 在OpenGL中,同一个几何图元的所有被定义的顶点一起放在glBegin()和glEnd()函数之间,同时定义这些顶点之间的关系。如: glBegin(GL_POLYGON); glVertex2s(0,0); glVertex2s(0,11); glVertex2s(11,14); glVertex2s(14,7); glVertex2s(7,0); glEnd(); 参考书:《分形算法与程序设计》

  15. OpenGL的基本函数 3.显示列表 OpenGL显示列表(Dispplay List)是由一组预先存储起来的留待以后调用的OpenGL函数语句组成的,当调用这张显示列表时就一次执行表中所列出的函数语句。 创建显示列表 OpenGL用下面的函数组创建显示列表: void glNewList(GLuint list,GLenum mode); …… void glEndList(void); 执行显示列表 显示列表的执行函数形式如下: void glCallList(GLuint list); 参数list指定被执行的显示列表。 参考书:《分形算法与程序设计》

  16. OpenGL的基本函数 4.颜色设置 ⑴RGBA模式下的颜色定义 在RGBA模式下,利用glColor*命令来定义当前颜色。glColor*命令有如下几种形式: void glColor3{b s i f d ub us ui}(TYPE r,TYPE g,TYPE b); void glColor4{b s i f d ub us ui}(TYPE r,TYPE g,TYPE b,TYPE a); void glColor3{b s i f d ub us ui}v(TYPE *v); void glColor4{b s i f d ub us ui}v(TYPE *v); ⑵ 在颜色索引模式下的颜色定义 通过调用函数glIndex*()从颜色索引表中选取当前颜色。 void glIndex(s f d i)(c:TYPE); void glIndex(s f d i)v(c:PTYPE); 参考书:《分形算法与程序设计》

  17. OpenGL的基本函数 5.光照设置 ⑴ 创建光源(Light Source) 光源有许多特性,如颜色、位置、方向等。可以使用下面的函数定义光源: void glLight{if}[v](GLenum light , GLenum pname, TYPE param) ⑵ 启动光照 在OpenGL中,必须明确指出光照是否有效或无效。如果光照无效,则只是简单地将当前颜色映射到当前顶点上去,不进行法向、光源、材质等复杂计算,那么显示的图形就没有真实感。启动和取消光源的函数如下: glEnable(GL_LIGHTING);//启动光照 gDisable(GL_LIGHTING);//取消光照 参考书:《分形算法与程序设计》

  18. OpenGL的基本函数 6.明暗处理 在OpenGL中,用单一颜色处理的称为平面明暗处理(Flat Shading),用许多不同颜色处理的称为光滑明暗处理(Smooth Shading) 。 设置明暗处理模式的函数为: void glShadeModel(GLenum mode); 参考书:《分形算法与程序设计》

  19. OpenGL的基本函数 7.材质设置 ⑴ 材质定义 材质的定义与光源的定义类似。其函数为: void glMaterial{if}[v](GLenum face,GLenum pname,TYPE param); ⑵ 改变材质 在OpenGL中提供了两种方式来改变场景中的材质。 第一种方法是利用函数glMaterial*()来改变材质,但是调用函数glMaterial*()需要同时保存当前矩阵,也就是调用函数glPushMatrix()和glPopMatrix()。 第二种方法是使用函数glColorMaterial(),其形式为: void glColorMaterial(GLenum face,GLenum mode); 参考书:《分形算法与程序设计》

  20. OpenGL的基本函数 8.纹理映射 ⑴ 纹理定义 在程序中可以用以下函数定义二维纹理映射: void glTexImage2D(GLenum target,GLint level,GLint components, GLsizei width,Glsizei height,GLint border,GLenum format,GLenum type,const GLvoid *pixels); ⑵ 纹理控制 OpenGL中控制纹理的函数是: void glTexParameter{if}[v](GLenum target,GLenum pname,TYPE param); ⑶定义纹理坐标 OpenGL坐标定义的函数是: void gltexCoord{1 2 3 4}{s i f d}[v](TYPE coords); 参考书:《分形算法与程序设计》

  21. OpenGL的基本函数 9.选择与反馈 在OpenGL中,提供了选择和反馈两种方式,以实现对屏幕上的某个物体的信息提供,达到交互的目的。 进行模式选择的函数原型如下: Lint glRenderMode(GLenum Mode); 在进入选择模式之前,必须调用函数glSelectBuffer()来制定选择数组。 在进入反馈模式之前,必须调用函数glFeedbackBuffer()来制定反馈数组。 参考书:《分形算法与程序设计》

  22. OpenGL的基本函数 10.帧缓存与动画 ⑴ 帧缓存的组成 OpenGL帧缓存由以下四种缓存组成:颜色缓存(Color Buffer) 、深度缓存(Depth Buffer) 、模板缓存(Stencil Buffer) 、累积缓存(Accumulation Buffer) 。 ⑵ 缓存清除 OpenGL清除缓存操作过程是:先给出要写入每个缓存的清除值,然后用单个函数命令执行操作,传入所有要清除的缓存表。 ⑶ 动画 OpenGL提供了双缓存,可以用来制作动画。也就是说,在显示前台缓存内容中的一帧画面时,后台缓存正在绘制下一帧画面,当绘制完毕,则后台缓存内容便在屏幕上显示出来,而前台正好相反,又在绘制下一帧画面内容。这样循环反复,屏幕上显示的总是已经画好的图形,于是看起来所有的画面都是连续的。 参考书:《分形算法与程序设计》

  23. 三维空间中的Sierpinski地毯 9.2 参考书:《分形算法与程序设计》

  24. 三维空间中的Sierpinski地毯 9.2 参考书:《分形算法与程序设计》

  25. 三维空间中的Sierpinski地毯 9.2 参考书:《分形算法与程序设计》

  26. Sierpinski金字塔 9.3 参考书:《分形算法与程序设计》

  27. Sierpinski金字塔 9.3 参考书:《分形算法与程序设计》

  28. Sierpinski金字塔 9.3 参考书:《分形算法与程序设计》

  29. Sierpinski海绵 9.4 参考书:《分形算法与程序设计》

  30. Sierpinski海绵 9.4 参考书:《分形算法与程序设计》

  31. Sierpinski海绵 9.4 参考书:《分形算法与程序设计》

  32. Sierpinski海绵 9.4 参考书:《分形算法与程序设计》

  33. Sierpinski海绵 9.4 参考书:《分形算法与程序设计》

  34. Sierpinski海绵 9.4 参考书:《分形算法与程序设计》

  35. Sierpinski海绵 9.4 参考书:《分形算法与程序设计》

  36. Sierpinski海绵 9.4 参考书:《分形算法与程序设计》

More Related