130 likes | 250 Views
Synthetic Topiary. 人工合成的灌木裁剪生成 法. 1. L-System(L 系统 ). id : lc < pred > rc : cond ! succ : prob. i d: 产品标记 (Production Identifier) . lc : 左边内容. pred : 前部. rc : 右边内容. rc : 条件. succ : 后继. prob : 产生这个后继的概率. 1. L-System(L 系统 ). L-system 1: w : A(1)B(3)A(5 )
E N D
Synthetic Topiary 人工合成的灌木裁剪生成法
1. L-System(L系统) id : lc < pred > rc : cond ! succ : prob id:产品标记(Production Identifier) lc:左边内容 pred:前部 rc:右边内容 rc:条件 succ:后继 prob:产生这个后继的概率
1. L-System(L系统) L-system 1: w: A(1)B(3)A(5) p1 : A(x) -> A(x+ 1) : 0:4 p2 : A(x) !->B(x-1) : 0:6 p3 : A(x) < B(y) > A(z) : y < 4 -> B(x + z)[A(y)] 可能结果: A(1)B(3)A(5) =) A(2)B(6)[A(3)]B(4)
1. Turtle结构 Turtle: 由一个位置向量P,三个互相垂直的方向向量H,U,L构成,如下图: 1. 1 模块F表示沿着当前方向画一条线 1.2 +,- ,/, \, &, ^分别表示绕相应轴旋转
3. L-System例子 L-system 2: w : A p1 : A -> F(1)?P(x, y) - A p2 : F(k) =? F(k + 1)
3. L-System例子 L-system 2: w : A p1 : A -> F(1)?P(x, y) - A p2 : F(k) =? F(k + 1) ?P(x, y) 称为疑问模块(Query Module) 它的值是由字符串翻译后得出的,取决于 当前Turtle在空间中的位置和朝向
3. L-System例子 L-system 3: w: A p1 : A -> [+B][-B]F?P(x, y)A p2 : B -> F?P(x, y)@oB p3 : ?P(x, y) : -> [+(2y)F][-(2y)F]%
3. L-System例子 L-system 4: w : FA->P(x, y) p1 : A >?P(x, y) : !prune(x, y) -> @oF/(180)A p2 : A >?P(x, y) : prune(x, y) -> T% p3 : F >T -> S p4 : F >S -> SF p5 : S -> p6 : @o > S -> [+FA?P(x, y)] prune(x; y) = (x < -L/2)||(x > L/2)||(y < 0)||(y > L);
4. 随机树木模型 4 条植物学基本原理: 1、在生长初期k=1,树只有一个主枝,没有侧枝 2、在接下来的每个时期,萌芽出现于上个时期新生长出的枝干末梢处。有一个常量bmax>1,表示最大分叉率 3、不管年龄和位置,所有枝干长度近似一样长l,最后会形成一个半圆形的树冠 4、树叶都是在最后一个枝干上长出的,形成一个半圆形树叶层。有一个常量,决定了树木能存活的最小叶面曝光面积
4. 随机树木模型 根据这4 条植物学基本原理,我们得到: 1、当k1,树冠半径 2、半圆形树冠面积 3、下一时期新生长出的枝条数目: 其中 4、初期 后期 5、当k 6、分叉概率
4. 随机树木模型 L-System 5: w : FA(1) p1 : A(k) ->/()[+()FA(k + 1)] -()FA(k + 1) : min{1, } p2 : A(k) -> /()B -()FA(k + 1) : max{0, } =90=32假设k=3为临界点
5. 模拟裁剪 L-System 6: w: FA(1)?P(x, y, z) p1 : A(k) > ?P(x, y, z) : !prune(x, y, z) -> /()[+()FA(k + 1)?P(x, y, z)] -()FA(k + 1) : min={1, } p2 : A(k) > ?P(x, y, z) : !prune(x, y, z) -> /()B(k + 1, k +1) -()FA(k + 1) : max{0, 1-} p3 : A(k) > ?P(x, y, z) : prune(x, y, z) -> T% p4 : F > T -> S p5 : F > S -> SF p6 : S -> p7 : B(m, n) > S -> [+()FA(am + bn + c)?P(x, y, z)] p8 : B(m, n) > F -> B(m+ 1, n) a = 0, b = 1, c = -5, =90=32
5. 模拟裁剪 a, b, c取值对模型结果的影响: a = 1, b = 0, c = -5 a = 0, b = 1, c = -5 a = 0, b = 0, c = 1