アニメーション（桜の成長）

Clear[tree];
Needs["Geometry`Rotations`"];
earth  =  {{RGBColor[0.66, 0, 0],  
            Polygon[{{-10,  0},  {10,  0},  {8,  2},  {-8,  
                  2}}]}};

      
tree[edakazu_, edakakudo_, edanagasa_, edafutosa_, mikifutosa_, 
          options___] := 
        Block[{twinLine,  doTwins}, 
rotation   =  
            edakakudo; 
shrinkage  =  
            edanagasa; 
thicknessShrinkage  =  
            edafutosa; 
originalThickness  =  
            mikifutosa; 
twinLine[
              Line[{start_,  end_}]] := {Line[{end, 
                  end  +  
                    shrinkage*Rotate2D[end  -  start, rotation, {0, 0}]}], 
              Line[{end, 
                  end  +  
                    shrinkage*
                      Rotate2D[
                        end  -  start, -rotation, {0, 
                          0}]}]}; 
twinLine[
              Thickness[th_]] := 
            Thickness[th*thicknessShrinkage]; 
doTwins[
              lines_] := 
            Flatten[Map[twinLine,  lines]]; 
Show[
            Graphics[{earth, RGBColor[0.35,  0,  0.05], 
                NestList[
                  doTwins,  {Thickness[originalThickness], 
                    Line[{{0, 1.01},  {0, 3}}]}, edakazu]}], options, 
            AspectRatio  ->  Automatic,  
            PlotRange  ->  All]];

      
tree1[edakazu_, edakakudo_, edanagasa_, edafutosa_, mikifutosa_, 
          s_, options___] := 
        Block[{twinLine,  doTwins}, 
rotation   =  
            edakakudo; 
shrinkage  =  
            edanagasa; 
thicknessShrinkage  =  
            edafutosa; 
originalThickness  =  
            mikifutosa; 
spring  =  {{RGBColor[1,  
                  0.8,  0.85],  
                Disk[{-9,  0.5},  0.1]}, {RGBColor[1,  0.85,  0.8],  
                Disk[{9,  0.3},  0.1]}, {RGBColor[1,  0.8,  0.85],  
                Disk[{-8,  1.3},  0.1]}, {RGBColor[1,  0.85,  0.8],  
                Disk[{8,  0.35},  0.1]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{-7.7,  0.5},  0.1]}, {RGBColor[1,  0.8,  
                  0.8],  Disk[{7.7,  0.8},  0.1]}, {RGBColor[1,  0.8,  
                  0.8],  Disk[{-6,  0.7},  0.1]}, {RGBColor[1,  
                  0.8,  0.8],  
                Disk[{6,  0.4},  0.1]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{-5,  1.43},  0.1]}, {RGBColor[1,  0.85,  
                  0.8],  Disk[{5.7,  0.9},  
                  0.1]}, 
{RGBColor[1,  0.8,  0.8],  
                Disk[{-4.8,  1.5},  0.1]}, {RGBColor[1,  0.9,  
                  0.9],  Disk[{4,  0.3},  0.1]}, {RGBColor[1,  0.8,  
                  0.8],  Disk[{-3,  1},  0.1]}, {RGBColor[1,  0.85,  
                  0.8],  Disk[{3,  1.8},  
                  0.1]}, 
{RGBColor[1,  0.8,  0.8],  
                Disk[{-2.7,  0.4},  0.1]}, {RGBColor[1,  0.9,  
                  0.9],  Disk[{2.7,  0.5},  0.1]}, {RGBColor[1,  0.8,  
                  0.8],  Disk[{-1,  1.5},  0.1]}, {RGBColor[1,  
                  0.8,  0.84],  
                Disk[{1.5,  1.3},  0.1]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{-0,  0.4},  0.1]}, {RGBColor[1,  0.8,  0.84],  
                Disk[{0.5,  0.64},  
                  0.1]}, 

