@@ -8,9 +8,9 @@ let size = 1000
88let 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