3D Pythagoras tree

Loading 3D model
of 3D Pythagoras tree

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
lsystem PythagorasTree3D(angle = 40, i = 11) extends Branches {
 
set symbols axiom = +(90) F(40, 0);
set iterations = i;
let gradient = toColorGradient(#7B3C12, i, #00FF00);
 
set cameraPosition = {77, -140, -76};
set cameraUpVector = {-0.36, 0.79, -0.49};
set cameraTarget = {9, 15, -74};
 
 
let angleComp = 90 - angle; // angle complement
let sinAngle = sin(deg2rad(angle));
let sinAngleComp = sin(deg2rad(angleComp));
 
interpret E(x, i) as DrawForward(x, x, gradient[i]);
interpret m as MoveForward;
interpret + as Yaw(angle);
interpret - as Yaw(-angleComp);
 
rewrite F(x, i)
with left = x * sinAngle, right = x * sinAngleComp
to E(x, i)
[ + m(left / 2) F(right, i + 1) ]
- m(right / 2) F(left, i + 1);
}
 
process all with ThreeJsRenderer;

Thumbnail extension

1
process all(40, 9) with ThreeJsRenderer;