{RGBColor[1,  
                  0.8,  0.85],  
                Disk[{-7,  5.3},  s]}, {RGBColor[1,  0.85,  0.8],  
                Disk[{-6.8,  5},  s]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{-6,  7},  s + 1.1]}, {RGBColor[1,  0.8,  
                  0.8],  Disk[{-5.2,  6},  s]}, {RGBColor[1,  0.8,  
                  0.8],  Disk[{-5,  7},  s]}, {RGBColor[1,  0.85,  
                  0.8],  Disk[{-5.2,  8.5},  
                  s + 0.5]}, 
{RGBColor[1,  0.8,  0.8],  
                Disk[{-4.5,  9},  s + 0.5]}, {RGBColor[1,  0.9,  
                  0.9],  Disk[{-4.5,  9.5},  s + 0.5]}, {RGBColor[1,  
                  0.8,  0.8],  
                Disk[{-4,  10},  s + 0.5]}, {RGBColor[1,  0.8,  
                  0.84],  
                Disk[{-4,  7.5},  s]}, 
{RGBColor[
                  1,  0.8,  0.8],  
                Disk[{-3.5,  7},  s + 0.5]}, {RGBColor[1,  0.8,  
                  0.8],  Disk[{-3,  10.5},  
                  s + 0.5]}, 
{RGBColor[1,  0.8,  0.8],  
                Disk[{-2.5,  8},  s]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{-2.5,  7.5},  
                  s + 0.5]}, 
 {RGBColor[1,  0.8,  
                  0.8],  Disk[{-2,  7.5},  s]}, {RGBColor[1,  0.8,  
                  0.8],  Disk[{-2,  7.1},  
                  s]}, 
{RGBColor[1,  0.85,  0.8],  
                Disk[{-2,  9},  s]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{-1,  11},  s + 0.5]}, {RGBColor[1,  0.8,  
                  0.8],  Disk[{-1,  8},  s + 0.5]}, {RGBColor[1,  
                  0.8,  0.8],  
                Disk[{-1,  11.5},  s + 0.5]}, {RGBColor[1,  0.8,  
                  0.85],  
                Disk[{0,  11.5},  s + 0.5]}, {RGBColor[1,  0.75,  0.8],  
                Disk[{0.5,  8.5},  s + 0.5]}, 
{RGBColor[
                  1,  0.85,  0.8],  
                Disk[{7,  5.3},  s]}, {RGBColor[1,  0.85,  0.85],  
                Disk[{6.8,  5},  s]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{6,  7},  s + 1.2]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{5.2,  6},  s]}, {RGBColor[1,  0.89,  0.85],  
                Disk[{5,  7},  s]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{5.2,  8.5},  s + 0.5]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{4.5,  9},  s + 0.5]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{4.5,  9.5},  s + 0.5]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{4,  10},  s + 0.5]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{4,  7.5},  s]}, {RGBColor[1,  0.75,  0.8],  
                Disk[{3.5,  7},  s + 0.5]}, {RGBColor[1,  0.9,  0.9],  
                Disk[{3,  10.5},  s + 0.5]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{2.5,  8},  s]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{2.5,  7.5},  s]}, {RGBColor[1,  0.9,  0.9],  
                Disk[{2,  7},  s + 0.5]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{2,  7.5},  s]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{2.1,  9},  s]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{1,  11},  s + 0.5]}, 
{RGBColor[
                  1,  0.8,  0.8],  
                Disk[{1,  8},  s + 0.5]}, {RGBColor[1,  0.8,  0.8],  
                Disk[{1.5,  11.5},  s + 0.5]}}; 
twinLine[
              Line[{start_,  end_}]] := {Line[{end, 
                  end  +  
                    shrinkage*Rotate2D[end  -  start, rotation, {0, 0}]}], 
              Line[{end, 
                  end  +  
                    shrinkage*
                      Rotate2D[
                        end  -  start, -rotation, {0, 
                          0}]}]}; 
twinLine[
              Thickness[th_]] := 
            Thickness[th*thicknessShrinkage]; 
doTwins[
              lines_] := 
            Flatten[Map[twinLine,  lines]]; 
