2、利用OpenGL实现算法的可视化
Open GL是Open Graphics Library 的缩写,它是SGI公司开发的一套高性能图形处理系统,是图形硬件的软件接口,意为开放的图形库。通过OpenGL程序员可以创建交互式的应用程序,实现具有逼真效果的三维图形图像。由于其开放性和高度的可重用性,目前已成为业界标准。 OpenGL被设计成独立于硬件,独立于窗口系统的,在运行各种操作系统的各种计算机上都可用,并能在网络环境下以客户/服务器模式工作,是专业图形处理、科学计算等高端应用领域的标准图形库。
为了便于我们后期的LOD地形简化,我们一般要将地形绘制成三角格网的形式。在绘制三角形时,由于地形不可能都是规则的长方形或正方形,考虑到一般地形的多样性和复杂性,不能够将点简单的连线。根据三角形的四种形式,每个构成三角形的点都先按照四边形的方式进行划分成四个点(如图2)。

图2 三角形四种情况下点的的划分
在图中,三角形中必有一个点被两个编号所代表,然后按照1-2-4-1-3-4的顺序进行连接,必然能绘制出四种情况中的任何一种三角形。通过上述操作,可以实现程序能运用到所有地形的显示。
程序代码如下:
private void DrawTriangle (Point3D Point1, Point3D Point2, Point3D Point3, Point3D Point4 ) { GL.glBegin(GL.GL_TRIANGLES);//开始绘三角形 GL.glVertex3d(Point1.x, Point1.y, Point1.z);//从1起笔 GL.glVertex3d(Point2.x, Point2.y, Point2.z);//画到2 GL.glVertex3d(Point4.x, Point4.y, Point4.z); //画到4 GL.glVertex3d(Point1.x, Point1.y, Point1.z); //画到1 GL.glVertex3d(Point3.x, Point3.y, Point3.z); //画到3 GL.glVertex3d(Point4.x, Point4.y, Point4.z); //画到4 GL.glEnd();//完成一个三角形的绘制 } |
通过上述操作,可以将图2的点视图转化为三角形格网试图(如图3)。

(a)加权平均内插数学模型

(b)多面函数内插数学模型

(c)最小二乘内插数学模型
图3 利用搜索圆实现地形的三角形格网视图
结论 在现实中,我们需要生成的地形往往是很庞大,很复杂的,因此不能够仅利用某一种算法和某一种搜索方式生成全部的地形。对于大范围的复杂地形,就必须先对地形按起伏程度进行区域分块,对不同的区域选择合适的算法和搜索方式。
查看本文来源