課題　アニメーション　「雪の結晶」

Animate[
tDelay={0,80,150,200,250,300,350,400};(*yukiが咲き始める時間を調整*)
tBloom={15,15,0,0,15,0,0,0};(*yukiが完全に開くまでの時間*)
tWait={15,15,0,0,15,0,0,0};(*yukiが開いて落ち始めるまで*)
yukix={-8,7,-5,8,-6,3,5,-2};(*yukiのx座標*)
yukiy={7,7,15,15,9,15,15,15};(*yukiの7座標*)
yukiScale={3,1.5,5,3,3.5,6,2,2.5};(*yukiの倍率の調整*)
yukiRotate={60,60,-60,60,-60,-60,60,-60};(*yukiの回転角の調整*)
yukiSpeed={1/8,1/8,1/8,1/8,1/8,1/8,1/8,1/8};(*yukiの落ちる速さの調整*)
yuki={{0},{0},{0},{0},{0},{0},{0},{0}};(*それぞれのyukiの初期化*)
(*時間tの時のyuki*)
For[i=1,i<9,i++,(*yukiを8個作る*)
t2Delay=Part[tDelay,i];
t2Bloom=Part[tBloom,i];
t2Wait=Part[tWait,i];
t0=Which[t>=t2Delay&&t<t2Bloom+t2Delay,(t-t2Delay)/t2Bloom,t>=t2Bloom+t2Delay,1];
t1=Which[t>=t2Delay&&t<t2Bloom/4+t2Delay,0,t>=t2Bloom/4+t2Delay&&t<t2Bloom/2+t2Delay,(t-t2Bloom/4-t2Delay)/(t2Bloom/4)/4,t>=t2Bloom/2+t2Delay,0.25];
t2=Which[t>=t2Delay&&t<t2Bloom/2+t2Delay,0,t>=t2Bloom/2+t2Delay&&t<3 t2Bloom/4+t2Delay,(t-t2Bloom/2-t2Delay)/(t2Bloom/2)/4,t>=3 t2Bloom/4+t2Delay,0.25];
t3=Which[t>=t2Delay&&t<3 t2Bloom/4+t2Delay,0,t>=3 t2Bloom/4+t2Delay&&t<t2Bloom+t2Delay,(t-3 t2Bloom/4-t2Delay)/(3 t2Bloom/4)/4,t>=t2Bloom+t2Delay,0.25];
y1=Which[t>=t2Delay&&t<t2Bloom/4+t2Delay,0,t>=t2Bloom/4+t2Delay,0.25];
y2=Which[t>=t2Delay&&t<t2Bloom/2+t2Delay,0,t>=t2Bloom/2+t2Delay,0.5];
y3=Which[t>=t2Delay&&t<3 t2Bloom/4+t2Delay,0,t>3 t2Bloom/4+t2Delay,0.75];
mainBranch1={Thickness[0.003],RGBColor[0,255,255],Line[{{0,0},{0,t0}}]};(*主枝の基準*)
sideBranchRight1=Line[{{0,y1},{t1/Sqrt[2],t1/Sqrt[2]+y1}}];(*右の側枝の基準*)
sideBranchLeft1=Line[{{0,y1},{-t1/Sqrt[2],t1/Sqrt[2]+y1}}];(*左の側枝の基準*)
sideBranchRight2=Line[{{0,y2},{t2/Sqrt[2],t2/Sqrt[2]+y2}}];(*右の側枝の基準*)
sideBranchLeft2=Line[{{0,y2},{-t2/Sqrt[2],t2/Sqrt[2]+y2}}];(*左の側枝の基準*)
sideBranchRight3=Line[{{0,y3},{t3/Sqrt[2],t3/Sqrt[2]+y3}}];(*右の側枝の基準*)
sideBranchLeft3=Line[{{0,y3},{-t3/Sqrt[2],t3/Sqrt[2]+y3}}];(*左の側枝の基準*)
sideBranch1={Thickness[0.0025],RGBColor[0,255,255],sideBranchRight1,sideBranchLeft1,
sideBranchRight2,sideBranchLeft2,sideBranchRight3,sideBranchLeft3};(*側枝の基準*)
eda1=Join[{mainBranch1},{sideBranch1}];(*枝の基準*)
eda2=eda1;
For[j=1,j<8,j++,
eda3=Rotate[eda1,Pi/4j,{0,0}];
eda2=Join[{eda2},{eda3}];(*枝を1本ずつ増やす*)
];
yuki2x=Part[yukix,i];
yuki2y=Part[yukiy,i];
yuki2Scale=Part[yukiScale,i];
yuki2Rotate=Part[yukiRotate,i];
yuki2Speed=Part[yukiSpeed,i];
yuki2=Which[
t>=t2Delay&&t<t2Bloom+t2Delay,Scale[Translate[eda2,{yuki2x,yuki2y}],yuki2Scale],(*咲く*)
t>=t2Bloom+t2Delay&&t<t2Bloom+t2Wait+t2Delay,Scale[Translate[eda2,{yuki2x,yuki2y}],yuki2Scale],(*待つ*)
t>=t2Bloom+t2Wait+t2Delay,Rotate[Scale[Translate[eda2,{yuki2x,yuki2y-(t-t2Bloom-t2Wait-t2Delay)yuki2Speed}],yuki2Scale],
Pi/yuki2Rotate(t-t2Bloom-t2Wait-t2Delay),{yuki2x,yuki2y-(t-t2Bloom-t2Wait-t2Delay)yuki2Speed}](*落ちる*)
];
Part[yuki,i]=yuki2;
];
Graphics[
{yuki},
PlotRange->{{-16,16},{-10,10}},(*黄金比8:5*)
Background->Black
],
{t,-20,650,0.01}
]