分形理论在虚拟现实中的应用

  • 格式:pdf
  • 大小:249.87 KB
  • 文档页数:5
树干,得到 C。C 即是分行树。如果想得到更为茂盛逼真的分形树,可增加迭代的次数。
A
B
C
图 1 分形树的绘制过程
Fig1 Fractal Tree mapping process
2.2 实现分形树的编制思路
为了使程序的编制方便,在调用压缩映射族的过程中,按 w3,w2,w1,的顺序来编制 程序[3] [4]。调用函数来实现 C,就要调用实现 B 的函数,而要画 B 就要调用实现绘制 A 的 函数,这样一环扣一环的调用函数,即可实现分形树的绘制。
1 本课题得到辽宁省高等学校优秀人才支持计划培养基金(RC-04-13),辽宁省企业项目博士后培养基金, 国家自然科学基金(No.50604009)的资助。
-1-

树干,得用曲面函数生成一段
2.3 程序的实现
核心代码: void CTestView::DrawHouse20() {
glPushMatrix(); glTranslatef(0.0f,1.0f,0.0f);
DrawHouse18(); glPopMatrix(); } void CTestView::DrawHouse21() { glPushMatrix(); glRotatef(20, 1, 0, 0); DrawHouse20(); glPopMatrix(); } void CTestView::DrawTrees()////////////第一次调用//////// { glPushMatrix(); DrawHouse21(); glRotatef(120, 0, 1, 0); DrawHouse21(); glRotatef(120, 0, 1, 0); DrawHouse21(); glPopMatrix(); //////////////////画树干 glPushMatrix();
(2)用 gluNewNurbsRenderer 函数创建一个 NURBS 对象的指针,这一指针在创建 NURBS 曲面时要引用;
(3) 可以用 gluNurbsProperty 函数设置绘制 NURBS 对象的属性; (4)用 gluBeginSurface 开始生成,绘制曲面; (5)至少调用一次 gluNurbsSurface,绘制 NURBS 对象,可以调用这个曲面的纹理坐 标。
-2-

glTranslatef(0.0f,-1.0f,0.0f); DrawHouse22(); glPopMatrix(); }
3 分形地形的生成
3.1 三维地形生成技术的分类
三维地形是虚拟自然环境中不可却少的因素,也是虚拟仿真领域中视景系统是重要组成 部分。它可以分为(1)真实地形数据的地形生成技术,(2)基于分形技术的地景仿真技术, (3)基于数据拟和的地形仿真技术等三大类[5]。
中点值是平均四个角值再加上一个随机量计算得到的。这样就得到了一个棱锥。当网格上分 布着多个正方形时有点象钻石。
square 步:取每个四点形成的棱锥,在棱锥的中心生成一个随机值。平均角值再加上与 diamond 步相同的随机量,计算出每条边中点值。这又给你一个正方形。
这样,如果已经生成了一个种子正方形并经过单独一次细分过程将得到四个方形。第二 次经过该过程得到 16 个方形,第三次得到 64 个方形。增长得很快。方形数目等于 2( 2 + I ) ,其中 I 为递归经过细分过程的次数。
在曲面绘制过程中,可以调用 OpenGL 的实用库提供了一系列很方便的,构造 NURBS 曲面的 GLU_NURBS 接口函数,这些函数不仅可以生成曲面,而且可以很方便的做光照处 理,纹理处理等。过程如下:
(1)如 果要对曲面作光照处理,必须首先生 成曲面得法线,可以调 用 glEnable (GL_AUTO_MORMAL)自动生成,也可以自己计算;
2. 用迭代函数系统生成分形树
自然界存在的典型景物:高山、沙漠、海滨、白云,这是大自然多姿多彩的美丽景色, 也是传统数学难以描述的怪异曲线、曲面。虚拟现实系统的虚拟世界中,必然要出现这些怪 异的曲线、曲面,既然传统的数学对其难以描述,必然要借助新的数学工具。
分形理论认为,分形曲线、曲面具有精细结构,表现为处处连续,但往往是处处不可导, 其局部与整体存在存在惊人的自相似性。正是在上述认识的基础上,产生了迭代函数系统[2]。

