2

我正在尝试AnimateGraphics3D来制作具有振荡长度的向量列表。基本上,从原点绘制的随机 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}}

选项。

它将独立于计算数据控制立方体的大小。

您可能还想查看选项 BoxRatiosSphericalRegion更好地缩放结果。

于 2015-03-20T10:38:22.733 回答