Show[
            Graphics[{earth, RGBColor[0.35,  0,  0.05], 
                NestList[
                  doTwins,  {Thickness[originalThickness], 
                    Line[{{0, 1.01},  {0, 3}}]}, edakazu], 
                spring}, {{options}, AspectRatio  ->  Automatic, 
                PlotRange  ->  All}]]];

      
tree2[edakazu_, edakakudo_, edanagasa_, edafutosa_, mikifutosa_, 
          s_, options___] := 
        Block[{twinLine,  doTwins}, 
rotation   =  
            edakakudo; 
shrinkage  =  
            edanagasa; 
thicknessShrinkage  =  
            edafutosa; 
originalThickness  =  
            mikifutosa; 
summer  =  {{RGBColor[1 - s,  
                  0.8,  0.85 - s],  
                Disk[{-9,  0.5},  0.1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{9,  0.3},  0.1]}, {RGBColor[1 - s,  0.81,  
                  0.85 - s],  
                Disk[{-8,  1.3},  0.1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{8,  0.35},  0.1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-7.7,  0.5},  0.1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{7.7,  0.8},  0.1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{-6,  0.7},  0.1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{6,  0.4},  0.1]}, {RGBColor[1 - s,  0.82,  
                  0.8 - s],  
                Disk[{-5,  1.43},  0.1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{5.7,  0.9},  0.1]}, 
{RGBColor[
                  1 - s,  0.8,  0.8 - s],  
                Disk[{-4.8,  1.5},  0.1]}, {RGBColor[1 - s,  0.9,  
                  0.9 - s],  
                Disk[{4,  0.3},  0.1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{-3,  1},  0.1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{3,  1.8},  0.1]}, 
{RGBColor[
                  1 - s,  0.82,  0.8 - s],  
                Disk[{-2.7,  0.4},  0.1]}, {RGBColor[1 - s,  0.9,  
                  0.9 - s],  
                Disk[{2.7,  0.5},  0.1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{-1,  1.5},  0.1]}, {RGBColor[1 - s,  0.8,  
                  0.84 - s],  
                Disk[{1.5,  1.3},  0.1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-0,  0.4},  0.1]}, {RGBColor[1 - s,  0.8,  
                  0.84 - s],  
                Disk[{0.5,  0.64},  
                  0.1]}, 

{RGBColor[
                  1 - s,  0.8,  0.85 - s],  
                Disk[{-7,  5.3}, 1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{-6.8,  5}, 1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-6,  7},  2.1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-5.2,  6}, 1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-5,  7}, 1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{-5.2,  8.5}, 1.5]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-4.5,  9}, 1.5]}, {RGBColor[1 - s,  0.9,  
                  0.9 - s],  
                Disk[{-4.5,  9.5}, 1.5]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-4,  10},  1.5]}, {RGBColor[1 - s,  0.8,  
                  0.84 - s],  
                Disk[{-4,  7.5}, 1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-3.5,  7}, 1.5]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-3,  10.5}, 1.5]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-2.5,  8}, 1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-2.5,  7.5}, 1.5]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-2,  7.5}, 1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-2,  7.1}, 1]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{-2,  9}, 1]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-1,  11}, 1.5]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-1,  8}, 1.5]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{-1,  11.5}, 1.5]}, 
{RGBColor[
                  1 - s,  0.8,  0.85 - s],  
                Disk[{0,  11.5}, 1.5]}, {RGBColor[1 - s,  0.75,  
                  0.8 - s],  
                Disk[{0.5,  8.5}, 1.5]}, {RGBColor[1 - s,  0.85,  
                  0.8 - s],  
                Disk[{7,  5.3}, 1]}, {RGBColor[1 - s,  0.85,  0.85 - s], 
                Disk[{6.8,  5}, 1]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{6,  7}, 2.2]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{5.2,  6}, 1 ]}, {RGBColor[1 - s,  0.89,  
                  0.85 - s],  
                Disk[{5,  7}, 1]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{5.2,  8.5}, 1.5]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{4.5,  9}, 1.5]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{4.5,  9.5}, 1.5]}, {RGBColor[1 - s,  0.8,  
                  0.8 - s],  
                Disk[{4, 10}, 1.5]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{4,  7.5}, 1 ]}, {RGBColor[1 - s,  0.75,  
                  0.8 - s],  
                Disk[{3.5, 7}, 1.5]}, {RGBColor[1 - s,  0.9,  0.9 - s],  
                Disk[{3, 10.5}, 1.5]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{2.5, 8}, 1 ]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{2.5, 7.5}, 1]}, {RGBColor[1 - s,  0.9,  0.9 - s],  
                Disk[{2, 7}, 1.5]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{2, 7.5}, 1]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{2.1, 9}, 1]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{1, 11},  1.5]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{1, 8},  1.5]}, {RGBColor[1 - s,  0.8,  0.8 - s],  
                Disk[{1.5, 11.5},  1.5]}}; 
