(*Edited (fixed) version of the function - also has another branch*)
tree[n_, pos_, dir_] :=
Module[{ i, right = RotationTransform[-45 \[Degree]] ,
left = RotationTransform[45 \[Degree]], onethirdpos, twothirdpos,
res1, res2, res3, result = {} },
If[n > 0,
(* Calculate positions of branches *)
onethirdpos = pos + 1/3 dir;
twothirdpos = pos + 2/3 dir;
(* Draw sub trees *)
res1 = tree[(n - 1), onethirdpos, 1/2 (left[dir])];
res2 = tree[(n - 1), twothirdpos, 1/2 (right[dir])];
res3 = tree[(n - 1), pos + dir, 2/3 dir];
(* Join returned lists to result list *)
result = Join[res1, res2, res3];
(* Return line list of this branch *)
AppendTo[result, Line[{pos, pos + dir}]];
Return [result];,
(* If leaf, just return a one-element list with a single line *)
Return[{Line[{pos, pos + dir}]}];
] (* end of If*)
] (* end of module*)
|