Animate
と組み合わせて使用してGraphics3D
、振動する長さを持つベクトルのリストを作成しようとしています。基本的に、ランダムな 3D ベクトルのリストが原点からプロットされます。次に、ベクトルの長さは、ランダムな位相を持つ余弦関数で制御されます。
例えば、
randomVec[r_] := r*Normalize@RandomVariate[NormalDistribution[], 3]
vecs = Table[randomVec[i], {i, 10^2}];
hues = Table[RandomReal[], {i, 10^2}];
rans = Table[RandomReal[], {i, 10^2}];
Animate[
Graphics3D[
Table[{Hue[hues[[i]]],
Arrow[Tube[{{0, 0, 0},
vecs[[i]] + Cos[\[Eta] + rans[[i]]*Pi]*vecs[[i]]},
Scaled[0.007]]]}, {i, 10^2}],
Boxed -> False, AxesOrigin -> {0, 0, 0},
ViewPoint -> {Pi, Pi, Pi}],
{\[Eta], 0, 2*Pi}]
ただし、このコードを実行すると、アニメーションの原点が表示フレーム内で跳ね返るように見えます。Graphics3D
内で呼び出されるたびに、まったく同じ表示ボックスを強制的に使用するにはどうすればよいAnimate
ですか?
また、このコードはおそらく非効率的であるため、よりスムーズにアニメーション化する方法についてのヒントをいただければ幸いです!