twinLine[
              Line[{start_,  end_}]] := {Line[{end, 
                  end  +  
                    shrinkage*Rotate2D[end  -  start, rotation, {0, 0}]}], 
              Line[{end, 
                  end  +  
                    shrinkage*
                      Rotate2D[
                        end  -  start, -rotation, {0, 
                          0}]}]}; 
twinLine[
              Thickness[th_]] := 
            Thickness[th*thicknessShrinkage]; 
doTwins[
              lines_] := 
            Flatten[Map[twinLine,  lines]]; 
Show[
            Graphics[{earth, RGBColor[0.35,  0,  0.05], 
                NestList[
                  doTwins,  {Thickness[originalThickness], 
                    Line[{{0, 1.01},  {0, 3}}]}, edakazu], 
                summer}, {{options}, AspectRatio  ->  Automatic, 
                PlotRange  ->  All}]]];

      
tree3[edakazu_, edakakudo_, edanagasa_, edafutosa_, mikifutosa_, 
          s_, options___] := 
        Block[{twinLine,  doTwins}, 
rotation   =  
            edakakudo; 
shrinkage  =  
            edanagasa; 
thicknessShrinkage  =  
            edafutosa; 
originalThickness  =  
            mikifutosa; 
fall  =  {{RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{-9,  0.5},  0.1]}, {RGBColor[0.2,  0.85 - s,  
                  0],  Disk[{9,  0.3},  0.1]}, {RGBColor[0.2,  0.8 - s,  
                  0],  Disk[{-8,  1.3},  0.1]}, {RGBColor[0.2,  
                  0.85 - s,  0],  
                Disk[{8,  0.35},  0.1]}, {RGBColor[0.2,  0.82 - s,  0],  
                Disk[{-7.7,  0.5},  0.1]}, {RGBColor[0.2,  0.8 - s,  
                  0],  Disk[{7.7,  0.8},  0.1]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{-6,  0.7},  0.1]}, {RGBColor[0.2,  0.8 - s,  
                  0],  Disk[{6,  0.4},  0.1]}, {RGBColor[0.2,  
                  0.85 - s,  0],  
                Disk[{-5,  1.43},  0.1]}, {RGBColor[0.2,  0.85 - s,  
                  0],  Disk[{5.7,  0.9},  
                  0.1]}, 
{RGBColor[0.2,  0.81 - s,  
                  0],  Disk[{-4.8,  1.5},  0.1]}, {RGBColor[0.2,  
                  0.9 - s,  0],  
                Disk[{4,  0.3},  0.1]}, {RGBColor[0.2,  0.8 - s,  0],  
                Disk[{-3,  1},  0.1]}, {RGBColor[0.2,  0.85 - s,  
                  0],  Disk[{3,  1.8},  
                  0.1]}, 
{RGBColor[0.2,  0.85 - s,  
                  0],  Disk[{-2.7,  0.4},  0.1]}, {RGBColor[0.2,  
                  0.9 - s,  0],  
                Disk[{2.7,  0.5},  0.1]}, {RGBColor[0.2,  0.8 - s,  0],  
                Disk[{-1,  1.5},  0.1]}, {RGBColor[0.2,  0.8 - s,  
                  0],  Disk[{1.5,  1.3},  0.1]}, {RGBColor[0.2,  
                  0.85 - s,  0],  
                Disk[{-0,  0.4},  0.1]}, {RGBColor[0.2,  0.8 - s,  
                  0],  Disk[{0.5,  0.64},  
                  0.1]}, 

