2

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ですか?

また、このコードはおそらく非効率的であるため、よりスムーズにアニメーション化する方法についてのヒントをいただければ幸いです!

4

1 に答える 1

2

あなたの場合に最初に試すことは、追加することだと思います

 PlotRange->{{xmin, xmax},{ymin, ymax},{zmin, zmax}}

オプション。

計算されたデータとは関係なく、立方体のサイズを制御します。

BoxRatiosまた、オプションとSphericalRegion結果の適切なスケーリングを確認することもできます 。

于 2015-03-20T10:38:22.733 に答える