在mathematica中保持Graphics3D的一致绘图区域

时间:2015-03-19 18:15:01

标签: wolfram-mathematica bounding-box graphics3d

我正在尝试将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时,强制{{1}}使用完全相同的查看框?

此代码也可能效率低下,因此任何有关如何使其动画更加流畅的提示都将受到赞赏!

1 个答案:

答案 0 :(得分:2)

我认为首先要尝试的是添加

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

选项。

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

您可能还希望查看选项BoxRatiosSphericalRegion,以便更好地缩放结果。