{RGBColor[
                  0.2,  0.8 - s,  0.05],  
                Disk[{-7, 5.3},  1 - s]}, {RGBColor[0.5,  0.85 - s,  
                  0],  Disk[{-6.8, 5},  1 - s]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{-6, 7},  2.1 - s]}, {RGBColor[0.5,  0.8 - s,  
                  0],  Disk[{-5.2, 6},  1 - s]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{-5, 7},  1 - s]}, {RGBColor[0.2,  0.85 - s,  
                  0],  Disk[{-5.2, 8.5},  1.5 - s]}, {RGBColor[0.5,  
                  0.8 - s,  0],  
                Disk[{-4.5,  9},  1.5 - s]}, {RGBColor[0.2,  
                  0.9 - s,  0.1],  
                Disk[{-4.5, 9.5},  1.5 - s]}, {RGBColor[0.4,  
                  0.8 - s,  0],  
                Disk[{-4, 10},  1.5 - s]}, {RGBColor[0.5,  0.8 - s,  
                  0.04],  
                Disk[{-4, 7.5},  1 - s]}, {RGBColor[0.2,  0.8 - s,  
                  0],  Disk[{-3.5, 7}, 1.5 - s]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{-3,  10.5}, 1.5 - s]}, {RGBColor[0.5,  0.8 - s,  
                  0],  Disk[{-2.5, 8}, 1  - s]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{-2.5, 7.5}, 1.5 - s]}, {RGBColor[0.2,  0.8 - s,  
                  0],  Disk[{-2,  7.5},  1 - s]}, {RGBColor[0.5,  
                  0.8 - s,  0],  
                Disk[{-2,  7.1},  1 - s]}, {RGBColor[0.2,  0.85 - s,  
                  0],  Disk[{-2,  9},  1 - s]}, {RGBColor[0.5,  
                  0.8 - s,  0],  
                Disk[{-1,  11}, 1.5 - s]}, {RGBColor[0.2,  0.8 - s,  
                  0],  Disk[{-1,  8},  1.5 - s]}, {RGBColor[0.5,  
                  0.8 - s,  0],  
                Disk[{-1,  11.5},  1.5 - s]}, {RGBColor[0.2,  
                  0.8 - s,  0.05],  
                Disk[{0,  11.5},  1.5 - s]}, {RGBColor[0.5,  0.85 - s,  
                  0],  Disk[{0.5,  8.5},  1.5 - s]}, {RGBColor[0.5,  
                  0.85 - s,  0],  
                Disk[{7,  5.3},  1 - s]}, {RGBColor[0.2,  0.85 - s,  
                  0.05], Disk[{6.8,  5},  1 - s]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{6,  7},  2.2 - s]}, {RGBColor[0.5,  0.8 - s,  0],  
                Disk[{5.2,  6}, 1 - s ]}, {RGBColor[0.2,  0.89 - s,  
                  0.05],  
                Disk[{5,  7},  1 - s]}, {RGBColor[0.4,  0.8 - s,  0],  
                Disk[{5.2, 8.5}, 1.5 - s]}, {RGBColor[0.2,  0.8 - s,  0],  
                Disk[{4.5,  9}, 1.5 - s]}, {RGBColor[0.2,  0.8 - s,  0],  
                Disk[{4.5,  9.5}, 1.5 - s]}, {RGBColor[0.3,  0.8 - s,  
                  0],  Disk[{4,  10}, 1.5 - s]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{4,  7.5}, 1 - s ]}, {RGBColor[0.3,  0.85 - s,  
                  0],  Disk[{3.5,  7}, 1.5 - s]}, {RGBColor[0.2,  
                  0.9 - s,  0.1],  
                Disk[{3,  10.5}, 1.5 - s]}, {RGBColor[0.5,  0.8 - s,  
                  0],  Disk[{2.5,  8}, 1 - s ]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{2.5,  7.5},  1 - s]}, {RGBColor[0.4,  0.9 - s,  
                  0.1],  Disk[{2,  7}, 1.5 - s ]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{2,  7.5},  1 - s]}, {RGBColor[0.3,  0.8 - s,  0],  
                Disk[{2.1,  9},  1 - s]}, {RGBColor[0.2,  0.8 - s,  0],  
                Disk[{1,  11},  1.5 - s]}, {RGBColor[0.4,  0.8 - s,  
                  0],  Disk[{1,  8},  1.5 - s]}, {RGBColor[0.2,  
                  0.8 - s,  0],  
                Disk[{1.5,  11.5},  1.5 - s]}}; 
