L-system trees¶
Tree definition¶
treedef={
axiom, --string initial tree axiom
rules_a, --string rules set A
rules_b, --string rules set B
rules_c, --string rules set C
rules_d, --string rules set D
trunk, --string trunk node name
leaves, --string leaves node name
leaves2, --string secondary leaves node name
leaves2_chance,--int chance [0, 100] to replace leaves with leaves2
angle, --int angle in degrees [s16]
iterations, --int max. amount of iterations [2, 32767], but usually [2, 5]
random_level, --int subtracts a random integer in range [0, random_level] from
-- iterations, but iterations will never go below 2.
-- random_level range: [0, 32767], but usually [0, 3]
trunk_type, --string single/double/crossed) type of trunk: 1 node,
-- 2x2 nodes or 3x3 in cross shape
thin_branches, --boolean true -> use thin (1 node) branches
fruit, --string fruit node name
fruit_chance, --int chance [0, 100] to replace leaves with fruit node
seed, --int random seed [s32]; if no seed is provided,
-- the engine will create one.
}
Key for special L-System symbols used in axioms¶
G: move forward one unit with the pen upF: move forward one unit with the pen down drawing trunks and branchesf: move forward one unit with the pen down drawing leaves (100% chance)T: move forward one unit with the pen down drawing trunks onlyR: move forward one unit with the pen down placing fruitA: replace with rules set AB: replace with rules set BC: replace with rules set CD: replace with rules set Da: replace with rules set A, chance 90%b: replace with rules set B, chance 80%c: replace with rules set C, chance 70%d: replace with rules set D, chance 60%+: yaw the turtle right byangleparameter-: yaw the turtle left byangleparameter&: pitch the turtle down byangleparameter^: pitch the turtle up byangleparameter/: roll the turtle to the right byangleparameter*: roll the turtle to the left byangleparameter[: save in stack current state info]: recover from stack state info
Example¶
Spawn a small apple tree:
pos = {x=230,y=20,z=4}
apple_tree={
axiom="FFFFFAFFBF",
rules_a="[&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF]",
rules_b="[&&&++FFFFF&&FFFF][&&&--FFFFF&&FFFF][&&&------FFFFF&&FFFF]",
trunk="default:tree",
leaves="default:leaves",
angle=30,
iterations=2,
random_level=0,
trunk_type="single",
thin_branches=true,
fruit_chance=10,
fruit="default:apple"
}
core.spawn_tree(pos,apple_tree)