分形理论在虚拟现实中的应用1
郑艳
辽宁工程技术大学测绘与地理科学学院,辽宁阜新 (123000)
E-mail:lovely-emily@
摘 要:本文详细介绍了分形理论和虚拟现实的基本概念,并从工程实践的角度,详细阐述 了利用分形几何构建自然景观中的树,生成三维自然地形的一些方法和技巧。所有的方法都 基于 Visual C++和 OpenGL 在计算机上得以实现。 关键词:虚拟现实(VR),分形几何,OpenGL 中图分类号:TD8
1. 引言
分形几何与计算机科学的结合是在过去几十年里有了很大的发展,并且在物理学,材料 学以及计算机信息科学等许多领域得到了广泛的应用。用计算机绘制分形图,已经不仅使绘 制分形的算法理论及程序设计已成为一独立的研究方向,同时绘制分形图已成为一种相当时 髦的艺术形式。本文重点就是通过在虚拟现实中来构建复杂的自然景物来分析分形几何学在 实际中的应用。
参考文献
[1]乔林,费广正等编著.程序设计 OpenGL[M].北京:清华大学出版社,2000. [2] 郭嗣琮, 陈刚. 信息科学中的软计算方法[M]. 沈阳:东北大学出版社,2001. [3]朱亚军,白建军等著.OpenGL 编程实例[M].北京:人民邮电出版社,1998. [4]戴锋编著.Visual C++程序设计基础[M].北京:清华大学出版社,2001. [5] 齐 敏 , 郝 重 阳 , 佟 明 安 . 三 维 地 形 生 成 及 实 时 显 示 技 术 的 研 究 进 展 [J]. 中 国 图 形 图 象 学 报,2000:Val.5,No.4(269-275).
下图 3 示意了使用我们的 diamond-square 算法两次经过数组时发生的情况。 对于第一遍经过 diamond 步时,我们依据四个角的值在数组中心生成一个值。我们平 均四个角的值(如果种子值相等则完全没必要),并加上一个 -1.0 到 1.0 之间的随机值。
-3-

-4-

(6)调用 gluEndSurface 结束曲面的绘制; (7)删除 NURBS 对象的指针,调用函数 gluDeleteNurbsRender-er。
4. 结束语
本文结合分形几何学在虚拟现实中的应用,介绍了分形树的绘制方法和程序编制方法, 并简单介绍了地形仿真技术的发展的历史及现状和一种简单的三维分形随机地形生成算法。 从中可以看出分形几何与计算机科学相结合是十分明显的。分形理论真正发展起来才十余 年,分形的数学理论还没有形成公理化结构的理论体系,很多方面的理论还有待进一步研究。 值得注意的是,近年分形理论的应用发展远远超过了理论的发展,并且给分形的数学理论提 出了更新更高的要求。各种分形维数计算方法和实验方法的建立,改进和完善,使之理论简 便,可操作性强,是应用分形的科学家们普遍关注的问题。而理论研究上,维数的理论计算, 分形重构,Julia 集 Mandelbrot 集及其推广形式的性质,分形的动力学机制,随机多分形的 数学问题,胖分形及重正化混沌问题等将成为数学界一个十分活跃的研究领域,分形理论的 系统化,精确化以及如何用分形理论解决实际问题可能会引起科学家们广泛的兴趣,分形理 论将在发展中不断完善和走向成熟。
所谓虚拟现实(VR,Virtual Reality)是利用计算机生成一种模拟环境,通过各种传感 设备使用户直接投身于该环境之中,实现用户与虚拟环境直接进行自然交互的技术。它是在 计算机图形学,计算机仿真技术,多媒体技术以及传感技术的基础上发展起来的一门交叉技 术[1]。目前,VR 技术主要应用于工业生产、影视娱乐、科学探索、医疗、教育培训、战争 模拟、景观模拟等。
a
b
c
图 3 diamond-square 算法两次经过数组时发生的情况
Fig3 Instance after diamond-square algorithm pass the array
现在进行第二遍。再次从 diamond 步开始。第二遍与第一遍有两点不同。首先,我们 现在有四个四边形面不是一个,因此我们得计算四个方面的中心。其次,这是关键,生成随 机数的范围已经被减小了。因为例子的缘故,让我们认为正在使用一个 H=1.0 的值。这将 把我们的随机数取值范围将从 (-1.0,1.0) 到 (-0.5,0.5) 。在插图 D 中,我们这一步计算得 到的四个正方形中心值显示为黑色。
在插图 b 中,新值显示成黑色,已经存在的点显示为灰色。 对于 square 步,我们在相同的范围内生成随机值。这一步时有四个棱锥;他们在数组
中心相交,这样我们计算四个 diamond 中心。 diamonds 的角被平均以找出新值的基数。 插图 C 用黑色显示新值,现存值为灰色。
以上是第一遍,如果用线将这 9 个点边起来,就可以得到一个线框的表面(如图 3-a)。
3.2 Diamond-square 算法
Diamond-square 算法来建立一座山,也就是带有一个山峰,人为增加网格中心点的高 度,那么该算法是个经典的地形生成器,该算法可以通过给数组播种子值来用一个山峰推出 一坐山。算法是 Fourniew,Fussell 和 Carpenter 提出的。
方法如下:可以从一个很大的空 2D 数组开始,但为简化起见,他应该是方的,维数 应该是 2 的 n 次方加 1 (如 33X33,65X65,129 等)。将四个角设为相同高度。这时所得 到东西是一个正方形。
最后,我们进行第二遍的 square 步。有 12 个棱锥中心,我们现在需要计算 12 个新值, 如图 3-b 中黑色所示。