twinLine[
              Line[{start_,  end_}]] := {Line[{end, 
                  end  +  
                    shrinkage*Rotate2D[end  -  start, rotation, {0, 0}]}], 
              Line[{end, 
                  end  +  
                    shrinkage*
                      Rotate2D[
                        end  -  start, -rotation, {0, 
                          0}]}]}; 
twinLine[
              Thickness[th_]] := 
            Thickness[th*thicknessShrinkage]; 
doTwins[
              lines_] := 
            Flatten[Map[twinLine,  lines]]; 
Show[
            Graphics[{earth, RGBColor[0.35,  0,  0.05], 
                NestList[
                  doTwins,  {Thickness[originalThickness], 
                    Line[{{0, 1.01},  {0, 3}}]}, edakazu], 
                fall}, {{options}, AspectRatio  ->  Automatic,  
                PlotRange  ->  All}]]];

      
tree4[edakazu_, edakakudo_, edanagasa_, edafutosa_, mikifutosa_, 
          s_, options___] := 
        Block[{twinLine,  doTwins}, 
rotation   =  
            edakakudo; 
shrinkage  =  
            edanagasa; 
thicknessShrinkage  =  
            edafutosa; 
originalThickness  =  
            mikifutosa; 
winter  =  {{RGBColor[0.95, 
                  0.95, 0.95],  
                Disk[{-9,  0.5},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{9,  0.3},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-8,  1.3},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{8,  0.35},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-7.7,  0.5},  0.1]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{7.7,  0.8},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-6,  0.7},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{6,  0.4},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-5,  1.43},  0.1]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{5.7,  0.9},  0.1]}, 
{RGBColor[
                  0.95, 0.95, 0.95],  
                Disk[{-4.8,  1.5},  0.1]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{4,  0.3},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-3,  1},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{3,  1.8},  0.1]}, 
{RGBColor[0.95, 
                  0.95, 0.95],  
                Disk[{-2.7,  0.4},  0.1]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{2.7,  0.5},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-1,  1.5},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{1.5,  1.3},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-0,  0.4},  0.1]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{0.5,  0.64},  
                  0.1]}, 

