実験2	アニメーション

(* 解放 *)
(* 使用する変数名・関数名を念のために解放しています。 *)
Clear[x, y, t];
Clear[blocks];

(* 関数・変数の定義・宣言 *)
(* 使用する関数や変数の定義・宣言を行っています。また、その確認も行っています。 *)
(* 各柱 *)
(* 1列ごとに3π/20ずつ位相を遅らせて各柱を作成しています。 *)
blocks[t_] := 
	Table[
		Cuboid[
					{    x (0.8 Sin[t]+2),     y (0.8 Sin[t]+2),   2 Sin[t-(x+3 y) Pi/20]},
					{0.9+x (0.8 Sin[t]+2), 0.9+y (0.8 Sin[t]+2), 1+2 Sin[t-(x+3 y) Pi/20]}
		],
		{x, 0, 9},
		{y, 0, 9}
	];
?blocks
(* オプション *)
(* 3Dを表示するときの詳細設定をしています。 *)
options =
	{
		(* 3D表示領域の外枠の有無 *)
		(* Trueだと表示、Falseだと非表示になります。 *)
		Boxed->False,
		(* 3D表示領域の各軸に対する比 *)
		(* (x:y:z)となっています。 *)
		BoxRatios->{5, 5, 2},
		(* 各光源位置の指定 *)
		(* {{x,y,z},色指定}となっています。複数指定することも可能です。 *)
		LightSources->{
			{{1, 0, 0}, RGBColor[0.8, 0.5,   0]},
			{{0, 1, 0}, RGBColor[0.3,   1, 0.5]},
			{{0, 0, 1}, RGBColor[  1,   1, 0.7]}
		},
		(* 3Dの表示範囲 *)
		(* {{xの最小値,xの最大値},{yの最小値,yの最大値},{zの最小値,zの最大値}}となっています。 *)
		PlotRange->{{0, 30}, {0, 30}, {-2.5, 3.5}},
		(* 3D観測点の指定 *)
		(* (x,y,z)が観測点になっています。 *)
		ViewPoint->{0.6 Cos[t]+1, 1, 1}
	};

(* プログラム本体 *)
(* ここからプログラムの本体を記述しています。 *)
Do[
	Show[Graphics3D[blocks[t], options]],
	(* Show[]の中で、tを0から2πまでπ/20刻みで増加していきます。 *)
	{t, 0, 2 Pi, Pi/20}
]

(* 解放 *)
(* 使用した変数名・関数名を解放しています。 *)
Clear[x, y, t];
Clear[blocks];