基于局部环境敏感的动态植物建模研究
2010-07-07黄艳峰
黄艳峰, 陈 涛
(商丘师范学院计算机科学系,河南 商丘 476000)
L-系统是丹麦植物学家A Lindenmayer提出的一种并行文法,它以形式化的语言描述植物的结构和生长,由文法生成的句子代表植物,而文法生成句子的过程则与植物生长的过程相对应。在最初的L-系统理论中,植物被看成一种封闭的控制系统,能够在不和外界交互的情况下控制自己的生长,0L-系统(包括随机0L-系统、参数0L-系统)就是如此。这种假设使得可以用数学方式(利用假设、定理、证明)来表达某些生长过程的特征。但是,脱离环境的研究大大降低了这种理论应用的范围和价值,因为它仅对植物形态进行模拟, 无法反映植物生长机理。
为了模拟植物受某些局部环境的影响,如剪枝作用后的生长情况,本文在传统L-系统的基础上引入了提问模块和剪枝函数,这种L-系统能够对植物剪枝后内部资源的重新分配情况进行建模。
1 L-系统表达机制
1.1 L-系统重写机制
最简单的L-系统是D0L-系统,可以描述为令V表示一个字符集,V*表示V上所有单词(由符号或字符组成的字符串)的集合,一个0L-系统可以用一个有序的三元组L=
L-系统的核心思想便是重写,即从公理ω开始,按照产生式规则,依次替换ω中的每个字符,得到新的字符串,对新的字符串再进一步对每个字符进行替换,按照上述规则一直替换下去,直到满足终止条件。
1.2 龟形解释
为了把通过 L-系统的重写机制生成的字符串描述成具体的植物形态,需要使用龟形系统对生成的字符串进行几何解释。具体地做法是对迭代生成的字符串从左至右连续扫描,并对每一个字符做出相应的几何解释,这样就由字符串得到相应的植物形态。乌龟的爬行可以在二维或三维空间中进行。其中,三维空间是对在二维空间的基础上进行扩展。龟形有它的状态,包括笛卡尔坐标系下的位置和方向,还有一些附加的属性,如当前的颜色和线宽。位置由矢量P定义,其中三维空间的方向由矢量H, L, U定义,分别表示乌龟的头方向和向左、向上的方向,如图1所示。
这3个矢量都是单位长,且互相垂直,满足H×L=U。因此,龟形的旋转可以用下面的式子表示
这里的R是一个3×3的旋转矩阵。分别绕矢量U, L和H旋转α的旋转矩阵为
龟行位置初始化为笛卡尔坐标系的原点,头矢量H指向y轴的正方向,左矢量L指向x轴的负方向,向上的矢量U指向Z轴的正方向。常用的龟行符号有:
引起龟行旋转的符号:
–:绕U向左旋转一定的角度;
+:绕U向右旋转一定的角度;
&:绕L向下旋转固定的角度;
^:绕L向上旋转固定的角度;
:绕H向下旋转固定的角度;
/:绕H向上旋转固定的角度。
表示树枝分叉的符号:
[ :把当前状态压入堆栈,(包括当前位置、方向、颜色、线宽(或半径)等);
]:当前状态出栈,作为龟形的当前状态。
引起乌龟前进的符号有:
F:乌龟向前爬行一定距离并画线(或圆柱);
f:乌龟向前爬行一定距离,不画线(或圆柱)。
图1 三维龟行解释矢量图
2 对局部环境敏感的L-系统
与确定0L系统[1]不同,在对环境敏感的L-系统中,每一步产生的字符串都要进行几何解释,解释过程中得到的龟形属性作为参数返回,保存到字符串的提问模块中。在字符串迭代过程中,除了提问模块中的参数未定义以外,其它的和参数L-系统[2]一样。在对字符串进行几何解释过程中,根据龟形的位置和头方向给提问模块赋值。提问模块的形式记做? X(x, y, z),这里的X=P,H, U或L。根据X的实际值,x, y, z的值代表位置和方向矢量。
下面给出一个简单的对环境敏感的 L-系统的例子:
前三步迭代产生的字符串为:
p0′,p1′,p2′,p3′分别表示公理和几何解释前应用产生式得到的字符串。*表示提问模块中未定义的参数值。p1,p2,p3表示几何解释后的相应字符串。假设乌龟从原点开始出发,矢量H指定为y轴,矢量L指向x轴的负方向,“-” 代表旋转的角度为 90°。提问模块的乌龟位置如图2所示。
图2 提问模块表示的乌龟位置
3 引入提问模块和剪枝函数的L-系统生成植物的程序流程图
从上述引入了提问模块的 L-系统的重写过程和龟形解释中可以看出,对每次重写得到的字符串都要进行龟形解释,生成植物的程序流程图如图3 所示。
对于其它 L-系统,只需系统重写结束后,对得到的结果字符串进行一次龟形解释即可,程序流程图如参考文献[2]所示。
图3 引入提问模块和剪枝函数的L-系统生成植物的流程图
4 局部环境敏感的L-系统建模
环境是影响植物生长的一个重要因素,植物在整个生长过程中都离不开周围环境的作用或干扰,在建立植物生长模型时除了要分析植物器官的几何形态及拓扑结构变化外,还要考虑影响植物生长的外部环境因子[3]。根据Prusin2kiewicz在文献[4]中提出的概念模型,当植物受到来自外界环境因素如阳光、水分、气候等的影响时,它的内部生长系统会受到一定的影响,从而导致植物的外部形态发生变化。植物的生长过程就是它与其所在的环境之间进行信息交互的过程。
当它察觉到外部环境某些刺激物时,一些信息会被传递到其内部,并做出相应的反应;而此反应又会反作用于环境,使环境发生改变。例如,土壤里的根系会根据其周围的水分浓度,进行吸收水分或者释放水分。参考文献[3]利用 Open-L系统,构建了在环境作用下的虚拟植物模型,参考文献[6]根据系统输入的环境参数建立植物的生长模型。本文讨论了利用对局部环境敏感的L-系统进行植物剪枝的建模。在部分枝被剪掉后,植物内部信息流的方向会发生改变,根据现有的顶点重新分配营养物质,把营养供给余下的部分来弥补失去的损失。根据这种思想,可以模拟出剪枝前后植物的生长结构,对植物生长规律的研究有一定启发。
4.1 二维空间下的植物剪枝模型
L-系统(1)仅仅说明了对环境敏感的L-系统的迭代过程,而提问模块返回的值并没有进一步应用。图2给出了一个二维空间中受环境影响的植物生长过程。
p3:?P(x,y):(2x2+(y-6)2>62)→[+(2y)F][-(2y)F]%其中 p1表示由模块A生成树枝,并在此树枝上生成两个相对的分枝,p2表示树枝伸长,并在两次生长之间划清界限(如图2每个分枝上的小黑点所示),在p3中根据当前的位置,判断p1,p2中产生的提问模块?P(x, y)是否超出椭圆2x2+( y-6)2=62,如果满足条件2x2+( y-6)2>62,则利用产生式 p3产生两个“触角”,并插入剪切符号%,移除当前的顶点,从而停止当前分枝的生长。对L-系统(3)进行二维龟形解释的结果如图4所示。
图4 二维植物剪枝模型
4.2 三维空间下的植物剪枝模型
一般情况下,在树的发展过程中,很多芽不产生新的分枝而是处于休眠状态。这种休眠芽后来又由于分枝系统中某些顶芽的移除而被激活,这样就产生了由外界环境调节的植物结构和形态。L-系统(4)[6]表示了只有被剪枝以后休眠芽才能被激活的极端情况。
用户自定义函数 prune(x,y)=(x<-L/2)||(x>L/2)||(y<0)||(y>L)
用户自定义函数用来指定一个剪枝的长方形来界定植物的生长。公理ω初始化为一段树枝F,它带有一个未发育的顶芽 A和一个提问模块?P(x, y)。p1、p2为顶芽A在不同条件下的生长,其中p1表示当顶芽A在不满足剪枝条件时的生长情况,p2为满足剪枝条件时的生长情况,即产生剪枝符号(用T表示),p3表示剪除伸出剪切区的最末一段节间,并产生激活休眠芽的符号S,在得到激活休眠芽的信号之后,产生式p4,p5向下传递这种信息直到到达一个休眠芽,产生式 p6表示休眠芽被激活,生成一个侧枝。这个侧枝再重复以上过程,直到所有的休眠芽被激活。
图5分别列出了L-系统(4)从第六步迭代开始直到所有的休眠芽被激活各步骤得到的植物形态。在第六步,主轴的顶点超出了剪切区域。第七步,这个顶点和最后一个节间被移除,产生激活休眠芽的符号S(图中如小黑圈所示)。结果在第八步中,休眠芽产生了侧枝。同样超出了剪切区域,在第九步被移除。重新产生激活休眠芽的符号S,并在第十步到达休眠芽,依此类推,直到所有的休眠芽被激活,产生侧枝。
图5 基于剪枝模型的三维植物形态
根据以上植物剪枝模型,利用不同的剪枝函数,即用户给定的自定义函数不同,可以创建不同形态的植物模型。
另外,当提问模块为? H(x, y, z)或? U(x, y, z)时,即在植物的生长过程中得到植物生长方向的提示信息时,可以模拟攀援植物和缠绕植物的生长。
5 结 论
由于植物生长过程不是孤立的,植物的生长形态受外界环境的影响很大。本文通过在 L-系统中引入提问模块和剪枝函数来对植物的剪枝过程进行建模,并通过仿真试验,模拟了植物剪枝前后的生长过程,实验表明,这种建模方式能很好地模拟植物在新的环境中的生长过程。
由于植物与环境的交互,剪枝后植物内部的信息流发生改变,从而对同一棵植物,给定不同的剪枝函数就可以得到不同的植物形态。同时,当提问模块表示植物的生长方向时,还可以对攀援类植物进行模拟。植物受外界环境的影响因素很多,如水分、温度、阳光、风力、土壤等。与植物的实际生长过程相比,还需大量的工作要做。
[1]齐东旭. 分形及其计算机生成[M]. 北京: 科学出版社, 1994. 31-32.
[2]黄艳峰, 薛占熬, 陈 涛. 基于 L-系统的植物模拟研究[J]. 计算机工程与应用, 2005, 41(19): 53-55.
[3]唐卫东, 李萍萍, 陆章平. 基于 Open-L系统的植物结构功能模型研究[J].计算机应用研究, 2007, 24(3):94-96.
[4]Radomír Měch, Przemyslaw Prusinkiewicz. Visual models of plants interacting with their environment proceedings [C]//SIGGRAPH 96, 1996: 397-410.
[5]施干卫, 范 菁, 董天阳. 基于环境敏感的植物动态生长模型研究[J].计算机应用研究, 2007, 24(3):223-225.
[6]Przwmyslaw Prusinkiewicz, Mark Hammel, Jim Hanan,et al. Visual models of plant development [C]//Handbook of formal languages, 1997: 535-597.