【问题标题】:Maintain consistent plot region for Graphics3D in mathematica在 Mathematica 中为 Graphics3D 保持一致的绘图区域
【发布时间】:2015-03-19 18:15:00
【问题描述】:

我正在尝试将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 中调用时使用完全相同的查看框?

此外,此代码可能效率低下,因此任何有关如何使其动画更流畅的提示将不胜感激!

【问题讨论】:

    标签: wolfram-mathematica bounding-box graphics3d


    【解决方案1】:

    我认为在你的情况下首先要尝试的是添加一个

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

    选项。

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

    您可能还想查看选项BoxRatiosSphericalRegion 以获得很好的结果缩放。

    【讨论】:

    • 太好了,PlotRangeSphericalRegion 一起让它看起来很棒。现在我只想尝试平滑动画...
    • Animate 非常适合快速构建交互式动画。问题在于它降低了速度的计算分辨率等。如果你想制作一个最终的、平滑的动画,你可能需要预先计算它,有几种方法。值得再问一个问题,我建议你在mathematica.stackexchange 上问,那里有很多专家。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    相关资源
    最近更新 更多