Skip to content

Commit cd4d193

Browse files
committed
Alternating tree
1 parent 26b3623 commit cd4d193

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

FractalTrees/Tree.fs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ let size = 1000
88
let drawTree file =
99
let rnd = new Random()
1010
let img = new Bitmap(size, size)
11+
let pen = new Pen(Color.Black, 1.f)
1112
use g = Graphics.FromImage(img)
1213
g.SmoothingMode <- SmoothingMode.HighQuality;
13-
let pen = new Pen(Color.Black, 1.f)
1414
g.FillRectangle(new SolidBrush(Color.White), 0, 0, size, size)
1515
g.DrawRectangle(new Pen(Color.Black, 1.f), 0, 0, size - 1, size - 1)
1616

@@ -22,18 +22,20 @@ let drawTree file =
2222
g.DrawLine(pen, int startX, int startY, int nextX, int nextY)
2323
(nextX, nextY)
2424

25-
let randomAngle() = rnd.NextDouble() * 0.6
25+
let largeAngle = Math.PI / 2.4
26+
let smallAngle = 0.2
2627
let factor n = 0.6
2728

2829
let rec innerDrawTree n location direction length =
2930
if n > 0 then
3031
let location = drawTrunk location direction length
31-
innerDrawTree (n - 1) location (direction + randomAngle()) (length * factor n)
32-
innerDrawTree (n - 1) location (direction - randomAngle()) (length * factor n)
32+
let op1, op2 = if n % 2 = 0 then (-), (+) else (+), (-)
33+
innerDrawTree (n - 1) location (op1 direction largeAngle) (length * factor n)
34+
innerDrawTree (n - 1) location (op2 direction smallAngle) (length * factor n)
3335
else
3436
drawLeaf()
3537

36-
innerDrawTree 10 ((float size) / 2., (float size) - 50.) Math.PI 300.
38+
innerDrawTree 10 ((float size) / 2., (float size) - 50.) (Math.PI * 0.98) 300.
3739

3840
img.Save(file)
3941

0 commit comments

Comments
 (0)