OpenGL实现的Sierpinski分形程序源代码解析

4星 · 超过85%的资源 需积分: 16 51 下载量 195 浏览量 更新于2024-11-14 收藏 481KB DOC 举报
"该资源是关于交互式计算机图形学的,特别关注基于OpenGL的自顶向下编程方法。它提供了一个Sierpinski镂垫程序的源代码,该程序使用随机选择的顶点和二分法生成二维图形。" 在交互式计算机图形学中,OpenGL是一个广泛使用的图形库,允许程序员创建复杂的2D和3D图形。这个资源提供的源代码是基于OpenGL的,用于实现一个Sierpinski镂垫(Gasket)的生成,这是一种分形几何图形。Sierpinski镂垫通常通过迭代过程创建,每次将一个三角形分割成四个较小的三角形,并去除中间的一个,重复这一过程就会形成复杂的自相似图案。 源代码中的关键部分包括以下几个方面: 1. 引入必要的库:`#include<GL/glut.h>` 是OpenGL的用户界面工具包,它提供了窗口系统绑定和基本的用户输入处理。`glut.h` 通常包含了对 `gl.h` 和 `glu.h` 的引用,这两个库分别是OpenGL的基本函数和扩展函数。 2. 初始化函数 `myinit(void)`:设置背景颜色为白色(`glClearColor(1.0,1.0,1.0,1.0)`),并设定绘制颜色为红色(`glColor3f(1.0,0.0,0.0)`)。然后使用 `glMatrixMode` 和 `gluOrtho2D` 来设置投影矩阵和模型视图矩阵,定义了一个50x50像素的二维视窗,原点位于左下角。 3. 显示函数 `display(void)`:在这个函数中,定义了一个三角形的顶点数组 `vertices`,然后初始化一个任意点 `p` 位于三角形内部。`glClear(GL_COLOR_BUFFER_BIT)` 清除颜色缓冲区,准备进行绘制。接着,使用 `glBegin(GL_POINTS)` 开始绘制一系列点,通过循环生成5000个新的点,每个点都是之前点和随机选择的顶点之间的中点。 4. 随机选择和计算:`j=rand()%3` 用于随机选择三角形的三个顶点之一,然后计算新点的位置,这是通过将旧点与所选顶点之间的中点作为新的点坐标来实现的。这个过程体现了Sierpinski镂垫生成的二分法原理。 5. 绘制点:`glVertex2fv()` 用于将计算出的新点坐标传递给OpenGL进行绘制。 通过这个程序,学习者可以深入理解OpenGL的使用,以及如何实现分形几何图形的自动生成。此外,源代码还可以作为理解面向对象编程、迭代算法和图形渲染流程的实例。