{RGBColor[
                  0.95, 0.95, 0.95],  
                Disk[{-7, 5.3},  0.2 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{-6.8, 5},  0.2 + s]}, {RGBColor[0.9, 0.9, 0.9],  
                Disk[{-6, 7},  1.3 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-5.2, 6},  0.2 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{-5, 7},  0.2 + s]}, {RGBColor[0.9, 0.9, 0.9],  
                Disk[{-5.2, 8.5},  0.7 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{-4.5,  9}, 0.7 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{-4.5, 9.5}, 0.7 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{-4, 10}, 0.7 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-4, 7.5},  0.2 + s]}, {RGBColor[0.9, 0.9, 0.9],  
                Disk[{-3.5, 7}, 0.7 + s]}, {RGBColor[0.92, 0.92, 0.92],  
                Disk[{-3,  10.5}, 0.7 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{-2.5, 8}, 0.2 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{-2.5, 7.5}, 0.7 + s]}, {RGBColor[0.9, 0.9, 0.9],  
                Disk[{-2,  7.5},  0.2 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{-2,  7.1},  0.2 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{-2,  9},  0.2 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{-1,  11}, 0.7 + s]}, {RGBColor[0.9, 0.9, 0.9],  
                Disk[{-1,  8},  0.7 + s]}, {RGBColor[0.9, 0.9, 0.9],  
                Disk[{-1,  11.5},  0.7 + s]}, {RGBColor[0.95, 0.95, 
                  0.95],  
                Disk[{0,  11.5},  0.7 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{0.5,  8.5},  0.7 + s]}, 
{RGBColor[
                  0.95, 0.95, 0.95],  
                Disk[{7,  5.3},  0.2 + s]}, {RGBColor[0.95, 0.95, 0.95], 
                Disk[{6.8,  5},  0.2 + s]}, {RGBColor[0.93, 0.93, 0.93],  
                Disk[{6,  7},  1.4 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{5.2,  6}, 0.2 + s ]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{5,  7},  0.2 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{5.2, 8.5}, 0.7 + s]}, {RGBColor[0.92, 0.92, 0.92],  
                Disk[{4.5,  9}, 0.7 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{4.5,  9.5}, 0.7 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{4,  10}, 0.7 + s]}, {RGBColor[0.9, 0.9, 0.9],  
                Disk[{4,  7.5}, 0.2 + s ]}, {RGBColor[0.91, 0.91, 0.91],  
                Disk[{3.5,  7}, 0.7 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{3,  10.5}, 0.7 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{2.5,  8}, 0.2 + s ]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{2.5,  7.5},  0.2 + s]}, {RGBColor[0.91, 0.91, 
                  0.91],  
                Disk[{2,  7}, 0.7 + s ]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{2,  7.5},  0.2 + s]}, {RGBColor[0.9, 0.9, 0.9],  
                Disk[{2.1,  9},  0.2 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{1,  11},  0.7 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{1,  8},  0.7 + s]}, {RGBColor[0.95, 0.95, 0.95],  
                Disk[{1.5,  11.5},  0.7 + s]}}; 
          twinLine[
              Line[{start_,  end_}]] := {Line[{end, 
                  end  +  
                    shrinkage*Rotate2D[end  -  start, rotation, {0, 0}]}], 
              Line[{end, 
                  end  +  
                    shrinkage*
                      Rotate2D[
                        end  -  start, -rotation, {0, 
                          0}]}]}; 
twinLine[
              Thickness[th_]] := 
            Thickness[th*thicknessShrinkage]; 
doTwins[
              lines_] := 
            Flatten[Map[twinLine,  lines]]; 
Show[
            Graphics[{earth, RGBColor[0.35,  0,  0.05], 
                NestList[
                  doTwins,  {Thickness[originalThickness], 
                    Line[{{0, 1.01},  {0, 3}}]}, edakazu], 
                winter}, {{options}, AspectRatio  ->  Automatic,  
                PlotRange  ->  All}]]];

    
Do[   tree[7, r    , 0.5 + r     , 0.75, 
          0.005 + 0.07  r       , 
          PlotRange -> {{-10, 10}, {0, 15}}], {r, 0, 0.4, 
          0.01}];
Do[
        tree1[7, 0.4, 0.5 + 0.4, 0.75, 0.005 + 0.07*0.4, s, 
          PlotRange -> {{-10, 10}, {0, 15}}], {s, 0, 1, 
          0.04}];
Do[
        tree2[7, 0.4, 0.5 + 0.4, 0.75, 0.005 + 0.07*0.4, s, 
          PlotRange -> {{-10, 10}, {0, 15}}], {s, 0, 0.8, 
          0.04}];
Do[
        tree3[7, 0.4, 0.5 + 0.4, 0.75, 0.005 + 0.07*0.4, s, 
          PlotRange -> {{-10, 10}, {0, 15}}], {s, 0, 0.8, 
          0.04}];
Do[
        tree4[7, 0.4, 0.5 + 0.4, 0.75, 0.005 + 0.07*0.4, s, 
          PlotRange -> {{-10, 10}, {0, 15}}], {s, 0, 0.8, 
          0.04}];